[hdf5] 02/11: Imported Upstream version 1.8.13+docs

Gilles Filippini pini at moszumanska.debian.org
Thu May 29 14:44:24 UTC 2014


This is an automated email from the git hooks/post-receive script.

pini pushed a commit to branch master
in repository hdf5.

commit 18d064ce56b9302703846f630091d60f179e97dc
Author: Gilles Filippini <pini at debian.org>
Date:   Sun May 25 17:05:20 2014 +0200

    Imported Upstream version 1.8.13+docs
---
 CMakeFilters.cmake                                 |  186 +-
 CMakeInstallation.cmake                            |  391 +--
 CMakeLists.txt                                     | 1054 ++++----
 COPYING                                            |    2 +-
 CTestConfig.cmake                                  |   36 +-
 MANIFEST                                           |   47 +-
 Makefile.in                                        |  220 +-
 README.txt                                         |    2 +-
 UserMacros.cmake                                   |    8 +-
 aclocal.m4                                         |  353 ++-
 bin/cmakehdf5                                      |  127 +-
 bin/missing                                        |  450 ++--
 bin/release                                        |  108 +-
 bin/snapshot                                       |    2 +-
 bin/test-driver                                    |  139 +
 bin/trace                                          |    1 +
 c++/CMakeLists.txt                                 |   38 +-
 c++/Makefile.in                                    |  540 +++-
 c++/examples/CMakeLists.txt                        |   32 +-
 c++/examples/CMakeTests.cmake                      |   62 +-
 c++/examples/Makefile.am                           |    4 +-
 c++/examples/Makefile.in                           |  468 +++-
 c++/src/CMakeLists.txt                             |   38 +-
 c++/src/H5Attribute.cpp                            |  180 +-
 c++/src/H5Attribute.h                              |    8 +-
 c++/src/H5CommonFG.cpp                             |  171 +-
 c++/src/H5CommonFG.h                               |   14 +-
 c++/src/H5CompType.cpp                             |   21 +-
 c++/src/H5CompType.h                               |    3 +
 c++/src/H5DataSet.cpp                              |   74 +-
 c++/src/H5DataSet.h                                |   10 +-
 c++/src/H5DataSpace.cpp                            |   16 +-
 c++/src/H5DataSpace.h                              |    4 +-
 c++/src/H5DataType.cpp                             |   36 +-
 c++/src/H5DataType.h                               |    8 +-
 c++/src/H5DcreatProp.cpp                           |    9 +-
 c++/src/H5DxferProp.cpp                            |  127 +-
 c++/src/H5DxferProp.h                              |   11 +
 c++/src/H5EnumType.cpp                             |    4 +-
 c++/src/H5Exception.cpp                            |   72 +-
 c++/src/H5Exception.h                              |   33 +-
 c++/src/H5FaccProp.cpp                             |   45 +-
 c++/src/H5FaccProp.h                               |   27 +-
 c++/src/H5File.cpp                                 |   19 +-
 c++/src/H5File.h                                   |   17 +-
 c++/src/H5Group.h                                  |    7 +-
 c++/src/H5IdComponent.cpp                          |   25 +-
 c++/src/H5IdComponent.h                            |    3 +
 c++/src/H5Location.cpp                             |  150 +-
 c++/src/H5Location.h                               |    5 +-
 c++/src/H5Object.cpp                               |  112 +
 c++/src/H5Object.h                                 |    8 +-
 c++/src/H5PropList.cpp                             |    7 +-
 c++/src/Makefile.am                                |    2 +-
 c++/src/Makefile.in                                |  483 +++-
 c++/src/cpp_doc_config                             | 2251 +++++++++++++++-
 c++/src/header_files/hdf_logo.jpg                  |  Bin 0 -> 1964 bytes
 c++/src/header_files/help.jpg                      |  Bin 0 -> 3280 bytes
 c++/test/CMakeLists.txt                            |   26 +-
 c++/test/CMakeTests.cmake                          |   38 +-
 c++/test/Makefile.am                               |    9 +-
 c++/test/Makefile.in                               |  539 +++-
 c++/test/dsets.cpp                                 |   35 +-
 c++/test/h5cpputil.cpp                             |    4 +-
 c++/test/h5cpputil.h                               |   21 +-
 c++/test/tattr.cpp                                 |  143 +-
 c++/test/tcompound.cpp                             |   90 +
 c++/test/tdspl.cpp                                 |  147 ++
 c++/test/testhdf5.cpp                              |   70 +-
 c++/test/tfile.cpp                                 |    1 +
 c++/test/tfilter.cpp                               |    2 +-
 c++/test/tobject.cpp                               |  335 +++
 c++/test/trefer.cpp                                |   10 +-
 c++/test/ttypes.cpp                                |   29 +-
 c++/test/tvlstr.cpp                                |   12 +-
 config/Makefile.am.blank                           |    2 +-
 config/cmake/CPack.cmake                           |  588 -----
 config/cmake/CTestCustom.cmake                     |   42 +-
 config/cmake/CheckTypeSize.cmake                   |   40 +-
 config/cmake/ConfigureChecks.cmake                 | 1013 ++++----
 config/cmake/FindHDF5.cmake.in                     |   18 +-
 config/cmake/FindMPI.cmake                         |   29 +-
 config/cmake/FindSZIP.cmake                        |  158 +-
 config/cmake/H5pubconf.h.in                        |   10 +-
 config/cmake/HDF518_Examples.cmake.in              |  229 +-
 config/cmake/HDF5Macros.cmake                      |   38 +-
 config/cmake/HDF5Tests.c                           |   13 +-
 config/cmake/HDF5UseFortran.cmake                  |   68 +-
 config/cmake/HDFLibMacros.cmake                    |  230 +-
 config/cmake/HDFMacros.cmake                       |  140 +-
 config/cmake/NSIS.template.in                      |  233 +-
 config/cmake/PkgInfo.in                            |    1 +
 config/cmake/README.txt.cmake.in                   |   53 +
 config/cmake/UserMacros/Windows_MT.cmake           |   34 +-
 config/cmake/cacheinit.cmake                       |   70 +-
 config/cmake/grepTest.cmake                        |   68 +-
 config/cmake/hdf.bmp                               |  Bin 0 -> 1254 bytes
 config/cmake/hdf.gif                               |  Bin 1016 -> 0 bytes
 config/cmake/hdf.icns                              |  Bin 0 -> 2632 bytes
 config/cmake/hdf.ico                               |  Bin 0 -> 23558 bytes
 config/cmake/hdf5-config-version.cmake.in          |   22 +-
 config/cmake/hdf5-config.cmake.build.in            |   76 +-
 config/cmake/hdf5-config.cmake.install.in          |   86 +-
 config/cmake/libhdf5.settings.cmake.in             |    3 +-
 config/cmake/mccacheinit.cmake                     |   74 +-
 config/cmake/prunTest.cmake                        |  182 +-
 config/cmake/runTest.cmake                         |  256 +-
 config/cmake/userblockTest.cmake                   |  108 +-
 config/cmake/version.plist.in                      |   17 +
 config/cmake/vfdTest.cmake                         |   60 +-
 config/cmake/xlatefile.c                           |   56 -
 config/examples.am                                 |   23 +-
 config/intel-flags                                 |   11 +-
 config/irix6.x                                     |    2 +-
 config/linux-gnulibc1                              |   21 +-
 config/lt_vers.am                                  |    2 +-
 config/solaris2.x                                  |    6 +-
 configure                                          |  590 +++--
 configure.ac                                       |  222 +-
 examples/CMakeLists.txt                            |   32 +-
 examples/CMakeTests.cmake                          |   41 +-
 examples/Makefile.am                               |   10 +-
 examples/Makefile.in                               |  474 +++-
 fortran/CMakeLists.txt                             |   32 +-
 fortran/Makefile.in                                |  540 +++-
 fortran/examples/CMakeLists.txt                    |   70 +-
 fortran/examples/CMakeTests.cmake                  |   48 +-
 fortran/examples/Makefile.am                       |    4 +-
 fortran/examples/Makefile.in                       |  468 +++-
 fortran/examples/h5_extend.f90                     |    2 +-
 fortran/examples/hyperslab.f90                     |   11 +-
 fortran/examples/run-fortran-ex.sh.in              |   32 +-
 fortran/examples/rwdset_fortran2003.f90            |    7 +-
 fortran/examples/selectele.f90                     |    9 +-
 fortran/src/CMakeLists.txt                         |  267 +-
 fortran/src/H5Aff_F03.f90                          |    5 +-
 fortran/src/H5Df.c                                 |   44 +-
 fortran/src/H5Dff_F03.f90                          |   37 +-
 fortran/src/H5Dff_F90.f90                          |   10 +-
 fortran/src/H5Ef.c                                 |   12 +-
 fortran/src/H5FDmpiof.c                            |   81 -
 fortran/src/H5FDmpioff.f90                         |   71 +-
 fortran/src/H5Fff_F03.f90                          |   30 +-
 fortran/src/H5Off.f90                              |   14 +-
 fortran/src/H5Off_F03.f90                          |    3 -
 fortran/src/H5Pf.c                                 |  149 +-
 fortran/src/H5Pff.f90                              |    6 +-
 fortran/src/H5Pff_F03.f90                          |  106 +
 fortran/src/H5Rff_F03.f90                          |    4 -
 fortran/src/H5Sf.c                                 |    6 +-
 fortran/src/H5Sff.f90                              |    4 +-
 fortran/src/H5Tf.c                                 |    4 +-
 fortran/src/H5_f.c                                 |   33 +-
 fortran/src/H5_ff.f90                              |    3 +
 fortran/src/H5f90global.f90                        |   61 +-
 fortran/src/H5f90proto.h                           |   14 +-
 fortran/src/H5match_types.c                        |   23 +-
 fortran/src/H5test_kind_SIZEOF.f90                 |   66 +-
 fortran/src/HDF5mpio.f90                           |    1 +
 fortran/src/Makefile.am                            |    6 +-
 fortran/src/Makefile.in                            |  515 +++-
 fortran/src/hdf5_fortrandll.def.in                 |    4 +-
 fortran/test/CMakeLists.txt                        |  122 +-
 fortran/test/CMakeTests.cmake                      |   22 +-
 fortran/test/Makefile.am                           |   31 +-
 fortran/test/Makefile.in                           |  674 ++++-
 fortran/test/fflush1.f90                           |    3 +-
 fortran/test/fflush2.f90                           |    2 +-
 fortran/test/fortranlib_test.f90                   |   19 +-
 fortran/test/fortranlib_test_1_8.f90               |  445 +---
 fortran/test/fortranlib_test_F03.f90               |    8 +-
 fortran/test/t.c                                   |    2 +-
 fortran/test/tH5A.f90                              |   27 +-
 fortran/test/tH5A_1_8.f90                          |   61 +-
 fortran/test/tH5D.f90                              |   17 +-
 fortran/test/tH5E.f90                              |   10 +-
 fortran/test/tH5E_F03.f90                          |   30 +-
 fortran/test/tH5F.f90                              |   27 +-
 fortran/test/tH5F_F03.f90                          |   17 +-
 fortran/test/tH5G.f90                              |    9 +-
 fortran/test/tH5G_1_8.f90                          |   73 +-
 fortran/test/tH5I.f90                              |    8 +-
 fortran/test/tH5L_F03.f90                          |   28 +-
 .../{fortranlib_test_1_8.f90 => tH5MISC_1_8.f90}   |  113 +-
 fortran/test/tH5O.f90                              |   24 +-
 fortran/test/tH5O_F03.f90                          |   12 +-
 fortran/test/tH5P.f90                              |   31 +-
 fortran/test/tH5P_F03.f90                          |  128 +-
 fortran/test/tH5R.f90                              |   12 +-
 fortran/test/tH5S.f90                              |    7 +-
 fortran/test/tH5Sselect.f90                        |   43 +-
 fortran/test/tH5T.f90                              |   61 +-
 fortran/test/tH5T_F03.f90                          |  225 +-
 fortran/test/tH5VL.f90                             |   42 +-
 fortran/test/tH5Z.f90                              |    9 +-
 fortran/test/tHDF5.f90                             |   45 +
 fortran/test/tHDF5_1_8.f90                         |   38 +
 fortran/test/tHDF5_F03.f90                         |   39 +
 fortran/test/tf.f90                                |  348 +--
 fortran/testpar/CMakeLists.txt                     |   18 +-
 fortran/testpar/CMakeTests.cmake                   |    2 +-
 fortran/testpar/Makefile.am                        |    3 +-
 fortran/testpar/Makefile.in                        |  504 +++-
 fortran/testpar/hyper.f90                          |    3 +-
 fortran/testpar/mdset.f90                          |    3 +-
 hl/CMakeLists.txt                                  |   46 +-
 hl/Makefile.in                                     |  540 +++-
 hl/c++/CMakeLists.txt                              |   16 +-
 hl/c++/Makefile.in                                 |  540 +++-
 hl/c++/examples/CMakeLists.txt                     |   14 +-
 hl/c++/examples/CMakeTests.cmake                   |    8 +-
 hl/c++/examples/Makefile.am                        |    1 +
 hl/c++/examples/Makefile.in                        |  466 +++-
 hl/c++/src/CMakeLists.txt                          |   30 +-
 hl/c++/src/Makefile.am                             |    4 +-
 hl/c++/src/Makefile.in                             |  493 +++-
 hl/c++/test/CMakeLists.txt                         |   10 +-
 hl/c++/test/CMakeTests.cmake                       |    2 +-
 hl/c++/test/Makefile.am                            |    2 +-
 hl/c++/test/Makefile.in                            |  520 +++-
 hl/examples/CMakeLists.txt                         |   20 +-
 hl/examples/CMakeTests.cmake                       |   38 +-
 hl/examples/Makefile.am                            |    5 +-
 hl/examples/Makefile.in                            |  470 +++-
 hl/examples/ex_image2.c                            |   17 +-
 hl/fortran/CMakeLists.txt                          |   16 +-
 hl/fortran/Makefile.in                             |  540 +++-
 hl/fortran/examples/CMakeLists.txt                 |   22 +-
 hl/fortran/examples/CMakeTests.cmake               |    6 +-
 hl/fortran/examples/Makefile.am                    |    1 +
 hl/fortran/examples/Makefile.in                    |  467 +++-
 hl/fortran/examples/ex_ds1.f90                     |    2 +-
 hl/fortran/src/CMakeLists.txt                      |   97 +-
 hl/fortran/src/Makefile.am                         |    4 +-
 hl/fortran/src/Makefile.in                         |  498 +++-
 hl/fortran/test/CMakeLists.txt                     |   36 +-
 hl/fortran/test/CMakeTests.cmake                   |   16 +-
 hl/fortran/test/Makefile.am                        |    2 +-
 hl/fortran/test/Makefile.in                        |  536 +++-
 hl/src/CMakeLists.txt                              |   38 +-
 hl/src/H5DO.c                                      |  122 +-
 hl/src/H5DOprivate.h                               |   37 -
 hl/src/H5LT.c                                      |   12 +-
 hl/src/H5LTanalyze.c                               |  167 +-
 hl/src/H5LTanalyze.l                               |   12 +-
 hl/src/H5LTparse.c                                 |   22 +-
 hl/src/H5LTparse.y                                 |   10 +-
 hl/src/H5TB.c                                      |   32 +-
 hl/src/Makefile.in                                 |  487 +++-
 hl/test/CMakeLists.txt                             |   24 +-
 hl/test/CMakeTests.cmake                           |   42 +-
 hl/test/Makefile.in                                |  553 +++-
 hl/test/test_image.c                               |   31 +-
 hl/test/test_lite.c                                |   12 +-
 hl/tools/CMakeLists.txt                            |   38 +-
 hl/tools/CMakeTests.cmake                          |   12 +-
 hl/tools/Makefile.in                               |  542 +++-
 hl/tools/gif2h5/Makefile.am                        |    2 +-
 hl/tools/gif2h5/Makefile.in                        |  512 +++-
 hl/tools/gif2h5/decompress.c                       |    6 -
 hl/tools/gif2h5/gif2mem.c                          |    2 -
 hl/tools/gif2h5/hdfgifwr.c                         |   65 -
 html/ADGuide.html                                  |    4 +-
 html/ADGuide/Changes.html                          |  492 +++-
 html/ADGuide/CompatFormat180.html                  |    2 +-
 html/ADGuide/ImageSpec.html                        |    2 +-
 html/Advanced.html                                 |  180 +-
 html/Advanced/Chunking/index.html                  |    2 +-
 html/Advanced/DirectChunkWrite/index.html          |    2 +-
 html/Advanced/HDF5_Metadata/index.html             |    2 +-
 html/Advanced/MetadataCache/index.html             |    2 +-
 .../ModifiedRegionWrites/ModifiedRegionWrites.docx |  Bin 0 -> 150708 bytes
 html/Advanced/UsingIdentifiers/index.html          |    2 +-
 html/Advanced/UsingUnicode/index.html              |    4 +-
 html/Copyright.html                                |    2 +-
 html/Glossary.html                                 |    2 +-
 html/H5.format.html                                |    4 +-
 html/H5.intro.html                                 |    2 +-
 html/Intro/IntroExamples.html                      |    2 +-
 html/RM/APICompatMacros.html                       |    2 +-
 html/RM/CollectiveCalls.html                       |    2 +-
 html/RM/H5/H5free_memory.htm                       |  128 +
 html/RM/H5F/H5Fget_file_image.htm                  |   21 +-
 html/RM/H5F/h5fget_file_image_f_F03.htm            |   26 +
 html/RM/H5P/H5Pcreate.htm                          |    2 +-
 html/RM/H5P/H5Pget_core_write_tracking.htm         |  132 +
 html/RM/H5P/H5Pget_fapl_mpiposix.htm               |   38 +-
 html/RM/H5P/H5Pget_file_image.htm                  |   30 +-
 html/RM/H5P/H5Pset_core_write_tracking.htm         |  145 ++
 html/RM/H5P/H5Pset_fapl_mpiposix.htm               |   38 +-
 html/RM/H5P/H5Pset_file_image.htm                  |   20 +-
 html/RM/H5P/H5Pset_filter.htm                      |   14 +-
 html/RM/H5P/h5pget_file_image_f_F03.htm            |   30 +
 html/RM/H5P/h5pset_file_image_f_F03.htm            |   21 +
 html/RM/H5T/H5Tget_precision.htm                   |    8 +-
 html/RM/PredefDTypes.html                          |    2 +-
 html/RM/RM_H5.html                                 |  111 +-
 html/RM/RM_H5A.html                                |    2 +-
 html/RM/RM_H5D.html                                |    2 +-
 html/RM/RM_H5E.html                                |    2 +-
 html/RM/RM_H5F.html                                |    5 +-
 html/RM/RM_H5Front.html                            |    4 +-
 html/RM/RM_H5G.html                                |    2 +-
 html/RM/RM_H5I.html                                |    2 +-
 html/RM/RM_H5L.html                                |    2 +-
 html/RM/RM_H5O.html                                |    2 +-
 html/RM/RM_H5P.html                                | 2705 ++++++++++++++++----
 html/RM/RM_H5R.html                                |    2 +-
 html/RM/RM_H5S.html                                |    2 +-
 html/RM/RM_H5T.html                                |    2 +-
 html/RM/RM_H5Z.html                                |   65 +-
 html/RM/Tools.html                                 |    2 +-
 html/RM/Tools/h5diff.htm                           |   35 +-
 html/RM/Tools/h5perf.htm                           |   15 +-
 html/TechNotes.html                                |    2 +-
 html/UG/08_TheFile.html                            |   35 +-
 html/UG/14_PropertyLists.html                      | 2702 +++++++++++++++++++
 html/UG/17_Additional.html                         |  120 +-
 html/UG/Images/PropListClassInheritance.png        |  Bin 0 -> 172255 bytes
 html/UG/Images/PropListEcosystem.png               |  Bin 0 -> 36997 bytes
 html/UG/UG_UpdateStatus.html                       |   28 +-
 html/UG/UG_frame14PropertyLists.html               |   37 +
 html/UG/UG_front.html                              |   14 +-
 html/UG/UG_nav00.html                              |   56 +-
 html/UG/UG_nav03DataModel.html                     |    5 +-
 html/UG/UG_nav04ProgModel.html                     |    5 +-
 html/UG/UG_nav08TheFile.html                       |    5 +-
 html/UG/UG_nav09Groups.html                        |    3 +
 html/UG/UG_nav10Datasets.html                      |    5 +-
 html/UG/UG_nav11Datatypes.html                     |    5 +-
 html/UG/UG_nav12Dataspaces.html                    |    5 +-
 html/UG/UG_nav13Attributes.html                    |    5 +-
 html/UG/UG_nav13ErrorHandling.html                 |    5 +-
 ...3Attributes.html => UG_nav14PropertyLists.html} |   42 +-
 html/UG/UG_nav17SpecialTopics.html                 |    5 +-
 html/UG/UG_navObjectsIdentifiers.html              |    3 +
 html/_topic/Chunking/index.html                    |    2 +-
 html/_topic/DriversTable.htm                       |    8 +-
 html/_topic/filter_behavior.htm                    |   23 +-
 html/cpplus/CppInterfaces.html                     |    2 +-
 html/ddl.html                                      |    2 +-
 html/doc-info.html                                 |   10 +-
 html/ed_libs/Footer-THGonly.lbi                    |    2 +-
 html/ed_libs/Footer.lbi                            |    2 +-
 html/fortran/FortranFlags.html                     |    2 +-
 html/index.html                                    |    4 +-
 perform/CMakeLists.txt                             |  102 +-
 perform/CMakeTests.cmake                           |   42 +-
 perform/Makefile.am                                |    2 +-
 perform/Makefile.in                                |  579 ++++-
 perform/benchpar.c                                 |   20 +-
 perform/perf_meta.c                                |   59 +-
 perform/pio_engine.c                               |  805 ++----
 perform/pio_perf.c                                 |   44 +-
 perform/pio_perf.h                                 |    1 -
 perform/sio_engine.c                               |  478 +---
 perform/sio_perf.c                                 |   15 -
 perform/sio_perf.h                                 |    1 -
 perform/zip_perf.c                                 |    6 -
 release_docs/HISTORY-1_8.txt                       |  592 +++++
 release_docs/INSTALL                               |    9 +-
 release_docs/INSTALL_CMake.txt                     |  910 +++----
 release_docs/INSTALL_Cygwin.txt                    |   69 +-
 release_docs/INSTALL_VMS.txt                       |   95 +-
 release_docs/INSTALL_Windows.txt                   |    6 +-
 release_docs/INSTALL_parallel                      |  134 +-
 release_docs/RELEASE.txt                           |  496 ++--
 release_docs/USING_CMake_Examples.txt              |   93 +-
 release_docs/USING_HDF5_CMake.txt                  |   33 +-
 release_docs/USING_HDF5_VS.txt                     |   40 +-
 src/CMakeLists.txt                                 |  232 +-
 src/H5.c                                           |   98 +-
 src/H5A.c                                          |    6 +-
 src/H5AC.c                                         |   90 +-
 src/H5ACprivate.h                                  |    3 +-
 src/H5Adeprec.c                                    |   24 +
 src/H5Apkg.h                                       |    1 +
 src/H5B2cache.c                                    |    8 +-
 src/H5B2hdr.c                                      |    6 +-
 src/H5B2int.c                                      |    4 +-
 src/H5CS.c                                         |   10 +-
 src/H5D.c                                          |   24 +
 src/H5Dbtree.c                                     |   14 +-
 src/H5Dchunk.c                                     |  133 +-
 src/H5Dcompact.c                                   |    8 +-
 src/H5Dcontig.c                                    |   36 +-
 src/H5Ddeprec.c                                    |   24 +
 src/H5Defl.c                                       |   18 +-
 src/H5Dfill.c                                      |    8 +-
 src/H5Dint.c                                       |   17 +-
 src/H5Dio.c                                        |  110 +-
 src/H5Dmpio.c                                      |  178 +-
 src/H5Dpkg.h                                       |   18 +-
 src/H5Dprivate.h                                   |    3 -
 src/H5E.c                                          |  119 +-
 src/H5Edeprec.c                                    |   38 +-
 src/H5Epkg.h                                       |    3 +-
 src/H5F.c                                          |  182 +-
 src/H5FD.c                                         |    4 +-
 src/H5FDcore.c                                     |  388 ++-
 src/H5FDmpi.h                                      |    1 -
 src/H5FDmpio.c                                     |   51 +-
 src/H5FDmpio.h                                     |    8 +-
 src/H5FDmpiposix.c                                 | 1486 -----------
 src/H5FDmpiposix.h                                 |   52 -
 src/H5FDprivate.h                                  |    5 +-
 src/H5FScache.c                                    |    6 +-
 src/H5FSsection.c                                  |   16 +-
 src/H5Faccum.c                                     |   14 +-
 src/H5Fio.c                                        |    2 +-
 src/H5Fpkg.h                                       |    2 +-
 src/H5Fprivate.h                                   |    6 +-
 src/H5Fquery.c                                     |    2 +-
 src/H5G.c                                          |   26 +-
 src/H5Gdeprec.c                                    |   36 +-
 src/H5Gpkg.h                                       |    1 +
 src/H5HFcache.c                                    |    2 +-
 src/H5HFdbg.c                                      |    8 +-
 src/H5HFdblock.c                                   |    6 +-
 src/H5HFdtable.c                                   |   14 +-
 src/H5HFhdr.c                                      |    8 +-
 src/H5HFiblock.c                                   |   14 +-
 src/H5HFiter.c                                     |    4 +-
 src/H5HFman.c                                      |   14 +-
 src/H5HFpkg.h                                      |    2 +-
 src/H5HFsection.c                                  |    2 +-
 src/H5HGdbg.c                                      |   74 +-
 src/H5HLdbg.c                                      |   26 +-
 src/H5I.c                                          |  889 ++++---
 src/H5Iprivate.h                                   |    6 +-
 src/H5Lexternal.c                                  |   12 +-
 src/H5MF.c                                         |    4 +-
 src/H5Oattr.c                                      |   20 +-
 src/H5Ocache.c                                     |    2 +-
 src/H5Odbg.c                                       |   14 +-
 src/H5Odtype.c                                     |    8 +-
 src/H5Oefl.c                                       |   11 +-
 src/H5Olink.c                                      |    5 +-
 src/H5Osdspace.c                                   |    2 +-
 src/H5P.c                                          |   36 +-
 src/H5Pdeprec.c                                    |   36 +-
 src/H5Pdxpl.c                                      |   18 +-
 src/H5Pfapl.c                                      |   93 +-
 src/H5Pint.c                                       |   10 +-
 src/H5Ppkg.h                                       |    2 +
 src/H5Ppublic.h                                    |   11 +-
 src/H5R.c                                          |    6 +-
 src/H5Rdeprec.c                                    |   38 +-
 src/H5Rpkg.h                                       |    1 +
 src/H5S.c                                          |   16 +-
 src/H5SL.c                                         |   43 +-
 src/H5SLprivate.h                                  |    1 +
 src/H5Sall.c                                       |    4 +-
 src/H5Shyper.c                                     |   10 +-
 src/H5Smpio.c                                      |  447 +++-
 src/H5Snone.c                                      |    2 +-
 src/H5Spoint.c                                     |    6 +-
 src/H5Sprivate.h                                   |   17 +-
 src/H5Sselect.c                                    |   61 +-
 src/H5T.c                                          |    5 +-
 src/H5TS.c                                         |  225 +-
 src/H5TSprivate.h                                  |   13 +-
 src/H5Tconv.c                                      |  108 +-
 src/H5Tdeprec.c                                    |   38 +-
 src/H5Tpkg.h                                       |    1 +
 src/{H5V.c => H5VM.c}                              |  220 +-
 src/{H5Vprivate.h => H5VMprivate.h}                |  172 +-
 src/H5Z.c                                          |    8 +-
 src/H5Zdeflate.c                                   |    2 +-
 src/H5Zshuffle.c                                   |    2 +-
 src/H5Ztrans.c                                     |    4 +-
 src/H5config.h.in                                  |    6 -
 src/H5detect.c                                     |   53 +-
 src/H5private.h                                    |   61 +-
 src/H5public.h                                     |   26 +-
 src/H5system.c                                     |   24 +-
 src/H5trace.c                                      |   77 +-
 src/H5win32defs.h                                  |    2 +-
 src/Makefile.am                                    |    9 +-
 src/Makefile.in                                    |  518 +++-
 src/libhdf5.settings.in                            |    1 -
 test/CMakeLists.txt                                |  178 +-
 test/CMakeTests.cmake                              |  232 +-
 test/H5srcdir.h                                    |    8 +-
 test/Makefile.am                                   |    4 +-
 test/Makefile.in                                   |  896 ++++++-
 test/big.c                                         |  320 +--
 test/cache_api.c                                   |    4 -
 test/cross_read.c                                  |    2 +
 test/dsets.c                                       |   47 +-
 test/dt_arith.c                                    |  174 +-
 test/dtypes.c                                      |   13 +-
 test/err_compat.c                                  |   16 +-
 test/fheap.c                                       |    8 +-
 test/fillval.c                                     |  278 +-
 test/freespace.c                                   |    8 +-
 test/gen_cross.c                                   |   20 +-
 test/gen_new_group.c                               |    7 -
 test/h5test.c                                      |  268 +-
 test/hyperslab.c                                   |   38 +-
 test/istore.c                                      |   10 +-
 test/links.c                                       |   11 +-
 test/mf.c                                          |    2 +-
 test/tarray.c                                      |   22 +-
 test/tattr.c                                       |    2 +-
 test/testerror.sh.in                               |    4 -
 test/testfiles/err_compat_1                        |    3 -
 test/testfiles/err_compat_2                        |    3 -
 test/testfiles/error_test_1                        |    3 -
 test/testfiles/error_test_2                        |    3 -
 test/testfiles/links_env.out                       |    3 -
 test/testhdf5.c                                    |    7 +-
 test/testmeta.c                                    |    2 -
 test/tfile.c                                       |  130 +
 test/tgenprop.c                                    |   10 +-
 test/titerate.c                                    |    1 -
 test/tmisc.c                                       |  110 +
 test/tselect.c                                     |   17 +-
 test/ttime.c                                       |    2 +
 test/ttsafe_dcreate.c                              |    1 -
 test/tunicode.c                                    |    7 +-
 test/tvltypes.c                                    |    5 -
 test/vfd.c                                         |   13 +
 testpar/CMakeLists.txt                             |   30 +-
 testpar/CMakeTests.cmake                           |   42 +-
 testpar/Makefile.am                                |    9 +-
 testpar/Makefile.in                                |  551 +++-
 testpar/t_coll_chunk.c                             |  410 ++-
 testpar/t_dset.c                                   |  576 ++++-
 testpar/t_file.c                                   |    3 +-
 testpar/t_mdset.c                                  |   43 +-
 testpar/t_ph5basic.c                               |  114 -
 testpar/t_posix_compliant.c                        |  927 -------
 testpar/t_shapesame.c                              |   23 +-
 testpar/t_span_tree.c                              |   14 +-
 testpar/testph5.sh.in                              |   77 -
 testpar/testphdf5.c                                |   40 +-
 testpar/testphdf5.h                                |   27 +-
 tools/CMakeLists.txt                               |   28 +-
 tools/Makefile.in                                  |  542 +++-
 tools/h5copy/CMakeLists.txt                        |   30 +-
 tools/h5copy/CMakeTests.cmake                      |  214 +-
 tools/h5copy/Makefile.am                           |    2 +-
 tools/h5copy/Makefile.in                           |  541 +++-
 tools/h5diff/CMakeLists.txt                        |   46 +-
 tools/h5diff/CMakeTests.cmake                      |  222 +-
 tools/h5diff/Makefile.am                           |    2 +-
 tools/h5diff/Makefile.in                           |  542 +++-
 tools/h5diff/h5diff_common.c                       |    9 +-
 tools/h5diff/ph5diff_main.c                        |  244 +-
 tools/h5diff/testfiles/h5diff_tmp1.txt             |    5 +
 tools/h5diff/testfiles/h5diff_tmp2.txt             |   13 +
 .../h5diff/testfiles/tmpSingleSiteBethe.output.h5  |  Bin 0 -> 124440 bytes
 .../testfiles/tmpSingleSiteBethe.reference.h5      |  Bin 0 -> 119464 bytes
 tools/h5diff/testfiles/tmptest.he5                 |  Bin 0 -> 4740424 bytes
 tools/h5diff/testfiles/tmptest2.he5                |  Bin 0 -> 4734280 bytes
 tools/h5diff/testh5diff.sh.in                      |   10 +
 tools/h5dump/CMakeLists.txt                        |   34 +-
 tools/h5dump/CMakeTests.cmake                      |  453 ++--
 tools/h5dump/CMakeTestsPBITS.cmake                 |   82 +-
 tools/h5dump/CMakeTestsXML.cmake                   |   90 +-
 tools/h5dump/Makefile.am                           |    2 +-
 tools/h5dump/Makefile.in                           |  542 +++-
 tools/h5dump/h5dump_ddl.c                          |   20 +-
 tools/h5dump/h5dump_xml.c                          |  119 +-
 tools/h5dump/testh5dump.sh.in                      |   30 +-
 tools/h5import/CMakeLists.txt                      |   26 +-
 tools/h5import/CMakeTests.cmake                    |  142 +-
 tools/h5import/Makefile.am                         |    2 +-
 tools/h5import/Makefile.in                         |  541 +++-
 tools/h5import/h5import.c                          |   17 +-
 tools/h5jam/CMakeLists.txt                         |   48 +-
 tools/h5jam/CMakeTests.cmake                       |  228 +-
 tools/h5jam/Makefile.am                            |    4 +-
 tools/h5jam/Makefile.in                            |  538 +++-
 tools/h5jam/getub.c                                |   23 +-
 tools/h5jam/h5jamgentest.c                         |   31 +-
 tools/h5jam/tellub.c                               |   23 +-
 tools/h5ls/CMakeLists.txt                          |   18 +-
 tools/h5ls/CMakeTests.cmake                        |   76 +-
 tools/h5ls/Makefile.am                             |    2 +-
 tools/h5ls/Makefile.in                             |  530 +++-
 tools/h5ls/h5ls.c                                  |    6 +-
 tools/h5repack/CMakeLists.txt                      |   52 +-
 tools/h5repack/CMakeTests.cmake                    |  802 +++---
 tools/h5repack/Makefile.am                         |    6 +-
 tools/h5repack/Makefile.in                         |  538 +++-
 tools/h5repack/dynlib_rpk.c                        |   97 +
 tools/h5repack/h5repack.sh.in                      |   59 +-
 tools/h5repack/h5repack_plugin.sh.in               |   57 +-
 tools/h5repack/h5repack_refs.c                     |  199 +-
 .../testfiles/deflate_limit.h5repack_layout.h5.ddl |    2 +-
 tools/h5repack/testfiles/h5repack_layout.UD.h5     |  Bin 0 -> 43744 bytes
 ...5.ddl => h5repack_layout.UD.h5-plugin_none.ddl} |   30 +-
 .../testfiles/h5repack_layout.h5-plugin_test.ddl   |    2 +-
 .../plugin_none.h5repack_layout.UD.h5.tst          |   14 +
 tools/h5stat/CMakeLists.txt                        |   30 +-
 tools/h5stat/CMakeTests.cmake                      |   68 +-
 tools/h5stat/Makefile.am                           |    2 +-
 tools/h5stat/Makefile.in                           |  516 +++-
 tools/h5stat/testfiles/h5stat_dims1.ddl            |    3 -
 tools/h5stat/testfiles/h5stat_dims2.ddl            |    3 -
 tools/h5stat/testfiles/h5stat_err1_dims.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_err1_links.ddl       |    3 -
 tools/h5stat/testfiles/h5stat_err1_numattrs.ddl    |    3 -
 tools/h5stat/testfiles/h5stat_err2_numattrs.ddl    |    3 -
 tools/h5stat/testfiles/h5stat_filters-F.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_filters-UD.ddl       |    3 -
 tools/h5stat/testfiles/h5stat_filters-UT.ddl       |    3 -
 tools/h5stat/testfiles/h5stat_filters-d.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_filters-dT.ddl       |    3 -
 tools/h5stat/testfiles/h5stat_filters-file.ddl     |    3 -
 tools/h5stat/testfiles/h5stat_filters-g.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_filters.ddl          |    3 -
 tools/h5stat/testfiles/h5stat_help1.ddl            |    3 -
 tools/h5stat/testfiles/h5stat_help2.ddl            |    3 -
 tools/h5stat/testfiles/h5stat_links1.ddl           |    3 -
 tools/h5stat/testfiles/h5stat_links2.ddl           |    3 -
 tools/h5stat/testfiles/h5stat_links3.ddl           |    3 -
 tools/h5stat/testfiles/h5stat_links4.ddl           |    3 -
 tools/h5stat/testfiles/h5stat_links5.ddl           |    3 -
 tools/h5stat/testfiles/h5stat_newgrat-UA.ddl       |    3 -
 tools/h5stat/testfiles/h5stat_newgrat-UG.ddl       |    3 -
 tools/h5stat/testfiles/h5stat_newgrat.ddl          |    3 -
 tools/h5stat/testfiles/h5stat_nofile.ddl           |    3 -
 tools/h5stat/testfiles/h5stat_notexist.ddl         |    3 -
 tools/h5stat/testfiles/h5stat_numattrs1.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_numattrs2.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_numattrs3.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_numattrs4.ddl        |    3 -
 tools/h5stat/testfiles/h5stat_tsohm.ddl            |    3 -
 tools/h5stat/testh5stat.sh.in                      |    3 -
 tools/lib/CMakeLists.txt                           |   43 +-
 tools/lib/Makefile.am                              |    2 +-
 tools/lib/Makefile.in                              |  500 +++-
 tools/lib/h5diff.c                                 |   43 -
 tools/lib/h5diff_attr.c                            |   37 +-
 tools/lib/h5tools.c                                |   64 +-
 tools/lib/h5tools_dump.c                           |    6 +-
 tools/lib/h5tools_filters.c                        |  286 ++-
 tools/lib/h5tools_str.c                            |    2 +-
 tools/lib/h5trav.c                                 |  138 +-
 tools/lib/h5trav.h                                 |   12 +-
 tools/lib/ph5diff.h                                |   16 +-
 tools/misc/CMakeLists.txt                          |   54 +-
 tools/misc/CMakeTests.cmake                        |  120 +-
 tools/misc/Makefile.am                             |    2 +-
 tools/misc/Makefile.in                             |  528 +++-
 tools/misc/h5debug.c                               |    5 +-
 tools/misc/h5repart_gentest.c                      |    1 -
 tools/misc/talign.c                                |    6 +-
 tools/misc/testh5mkgrp.sh.in                       |    2 +-
 tools/testfiles/tcmpdintarray.ddl                  |   64 +
 tools/testfiles/tcmpdintarray.h5                   |  Bin 0 -> 9888 bytes
 tools/testfiles/tcmpdints.ddl                      | 1444 +++++++++++
 tools/testfiles/tcmpdints.h5                       |  Bin 0 -> 9312 bytes
 tools/testfiles/tcontiguos.ddl                     |    2 +-
 tools/testfiles/tfilters.h5                        |  Bin 46272 -> 46496 bytes
 tools/testfiles/tintsattrs.ddl                     | 1115 ++++++++
 tools/testfiles/tintsattrs.h5                      |  Bin 0 -> 28912 bytes
 tools/testfiles/treadfilter.ddl                    |   54 +
 tools/testfiles/treadintfilter.ddl                 |  132 +
 tools/testfiles/tscalarintattrsize.ddl             |  256 ++
 tools/testfiles/tscalarintattrsize.h5              |  Bin 0 -> 28928 bytes
 tools/testfiles/tscaleoffset.ddl                   |    4 +-
 vms/c++/examples/make.com                          |    2 +-
 vms/fortran/examples/make.com                      |    2 +-
 vms/src/h5pubconf.h                                |   12 +-
 vms/src/make.com                                   |    2 +-
 669 files changed, 47567 insertions(+), 20661 deletions(-)

diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake
index bc78fa6..1a74460 100644
--- a/CMakeFilters.cmake
+++ b/CMakeFilters.cmake
@@ -3,12 +3,12 @@
 # Options for HDF5 Filters
 #-----------------------------------------------------------------------------
 MACRO (HDF5_SETUP_FILTERS FILTER)
-  OPTION (HDF5_USE_FILTER_${FILTER} "Use the ${FILTER} Filter" ON)
-  IF (HDF5_USE_FILTER_${FILTER})
-    SET (H5_HAVE_FILTER_${FILTER} 1)
-    SET (FILTERS "${FILTERS} ${FILTER}")
-  ENDIF (HDF5_USE_FILTER_${FILTER})
-  # MESSAGE (STATUS "Filter ${FILTER} is ${HDF5_USE_FILTER_${FILTER}}")
+  option (HDF5_USE_FILTER_${FILTER} "Use the ${FILTER} Filter" ON)
+  if (HDF5_USE_FILTER_${FILTER})
+    set (H5_HAVE_FILTER_${FILTER} 1)
+    set (FILTERS "${FILTERS} ${FILTER}")
+  endif (HDF5_USE_FILTER_${FILTER})
+  # message (STATUS "Filter ${FILTER} is ${HDF5_USE_FILTER_${FILTER}}")
 ENDMACRO (HDF5_SETUP_FILTERS)
 
 HDF5_SETUP_FILTERS (SHUFFLE)
@@ -16,107 +16,107 @@ HDF5_SETUP_FILTERS (FLETCHER32)
 HDF5_SETUP_FILTERS (NBIT)
 HDF5_SETUP_FILTERS (SCALEOFFSET)
 
-INCLUDE (ExternalProject)
-OPTION (HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO SVN TGZ)" "NO")
-IF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-  OPTION (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" 1)
-  OPTION (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" 1)
-  IF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
-    SET (ZLIB_URL ${ZLIB_SVN_URL})
-    SET (SZIP_URL ${SZIP_SVN_URL})
-  ELSEIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-    IF (NOT TGZPATH)
-      SET (TGZPATH ${HDF5_SOURCE_DIR})
-    ENDIF (NOT TGZPATH)
-    SET (ZLIB_URL ${TGZPATH}/${ZLIB_TGZ_NAME})
-    SET (SZIP_URL ${TGZPATH}/${SZIP_TGZ_NAME})
-  ELSE (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
-    SET (ZLIB_USE_EXTERNAL 0)
-    SET (SZIP_USE_EXTERNAL 0)
-  ENDIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
-ENDIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+include (ExternalProject)
+option (HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO SVN TGZ)" "NO")
+if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+  option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" 1)
+  option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" 1)
+  if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
+    set (ZLIB_URL ${ZLIB_SVN_URL})
+    set (SZIP_URL ${SZIP_SVN_URL})
+  elseif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+    if (NOT TGZPATH)
+      set (TGZPATH ${HDF5_SOURCE_DIR})
+    endif (NOT TGZPATH)
+    set (ZLIB_URL ${TGZPATH}/${ZLIB_TGZ_NAME})
+    set (SZIP_URL ${TGZPATH}/${SZIP_TGZ_NAME})
+  else (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
+    set (ZLIB_USE_EXTERNAL 0)
+    set (SZIP_USE_EXTERNAL 0)
+  endif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
+endif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
 
 #-----------------------------------------------------------------------------
 # Option for ZLib support
 #-----------------------------------------------------------------------------
-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)
+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 NAMES ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT})
-      IF (NOT ZLIB_FOUND)
+      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)
-      SET (H5_HAVE_ZLIB_H 1)
-      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")
+      endif (NOT ZLIB_FOUND)
+    endif (NOT ZLIB_USE_EXTERNAL)
+    if (ZLIB_FOUND)
+      set (H5_HAVE_FILTER_DEFLATE 1)
+      set (H5_HAVE_ZLIB_H 1)
+      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})
-        SET (H5_HAVE_FILTER_DEFLATE 1)
-        SET (H5_HAVE_ZLIB_H 1)
-        SET (H5_HAVE_LIBZ 1)
-        MESSAGE (STATUS "Filter ZLIB is built")
-      ELSE (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-        MESSAGE (FATAL_ERROR " ZLib is Required for ZLib support in HDF5")
-      ENDIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-    ENDIF (ZLIB_FOUND)
-  ELSE (NOT H5_ZLIB_HEADER)
+        set (H5_HAVE_FILTER_DEFLATE 1)
+        set (H5_HAVE_ZLIB_H 1)
+        set (H5_HAVE_LIBZ 1)
+        message (STATUS "Filter ZLIB is built")
+      else (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+        message (FATAL_ERROR " ZLib is Required for ZLib support in HDF5")
+      endif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+    endif (ZLIB_FOUND)
+  else (NOT H5_ZLIB_HEADER)
     # This project is being called from within another and ZLib is already configured
-    SET (H5_HAVE_FILTER_DEFLATE 1)
-    SET (H5_HAVE_ZLIB_H 1)
-    SET (H5_HAVE_LIBZ 1)
-  ENDIF (NOT H5_ZLIB_HEADER)
-  IF (H5_HAVE_FILTER_DEFLATE)
-    SET (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DEFLATE")
-  ENDIF (H5_HAVE_FILTER_DEFLATE)
-  SET (LINK_LIBS ${LINK_LIBS} ${ZLIB_LIBRARIES})
+    set (H5_HAVE_FILTER_DEFLATE 1)
+    set (H5_HAVE_ZLIB_H 1)
+    set (H5_HAVE_LIBZ 1)
+  endif (NOT H5_ZLIB_HEADER)
+  if (H5_HAVE_FILTER_DEFLATE)
+    set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DEFLATE")
+  endif (H5_HAVE_FILTER_DEFLATE)
+  set (LINK_LIBS ${LINK_LIBS} ${ZLIB_LIBRARIES})
   INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIRS})
-  MESSAGE (STATUS "Filter ZLIB is ON")
-ENDIF (HDF5_ENABLE_Z_LIB_SUPPORT)
+  message (STATUS "Filter ZLIB is ON")
+endif (HDF5_ENABLE_Z_LIB_SUPPORT)
 
 #-----------------------------------------------------------------------------
 # Option for SzLib support
 #-----------------------------------------------------------------------------
-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)
+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 NAMES ${SZIP_PACKAGE_NAME}${HDF_PACKAGE_EXT})
-    IF (NOT SZIP_FOUND)
+    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")
+    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})
-      SET (H5_HAVE_FILTER_SZIP 1)
-      SET (H5_HAVE_SZLIB_H 1)
-      SET (H5_HAVE_LIBSZ 1)
-      MESSAGE (STATUS "Filter SZIP is built")
-    ELSE (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-      MESSAGE (FATAL_ERROR "SZIP is Required for SZIP support in HDF5")
-    ENDIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-  ENDIF (SZIP_FOUND)
-  SET (LINK_LIBS ${LINK_LIBS} ${SZIP_LIBRARIES})
+      set (H5_HAVE_FILTER_SZIP 1)
+      set (H5_HAVE_SZLIB_H 1)
+      set (H5_HAVE_LIBSZ 1)
+      message (STATUS "Filter SZIP is built")
+    else (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+      message (FATAL_ERROR "SZIP is Required for SZIP support in HDF5")
+    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_DIR})
-  MESSAGE (STATUS "Filter SZIP is ON")
-  IF (H5_HAVE_FILTER_SZIP)
-    SET (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DECODE")
-  ENDIF (H5_HAVE_FILTER_SZIP)
-  IF (HDF5_ENABLE_SZIP_ENCODING)
-    SET (H5_HAVE_SZIP_ENCODER 1)
-    SET (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} ENCODE")
-  ENDIF (HDF5_ENABLE_SZIP_ENCODING)
-ENDIF (HDF5_ENABLE_SZIP_SUPPORT)
+  message (STATUS "Filter SZIP is ON")
+  if (H5_HAVE_FILTER_SZIP)
+    set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DECODE")
+  endif (H5_HAVE_FILTER_SZIP)
+  if (HDF5_ENABLE_SZIP_ENCODING)
+    set (H5_HAVE_SZIP_ENCODER 1)
+    set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} ENCODE")
+  endif (HDF5_ENABLE_SZIP_ENCODING)
+endif (HDF5_ENABLE_SZIP_SUPPORT)
diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake
index 24044c6..84aedb6 100644
--- a/CMakeInstallation.cmake
+++ b/CMakeInstallation.cmake
@@ -2,48 +2,48 @@
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_INSTALL_NO_DEVELOPMENT)
-  INSTALL (
+if (NOT HDF5_INSTALL_NO_DEVELOPMENT)
+  install (
       FILES ${PROJECT_BINARY_DIR}/H5pubconf.h
       DESTINATION ${HDF5_INSTALL_INCLUDE_DIR}
       COMPONENT headers
   )
-ENDIF (NOT HDF5_INSTALL_NO_DEVELOPMENT)
+endif (NOT HDF5_INSTALL_NO_DEVELOPMENT)
 
 #-----------------------------------------------------------------------------
 # Add Target(s) to CMake Install for import into other projects
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  INSTALL (
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  install (
       EXPORT ${HDF5_EXPORTED_TARGETS}
       DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
       FILE ${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-targets.cmake
       COMPONENT configinstall
   )
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
 
 #-----------------------------------------------------------------------------
 # Export all exported targets to the build tree for use by parent project
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
   EXPORT (
       TARGETS ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES}
       FILE ${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-targets.cmake
   )
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
 
 #-----------------------------------------------------------------------------
 # Configure the hdf5-config.cmake file for the build directory
 #-----------------------------------------------------------------------------
-SET (HDF5_INCLUDES_BUILD_TIME
+set (HDF5_INCLUDES_BUILD_TIME
     ${HDF5_SRC_DIR} ${HDF5_CPP_SRC_DIR} ${HDF5_HL_SRC_DIR}
     ${HDF5_TOOLS_SRC_DIR} ${HDF5_BINARY_DIR}
 )
-SET (HDF5_VERSION_STRING @HDF5_PACKAGE_VERSION@)
-SET (HDF5_VERSION_MAJOR  @HDF5_PACKAGE_VERSION_MAJOR@)
-SET (HDF5_VERSION_MINOR  @HDF5_PACKAGE_VERSION_MINOR@)
+set (HDF5_VERSION_STRING @HDF5_PACKAGE_VERSION@)
+set (HDF5_VERSION_MAJOR  @HDF5_PACKAGE_VERSION_MAJOR@)
+set (HDF5_VERSION_MINOR  @HDF5_PACKAGE_VERSION_MINOR@)
 
-CONFIGURE_FILE (
+configure_file (
     ${HDF5_RESOURCES_DIR}/hdf5-config.cmake.build.in 
     ${HDF5_BINARY_DIR}/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config.cmake @ONLY
 )
@@ -51,61 +51,61 @@ CONFIGURE_FILE (
 #-----------------------------------------------------------------------------
 # Configure the FindHDF5.cmake file for the install directory
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  CONFIGURE_FILE (
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  configure_file (
       ${HDF5_RESOURCES_DIR}/FindHDF5.cmake.in 
       ${HDF5_BINARY_DIR}/CMakeFiles/FindHDF5${HDF_PACKAGE_EXT}.cmake @ONLY
   )
-  INSTALL (
+  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)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
 
 #-----------------------------------------------------------------------------
 # Configure the hdf5-config.cmake file for the install directory
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  CONFIGURE_FILE (
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  configure_file (
       ${HDF5_RESOURCES_DIR}/hdf5-config.cmake.install.in
       ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config.cmake @ONLY
   )
-  INSTALL (
+  install (
       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)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
 
 #-----------------------------------------------------------------------------
 # Configure the hdf5-config-version .cmake file for the install directory
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  CONFIGURE_FILE (
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  configure_file (
       ${HDF5_RESOURCES_DIR}/hdf5-config-version.cmake.in
       ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config-version.cmake @ONLY
   )
-  INSTALL (
+  install (
       FILES ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config-version.cmake
       DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
       COMPONENT configinstall
   )
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
 
 #-----------------------------------------------------------------------------
 # Configure the libhdf5.settings file for the lib info
 #-----------------------------------------------------------------------------
-IF (H5_WORDS_BIGENDIAN)
-  SET (BYTESEX big-endian)
-ELSE (H5_WORDS_BIGENDIAN)
-  SET (BYTESEX little-endian)
-ENDIF (H5_WORDS_BIGENDIAN)
-CONFIGURE_FILE (
+if (H5_WORDS_BIGENDIAN)
+  set (BYTESEX big-endian)
+else (H5_WORDS_BIGENDIAN)
+  set (BYTESEX little-endian)
+endif (H5_WORDS_BIGENDIAN)
+configure_file (
     ${HDF5_RESOURCES_DIR}/libhdf5.settings.cmake.in 
     ${HDF5_BINARY_DIR}/libhdf5.settings @ONLY
 )
-INSTALL (
+install (
     FILES ${HDF5_BINARY_DIR}/libhdf5.settings
     DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
     COMPONENT libraries
@@ -114,157 +114,238 @@ INSTALL (
 #-----------------------------------------------------------------------------
 # Configure the HDF518_Examples.cmake file and the examples
 #-----------------------------------------------------------------------------
-OPTION (HDF5_PACK_EXAMPLES  "Package the HDF5 Library Examples Compressed File" OFF)
-IF (HDF5_PACK_EXAMPLES)
-  CONFIGURE_FILE (
+option (HDF5_PACK_EXAMPLES  "Package the HDF5 Library Examples Compressed File" OFF)
+if (HDF5_PACK_EXAMPLES)
+  configure_file (
       ${HDF5_RESOURCES_DIR}/HDF518_Examples.cmake.in 
       ${HDF5_BINARY_DIR}/HDF518_Examples.cmake @ONLY
   )
-  INSTALL (
+  install (
       FILES ${HDF5_BINARY_DIR}/HDF518_Examples.cmake
       DESTINATION ${HDF5_INSTALL_DATA_DIR}
       COMPONENT hdfdocuments
   )
-  IF (EXISTS "${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}")
-    INSTALL (
+  if (EXISTS "${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}")
+    install (
         FILES
             ${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}
             ${HDF5_SOURCE_DIR}/release_docs/USING_CMake_Examples.txt
         DESTINATION ${HDF5_INSTALL_DATA_DIR}
         COMPONENT hdfdocuments
     )
-  ENDIF (EXISTS "${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}")
-ENDIF (HDF5_PACK_EXAMPLES)
+  endif (EXISTS "${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}")
+endif (HDF5_PACK_EXAMPLES)
+
+#-----------------------------------------------------------------------------
+# Configure the README.txt file for the binary package
+#-----------------------------------------------------------------------------
+set (BINARY_SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
+set (BINARY_PLATFORM "${CMAKE_SYSTEM_NAME}")
+if (WIN32)
+  set (BINARY_EXAMPLE_ENDING "zip")
+  set (BINARY_INSTALL_ENDING "exe")
+  if (CMAKE_CL_64)
+    set (BINARY_SYSTEM_NAME "win64")
+  else (CMAKE_CL_64)
+    set (BINARY_SYSTEM_NAME "win32")
+  endif (CMAKE_CL_64)
+  if (${CMAKE_SYSTEM_VERSION} MATCHES "6.1")
+    set (BINARY_PLATFORM "${BINARY_PLATFORM} 7")
+  elseif (${CMAKE_SYSTEM_VERSION} MATCHES "6.2")
+    set (BINARY_PLATFORM "${BINARY_PLATFORM} 8")
+  endif (${CMAKE_SYSTEM_VERSION} MATCHES "6.1")
+  set (BINARY_PLATFORM "${BINARY_PLATFORM} ${MSVC_C_ARCHITECTURE_ID}")
+  if (${CMAKE_C_COMPILER_VERSION} MATCHES "16.*")
+    set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO 2010")
+  elseif (${CMAKE_C_COMPILER_VERSION} MATCHES "15.*")
+    set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO 2008")
+  elseif (${CMAKE_C_COMPILER_VERSION} MATCHES "17.*")
+    set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO 2012")
+  else (${CMAKE_C_COMPILER_VERSION} MATCHES "16.*")
+    set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO ${CMAKE_C_COMPILER_VERSION}")
+  endif (${CMAKE_C_COMPILER_VERSION} MATCHES "16.*")
+elseif (APPLE)
+  set (BINARY_EXAMPLE_ENDING "tar.gz")
+  set (BINARY_INSTALL_ENDING "dmg")
+  set (BINARY_PLATFORM "${BINARY_PLATFORM} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR}")
+  set (BINARY_PLATFORM "${BINARY_PLATFORM}, using ${CMAKE_C_COMPILER_ID} C ${CMAKE_C_COMPILER_VERSION}")
+else (WIN32)
+  set (BINARY_EXAMPLE_ENDING "tar.gz")
+  set (BINARY_INSTALL_ENDING "sh")
+  set (BINARY_PLATFORM "${BINARY_PLATFORM} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR}")
+  set (BINARY_PLATFORM "${BINARY_PLATFORM}, using ${CMAKE_C_COMPILER_ID} C ${CMAKE_C_COMPILER_VERSION}")
+endif (WIN32)
+if (HDF4_BUILD_FORTRAN)
+  set (BINARY_PLATFORM "${BINARY_PLATFORM} / ${CMAKE_Fortran_COMPILER_ID} Fortran")
+endif (HDF4_BUILD_FORTRAN)
+
+configure_file (
+    ${HDF5_RESOURCES_DIR}/README.txt.cmake.in 
+    ${HDF5_BINARY_DIR}/README.txt @ONLY
+)
 
 #-----------------------------------------------------------------------------
 # Add Document File(s) to CMake Install
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  INSTALL (
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  install (
       FILES
-          ${HDF5_SOURCE_DIR}/ACKNOWLEDGMENTS
           ${HDF5_SOURCE_DIR}/COPYING
       DESTINATION ${HDF5_INSTALL_DATA_DIR}
       COMPONENT hdfdocuments
   )
-  IF (EXISTS "${HDF5_SOURCE_DIR}/release_docs" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/release_docs")
-    SET (release_files
+  if (EXISTS "${HDF5_SOURCE_DIR}/release_docs" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/release_docs")
+    set (release_files
         ${HDF5_SOURCE_DIR}/release_docs/USING_HDF5_CMake.txt
         ${HDF5_SOURCE_DIR}/release_docs/COPYING
         ${HDF5_SOURCE_DIR}/release_docs/RELEASE.txt
     )
-    IF (WIN32 AND NOT CYGWIN)
-      SET (release_files
+    if (WIN32)
+      set (release_files
           ${release_files}
           ${HDF5_SOURCE_DIR}/release_docs/USING_HDF5_VS.txt
       )
-    ENDIF (WIN32 AND NOT CYGWIN)
-    IF (HDF5_PACK_INSTALL_DOCS)
-      SET (release_files
+    endif (WIN32)
+    if (HDF5_PACK_INSTALL_DOCS)
+      set (release_files
           ${release_files}
           ${HDF5_SOURCE_DIR}/release_docs/INSTALL_CMake.txt
           ${HDF5_SOURCE_DIR}/release_docs/HISTORY-1_8.txt
           ${HDF5_SOURCE_DIR}/release_docs/INSTALL
       )
-      IF (WIN32)
-        IF (NOT CYGWIN)
-          SET (release_files
-              ${release_files}
-              ${HDF5_SOURCE_DIR}/release_docs/INSTALL_Windows.txt
-          )
-        ELSE (NOT CYGWIN)
-          SET (release_files
-              ${release_files}
-              ${HDF5_SOURCE_DIR}/release_docs/INSTALL_Cygwin.txt
-          )
-        ENDIF (NOT CYGWIN)
-      ENDIF (WIN32)
-      IF (HDF5_ENABLE_PARALLEL)
-        SET (release_files
+      if (WIN32)
+        set (release_files
+            ${release_files}
+            ${HDF5_SOURCE_DIR}/release_docs/INSTALL_Windows.txt
+        )
+      endif (WIN32)
+      if (CYGWIN)
+        set (release_files
+            ${release_files}
+            ${HDF5_SOURCE_DIR}/release_docs/INSTALL_Cygwin.txt
+        )
+      endif (CYGWIN)
+      if (HDF5_ENABLE_PARALLEL)
+        set (release_files
             ${release_files}
             ${HDF5_SOURCE_DIR}/release_docs/INSTALL_parallel
         )
-      ENDIF (HDF5_ENABLE_PARALLEL)
-    ENDIF (HDF5_PACK_INSTALL_DOCS)
-    INSTALL (
+      endif (HDF5_ENABLE_PARALLEL)
+    endif (HDF5_PACK_INSTALL_DOCS)
+    install (
         FILES ${release_files}
         DESTINATION ${HDF5_INSTALL_DATA_DIR}
         COMPONENT hdfdocuments
     )
-  ENDIF (EXISTS "${HDF5_SOURCE_DIR}/release_docs" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/release_docs")
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+  endif (EXISTS "${HDF5_SOURCE_DIR}/release_docs" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/release_docs")
+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_NAME "${HDF5_PACKAGE_NAME}")
-  SET (CPACK_PACKAGE_INSTALL_DIRECTORY "${HDF5_PACKAGE_NAME}")
-  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}")
-  SET (CPACK_PACKAGE_VERSION_PATCH "")
-  IF (EXISTS "${HDF5_SOURCE_DIR}/release_docs")
-    SET (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/RELEASE.txt")
-    SET (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/COPYING")
-    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 (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES)
+  set (CPACK_PACKAGE_VENDOR "HDF_Group")
+  set (CPACK_PACKAGE_NAME "${HDF5_PACKAGE_NAME}")
+  if (CDASH_LOCAL)
+    set (CPACK_PACKAGE_VERSION "${HDF5_PACKAGE_VERSION}")
+  else (CDASH_LOCAL)
+    set (CPACK_PACKAGE_VERSION "${HDF5_PACKAGE_VERSION_STRING}")
+  endif (CDASH_LOCAL)
+  set (CPACK_PACKAGE_VERSION_MAJOR "${HDF5_PACKAGE_VERSION_MAJOR}")
+  set (CPACK_PACKAGE_VERSION_MINOR "${HDF5_PACKAGE_VERSION_MINOR}")
+  set (CPACK_PACKAGE_VERSION_PATCH "")
+  if (EXISTS "${HDF5_SOURCE_DIR}/release_docs")
+    set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/RELEASE.txt")
+    set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/COPYING")
+    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)
+  set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}")
+  set (CPACK_PACKAGE_ICON "${HDF5_RESOURCES_DIR}/hdf.bmp")
 
-  SET (CPACK_GENERATOR "TGZ") 
-  IF (WIN32)
+  set (CPACK_GENERATOR "TGZ") 
+  if (WIN32)
     LIST (APPEND CPACK_GENERATOR "NSIS") 
-    SET (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${LIB_TYPE}")
-    SET (CPACK_MONOLITHIC_INSTALL ON)
-    SET (CPACK_NSIS_CONTACT "${HDF5_PACKAGE_BUGREPORT}")
-    SET (CPACK_NSIS_MODIFY_PATH ON)
-    SET (CPACK_NSIS_PACKAGE_NAME "HDF5 ${CPACK_PACKAGE_VERSION}")
-  ELSEIF (APPLE)
+    # Installers for 32- vs. 64-bit CMake:
+    #  - Root install directory (displayed to end user at installer-run time)
+    #  - "NSIS package/display name" (text used in the installer GUI)
+    #  - Registry key used to store info about the installation
+    set (CPACK_NSIS_PACKAGE_NAME "${HDF5_PACKAGE_STRING}")
+    if (CMAKE_CL_64)
+      set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
+      set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)")
+    else (CMAKE_CL_64)
+      set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
+      set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
+    endif (CMAKE_CL_64)
+    # set the install/unistall icon used for the installer itself
+    # There is a bug in NSI that does not handle full unix paths properly.
+    set (CPACK_NSIS_MUI_ICON "${HDF5_RESOURCES_DIR}\\\\hdf.ico")
+    set (CPACK_NSIS_MUI_UNIICON "${HDF5_RESOURCES_DIR}\\\\hdf.ico")
+    # set the package header icon for MUI
+    set (CPACK_PACKAGE_ICON "${HDF5_RESOURCES_DIR}\\\\hdf.bmp")
+    set (CPACK_NSIS_DISPLAY_NAME "@CPACK_NSIS_PACKAGE_NAME@")
+    set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAME}\\\\${CPACK_PACKAGE_VERSION}")
+    set (CPACK_MONOLITHIC_INSTALL ON)
+    set (CPACK_NSIS_CONTACT "${HDF5_PACKAGE_BUGREPORT}")
+    set (CPACK_NSIS_MODIFY_PATH ON)
+  elseif (APPLE)
     LIST (APPEND CPACK_GENERATOR "DragNDrop") 
-    SET (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
-    SET (CPACK_PACKAGE_DEFAULT_LOCATION "/opt/${CPACK_PACKAGE_NAME}")
-    SET (CPACK_PACKAGING_INSTALL_PREFIX "/")
-    SET (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
-    SET (CPACK_PACKAGE_ICON "${HDF5_RESOURCES_DIR}/hdf.gif")
-    SET (CPACK_SET_DESTDIR TRUE) # Required when packaging, and set CMAKE_INSTALL_PREFIX to "/".
+    set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
+    set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
+    set (CPACK_PACKAGE_ICON "${HDF5_RESOURCES_DIR}/hdf.icns")
     
-    IF (HDF5_PACK_MACOSX_BUNDLE)
+    if (HDF5_PACK_MACOSX_BUNDLE)
       LIST (APPEND CPACK_GENERATOR "Bundle")
-      SET (CPACK_BUNDLE_NAME "${HDF5_PACKAGE_STRING}")
-      SET (CPACK_BUNDLE_LOCATION "/")    # make sure CMAKE_INSTALL_PREFIX ends in /
-      IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
-        SET (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/")
-      ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
-      SET (CPACK_BUNDLE_ICON "${HDF5_RESOURCES_DIR}/hdf.gif")
-      SET (CPACK_BUNDLE_PLIST "${HDF5_BINARY_DIR}/CMakeFiles/Info.plist")
-#      SET (CPACK_BUNDLE_STARTUP_COMMAND "${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-startup.sh")
-      SET (CPACK_APPLE_GUI_INFO_STRING "HDF5 (Hierarchical Data Format 5) Software Library and Utilities")
-      SET (CPACK_APPLE_GUI_COPYRIGHT "Copyright © 2006-2013 by The HDF Group. All rights reserved.")
-      SET (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}")
+      set (CPACK_BUNDLE_NAME "${HDF5_PACKAGE_STRING}")
+      set (CPACK_BUNDLE_LOCATION "/")    # make sure CMAKE_INSTALL_PREFIX ends in /
+      set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/")
+      set (CPACK_BUNDLE_ICON "${HDF5_RESOURCES_DIR}/hdf.icns")
+      set (CPACK_BUNDLE_PLIST "${HDF5_BINARY_DIR}/CMakeFiles/Info.plist")
+      set (CPACK_APPLE_GUI_INFO_STRING "HDF5 (Hierarchical Data Format 5) Software Library and Utilities")
+      set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © 2006-2014 by The HDF Group. All rights reserved.")
+      set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}")
+      set (CPACK_APPLE_GUI_BUNDLE_NAME "${HDF5_PACKAGE_STRING}")
+      set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}")
+      set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}")
       #-----------------------------------------------------------------------------
       # Configure the Info.plist file for the install bundle
       #-----------------------------------------------------------------------------
-      CONFIGURE_FILE (
+      configure_file (
           ${HDF5_RESOURCES_DIR}/CPack.Info.plist.in
           ${HDF5_BINARY_DIR}/CMakeFiles/Info.plist @ONLY
       )
+      configure_file (
+          ${HDF5_RESOURCES_DIR}/PkgInfo.in
+          ${HDF5_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY
+      )
+      configure_file (
+          ${HDF5_RESOURCES_DIR}/version.plist.in
+          ${HDF5_BINARY_DIR}/CMakeFiles/version.plist @ONLY
+      )
+      install (
+          FILES ${HDF5_BINARY_DIR}/CMakeFiles/PkgInfo
+                ${HDF5_BINARY_DIR}/CMakeFiles/version.plist
+          DESTINATION ..
+      )
     ENDIF(HDF5_PACK_MACOSX_BUNDLE)
-  ELSE (WIN32)
+  else (WIN32)
     LIST (APPEND CPACK_GENERATOR "STGZ") 
-    SET (CPACK_PACKAGING_INSTALL_PREFIX "/usr")
-    SET (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
+    set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
+    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 
+    set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
+    set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${HDF5_PACKAGE_BUGREPORT}")
+
+#    LIST (APPEND CPACK_GENERATOR "RPM") 
+    set (CPACK_RPM_PACKAGE_RELEASE "1")
+    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.
@@ -280,28 +361,38 @@ IF (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES)
 The HDF5 data model, file format, API, library, and tools are open and distributed without charge.
 "
     )
-  ENDIF (WIN32)
+    
+    #-----------------------------------------------------------------------------
+    # Configure the spec file for the install RPM
+    #-----------------------------------------------------------------------------
+#    configure_file ("${HDF5_RESOURCES_DIR}/hdf5.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_PACKAGE_NAME}.spec" @ONLY IMMEDIATE)
+#    set (CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_PACKAGE_NAME}.spec")
+  endif (WIN32)
   
+  # By default, do not warn when built on machines using only VS Express:
+  if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+    set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+  ENDIF(NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
   INCLUDE(InstallRequiredSystemLibraries)
 
-  SET (CPACK_INSTALL_CMAKE_PROJECTS "${HDF5_BINARY_DIR};HDF5;ALL;/")
+  set (CPACK_INSTALL_CMAKE_PROJECTS "${HDF5_BINARY_DIR};HDF5;ALL;/")
   
-  IF (HDF5_PACKAGE_EXTLIBS)
-    IF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-      IF (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
-        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};ZLIB;libraries;/")
-        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};ZLIB;headers;/")
-        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};ZLIB;configinstall;/")
-      ENDIF (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
-      IF (SZIP_FOUND AND SZIP_USE_EXTERNAL)
-        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/")
-        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;headers;/")
-        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/")
-      ENDIF (SZIP_FOUND AND SZIP_USE_EXTERNAL)
-    ENDIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-  ENDIF (HDF5_PACKAGE_EXTLIBS)
+  if (HDF5_PACKAGE_EXTLIBS)
+    if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+      if (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
+        set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};ZLIB;libraries;/")
+        set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};ZLIB;headers;/")
+        set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};ZLIB;configinstall;/")
+      endif (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
+      if (SZIP_FOUND AND SZIP_USE_EXTERNAL)
+        set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/")
+        set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;headers;/")
+        set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/")
+      endif (SZIP_FOUND AND SZIP_USE_EXTERNAL)
+    endif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+  endif (HDF5_PACKAGE_EXTLIBS)
   
-  INCLUDE (CPack)
+  include (CPack)
 
   #---------------------------------------------------------------------------
   # Now list the cpack commands
@@ -330,7 +421,7 @@ The HDF5 data model, file format, API, library, and tools are open and distribut
       GROUP Development
   )
   
-  IF (HDF5_BUILD_FORTRAN)
+  if (HDF5_BUILD_FORTRAN)
     CPACK_ADD_COMPONENT (fortlibraries 
         DISPLAY_NAME "HDF5 Fortran Libraries" 
         DEPENDS libraries
@@ -341,9 +432,9 @@ The HDF5 data model, file format, API, library, and tools are open and distribut
         DEPENDS fortlibraries
         GROUP Development
     )
-  ENDIF (HDF5_BUILD_FORTRAN)
+  endif (HDF5_BUILD_FORTRAN)
   
-  IF (HDF5_BUILD_CPP_LIB)
+  if (HDF5_BUILD_CPP_LIB)
     CPACK_ADD_COMPONENT (cpplibraries 
         DISPLAY_NAME "HDF5 C++ Libraries" 
         DEPENDS libraries
@@ -354,9 +445,9 @@ The HDF5 data model, file format, API, library, and tools are open and distribut
         DEPENDS cpplibraries
         GROUP Development
     )
-  ENDIF (HDF5_BUILD_CPP_LIB)
+  endif (HDF5_BUILD_CPP_LIB)
   
-  IF (HDF5_BUILD_TOOLS)
+  if (HDF5_BUILD_TOOLS)
     CPACK_ADD_COMPONENT (toolsapplications 
         DISPLAY_NAME "HDF5 Tools Applications" 
         DEPENDS toolslibraries
@@ -372,9 +463,9 @@ The HDF5 data model, file format, API, library, and tools are open and distribut
         DEPENDS toolslibraries
         GROUP Development
     )
-  ENDIF (HDF5_BUILD_TOOLS)
+  endif (HDF5_BUILD_TOOLS)
   
-  IF (HDF5_BUILD_HL_LIB)
+  if (HDF5_BUILD_HL_LIB)
     CPACK_ADD_COMPONENT (hllibraries 
         DISPLAY_NAME "HDF5 HL Libraries" 
         DEPENDS libraries
@@ -405,6 +496,6 @@ The HDF5 data model, file format, API, library, and tools are open and distribut
         DEPENDS fortlibraries
         GROUP Runtime
     )
-  ENDIF (HDF5_BUILD_HL_LIB)
+  endif (HDF5_BUILD_HL_LIB)
   
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6f60b0f..a82dcfa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5 C CXX)
 
 #-----------------------------------------------------------------------------
@@ -20,7 +20,7 @@ PROJECT (HDF5 C CXX)
 # HDF5_EXPORTED_TARGETS :
 #   Set this to the name of the targets variable which controls exports
 #   If unset (because parent project does not support/use the
-#   INSTALL (EXPORT target...) syntax), then targets are not configured
+#   install (EXPORT target...) syntax), then targets are not configured
 #   for export during install.
 #
 # HDF5_LIB_DEPENDENCIES :
@@ -44,30 +44,30 @@ PROJECT (HDF5 C CXX)
 # any project making use of this build of HDF5 will use the correct zlib
 #
 #   # Tell hdf5 that we are manually overriding certain settings
-#   SET(HDF5_EXTERNALLY_CONFIGURED 1)
+#   set (HDF5_EXTERNALLY_CONFIGURED 1)
 #   # Avoid duplicating names of installed libraries
-#   SET(HDF5_EXTERNAL_LIB_PREFIX "vtk")
+#   set (HDF5_EXTERNAL_LIB_PREFIX "vtk")
 #   # Export configuration to this export variable
-#   SET(HDF5_EXPORTED_TARGETS "paraview-targets")
+#   set (HDF5_EXPORTED_TARGETS "paraview-targets")
 #
 #   # Setup all necessary overrides for zlib so that HDF5 uses our
 #   # internally compiled zlib rather than any other version
-#   IF(HDF5_ENABLE_Z_LIB_SUPPORT)
+#   if (HDF5_ENABLE_Z_LIB_SUPPORT)
 #     # We must tell the main HDF5 library that it depends on our zlib 
-#     SET(HDF5_LIB_DEPENDENCIES vtkzlib)    
+#     set (HDF5_LIB_DEPENDENCIES vtkzlib)    
 #     # Override the zlib header file
-#     IF(VTK_USE_SYSTEM_ZLIB)
-#       SET(H5_ZLIB_HEADER "zlib.h")
-#     ELSE(VTK_USE_SYSTEM_ZLIB)
-#       SET(H5_ZLIB_HEADER "vtk_zlib.h")
+#     if (VTK_USE_SYSTEM_ZLIB)
+#       set (H5_ZLIB_HEADER "zlib.h")
+#     else (VTK_USE_SYSTEM_ZLIB)
+#       set (H5_ZLIB_HEADER "vtk_zlib.h")
 #       # Set vars that FindZlib would have set if used in sub project
-#       SET(ZLIB_INCLUDE_DIRS "${VTK_ZLIB_INCLUDE_DIRS}")
-#       SET(ZLIB_LIBRARIES vtkzlib)
-#     ENDIF(VTK_USE_SYSTEM_ZLIB)
-#   ENDIF(HDF5_ENABLE_Z_LIB_SUPPORT)
+#       set (ZLIB_INCLUDE_DIRS "${VTK_ZLIB_INCLUDE_DIRS}")
+#       set (ZLIB_LIBRARIES vtkzlib)
+#     endif (VTK_USE_SYSTEM_ZLIB)
+#   endif (HDF5_ENABLE_Z_LIB_SUPPORT)
 # 
 #   # Add the sub project
-#   ADD_SUBDIRECTORY(Utilities/hdf5-1.8)
+#   add_subdirectory (Utilities/hdf5-1.8)
 #-----------------------------------------------------------------------------
 
 #-----------------------------------------------------------------------------
@@ -77,268 +77,261 @@ PROJECT (HDF5 C CXX)
 # organization feature. Default to ON for non-Express users. Express users must
 # explicitly turn off this option to build HDF5 in the Express IDE...
 #
-OPTION (HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON)
-MARK_AS_ADVANCED (HDF5_USE_FOLDERS)
-IF (HDF5_USE_FOLDERS)
-  SET_PROPERTY (GLOBAL PROPERTY USE_FOLDERS ON)
-ENDIF (HDF5_USE_FOLDERS)
-OPTION (HDF5_NO_PACKAGES "CPACK - Disable packaging" OFF)
-MARK_AS_ADVANCED (HDF5_NO_PACKAGES)
+option (HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON)
+mark_as_advanced (HDF5_USE_FOLDERS)
+if (HDF5_USE_FOLDERS)
+  set_property (GLOBAL PROPERTY USE_FOLDERS ON)
+endif (HDF5_USE_FOLDERS)
+option (HDF5_NO_PACKAGES "CPACK - Disable packaging" OFF)
+mark_as_advanced (HDF5_NO_PACKAGES)
 
 #-----------------------------------------------------------------------------
 # Set the core names of all the libraries
 #-----------------------------------------------------------------------------
-SET (HDF5_LIB_CORENAME              "hdf5")
-SET (HDF5_TEST_LIB_CORENAME         "hdf5_test")
-SET (HDF5_CPP_LIB_CORENAME          "hdf5_cpp")
-SET (HDF5_HL_LIB_CORENAME           "hdf5_hl")
-SET (HDF5_HL_CPP_LIB_CORENAME       "hdf5_hl_cpp")
-SET (HDF5_TOOLS_LIB_CORENAME        "hdf5_tools")
-SET (HDF5_F90_LIB_CORENAME          "hdf5_fortran")
-SET (HDF5_F90_C_LIB_CORENAME        "hdf5_f90cstub")
-SET (HDF5_F90_TEST_LIB_CORENAME     "hdf5_test_fortran")
-SET (HDF5_F90_C_TEST_LIB_CORENAME   "hdf5_test_f90cstub")
-SET (HDF5_HL_F90_LIB_CORENAME       "hdf5_hl_fortran")
-SET (HDF5_HL_F90_C_LIB_CORENAME     "hdf5_hl_f90cstub")
+set (HDF5_LIB_CORENAME              "hdf5")
+set (HDF5_TEST_LIB_CORENAME         "hdf5_test")
+set (HDF5_CPP_LIB_CORENAME          "hdf5_cpp")
+set (HDF5_HL_LIB_CORENAME           "hdf5_hl")
+set (HDF5_HL_CPP_LIB_CORENAME       "hdf5_hl_cpp")
+set (HDF5_TOOLS_LIB_CORENAME        "hdf5_tools")
+set (HDF5_F90_LIB_CORENAME          "hdf5_fortran")
+set (HDF5_F90_C_LIB_CORENAME        "hdf5_f90cstub")
+set (HDF5_F90_TEST_LIB_CORENAME     "hdf5_test_fortran")
+set (HDF5_F90_C_TEST_LIB_CORENAME   "hdf5_test_f90cstub")
+set (HDF5_HL_F90_LIB_CORENAME       "hdf5_hl_fortran")
+set (HDF5_HL_F90_C_LIB_CORENAME     "hdf5_hl_f90cstub")
 
 #-----------------------------------------------------------------------------
 # Set the true names of all the libraries if customized by external project
 #-----------------------------------------------------------------------------
-SET (HDF5_LIB_NAME              "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_CORENAME}")
-SET (HDF5_TEST_LIB_NAME         "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_LIB_CORENAME}")
-SET (HDF5_CPP_LIB_NAME          "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_CPP_LIB_CORENAME}")
-SET (HDF5_HL_LIB_NAME           "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_LIB_CORENAME}")
-SET (HDF5_HL_CPP_LIB_NAME       "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_CPP_LIB_CORENAME}")
-SET (HDF5_TOOLS_LIB_NAME        "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOLS_LIB_CORENAME}")
-SET (HDF5_F90_LIB_NAME          "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_LIB_CORENAME}")
-SET (HDF5_F90_C_LIB_NAME        "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_LIB_CORENAME}")
-SET (HDF5_F90_TEST_LIB_NAME     "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_TEST_LIB_CORENAME}")
-SET (HDF5_F90_C_TEST_LIB_NAME   "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_TEST_LIB_CORENAME}")
-SET (HDF5_HL_F90_LIB_NAME       "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_LIB_CORENAME}")
-SET (HDF5_HL_F90_C_LIB_NAME     "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_C_LIB_CORENAME}")
+set (HDF5_LIB_NAME              "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_CORENAME}")
+set (HDF5_TEST_LIB_NAME         "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_LIB_CORENAME}")
+set (HDF5_CPP_LIB_NAME          "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_CPP_LIB_CORENAME}")
+set (HDF5_HL_LIB_NAME           "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_LIB_CORENAME}")
+set (HDF5_HL_CPP_LIB_NAME       "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_CPP_LIB_CORENAME}")
+set (HDF5_TOOLS_LIB_NAME        "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOLS_LIB_CORENAME}")
+set (HDF5_F90_LIB_NAME          "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_LIB_CORENAME}")
+set (HDF5_F90_C_LIB_NAME        "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_LIB_CORENAME}")
+set (HDF5_F90_TEST_LIB_NAME     "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_TEST_LIB_CORENAME}")
+set (HDF5_F90_C_TEST_LIB_NAME   "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_TEST_LIB_CORENAME}")
+set (HDF5_HL_F90_LIB_NAME       "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_LIB_CORENAME}")
+set (HDF5_HL_F90_C_LIB_NAME     "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_C_LIB_CORENAME}")
 
 #-----------------------------------------------------------------------------
 # Set the target names of all the libraries
 #-----------------------------------------------------------------------------
-SET (HDF5_LIB_TARGET              ${HDF5_LIB_CORENAME})
-SET (HDF5_TEST_LIB_TARGET         ${HDF5_TEST_LIB_CORENAME})
-SET (HDF5_CPP_LIB_TARGET          ${HDF5_CPP_LIB_CORENAME})
-SET (HDF5_HL_LIB_TARGET           ${HDF5_HL_LIB_CORENAME})
-SET (HDF5_HL_CPP_LIB_TARGET       ${HDF5_HL_CPP_LIB_CORENAME})
-SET (HDF5_TOOLS_LIB_TARGET        ${HDF5_TOOLS_LIB_CORENAME})
-SET (HDF5_F90_LIB_TARGET          ${HDF5_F90_LIB_CORENAME})
-SET (HDF5_F90_C_LIB_TARGET        ${HDF5_F90_C_LIB_CORENAME})
-SET (HDF5_F90_TEST_LIB_TARGET     ${HDF5_F90_TEST_LIB_CORENAME})
-SET (HDF5_F90_C_TEST_LIB_TARGET   ${HDF5_F90_C_TEST_LIB_CORENAME})
-SET (HDF5_HL_F90_LIB_TARGET       ${HDF5_HL_F90_LIB_CORENAME})
-SET (HDF5_HL_F90_C_LIB_TARGET     ${HDF5_HL_F90_C_LIB_CORENAME})
+set (HDF5_LIB_TARGET              ${HDF5_LIB_CORENAME})
+set (HDF5_TEST_LIB_TARGET         ${HDF5_TEST_LIB_CORENAME})
+set (HDF5_CPP_LIB_TARGET          ${HDF5_CPP_LIB_CORENAME})
+set (HDF5_HL_LIB_TARGET           ${HDF5_HL_LIB_CORENAME})
+set (HDF5_HL_CPP_LIB_TARGET       ${HDF5_HL_CPP_LIB_CORENAME})
+set (HDF5_TOOLS_LIB_TARGET        ${HDF5_TOOLS_LIB_CORENAME})
+set (HDF5_F90_LIB_TARGET          ${HDF5_F90_LIB_CORENAME})
+set (HDF5_F90_C_LIB_TARGET        ${HDF5_F90_C_LIB_CORENAME})
+set (HDF5_F90_TEST_LIB_TARGET     ${HDF5_F90_TEST_LIB_CORENAME})
+set (HDF5_F90_C_TEST_LIB_TARGET   ${HDF5_F90_C_TEST_LIB_CORENAME})
+set (HDF5_HL_F90_LIB_TARGET       ${HDF5_HL_F90_LIB_CORENAME})
+set (HDF5_HL_F90_C_LIB_TARGET     ${HDF5_HL_F90_C_LIB_CORENAME})
 
 #-----------------------------------------------------------------------------
 # Define some CMake variables for use later in the project
 #-----------------------------------------------------------------------------
-SET (HDF5_RESOURCES_DIR      ${HDF5_SOURCE_DIR}/config/cmake)
-SET (HDF5_SRC_DIR            ${HDF5_SOURCE_DIR}/src)
-SET (HDF5_TEST_SRC_DIR       ${HDF5_SOURCE_DIR}/test)
-SET (HDF5_CPP_SRC_DIR        ${HDF5_SOURCE_DIR}/c++)
-SET (HDF5_CPP_TST_DIR        ${HDF5_SOURCE_DIR}/c++/test)
-SET (HDF5_HL_SRC_DIR         ${HDF5_SOURCE_DIR}/hl)
-SET (HDF5_HL_CPP_SRC_DIR     ${HDF5_SOURCE_DIR}/hl/c++)
-SET (HDF5_TOOLS_SRC_DIR      ${HDF5_SOURCE_DIR}/tools)
-SET (HDF5_PERFORM_SRC_DIR    ${HDF5_SOURCE_DIR}/perform)
-SET (HDF5_F90_SRC_DIR        ${HDF5_SOURCE_DIR}/fortran)
-
-IF (NOT HDF5_INSTALL_BIN_DIR)
-  SET (HDF5_INSTALL_BIN_DIR bin)
-ENDIF (NOT HDF5_INSTALL_BIN_DIR)
-IF (NOT HDF5_INSTALL_LIB_DIR)
-  SET (HDF5_INSTALL_LIB_DIR lib)
-ENDIF (NOT HDF5_INSTALL_LIB_DIR)
-IF (NOT HDF5_INSTALL_INCLUDE_DIR)
-  SET (HDF5_INSTALL_INCLUDE_DIR include)
-ENDIF (NOT HDF5_INSTALL_INCLUDE_DIR)
-IF (NOT HDF5_INSTALL_DATA_DIR)
-  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)
+set (HDF5_RESOURCES_DIR      ${HDF5_SOURCE_DIR}/config/cmake)
+set (HDF5_SRC_DIR            ${HDF5_SOURCE_DIR}/src)
+set (HDF5_TEST_SRC_DIR       ${HDF5_SOURCE_DIR}/test)
+set (HDF5_CPP_SRC_DIR        ${HDF5_SOURCE_DIR}/c++)
+set (HDF5_CPP_TST_DIR        ${HDF5_SOURCE_DIR}/c++/test)
+set (HDF5_HL_SRC_DIR         ${HDF5_SOURCE_DIR}/hl)
+set (HDF5_HL_CPP_SRC_DIR     ${HDF5_SOURCE_DIR}/hl/c++)
+set (HDF5_TOOLS_SRC_DIR      ${HDF5_SOURCE_DIR}/tools)
+set (HDF5_PERFORM_SRC_DIR    ${HDF5_SOURCE_DIR}/perform)
+set (HDF5_F90_SRC_DIR        ${HDF5_SOURCE_DIR}/fortran)
+
+if (NOT HDF5_INSTALL_BIN_DIR)
+  set (HDF5_INSTALL_BIN_DIR bin)
+endif (NOT HDF5_INSTALL_BIN_DIR)
+if (NOT HDF5_INSTALL_LIB_DIR)
+  set (HDF5_INSTALL_LIB_DIR lib)
+endif (NOT HDF5_INSTALL_LIB_DIR)
+if (NOT HDF5_INSTALL_INCLUDE_DIR)
+  set (HDF5_INSTALL_INCLUDE_DIR include)
+endif (NOT HDF5_INSTALL_INCLUDE_DIR)
+if (NOT HDF5_INSTALL_DATA_DIR)
+  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)
 
 #-----------------------------------------------------------------------------
 # parse the full version number from H5public.h and include in H5_VERS_INFO
 #-----------------------------------------------------------------------------
-FILE (READ ${HDF5_SRC_DIR}/H5public.h _h5public_h_contents)
-STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_MAJOR[ \t]+([0-9]*).*$"
+file (READ ${HDF5_SRC_DIR}/H5public.h _h5public_h_contents)
+string (REGEX REPLACE ".*#define[ \t]+H5_VERS_MAJOR[ \t]+([0-9]*).*$"
     "\\1" H5_VERS_MAJOR ${_h5public_h_contents})
-STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$"
+string (REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$"
     "\\1" H5_VERS_MINOR ${_h5public_h_contents})
-STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$"
+string (REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$"
     "\\1" H5_VERS_RELEASE ${_h5public_h_contents})
-STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_SUBRELEASE[ \t]+\"([0-9A-Za-z._]*)\".*$"
+string (REGEX REPLACE ".*#define[ \t]+H5_VERS_SUBRELEASE[ \t]+\"([0-9A-Za-z._]*)\".*$"
     "\\1" H5_VERS_SUBRELEASE ${_h5public_h_contents})
-#MESSAGE (STATUS "VERSION: ${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}-${H5_VERS_SUBRELEASE}")
+#message (STATUS "VERSION: ${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}-${H5_VERS_SUBRELEASE}")
 
 #-----------------------------------------------------------------------------
 # parse the full soversion number from config/lt_vers.am and include in H5_SOVERS_INFO
 #-----------------------------------------------------------------------------
-FILE (READ ${HDF5_SOURCE_DIR}/config/lt_vers.am _lt_vers_am_contents)
-STRING (REGEX REPLACE ".*LT_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
-    "\\1" H5_SOVERS_MAJOR ${_lt_vers_am_contents})
-STRING (REGEX REPLACE ".*LT_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
+file (READ ${HDF5_SOURCE_DIR}/config/lt_vers.am _lt_vers_am_contents)
+string (REGEX REPLACE ".*LT_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
+    "\\1" H5_SOVERS_INTERFACE ${_lt_vers_am_contents})
+string (REGEX REPLACE ".*LT_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
     "\\1" H5_SOVERS_MINOR ${_lt_vers_am_contents})
-STRING (REGEX REPLACE ".*LT_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
+string (REGEX REPLACE ".*LT_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
     "\\1" H5_SOVERS_RELEASE ${_lt_vers_am_contents})
-MESSAGE (STATUS "SOVERSION: ${H5_SOVERS_MAJOR}.${H5_SOVERS_RELEASE}.${H5_SOVERS_MINOR}")
+MATH (EXPR H5_SOVERS_MAJOR ${H5_SOVERS_INTERFACE}-${H5_SOVERS_RELEASE})
+message (STATUS "SOVERSION: ${H5_SOVERS_MAJOR}.${H5_SOVERS_RELEASE}.${H5_SOVERS_MINOR}")
 
 #-----------------------------------------------------------------------------
 # Basic HDF5 stuff here
 #-----------------------------------------------------------------------------
-SET (HDF5_PACKAGE "hdf5")
-SET (HDF5_PACKAGE_NAME "HDF5")
-SET (HDF5_PACKAGE_VERSION "${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}")
-SET (HDF5_PACKAGE_VERSION_MAJOR "${H5_VERS_MAJOR}.${H5_VERS_MINOR}")
-SET (HDF5_PACKAGE_VERSION_MINOR "${H5_VERS_RELEASE}")
-IF (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
-  SET (HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}-${H5_VERS_SUBRELEASE}")
-ELSE (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
-  SET (HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}")
-ENDIF (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
-SET (HDF5_PACKAGE_SOVERSION "${H5_SOVERS_MAJOR}.${H5_SOVERS_RELEASE}.${H5_SOVERS_MINOR}")
-SET (HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION_STRING}")
-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")
+set (HDF5_PACKAGE "hdf5")
+set (HDF5_PACKAGE_NAME "HDF5")
+set (HDF5_PACKAGE_VERSION "${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}")
+set (HDF5_PACKAGE_VERSION_MAJOR "${H5_VERS_MAJOR}.${H5_VERS_MINOR}")
+set (HDF5_PACKAGE_VERSION_MINOR "${H5_VERS_RELEASE}")
+if (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
+  set (HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}-${H5_VERS_SUBRELEASE}")
+else (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
+  set (HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}")
+endif (NOT "${H5_VERS_SUBRELEASE}" STREQUAL "")
+set (HDF5_PACKAGE_SOVERSION "${H5_SOVERS_MAJOR}.${H5_SOVERS_RELEASE}.${H5_SOVERS_MINOR}")
+set (HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION_STRING}")
+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")
 
 #-----------------------------------------------------------------------------
 # Include some macros for reusable code
 #-----------------------------------------------------------------------------
-INCLUDE (${HDF5_RESOURCES_DIR}/HDFMacros.cmake)
-INCLUDE (${HDF5_RESOURCES_DIR}/HDFLibMacros.cmake)
-INCLUDE (${HDF5_RESOURCES_DIR}/HDF5Macros.cmake)
+include (${HDF5_RESOURCES_DIR}/HDFMacros.cmake)
+include (${HDF5_RESOURCES_DIR}/HDFLibMacros.cmake)
+include (${HDF5_RESOURCES_DIR}/HDF5Macros.cmake)
 
 #-----------------------------------------------------------------------------
 # Setup output Directories
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  set (CMAKE_RUNTIME_OUTPUT_DIRECTORY
       ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Executables."
   )
-  SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
+  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY
       ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Libraries"
   )
-  SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
+  set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
       ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries."
   )
-  SET (CMAKE_Fortran_MODULE_DIRECTORY
-      ${PROJECT_BINARY_DIR}/bin/fortran CACHE PATH "Single Directory for all fortran modules."
+  set (CMAKE_Fortran_MODULE_DIRECTORY
+      ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all fortran modules."
   )
-ELSE (NOT HDF5_EXTERNALLY_CONFIGURED)
+else (NOT HDF5_EXTERNALLY_CONFIGURED)
   # if we are externally configured, but the project uses old cmake scripts
   # this may not be set and utilities like H5detect will fail
-  IF (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
-    SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
-  ENDIF (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+  if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
+    set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
+  endif (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
 
 #-----------------------------------------------------------------------------
 # Targets built within this project are exported at Install time for use
 # by other projects using FindHDF5. 
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_EXPORTED_TARGETS)
-  SET (HDF5_EXPORTED_TARGETS "hdf5-targets")
-ENDIF (NOT HDF5_EXPORTED_TARGETS)
+if (NOT HDF5_EXPORTED_TARGETS)
+  set (HDF5_EXPORTED_TARGETS "hdf5-targets")
+endif (NOT HDF5_EXPORTED_TARGETS)
 
 #-----------------------------------------------------------------------------
 # To include a library in the list exported by the project AT BUILD TIME,
 # add it to this variable. This is NOT used by Make Install, but for projects
 # which include hdf5 as a sub-project within their build tree
 #-----------------------------------------------------------------------------
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "")
-SET (EXTERNAL_HEADER_LIST "")
-SET (EXTERNAL_LIBRARY_LIST "")
-SET (EXTERNAL_LIBRARYDLL_LIST "")
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT "")
+set (EXTERNAL_HEADER_LIST "")
+set (EXTERNAL_LIBRARY_LIST "")
+set (EXTERNAL_LIBRARYDLL_LIST "")
 
 #-----------------------------------------------------------------------------
 # Run all the CMake configuration tests for our build environment
 #-----------------------------------------------------------------------------
-INCLUDE (${HDF5_RESOURCES_DIR}/ConfigureChecks.cmake)
+include (${HDF5_RESOURCES_DIR}/ConfigureChecks.cmake)
 
-#-----------------------------------------------------------------------------
-# Option to use legacy naming for windows libs/programs, default is legacy
-#-----------------------------------------------------------------------------
-IF (WIN32 AND NOT CYGWIN)
-  OPTION (HDF_LEGACY_NAMING "Use Legacy Names for Libraries and Programs" OFF)
-ENDIF (WIN32 AND NOT CYGWIN)
+set (CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
 
 #-----------------------------------------------------------------------------
 # Option to Build Shared/Static libs, default is static
 #-----------------------------------------------------------------------------
-OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
-SET (LIB_TYPE STATIC)
-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)
-  SET (H5_ENABLE_SHARED_LIB YES)
-ELSE (BUILD_SHARED_LIBS)
-  SET (H5_BUILT_AS_STATIC_LIB 1)
-  SET (H5_ENABLE_STATIC_LIB YES)
-  IF (NOT WIN32)
-    # should this be a user setting : Everyone uses it anyway ?
-    ADD_DEFINITIONS (-DPIC)
-  ENDIF (NOT WIN32)
-ENDIF (BUILD_SHARED_LIBS)
+option (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
+set (LIB_TYPE STATIC)
+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)
+  set (H5_ENABLE_SHARED_LIB YES)
+else (BUILD_SHARED_LIBS)
+  set (H5_BUILT_AS_STATIC_LIB 1)
+  set (H5_ENABLE_STATIC_LIB YES)
+  set (CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif (BUILD_SHARED_LIBS)
 
 #-----------------------------------------------------------------------------
 # Option to Build Static executables
 #-----------------------------------------------------------------------------
-OPTION (BUILD_STATIC_EXECS "Build Static Executabless" OFF)
-IF (BUILD_STATIC_EXECS)
-  IF (NOT WIN32)
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
-  ENDIF (NOT WIN32)
-ENDIF (BUILD_STATIC_EXECS)
+option (BUILD_STATIC_EXECS "Build Static Executabless" OFF)
+if (BUILD_STATIC_EXECS)
+  if (NOT WIN32)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
+  endif (NOT WIN32)
+endif (BUILD_STATIC_EXECS)
 
 #-----------------------------------------------------------------------------
 # Option to use code coverage
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF)
-IF (HDF5_ENABLE_COVERAGE)
-  SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
-  SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
-  SET (LDFLAGS "${LDFLAGS} -fprofile-arcs -ftest-coverage")   
-ENDIF (HDF5_ENABLE_COVERAGE)
+option (HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF)
+if (HDF5_ENABLE_COVERAGE)
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
+  set (LDFLAGS "${LDFLAGS} -fprofile-arcs -ftest-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 (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)
-IF (HDF5_ENABLE_USING_MEMCHECKER)
-  SET (H5_USING_MEMCHECKER 1)   
-ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+option (HDF5_ENABLE_USING_MEMCHECKER "Indicate that a memory checker is used" OFF)
+if (HDF5_ENABLE_USING_MEMCHECKER)
+  set (H5_USING_MEMCHECKER 1)   
+endif (HDF5_ENABLE_USING_MEMCHECKER)
 
 #-----------------------------------------------------------------------------
 # Option to use deprecated public API symbols
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON)
-IF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-  SET (H5_NO_DEPRECATED_SYMBOLS 0)   
-ELSE (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-  SET (H5_NO_DEPRECATED_SYMBOLS 1)   
-ENDIF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
+option (HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON)
+if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
+  set (H5_NO_DEPRECATED_SYMBOLS 0)   
+else (HDF5_ENABLE_DEPRECATED_SYMBOLS)
+  set (H5_NO_DEPRECATED_SYMBOLS 1)   
+endif (HDF5_ENABLE_DEPRECATED_SYMBOLS)
 
 #-----------------------------------------------------------------------------
 # When building utility executables that generate other (source) files :
@@ -346,292 +339,290 @@ ENDIF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
 # Certain systems may add /Debug or /Release to output paths
 # and we need to call the executable from inside the CMake configuration
 #-----------------------------------------------------------------------------
-SET (EXE_EXT "")
-IF (WIN32)
-  SET (EXE_EXT ".exe")
-  IF (NOT CYGWIN)
-    ADD_DEFINITIONS (-D_BIND_TO_CURRENT_VCLIBS_VERSION=1)
-    ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS)
-    ADD_DEFINITIONS (-D_CONSOLE)
-  ENDIF (NOT CYGWIN)
-ENDIF (WIN32)
-
-IF (MSVC)
-  SET (CMAKE_MFC_FLAG 0)
-  SET (WIN_COMPILE_FLAGS "")
-  SET (WIN_LINK_FLAGS "")
-ENDIF (MSVC)
-
-SET (MAKE_SYSTEM)
-IF (CMAKE_BUILD_TOOL MATCHES "make")
-  SET (MAKE_SYSTEM 1)
-ENDIF (CMAKE_BUILD_TOOL MATCHES "make")
-
-SET (CFG_INIT "/${CMAKE_CFG_INTDIR}")
-IF (MAKE_SYSTEM)
-  SET (CFG_INIT "")
-ENDIF (MAKE_SYSTEM)
+set (EXE_EXT "")
+if (WIN32)
+  set (EXE_EXT ".exe")
+  if (NOT CYGWIN)
+    add_definitions (-D_BIND_TO_CURRENT_VCLIBS_VERSION=1)
+    add_definitions (-D_CRT_SECURE_NO_WARNINGS)
+    add_definitions (-D_CONSOLE)
+  endif (NOT CYGWIN)
+endif (WIN32)
+
+if (MSVC)
+  set (CMAKE_MFC_FLAG 0)
+  set (WIN_COMPILE_FLAGS "")
+  set (WIN_LINK_FLAGS "")
+endif (MSVC)
+
+set (MAKE_SYSTEM)
+if (CMAKE_BUILD_TOOL MATCHES "make")
+  set (MAKE_SYSTEM 1)
+endif (CMAKE_BUILD_TOOL MATCHES "make")
+
+set (CFG_INIT "/${CMAKE_CFG_INTDIR}")
+if (MAKE_SYSTEM)
+  set (CFG_INIT "")
+endif (MAKE_SYSTEM)
 
 #-----------------------------------------------------------------------------
 # Add some definitions for Debug Builds
 #-----------------------------------------------------------------------------
-IF (CMAKE_BUILD_TYPE MATCHES Debug)
-  ADD_DEFINITIONS (-DDEBUG)
-  ADD_DEFINITIONS (
-      -DH5Z_DEBUG -DH5V_DEBUG -DH5T_DEBUG
-      -DH5S_DEBUG -DH5P_DEBUG -DH5O_DEBUG -DH5MM_DEBUG -DH5MF_DEBUG
-      -DH5I_DEBUG -DH5HL_DEBUG -DH5HG_DEBUG -DH5G_DEBUG -DH5F_DEBUG
-      -DH5E_DEBUG -DH5D_DEBUG -DH5B_DEBUG -DH5AC_DEBUG -UNDEBUG
-  )
+if (CMAKE_BUILD_TYPE MATCHES Debug)
+  add_definitions (-DDEBUG)
   # 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)
+  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)
+  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 (-DNDEBUG)
-  OPTION (HDF5_ENABLE_TRACE "Enable API tracing capability" OFF)
-  IF (HDF5_ENABLE_TRACE)
-    ADD_DEFINITIONS (-DH5_DEBUG_API )
-  ENDIF (HDF5_ENABLE_TRACE)
-ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
+  if (NOT WIN32)
+    add_definitions (-Wall)
+  endif (NOT WIN32)
+else (CMAKE_BUILD_TYPE MATCHES Debug)
+  add_definitions (-DNDEBUG)
+  option (HDF5_ENABLE_TRACE "Enable API tracing capability" OFF)
+  if (HDF5_ENABLE_TRACE)
+    add_definitions (-DH5_DEBUG_API )
+  endif (HDF5_ENABLE_TRACE)
+endif (CMAKE_BUILD_TYPE MATCHES Debug)
 
 #-----------------------------------------------------------------------------
 # Compiler specific flags : Shouldn't there be compiler tests for these
 #-----------------------------------------------------------------------------
-IF (CMAKE_COMPILER_IS_GNUCC)
-  IF (CMAKE_BUILD_TYPE MATCHES Debug)
-    SET (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -finline-functions -fno-common")
-  ELSE (CMAKE_BUILD_TYPE MATCHES Debug)
-    SET (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -fomit-frame-pointer -finline-functions -fno-common")
-  ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
-ENDIF (CMAKE_COMPILER_IS_GNUCC)
-IF (CMAKE_COMPILER_IS_GNUCXX)
-  IF (CMAKE_BUILD_TYPE MATCHES Debug)
-    SET (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS} -finline-functions -fno-common")
-  ELSE (CMAKE_BUILD_TYPE MATCHES Debug)
-    SET (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-functions -fno-common")
-  ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
-ENDIF (CMAKE_COMPILER_IS_GNUCXX)
+if (CMAKE_COMPILER_IS_GNUCC)
+  if (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -finline-functions -fno-common")
+  else (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -fomit-frame-pointer -finline-functions -fno-common")
+  endif (CMAKE_BUILD_TYPE MATCHES Debug)
+endif (CMAKE_COMPILER_IS_GNUCC)
+if (CMAKE_COMPILER_IS_GNUCXX)
+  if (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS} -finline-functions -fno-common")
+  else (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-functions -fno-common")
+  endif (CMAKE_BUILD_TYPE MATCHES Debug)
+endif (CMAKE_COMPILER_IS_GNUCXX)
 
 #-----------------------------------------------------------------------------
 # Option to embed library info into executables
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON)
-IF (HDF5_ENABLE_EMBEDDED_LIBINFO)
-  SET (H5_HAVE_EMBEDDED_LIBINFO 1)
-ENDIF (HDF5_ENABLE_EMBEDDED_LIBINFO)
+option (HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON)
+if (HDF5_ENABLE_EMBEDDED_LIBINFO)
+  set (H5_HAVE_EMBEDDED_LIBINFO 1)
+endif (HDF5_ENABLE_EMBEDDED_LIBINFO)
 
 #-----------------------------------------------------------------------------
 # Option to allow the user to disable compiler warnings
 #-----------------------------------------------------------------------------
-OPTION (HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF)
-IF (HDF5_DISABLE_COMPILER_WARNINGS)
+option (HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF)
+if (HDF5_DISABLE_COMPILER_WARNINGS)
   # MSVC uses /w to suppress warnings.  It also complains if another
   # warning level is given, so remove it.
-  IF (MSVC)
-    SET (HDF5_WARNINGS_BLOCKED 1)
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /w")
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /w")
-  ENDIF (MSVC)
-  IF (WIN32 AND NOT CYGWIN)
-    ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS)
-  ENDIF (WIN32 AND NOT CYGWIN)
+  if (MSVC)
+    set (HDF5_WARNINGS_BLOCKED 1)
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /w")
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /w")
+  endif (MSVC)
+  if (WIN32)
+    add_definitions (-D_CRT_SECURE_NO_WARNINGS)
+  endif (WIN32)
   # Borland uses -w- to suppress warnings.
-  IF (BORLAND)
-    SET (HDF5_WARNINGS_BLOCKED 1)
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
-  ENDIF (BORLAND)
+  if (BORLAND)
+    set (HDF5_WARNINGS_BLOCKED 1)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
+  endif (BORLAND)
 
   # Most compilers use -w to suppress warnings.
-  IF (NOT HDF5_WARNINGS_BLOCKED)
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
-  ENDIF (NOT HDF5_WARNINGS_BLOCKED)
-ENDIF (HDF5_DISABLE_COMPILER_WARNINGS)
+  if (NOT HDF5_WARNINGS_BLOCKED)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
+  endif (NOT HDF5_WARNINGS_BLOCKED)
+endif (HDF5_DISABLE_COMPILER_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # CDash is configured to only allow 3000 warnings, so
 # break into groups (from the config/gnu-flags file)
 #-----------------------------------------------------------------------------
-IF (NOT MSVC)
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline")
+if (NOT MSVC)
+  if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline")
+  else (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -erroff=%none -DBSD_COMP")
+  endif (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
     # Append warning flags
     # Don't use the '-Wtraditional' flag, we're way past having K&R C code
-    # SET (H5_CFLAGS "${H5_CFLAGS} -Wtraditional")
+    # set (H5_CFLAGS "${H5_CFLAGS} -Wtraditional")
     # Don't use the '-Wtraditional-conversion' flag, there's too many warnings
     #  from GCC's assert macro
-    # SET (H5_CFLAGS "${H5_CFLAGS} -Wtraditional-conversion")
+    # set (H5_CFLAGS "${H5_CFLAGS} -Wtraditional-conversion")
 
     # Append warning flags from gcc-3* case
     # (don't use -Wpadded flag for normal builds, many of the warnings its
     #   issuing can't be fixed and they are making it hard to detect other,
     #   more important warnings)
-    #SET (H5_CFLAGS "${H5_CFLAGS} -Wfloat-equal -Wmissing-format-attribute -Wpadded")
-    SET (H5_CFLAGS1 "${H5_CFLAGS1} -Wfloat-equal -Wmissing-format-attribute")
+    #set (H5_CFLAGS "${H5_CFLAGS} -Wfloat-equal -Wmissing-format-attribute -Wpadded")
+    set (H5_CFLAGS1 "${H5_CFLAGS1} -Wfloat-equal -Wmissing-format-attribute")
 
     # Append warning flags from gcc-3.2* case
-    SET (H5_CFLAGS1 "${H5_CFLAGS1} -Wmissing-noreturn -Wpacked -Wdisabled-optimization")
+    set (H5_CFLAGS1 "${H5_CFLAGS1} -Wmissing-noreturn -Wpacked -Wdisabled-optimization")
 
     # Enable more format checking flags, beyond the basic -Wformat included
     # in -Wall
-    SET (H5_CFLAGS1 "${H5_CFLAGS1} -Wformat=2")
+    set (H5_CFLAGS1 "${H5_CFLAGS1} -Wformat=2")
 
     # The "unreachable code" warning appears to be reliable now...
     # (this warning was removed in gcc 4.5+)
-    #SET (H5_CFLAGS "${H5_CFLAGS} -Wunreachable-code")
+    #set (H5_CFLAGS "${H5_CFLAGS} -Wunreachable-code")
 
     # Append warning flags from gcc-3.3* case
-    SET (H5_CFLAGS1 "${H5_CFLAGS1} -Wendif-labels")
+    set (H5_CFLAGS1 "${H5_CFLAGS1} -Wendif-labels")
 
     # Append warning flags from gcc-3.4* case
-    SET (H5_CFLAGS2 "${H5_CFLAGS2} -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch")
+    set (H5_CFLAGS2 "${H5_CFLAGS2} -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch")
 
     # Append more extra warning flags that only gcc4.0+ know about
-    SET (H5_CFLAGS2 "${H5_CFLAGS2} -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros")
+    set (H5_CFLAGS2 "${H5_CFLAGS2} -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros")
 
     # Append more extra warning flags that only gcc 4.1+ know about
-    SET (H5_CFLAGS3 "${H5_CFLAGS3} -Wunsafe-loop-optimizations -Wc++-compat")
+    set (H5_CFLAGS3 "${H5_CFLAGS3} -Wunsafe-loop-optimizations -Wc++-compat")
 
     # Append more extra warning flags that only gcc 4.2+ know about
-    SET (H5_CFLAGS3 "${H5_CFLAGS3} -Wstrict-overflow")
+    set (H5_CFLAGS3 "${H5_CFLAGS3} -Wstrict-overflow")
 
     # Append more extra warning flags that only gcc 4.3+ know about
     #
     # Technically, variable-length arrays are part of the C99 standard, but
     #   we should approach them a bit cautiously... -QAK
-    SET (H5_CFLAGS3 "${H5_CFLAGS3} -Wlogical-op -Wlarger-than=2048 -Wvla")
+    set (H5_CFLAGS3 "${H5_CFLAGS3} -Wlogical-op -Wlarger-than=2048 -Wvla")
 
     # Append more extra warning flags that only gcc 4.4+ know about
-    SET (H5_CFLAGS4 "${H5_CFLAGS4} -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat")
+    set (H5_CFLAGS4 "${H5_CFLAGS4} -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat")
 
     # Append more extra warning flags that only gcc 4.5+ know about
-    SET (H5_CFLAGS4 "${H5_CFLAGS4} -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants")
+    set (H5_CFLAGS4 "${H5_CFLAGS4} -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants")
 
     # Append more extra warning flags that only gcc 4.6+ know about
-    SET (H5_CFLAGS5 "${H5_CFLAGS5} -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines")
+    set (H5_CFLAGS5 "${H5_CFLAGS5} -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines")
 
     # Append more extra warning flags that only gcc 4.7+ know about
-    SET (H5_CFLAGS5 "${H5_CFLAGS5} -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn")
-ENDIF (NOT MSVC)
+    set (H5_CFLAGS5 "${H5_CFLAGS5} -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn")
+endif (NOT MSVC)
   
 #-----------------------------------------------------------------------------
 # Option to allow the user to enable all warnings
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_ALL_WARNINGS "Enable all warnings" OFF)
-IF (HDF5_ENABLE_ALL_WARNINGS)
-  IF (MSVC)
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Wall")
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wall")
-  ELSE (MSVC)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic ${H5_CFLAGS1} ${H5_CFLAGS2} ${H5_CFLAGS3} ${H5_CFLAGS4}")
-  ENDIF (MSVC)
-ENDIF (HDF5_ENABLE_ALL_WARNINGS)
+option (HDF5_ENABLE_ALL_WARNINGS "Enable all warnings" OFF)
+if (HDF5_ENABLE_ALL_WARNINGS)
+  if (MSVC)
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Wall")
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wall")
+  else (MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic ${H5_CFLAGS1} ${H5_CFLAGS2} ${H5_CFLAGS3} ${H5_CFLAGS4}")
+  endif (MSVC)
+endif (HDF5_ENABLE_ALL_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # Option to allow the user to enable warnings by groups
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GROUPZERO_WARNINGS "Enable group zero warnings" OFF)
-IF (HDF5_ENABLE_GROUPZERO_WARNINGS)
-  IF (MSVC)
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W1")
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W1")
-  ELSE (MSVC)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic")
-  ENDIF (MSVC)
-ENDIF (HDF5_ENABLE_GROUPZERO_WARNINGS)
+option (HDF5_ENABLE_GROUPZERO_WARNINGS "Enable group zero warnings" OFF)
+if (HDF5_ENABLE_GROUPZERO_WARNINGS)
+  if (MSVC)
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W1")
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W1")
+  else (MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic")
+  endif (MSVC)
+endif (HDF5_ENABLE_GROUPZERO_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # Option to allow the user to enable warnings by groups
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GROUPONE_WARNINGS "Enable group one warnings" OFF)
-IF (HDF5_ENABLE_GROUPONE_WARNINGS)
-  IF (MSVC)
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W2")
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W2")
-  ELSE (MSVC)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS1}")
-  ENDIF (MSVC)
-ENDIF (HDF5_ENABLE_GROUPONE_WARNINGS)
+option (HDF5_ENABLE_GROUPONE_WARNINGS "Enable group one warnings" OFF)
+if (HDF5_ENABLE_GROUPONE_WARNINGS)
+  if (MSVC)
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W2")
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W2")
+  else (MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS1}")
+  endif (MSVC)
+endif (HDF5_ENABLE_GROUPONE_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # Option to allow the user to enable warnings by groups
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GROUPTWO_WARNINGS "Enable group two warnings" OFF)
-IF (HDF5_ENABLE_GROUPTWO_WARNINGS)
-  IF (MSVC)
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3")
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
-  ELSE (MSVC)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS2}")
-  ENDIF (MSVC)
-ENDIF (HDF5_ENABLE_GROUPTWO_WARNINGS)
+option (HDF5_ENABLE_GROUPTWO_WARNINGS "Enable group two warnings" OFF)
+if (HDF5_ENABLE_GROUPTWO_WARNINGS)
+  if (MSVC)
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3")
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
+  else (MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS2}")
+  endif (MSVC)
+endif (HDF5_ENABLE_GROUPTWO_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # Option to allow the user to enable warnings by groups
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GROUPTHREE_WARNINGS "Enable group three warnings" OFF)
-IF (HDF5_ENABLE_GROUPTHREE_WARNINGS)
-  IF (MSVC)
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
-    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
-    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
-  ELSE (MSVC)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS3}")
-  ENDIF (MSVC)
-ENDIF (HDF5_ENABLE_GROUPTHREE_WARNINGS)
+option (HDF5_ENABLE_GROUPTHREE_WARNINGS "Enable group three warnings" OFF)
+if (HDF5_ENABLE_GROUPTHREE_WARNINGS)
+  if (MSVC)
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
+    string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
+  else (MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS3}")
+  endif (MSVC)
+endif (HDF5_ENABLE_GROUPTHREE_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # Option to allow the user to enable warnings by groups
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GROUPFOUR_WARNINGS "Enable group four warnings" OFF)
-IF (HDF5_ENABLE_GROUPFOUR_WARNINGS)
-  IF (NOT MSVC)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS4}")
-  ENDIF (NOT MSVC)
-ENDIF (HDF5_ENABLE_GROUPFOUR_WARNINGS)
+option (HDF5_ENABLE_GROUPFOUR_WARNINGS "Enable group four warnings" OFF)
+if (HDF5_ENABLE_GROUPFOUR_WARNINGS)
+  if (NOT MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS4}")
+  endif (NOT MSVC)
+endif (HDF5_ENABLE_GROUPFOUR_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # Option to allow the user to enable warnings by groups
 #-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GROUPFIVE_WARNINGS "Enable group five warnings" OFF)
-IF (HDF5_ENABLE_GROUPFIVE_WARNINGS)
-  IF (NOT MSVC)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS5}")
-  ENDIF (NOT MSVC)
-ENDIF (HDF5_ENABLE_GROUPFIVE_WARNINGS)
+option (HDF5_ENABLE_GROUPFIVE_WARNINGS "Enable group five warnings" OFF)
+if (HDF5_ENABLE_GROUPFIVE_WARNINGS)
+  if (NOT MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${H5_CFLAGS5}")
+  endif (NOT MSVC)
+endif (HDF5_ENABLE_GROUPFIVE_WARNINGS)
 
 #-----------------------------------------------------------------------------
 # This is in here to help some of the GCC based IDES like Eclipse
 # and code blocks parse the compiler errors and warnings better.
 #-----------------------------------------------------------------------------
-IF (CMAKE_COMPILER_IS_GNUCC)
-  SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
-ENDIF (CMAKE_COMPILER_IS_GNUCC)
-IF (CMAKE_COMPILER_IS_GNUCXX)
-  SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0")
-ENDIF (CMAKE_COMPILER_IS_GNUCXX)
+if (CMAKE_COMPILER_IS_GNUCC)
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
+endif (CMAKE_COMPILER_IS_GNUCC)
+if (CMAKE_COMPILER_IS_GNUCXX)
+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0")
+endif (CMAKE_COMPILER_IS_GNUCXX)
 
 #-----------------------------------------------------------------------------
 # All libs/tests/examples need the main include directories
@@ -641,151 +632,153 @@ INCLUDE_DIRECTORIES (${HDF5_BINARY_DIR} ${HDF5_SRC_DIR} ${CMAKE_RUNTIME_OUTPUT_D
 #-----------------------------------------------------------------------------
 # Option to Enable MPI Parallel
 #-----------------------------------------------------------------------------
-SET (CMAKE_MODULE_PATH ${HDF5_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
-OPTION (HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF)
-IF (HDF5_ENABLE_PARALLEL)
-  INCLUDE (FindMPI)
+set (CMAKE_MODULE_PATH ${HDF5_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
+option (HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF)
+if (HDF5_ENABLE_PARALLEL)
+  include (FindMPI)
   INCLUDE_DIRECTORIES (${MPI_C_INCLUDE_PATH})
-  IF (MPI_C_FOUND)
-    SET (H5_HAVE_PARALLEL 1)
+  if (MPI_C_FOUND)
+    set (H5_HAVE_PARALLEL 1)
     # MPI checks, only do these if MPI_C_FOUND is true, otherwise they always fail
     # and once set, they are cached as false and not regenerated
-    SET (CMAKE_REQUIRED_LIBRARIES "${MPI_C_LIBRARIES}" )
+    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)
+    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)
-  ELSE (MPI_C_FOUND)
-    MESSAGE (STATUS "Parallel libraries not found")
-  ENDIF (MPI_C_FOUND)
-ENDIF (HDF5_ENABLE_PARALLEL)
+  else (MPI_C_FOUND)
+    message (STATUS "Parallel libraries not found")
+  endif (MPI_C_FOUND)
+endif (HDF5_ENABLE_PARALLEL)
 
 # Parallel IO usage requires MPI to be Linked and Included
-IF (H5_HAVE_PARALLEL)
-  SET (LINK_LIBS ${LINK_LIBS} ${MPI_C_LIBRARIES})
-  IF (MPI_C_LINK_FLAGS)
-    SET (CMAKE_EXE_LINKER_FLAGS ${MPI_C_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS})
-  ENDIF (MPI_C_LINK_FLAGS)
-ENDIF (H5_HAVE_PARALLEL)
+if (H5_HAVE_PARALLEL)
+  set (LINK_LIBS ${LINK_LIBS} ${MPI_C_LIBRARIES})
+  if (MPI_C_LINK_FLAGS)
+    set (CMAKE_EXE_LINKER_FLAGS "${MPI_C_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
+  endif (MPI_C_LINK_FLAGS)
+endif (H5_HAVE_PARALLEL)
 
-SET (DEFAULT_API_VERSION "v18")
+set (DEFAULT_API_VERSION "v18")
 #-----------------------------------------------------------------------------
 # Option to use 1.6.x API
 #-----------------------------------------------------------------------------
-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)
+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)
 
 #-----------------------------------------------------------------------------
 # Include user macros
 #-----------------------------------------------------------------------------
-INCLUDE (UserMacros.cmake)
+include (UserMacros.cmake)
 
-INCLUDE (CMakeFilters.cmake)
+include (CMakeFilters.cmake)
 
 #-----------------------------------------------------------------------------
 # Option for external libraries on windows
 #-----------------------------------------------------------------------------
-OPTION (HDF5_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF)
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  IF (HDF5_PACKAGE_EXTLIBS)
-    SET (HDF5_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE)
-    IF (HDF5_ENABLE_Z_LIB_SUPPORT AND ZLIB_FOUND)
+option (HDF5_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF)
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  if (HDF5_PACKAGE_EXTLIBS)
+    set (HDF5_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE)
+    if (HDF5_ENABLE_Z_LIB_SUPPORT AND ZLIB_FOUND)
       PACKAGE_ZLIB_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT})
-    ENDIF (HDF5_ENABLE_Z_LIB_SUPPORT AND ZLIB_FOUND)
+    endif (HDF5_ENABLE_Z_LIB_SUPPORT AND ZLIB_FOUND)
     
-    IF (HDF5_ENABLE_SZIP_SUPPORT AND SZIP_FOUND)
+    if (HDF5_ENABLE_SZIP_SUPPORT AND SZIP_FOUND)
       PACKAGE_SZIP_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT})
-    ENDIF (HDF5_ENABLE_SZIP_SUPPORT AND SZIP_FOUND)
-  ENDIF (HDF5_PACKAGE_EXTLIBS)
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+    endif (HDF5_ENABLE_SZIP_SUPPORT AND SZIP_FOUND)
+  endif (HDF5_PACKAGE_EXTLIBS)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
 
 #-----------------------------------------------------------------------------
 # Option to use threadsafe
-# Note: Currently CMake only allows configuring of threadsafe on WINDOWS.
+# Note: Currently CMake only allows configuring of threadsafe on 
+# non-Cygwin WINDOWS.
 #-----------------------------------------------------------------------------
-IF (WIN32 AND NOT CYGWIN)
-  OPTION (HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF)
-  IF (HDF5_ENABLE_THREADSAFE)
+if (WIN32)
+  option (HDF5_ENABLE_THREADSAFE "Enable thread-safety" OFF)
+  if (HDF5_ENABLE_THREADSAFE)
     # check for unsupported options
-    IF (HDF5_ENABLE_PARALLEL)
-      MESSAGE (FATAL_ERROR " **** Parallel and Threadsafe options are mutually exclusive **** ")
-    ENDIF (HDF5_ENABLE_PARALLEL)
-    SET (H5_HAVE_THREADSAFE 1)
-    IF (H5_HAVE_IOEO)
-      MESSAGE (STATUS " **** Windows Threads only available in WINVER>=0x600 (Vista or Windows 7) **** ")
-      SET (H5_HAVE_WIN_THREADS 1)
-    ELSE (H5_HAVE_IOEO)
-      IF (NOT H5_HAVE_PTHREAD_H)
-        SET (H5_HAVE_THREADSAFE 0)
-        MESSAGE (FATAL_ERROR " **** Threadsafe option requires thread library **** ")
-      ENDIF (NOT H5_HAVE_PTHREAD_H)
-    ENDIF (H5_HAVE_IOEO)
-  ENDIF (HDF5_ENABLE_THREADSAFE)
-ENDIF (WIN32 AND NOT CYGWIN)
+    if (H5_BUILT_AS_STATIC_LIB)
+      message (FATAL_ERROR " **** thread-safety option not supported with static library **** ")
+    endif (H5_BUILT_AS_STATIC_LIB)
+    if (HDF5_ENABLE_PARALLEL)
+      message (FATAL_ERROR " **** parallel and thread-safety options are not supported **** ")
+    endif (HDF5_ENABLE_PARALLEL)
+    if (HDF5_BUILD_FORTRAN)
+      message (FATAL_ERROR " **** Fortran and thread-safety options are not supported **** ")
+    endif (HDF5_BUILD_FORTRAN)
+    if (HDF5_BUILD_CPP_LIB)
+      message (FATAL_ERROR " **** C++ and thread-safety options are not supported **** ")
+    endif (HDF5_BUILD_CPP_LIB)
+    set (H5_HAVE_THREADSAFE 1)
+    if (H5_HAVE_IOEO)
+      message (STATUS " **** Win32 threads requires WINVER>=0x600 (Windows Vista/7/8) **** ")
+      set (H5_HAVE_WIN_THREADS 1)
+    else (H5_HAVE_IOEO)
+      if (NOT H5_HAVE_PTHREAD_H)
+        set (H5_HAVE_THREADSAFE 0)
+        message (FATAL_ERROR " **** thread-safe option requires Win32 threads or Pthreads **** ")
+      endif (NOT H5_HAVE_PTHREAD_H)
+    endif (H5_HAVE_IOEO)
+  endif (HDF5_ENABLE_THREADSAFE)
+endif (WIN32)
 
 #-----------------------------------------------------------------------------
 # Add the HDF5 Library Target to the build
 #-----------------------------------------------------------------------------
-ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src)
+add_subdirectory (${HDF5_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src)
 
-IF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-  IF (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
+if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
+  if (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
     ADD_DEPENDENCIES (${HDF5_LIB_TARGET} ZLIB)
-  ENDIF (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
-  IF (SZIP_FOUND AND SZIP_USE_EXTERNAL)
+  endif (ZLIB_FOUND AND ZLIB_USE_EXTERNAL)
+  if (SZIP_FOUND AND SZIP_USE_EXTERNAL)
     ADD_DEPENDENCIES (${HDF5_LIB_TARGET} SZIP)
-  ENDIF (SZIP_FOUND AND SZIP_USE_EXTERNAL)
-ENDIF (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
-
-#-----------------------------------------------------------------------------
-# Build utility to copy and strip X lines of file
-#-----------------------------------------------------------------------------
-IF (HDF5_BUILD_TOOLS AND BUILD_TESTING)
-  SET (XLATE_UTILITY "xlatefile")
-  ADD_EXECUTABLE(${XLATE_UTILITY} ${HDF5_RESOURCES_DIR}/xlatefile.c)
-ENDIF (HDF5_BUILD_TOOLS AND BUILD_TESTING)
+  endif (SZIP_FOUND AND SZIP_USE_EXTERNAL)
+endif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
 
 #-----------------------------------------------------------------------------
 # Dashboard and Testing Settings
 #-----------------------------------------------------------------------------
-OPTION (BUILD_TESTING "Build HDF5 Unit Testing" OFF)
-IF (BUILD_TESTING)
-  SET (DART_TESTING_TIMEOUT 1200
+option (BUILD_TESTING "Build HDF5 Unit Testing" OFF)
+if (BUILD_TESTING)
+  set (DART_TESTING_TIMEOUT 1200
       CACHE INTEGER
       "Timeout in seconds for each test (default 1200=20minutes)"
   )
-  ENABLE_TESTING ()
-  INCLUDE (CTest)
-  IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-    IF (EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test")
-      ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/tools/lib ${PROJECT_BINARY_DIR}/tools/lib)
-      ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/test      ${PROJECT_BINARY_DIR}/test)
-    ENDIF (EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test")
-    IF (EXISTS "${HDF5_SOURCE_DIR}/perform" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/perform")
-      ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/perform   ${PROJECT_BINARY_DIR}/perform)
-    ENDIF(EXISTS "${HDF5_SOURCE_DIR}/perform" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/perform")
-    IF (H5_HAVE_PARALLEL)
-      IF (EXISTS "${HDF5_SOURCE_DIR}/testpar" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/testpar")
-        ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/testpar ${PROJECT_BINARY_DIR}/testpar)
-      ENDIF (EXISTS "${HDF5_SOURCE_DIR}/testpar" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/testpar")
-    ENDIF (H5_HAVE_PARALLEL)
-  ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
-
-  OPTION (HDF5_TEST_VFD "Execute tests with different VFDs" OFF)
-  MARK_AS_ADVANCED (HDF5_TEST_VFD)
-  IF (HDF5_TEST_VFD)
-    OPTION (HDF5_TEST_FHEAP_VFD "Execute tests with different VFDs" ON)
-    MARK_AS_ADVANCED (HDF5_TEST_FHEAP_VFD)
-  ENDIF (HDF5_TEST_VFD)
+  enable_testing ()
+  include (CTest)
+  if (NOT HDF5_EXTERNALLY_CONFIGURED)
+    if (EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test")
+      add_subdirectory (${HDF5_SOURCE_DIR}/tools/lib ${PROJECT_BINARY_DIR}/tools/lib)
+      add_subdirectory (${HDF5_SOURCE_DIR}/test      ${PROJECT_BINARY_DIR}/test)
+    endif (EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test")
+    if (EXISTS "${HDF5_SOURCE_DIR}/perform" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/perform")
+      add_subdirectory (${HDF5_SOURCE_DIR}/perform   ${PROJECT_BINARY_DIR}/perform)
+    endif (EXISTS "${HDF5_SOURCE_DIR}/perform" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/perform")
+    if (H5_HAVE_PARALLEL)
+      if (EXISTS "${HDF5_SOURCE_DIR}/testpar" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/testpar")
+        add_subdirectory (${HDF5_SOURCE_DIR}/testpar ${PROJECT_BINARY_DIR}/testpar)
+      endif (EXISTS "${HDF5_SOURCE_DIR}/testpar" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/testpar")
+    endif (H5_HAVE_PARALLEL)
+  endif (NOT HDF5_EXTERNALLY_CONFIGURED)
+
+  option (HDF5_TEST_VFD "Execute tests with different VFDs" OFF)
+  mark_as_advanced (HDF5_TEST_VFD)
+  if (HDF5_TEST_VFD)
+    option (HDF5_TEST_FHEAP_VFD "Execute tests with different VFDs" ON)
+    mark_as_advanced (HDF5_TEST_FHEAP_VFD)
+  endif (HDF5_TEST_VFD)
   
-  INCLUDE (${HDF5_SOURCE_DIR}/CTestConfig.cmake)
-  CONFIGURE_FILE (${HDF5_RESOURCES_DIR}/CTestCustom.cmake ${HDF5_BINARY_DIR}/CTestCustom.ctest @ONLY)
-ENDIF (BUILD_TESTING)
+  include (${HDF5_SOURCE_DIR}/CTestConfig.cmake)
+  configure_file (${HDF5_RESOURCES_DIR}/CTestCustom.cmake ${HDF5_BINARY_DIR}/CTestCustom.ctest @ONLY)
+endif (BUILD_TESTING)
 
 #-----------------------------------------------------------------------------
 # Option to build Fortran bindings/tests/examples
@@ -793,88 +786,83 @@ ENDIF (BUILD_TESTING)
 # so that fortran name mangling is detected before writing H5pubconf.h
 #-----------------------------------------------------------------------------
 # Set default name mangling : overridden by Fortran detection in fortran dir
-SET (H5_FC_FUNC  "H5_FC_FUNC(name,NAME) name ## _")
-SET (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) name ## _")
-IF (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/fortran")
-  OPTION (HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF)
-  IF (HDF5_BUILD_FORTRAN)
-    IF (BUILD_SHARED_LIBS AND APPLE)
-      MESSAGE (FATAL_ERROR " **** Shared FORTRAN libraries are unsupported **** ")
-    ENDIF (BUILD_SHARED_LIBS AND APPLE)
-    OPTION (HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" OFF)
-    INCLUDE (${HDF5_RESOURCES_DIR}/HDF5UseFortran.cmake)
-    IF (HDF5_ENABLE_F2003)
-      IF (NOT FORTRAN_HAVE_ISO_C_BINDING)
-        SET (HDF5_ENABLE_F2003 OFF)
-      ENDIF (NOT FORTRAN_HAVE_ISO_C_BINDING)
-    ENDIF (HDF5_ENABLE_F2003)
-
-    # -----------------------------------------------------------------------
-    # wrapper script variables
-    # 
-#    SET (FCFLAGS "${Fortran_DEFINES}")
-
-    ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/fortran ${PROJECT_BINARY_DIR}/fortran)
-    IF (HDF5_BUILD_HL_LIB)
-      IF (EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran")
+set (H5_FC_FUNC  "H5_FC_FUNC(name,NAME) name ## _")
+set (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) name ## _")
+if (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/fortran")
+  option (HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF)
+  if (HDF5_BUILD_FORTRAN)
+    if (BUILD_SHARED_LIBS AND APPLE)
+      message (FATAL_ERROR " **** Shared FORTRAN libraries are unsupported **** ")
+    endif (BUILD_SHARED_LIBS AND APPLE)
+    option (HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" OFF)
+    include (${HDF5_RESOURCES_DIR}/HDF5UseFortran.cmake)
+    if (HDF5_ENABLE_F2003)
+      if (NOT FORTRAN_HAVE_ISO_C_BINDING)
+        set (HDF5_ENABLE_F2003 OFF)
+      endif (NOT FORTRAN_HAVE_ISO_C_BINDING)
+    endif (HDF5_ENABLE_F2003)
+
+    add_subdirectory (${HDF5_SOURCE_DIR}/fortran ${PROJECT_BINARY_DIR}/fortran)
+    if (HDF5_BUILD_HL_LIB)
+      if (EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran")
         #-- Build the High Level Fortran source codes
-        ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/hl/fortran ${PROJECT_BINARY_DIR}/hl/fortran)
-      ENDIF (EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran")
-    ENDIF (HDF5_BUILD_HL_LIB)
-  ENDIF (HDF5_BUILD_FORTRAN)
-ENDIF (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/fortran")
+        add_subdirectory (${HDF5_SOURCE_DIR}/hl/fortran ${PROJECT_BINARY_DIR}/hl/fortran)
+      endif (EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran")
+    endif (HDF5_BUILD_HL_LIB)
+  endif (HDF5_BUILD_FORTRAN)
+endif (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/fortran")
 
 #-----------------------------------------------------------------------------
 # Option to build examples
 #-----------------------------------------------------------------------------
-IF (EXISTS "${HDF5_SOURCE_DIR}/examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/examples")
-  OPTION (HDF5_BUILD_EXAMPLES  "Build HDF5 Library Examples" OFF)
-  IF (HDF5_BUILD_EXAMPLES)
-    ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/examples ${PROJECT_BINARY_DIR}/examples)
-  ENDIF (HDF5_BUILD_EXAMPLES)
-ENDIF (EXISTS "${HDF5_SOURCE_DIR}/examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/examples")
+if (EXISTS "${HDF5_SOURCE_DIR}/examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/examples")
+  option (HDF5_BUILD_EXAMPLES  "Build HDF5 Library Examples" OFF)
+  if (HDF5_BUILD_EXAMPLES)
+    add_subdirectory (${HDF5_SOURCE_DIR}/examples ${PROJECT_BINARY_DIR}/examples)
+  endif (HDF5_BUILD_EXAMPLES)
+endif (EXISTS "${HDF5_SOURCE_DIR}/examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/examples")
 
 #-----------------------------------------------------------------------------
 # Option to build HDF5 C++ Library
 #-----------------------------------------------------------------------------
-IF (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++")
-  OPTION (HDF5_BUILD_CPP_LIB  "Build HDF5 C++ Library" OFF)
-  IF (HDF5_BUILD_CPP_LIB)
+if (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++")
+  option (HDF5_BUILD_CPP_LIB  "Build HDF5 C++ Library" OFF)
+  if (HDF5_BUILD_CPP_LIB)
     # check for unsupported options
-    IF (HDF5_ENABLE_PARALLEL)
-      MESSAGE (FATAL_ERROR " **** 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++")
+    if (HDF5_ENABLE_PARALLEL)
+      message (FATAL_ERROR " **** 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++")
 
 #-----------------------------------------------------------------------------
 # Option to build HDF5 Tools
 #-----------------------------------------------------------------------------
-IF (EXISTS "${HDF5_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/tools")
-  OPTION (HDF5_BUILD_TOOLS  "Build HDF5 Tools" OFF)
-  IF (HDF5_BUILD_TOOLS)
-    ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/tools ${PROJECT_BINARY_DIR}/tools)
-  ENDIF (HDF5_BUILD_TOOLS)
-ENDIF (EXISTS "${HDF5_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/tools")
+if (EXISTS "${HDF5_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/tools")
+  option (HDF5_BUILD_TOOLS  "Build HDF5 Tools" OFF)
+  if (HDF5_BUILD_TOOLS)
+    add_subdirectory (${HDF5_SOURCE_DIR}/tools ${PROJECT_BINARY_DIR}/tools)
+  endif (HDF5_BUILD_TOOLS)
+endif (EXISTS "${HDF5_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/tools")
 
 #-----------------------------------------------------------------------------
 # Option to build High Level API's
 #-----------------------------------------------------------------------------
-IF (EXISTS "${HDF5_SOURCE_DIR}/hl" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl")
-  OPTION (HDF5_BUILD_HL_LIB  "Build HIGH Level HDF5 Library" OFF)
-  IF (HDF5_BUILD_HL_LIB)
-    SET (H5_INCLUDE_HL 1)
-    ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/hl ${PROJECT_BINARY_DIR}/hl)
-  ENDIF (HDF5_BUILD_HL_LIB)
-ENDIF (EXISTS "${HDF5_SOURCE_DIR}/hl" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl")
+if (EXISTS "${HDF5_SOURCE_DIR}/hl" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl")
+  option (HDF5_BUILD_HL_LIB  "Build HIGH Level HDF5 Library" OFF)
+  if (HDF5_BUILD_HL_LIB)
+    set (H5_INCLUDE_HL 1)
+    add_subdirectory (${HDF5_SOURCE_DIR}/hl ${PROJECT_BINARY_DIR}/hl)
+  endif (HDF5_BUILD_HL_LIB)
+endif (EXISTS "${HDF5_SOURCE_DIR}/hl" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl")
 
 #-----------------------------------------------------------------------------
 # Generate the H5pubconf.h file containing user settings needed by compilation
 #-----------------------------------------------------------------------------
-CONFIGURE_FILE (${HDF5_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_BINARY_DIR}/H5pubconf.h @ONLY)
+configure_file (${HDF5_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_BINARY_DIR}/H5pubconf.h @ONLY)
 
-INCLUDE (CMakeInstallation.cmake)
+include (CMakeInstallation.cmake)
diff --git a/COPYING b/COPYING
index 25e79e7..76dee1c 100644
--- a/COPYING
+++ b/COPYING
@@ -4,7 +4,7 @@ HDF5 (Hierarchical Data Format 5) Software Library and Utilities
 -----------------------------------------------------------------------------
 
 HDF5 (Hierarchical Data Format 5) Software Library and Utilities
-Copyright 2006-2013 by The HDF Group.
+Copyright 2006-2014 by The HDF Group.
 
 NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities
 Copyright 1998-2006 by the Board of Trustees of the University of Illinois.
diff --git a/CTestConfig.cmake b/CTestConfig.cmake
index 184aea3..a14f686 100644
--- a/CTestConfig.cmake
+++ b/CTestConfig.cmake
@@ -4,28 +4,28 @@
 ## # The following are required to uses Dart and the Cdash dashboard
 ##   ENABLE_TESTING()
 ##   INCLUDE(CTest)
-SET (CTEST_PROJECT_NAME "HDF5")
-SET (CTEST_NIGHTLY_START_TIME "18:00:00 CST")
+set (CTEST_PROJECT_NAME "HDF5")
+set (CTEST_NIGHTLY_START_TIME "18:00:00 CST")
 
-SET (CTEST_DROP_METHOD "http")
-IF (CDASH_LOCAL)
-  SET (CTEST_DROP_SITE "72.36.68.252")
-  SET (CTEST_DROP_LOCATION "/submit.php?project=HDF5.1.8")
-ELSE (CDASH_LOCAL)
-  SET (CTEST_DROP_SITE "cdash.hdfgroup.uiuc.edu")
-  SET (CTEST_DROP_LOCATION "/submit.php?project=HDF518")
-ENDIF (CDASH_LOCAL)
-SET (CTEST_DROP_SITE_CDASH TRUE)
+set (CTEST_DROP_METHOD "http")
+if (CDASH_LOCAL)
+  set (CTEST_DROP_SITE "72.36.68.252")
+  set (CTEST_DROP_LOCATION "/submit.php?project=HDF5.1.8")
+else (CDASH_LOCAL)
+  set (CTEST_DROP_SITE "cdash.hdfgroup.uiuc.edu")
+  set (CTEST_DROP_LOCATION "/submit.php?project=HDF518")
+endif (CDASH_LOCAL)
+set (CTEST_DROP_SITE_CDASH TRUE)
 
-SET (UPDATE_TYPE svn)
-SET (VALGRIND_COMMAND "/usr/bin/valgrind")
-SET (VALGRIND_COMMAND_OPTIONS "-v --tool=memcheck --leak-check=full --track-fds=yes --num-callers=50 --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xfe")
-SET (CTEST_MEMORYCHECK_COMMAND "/usr/bin/valgrind")
-SET (CTEST_MEMORYCHECK_COMMAND_OPTIONS "-v --tool=memcheck --leak-check=full --track-fds=yes --num-callers=50 --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xfe")
+set (UPDATE_TYPE svn)
+set (VALGRIND_COMMAND "/usr/bin/valgrind")
+set (VALGRIND_COMMAND_OPTIONS "-v --tool=memcheck --leak-check=full --track-fds=yes --num-callers=50 --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xfe")
+set (CTEST_MEMORYCHECK_COMMAND "/usr/bin/valgrind")
+set (CTEST_MEMORYCHECK_COMMAND_OPTIONS "-v --tool=memcheck --leak-check=full --track-fds=yes --num-callers=50 --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xfe")
 
-SET (CTEST_TEST_TIMEOUT 3600 CACHE STRING 
+set (CTEST_TEST_TIMEOUT 3600 CACHE STRING 
     "Maximum time allowed before CTest will kill the test.") 
-SET (DART_TESTING_TIMEOUT 3600 CACHE STRING 
+set (DART_TESTING_TIMEOUT 3600 CACHE STRING 
     "Maximum time allowed before CTest will kill the test." FORCE)
 
 SET(CTEST_SUBMIT_RETRY_DELAY 20 CACHE STRING
diff --git a/MANIFEST b/MANIFEST
index b671cdc..ae83f44 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -76,6 +76,7 @@
 ./bin/runtest        _DO_NOT_DISTRIBUTE_
 ./bin/snapshot
 ./bin/snapshot_version      _DO_NOT_DISTRIBUTE_
+./bin/test-driver
 ./bin/timekeeper      _DO_NOT_DISTRIBUTE_
 ./bin/trace
 ./bin/yodconfigure
@@ -278,6 +279,7 @@
 ./fortran/test/tH5G_1_8.f90
 ./fortran/test/tH5I.f90
 ./fortran/test/tH5L_F03.f90
+./fortran/test/tH5MISC_1_8.f90
 ./fortran/test/tH5O.f90
 ./fortran/test/tH5O_F03.f90
 ./fortran/test/tH5P_F03.f90
@@ -289,6 +291,9 @@
 ./fortran/test/tH5T.f90
 ./fortran/test/tH5VL.f90
 ./fortran/test/tH5Z.f90
+./fortran/test/tHDF5_1_8.f90
+./fortran/test/tHDF5_F03.f90
+./fortran/test/tHDF5.f90
 
 ./fortran/testpar/Makefile.am
 ./fortran/testpar/Makefile.in
@@ -400,6 +405,8 @@
 ./c++/src/h5c++.in
 ./c++/src/header.html
 ./c++/src/header_files/filelist.xml
+./c++/src/header_files/hdf_logo.jpg
+./c++/src/header_files/help.jpg
 ./c++/src/header_files/image001.jpg
 ./c++/src/header_files/image002.jpg
 
@@ -411,12 +418,14 @@
 ./c++/test/h5cpputil.h
 ./c++/test/tattr.cpp
 ./c++/test/tcompound.cpp
+./c++/test/tdspl.cpp
 ./c++/test/testhdf5.cpp
 ./c++/test/tfile.cpp
 ./c++/test/tfilter.cpp
 ./c++/test/th5s.cpp
 ./c++/test/th5s.h5
 ./c++/test/tlinks.cpp
+./c++/test/tobject.cpp
 ./c++/test/ttypes.cpp
 ./c++/test/trefer.cpp
 ./c++/test/tvlstr.cpp
@@ -586,8 +595,6 @@
 ./src/H5FDmpi.h
 ./src/H5FDmpio.c
 ./src/H5FDmpio.h
-./src/H5FDmpiposix.c
-./src/H5FDmpiposix.h
 ./src/H5FDmulti.c
 ./src/H5FDmulti.h
 ./src/H5FDpkg.h
@@ -811,8 +818,8 @@
 ./src/H5Tvlen.c
 ./src/H5TS.c
 ./src/H5TSprivate.h
-./src/H5V.c
-./src/H5Vprivate.h
+./src/H5VM.c
+./src/H5VMprivate.h
 ./src/H5WB.c
 ./src/H5WBprivate.h
 ./src/H5Z.c
@@ -1014,13 +1021,11 @@
 ./testpar/t_chunk_alloc.c
 ./testpar/t_coll_chunk.c
 ./testpar/t_filter_read.c
-./testpar/t_posix_compliant.c
 ./testpar/t_shapesame.c
 ./testpar/t_span_tree.c
 ./testpar/testpar.h
 ./testpar/testphdf5.c
 ./testpar/testphdf5.h
-./testpar/testph5.sh.in
 
 ./tools/COPYING
 ./tools/Makefile.am
@@ -1115,6 +1120,7 @@
 # h5repack sources
 ./tools/h5repack/Makefile.am
 ./tools/h5repack/Makefile.in
+./tools/h5repack/dynlib_rpk.c
 ./tools/h5repack/h5repack.sh.in
 ./tools/h5repack/h5repack_plugin.sh.in
 ./tools/h5repack/h5repack.c
@@ -1320,8 +1326,12 @@
 ./tools/testfiles/tcontents.ddl
 ./tools/testfiles/tcontiguos.ddl
 ./tools/testfiles/tcmpdattrintsize.ddl
+./tools/testfiles/tcmpdintarray.ddl
+./tools/testfiles/tcmpdints.ddl
 ./tools/testfiles/tcmpdintsize.ddl
 ./tools/testfiles/tcmpdattrintsize.h5
+./tools/testfiles/tcmpdintarray.h5
+./tools/testfiles/tcmpdints.h5
 ./tools/testfiles/tcmpdintsize.h5
 ./tools/testfiles/tcomp-1.ddl
 ./tools/testfiles/tcomp-2.ddl
@@ -1393,6 +1403,8 @@
 ./tools/testfiles/tindicessub3.ddl
 ./tools/testfiles/tindicessub4.ddl
 ./tools/testfiles/tindicessub1.ddl
+./tools/testfiles/tintsattrs.ddl
+./tools/testfiles/tintsattrs.h5
 ./tools/testfiles/tlarge_objname.ddl
 ./tools/testfiles/tlarge_objname.h5
 ./tools/testfiles/tldouble.h5
@@ -1438,11 +1450,15 @@
 ./tools/testfiles/trawdatafile.exp
 ./tools/testfiles/trawssetfile.ddl
 ./tools/testfiles/trawssetfile.exp
+./tools/testfiles/treadfilter.ddl
+./tools/testfiles/treadintfilter.ddl
 ./tools/testfiles/treference.ddl
 ./tools/testfiles/tsaf.ddl
 ./tools/testfiles/tsaf.h5
 ./tools/testfiles/tscalarattrintsize.ddl
 ./tools/testfiles/tscalarattrintsize.h5
+./tools/testfiles/tscalarintattrsize.ddl
+./tools/testfiles/tscalarintattrsize.h5
 ./tools/testfiles/tscalarintsize.ddl
 ./tools/testfiles/tscalarintsize.h5
 ./tools/testfiles/tscalarstring.ddl
@@ -1972,6 +1988,12 @@
 ./tools/h5diff/testfiles/compounds_array_vlen2.h5
 ./tools/h5diff/testfiles/non_comparables1.h5
 ./tools/h5diff/testfiles/non_comparables2.h5
+./tools/h5diff/testfiles/tmptest2.he5
+./tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5
+./tools/h5diff/testfiles/h5diff_tmp1.txt
+./tools/h5diff/testfiles/tmptest.he5
+./tools/h5diff/testfiles/h5diff_tmp2.txt
+./tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5
 
 #test files for h5repack
 ./tools/h5repack/testfiles/h5repack_attr.h5
@@ -1989,6 +2011,7 @@
 ./tools/h5repack/testfiles/h5repack_layouto.h5
 ./tools/h5repack/testfiles/h5repack_layout2.h5
 ./tools/h5repack/testfiles/h5repack_layout3.h5
+./tools/h5repack/testfiles/h5repack_layout.UD.h5
 ./tools/h5repack/testfiles/h5repack_named_dtypes.h5
 ./tools/h5repack/testfiles/h5repack_nbit.h5
 ./tools/h5repack/testfiles/h5repack_objs.h5
@@ -1998,10 +2021,12 @@
 ./tools/h5repack/testfiles/h5repack_szip.h5
 ./tools/h5repack/testfiles/ublock.bin
 ./tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
+./tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst
 ./tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst
 ./tools/h5repack/testfiles/h5repack-help.txt
 ./tools/h5repack/testfiles/h5repack_filters.h5.tst
 ./tools/h5repack/testfiles/h5repack_layout.h5.ddl
+./tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
 ./tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl
 
 # jam utility and tests
@@ -2085,7 +2110,6 @@
 ./hl/src/Makefile.am
 ./hl/src/Makefile.in
 ./hl/src/H5DO.c
-./hl/src/H5DOprivate.h
 ./hl/src/H5DOpublic.h
 ./hl/src/H5DS.c
 ./hl/src/H5DSprivate.h
@@ -2262,7 +2286,6 @@
 ./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
@@ -2285,11 +2308,15 @@
 ./config/cmake/vfdTest.cmake
 ./config/cmake/CTestCustom.cmake
 ./config/cmake/ConfigureChecks.cmake
-./config/cmake/CPack.cmake
 ./config/cmake/CPack.Info.plist.in
-./config/cmake/hdf.gif
+./config/cmake/hdf.bmp
+./config/cmake/hdf.icns
+./config/cmake/hdf.ico
+./config/cmake/PkgInfo.in
+./config/cmake/version.plist.in
 ./config/cmake/NSIS.template.in
 ./config/cmake/NSIS.InstallOptions.ini.in
+./config/cmake/README.txt.cmake.in
 
 # CMake-specific User Files
 ./config/cmake/UserMacros/Windows_MT.cmake
diff --git a/Makefile.in b/Makefile.in
index f6d8ee8..9343560 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -47,23 +47,51 @@
 	$(MAKE) all
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -82,15 +110,15 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(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
+DIST_COMMON = $(top_srcdir)/config/commence.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(top_srcdir)/bin/mkinstalldirs COPYING \
+	bin/COPYING bin/compile bin/config.guess bin/config.sub \
+	bin/depcomp bin/install-sh bin/missing bin/mkinstalldirs \
+	bin/ltmain.sh $(top_srcdir)/bin/compile \
+	$(top_srcdir)/bin/config.guess $(top_srcdir)/bin/config.sub \
+	$(top_srcdir)/bin/install-sh $(top_srcdir)/bin/ltmain.sh \
+	$(top_srcdir)/bin/missing
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -116,13 +144,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -130,9 +159,29 @@ am__can_run_installinfo = \
   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 \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 CSCOPE = cscope
@@ -248,7 +297,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -535,14 +583,13 @@ distclean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -563,31 +610,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -603,12 +632,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -620,15 +644,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -637,18 +657,16 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(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
+cscopelist: cscopelist-recursive
 
-cscope.files: clean-cscope cscopelist-recursive cscopelist
-
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -746,10 +764,16 @@ dist-xz: distdir
 	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__post_remove_distdir)
 
 dist-shar: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
 	$(am__post_remove_distdir)
 
@@ -791,9 +815,10 @@ distcheck: dist
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	  && ../configure \
 	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -951,16 +976,13 @@ ps-am:
 
 uninstall-am: uninstall-local
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local am--refresh check check-am clean \
-	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 \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	am--refresh check check-am clean clean-cscope clean-generic \
+	clean-libtool cscope cscopelist-am ctags ctags-am 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 \
@@ -971,7 +993,7 @@ uninstall-am: uninstall-local
 	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 uninstall-local
+	tags-am uninstall uninstall-am uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/README.txt b/README.txt
index ae91723..7da8038 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.8.12 released on 2013-11-21
+HDF5 version 1.8.13 released on 2014-05-05
 Please refer to the release_docs/INSTALL file for installation instructions.
 ------------------------------------------------------------------------------
 
diff --git a/UserMacros.cmake b/UserMacros.cmake
index 4c680ed..65ea5d4 100644
--- a/UserMacros.cmake
+++ b/UserMacros.cmake
@@ -8,14 +8,14 @@
 # Option to Build with User Defined Values
 #-----------------------------------------------------------------------------
 MACRO (MACRO_USER_DEFINED_LIBS)
-  SET (USER_DEFINED_VALUE "FALSE")
+  set (USER_DEFINED_VALUE "FALSE")
 ENDMACRO (MACRO_USER_DEFINED_LIBS)
 
 #-------------------------------------------------------------------------------
-OPTION (BUILD_USER_DEFINED_LIBS "Build With User Defined Values" OFF)
-IF (BUILD_USER_DEFINED_LIBS)
+option (BUILD_USER_DEFINED_LIBS "Build With User Defined Values" OFF)
+if (BUILD_USER_DEFINED_LIBS)
   MACRO_USER_DEFINED_LIBS ()
-ENDIF (BUILD_USER_DEFINED_LIBS)
+endif (BUILD_USER_DEFINED_LIBS)
 #-----------------------------------------------------------------------------
 #------------------- E X A M P L E   E N D -----------------------------------
 #-----------------------------------------------------------------------------
diff --git a/aclocal.m4 b/aclocal.m4
index e6aae87..1ecfa26 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.12.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -11,6 +11,7 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
@@ -19,7 +20,7 @@ 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'.])])
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,10 +32,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.12'
+[am__api_version='1.14'
 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.12.3], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -50,14 +51,14 @@ 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.12.3])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])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-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -110,7 +111,7 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -141,7 +142,7 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -332,7 +333,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -343,7 +344,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -372,7 +373,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     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
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
@@ -408,7 +409,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -417,6 +418,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # 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.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -429,7 +436,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -459,8 +466,7 @@ AC_SUBST([CYGPATH_W])
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
 [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])
+             [$0: two- and three-arguments forms are deprecated.])
 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
@@ -514,22 +520,60 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
 		  [_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],
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
 		  [_AM_DEPENDENCIES([OBJCXX])],
 		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
+			     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 is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro 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
-])
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
 
 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
@@ -537,7 +581,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -559,7 +602,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-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -580,7 +623,7 @@ if test x"${install_sh}" != xset; then
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -602,7 +645,7 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -635,11 +678,9 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
 ]
 )
 
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -689,7 +730,7 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -704,8 +745,8 @@ AC_SUBST($1)])
 
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -718,8 +759,8 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
   AC_MSG_WARN(['missing' script is too old or missing])
@@ -728,7 +769,7 @@ fi
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -757,9 +798,73 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
+# Copyright (C) 1999-2013 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_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 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_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -840,7 +945,7 @@ AC_CONFIG_COMMANDS_PRE(
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -900,7 +1005,7 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -928,7 +1033,7 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -947,7 +1052,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -966,76 +1071,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
+#
 AC_DEFUN([_AM_PROG_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='$${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])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
 _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 '-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
   rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
diff --git a/bin/cmakehdf5 b/bin/cmakehdf5
index 97f45ed..5da3cca 100755
--- a/bin/cmakehdf5
+++ b/bin/cmakehdf5
@@ -3,13 +3,127 @@
 # Author: Allen Byrne
 #         Albert Cheng
 # Creation Date: Nov 2012
+# Modified:
+#	Changed to use the quick steps described in INSTALL_CMake.txt. (AKC 2014/1/1)
 
-# Copyright: The HDF Group, 2012
+# Copyright: The HDF Group, 2012-14
 
-# Debug: remove the comment hash if you want DPRINT to do echo
+# Debug Print: remove the comment hash if you want DPRINT to do echo
 DPRINT=:
 #DPRINT=echo
 
+# use the ctest scripting method if --script is given
+if [ "$1" != "--script" ]; then
+# variable names
+# The "extra" number is the step number and easier to see all logfiles in
+# the sorted order of steps
+progname=`basename $0`	# program name
+configlog="#${progname}_1config.log"
+makelog="#${progname}_2build.log"
+testlog="#${progname}_3test.log"
+packlog="#${progname}_4pack.log"
+installlog="#${progname}_5install.log"
+srcdir="../hdf5"	# expected source directory
+exit_code=0
+
+#=============
+# Function definitions
+#=============
+
+# Show user help page
+HELP()
+{
+    echo "Usage: $progname [--script]"
+    echo "  --script: Use the ctest scripting method of $progname"
+    echo ""
+}
+
+# Display a time stamp
+TIMESTAMP()
+{
+    echo "=====" "`date`" "====="
+}
+
+
+# Do one step bracketed with time stamps
+# The '< /dev/null' is needed to prevent some applications like MPI
+# jobs blocked for reading when they read stdin unnecessary.
+# $1 is banner message to be displayed.
+# $2 is command to run
+# $3 is logfile name for saving output from the command
+STEP()
+{
+    banner="$1"
+    command="$2"
+    logfile="$3"
+
+    echo "$banner" with output saved in $logfile
+    (TIMESTAMP; nerror=0 ;
+	echo "eval $command"
+	eval $command || nerror=1 ;
+	TIMESTAMP; exit $nerror) < /dev/null >> "$logfile" 2>&1
+    if [ $? -ne 0 ]; then
+	echo "error in '$banner'.  $progname aborted."
+	exit 1
+    fi
+}
+
+
+#==========
+# main
+#==========
+
+# Show a start time stamp
+TIMESTAMP
+
+# Always display the help page
+HELP
+
+# Verify there is a valid hdf5 source directory present
+if [ ! -d $srcdir ]; then
+    echo $srcdir not found. Aborted.
+    exit 1
+fi
+
+# figure out version information
+vers=bin/h5vers
+if [ ! -x $srcdir/$vers ]; then
+    echo $srcdir/$vers not found or not executable. Aborted.
+    exit 1
+fi
+version=`cd $srcdir; $vers`
+if [ $? != 0 ]; then
+    echo $vers failed. Aborted.
+    exit 1
+fi
+echo Running Cmake for HDF5-${version} ...
+
+#      4. Configure the C library, tools and tests with this command:
+STEP "Configure..." "cmake -G 'Unix Makefiles' -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ../hdf5" $configlog
+      
+#      5. Build the C library, tools and tests with this command:
+STEP "Build the library, tools and tests, ..." "cmake --build . --config Release" $makelog
+      
+#      6. Test the C library and tools with this command:
+STEP "Test the library and tools..." "ctest . -C Release" $testlog
+      
+#      7. Create an install image with this command:
+STEP "Create an install image..." "cpack -C Release CPackConfig.cmake" $packlog
+      
+#      8. Install with this command:
+STEP "Install..." "./HDF5-${version}-Linux.sh --skip-license" $installlog
+# save the last exit code
+exit_code=$?
+
+# Show a closing time stamp
+TIMESTAMP
+exit $exit_code
+
+else
+# ---------------
+# older version
+# ---------------
+
 # variable names
 progname=`basename $0`	# program name
 cminfile="cmakemin.$$" # Cmake minimum file
@@ -85,7 +199,7 @@ set (SITE_BUILDNAME_SUFFIX "cmakehdf5")
 set (LOCAL_SKIP_UPDATE TRUE)
 set (REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8")
 # -- Standard build options  
-set (ADD_BUILD_OPTIONS "-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/hdf5.1.8 -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=\"SVN\" -DHDF5_PACKAGE_EXTLIBS:BOOL=ON")
+set (ADD_BUILD_OPTIONS "-DCMAKE_INSTALL_PREFIX:PATH=${CTEST_BINARY_DIRECTORY} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=\"SVN\" -DHDF5_PACKAGE_EXTLIBS:BOOL=ON")
 
 # Use multiple CPU cores to build
 include(ProcessorCount)
@@ -172,8 +286,8 @@ set($ENV{LC_MESSAGES}  "en_EN")
 #-----------------------------------------------------------------------------
 # Initialize the CTEST commands
 #------------------------------
-SET (CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"")
-SET (CTEST_CONFIGURE_COMMAND
+set (CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"")
+set (CTEST_CONFIGURE_COMMAND
     "${CTEST_CMAKE_COMMAND} -C \"${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\"")
 
 # Print summary information.
@@ -260,3 +374,6 @@ else
 fi
 TIMESTAMP
 exit $exit_code
+
+fi
+
diff --git a/bin/missing b/bin/missing
index 09edd88..db98974 100755
--- a/bin/missing
+++ b/bin/missing
@@ -1,11 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2005-02-08.22
+scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
-#   Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,9 +17,7 @@ scriptversion=2005-02-08.22
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -28,63 +25,40 @@ scriptversion=2005-02-08.22
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 fi
 
-run=:
+case $1 in
 
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-case "$1" in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
 
 Send bug reports to <bug-automake at gnu.org>."
     exit $?
@@ -96,262 +70,146 @@ Send bug reports to <bug-automake at gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).
-case "$1" in
-  lex|yacc)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case "$f" in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
-    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison|yacc)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-	case "$LASTARG" in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if [ ! -f y.tab.h ]; then
-	echo >y.tab.h
-    fi
-    if [ ! -f y.tab.c ]; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex|flex)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-	case "$LASTARG" in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if [ ! -f lex.yy.c ]; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
-    fi
-    if [ -f "$file" ]; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit 1
-    fi
-    ;;
-
-  makeinfo)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    touch $file
-    ;;
-
-  tar)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case "$firstarg" in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case "$firstarg" in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-exit 0
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
diff --git a/bin/release b/bin/release
index b7b4d2c..ed95f4b 100755
--- a/bin/release
+++ b/bin/release
@@ -42,7 +42,7 @@ USAGE()
 cat << EOF
 Usage: $0 [--nocheck] [-d <dir>] [-h] <methods> ...
    -d DIR	The name of the directory where the releas(es) should be
-                placed.  By default, the directory is ./releases
+                placed.
 
    --docver BRANCHNAME  This is added for 1.8 and beyond to get the correct
                         version of documentation files from the hdf5docs
@@ -52,37 +52,107 @@ Usage: $0 [--nocheck] [-d <dir>] [-h] <methods> ...
          
    --private	Make a private release with today's date in version information.
          
+This must be run at the top level of the source directory.
 The other command-line options are the names of the programs to use
 for compressing the resulting tar archive (if none are given then
 "tar md5" is assumed):
 
     tar		-- use tar and don't do any compressing.
-    compress	-- use compress and append ".Z" to the output name.
     gzip	-- use gzip with "-9" and append ".gz" to the output name.
     bzip2       -- use bzip2 with "-9" and append ".bz2" to the output name.
+    zip		-- convert all text files to DOS style and form a zip file for Windows use.
     md5         -- produce a md5 checksum in addition to the archive.
     doc         -- produce the latest doc tree in addition to the archive.
 
 Examples:
 
-    $ release
-    releases/hdf5-1.0.38.tar
-    releases/hdf5-1.0.38.tar.md5
+    $ bin/release -d /tmp
+    /tmp/hdf5-1.8.13-RELEASE.txt
+    /tmp/hdf5-1.8.13.tar
+    /tmp/hdf5-1.8.13.tar.md5
 
-    $ release gzip
-    releases/hdf5-1.0.38.tar.gz
+    $ bin/release -d /tmp gzip
+    /tmp/hdf5-1.8.13-RELEASE.txt
+    /tmp/hdf5-1.8.13.tar.gz
 
-    $ release -d /tmp tar compress gzip bzip2 md5
-    /tmp/hdf5-1.0.38.tar
-    /tmp/hdf5-1.0.38.tar.Z
-    /tmp/hdf5-1.0.38.tar.gz
-    /tmp/hdf5-1.0.38.tar.bz2
-    /tmp/hdf5-1.0.38.tar.md5
+    $ bin/release -d /tmp tar gzip zip md5
+    /tmp/hdf5-1.8.13-RELEASE.txt
+    /tmp/hdf5-1.8.13.tar
+    /tmp/hdf5-1.8.13.tar.gz
+    /tmp/hdf5-1.8.13.tar.md5
+    /tmp/hdf5-1.8.13.tar.zip
 
 EOF
 
 }
 
+# Function name: tar2zip
+# Convert the release tarball to a Windows zipball.
+#
+# Programmer: Albert Cheng
+# Creation date: 2014-04-23
+#
+# Modifications
+#
+# Steps:
+# 1. untar the tarball in a temporay directory;
+#    Note: do this in a temporary directory to avoid changing
+#    the original source directory which maybe around.
+# 2. convert all its text files to DOS (LF-CR) style;
+# 3. form a zip file which is usable by Windows users.
+#
+# Parameters:
+# $1 version
+# $2 release tarball
+# $3 output zipball file name
+#
+# Returns 0 if successful; 1 otherwise
+#
+tar2zip()
+{
+    if [ $# -ne 3 ]; then
+	echo "usage: tar2zip <tarfilename> <zipfilename>"
+	return 1
+    fi
+    ztmpdir=/tmp/tmpdir$$
+    mkdir -p $ztmpdir
+    version=$1
+    tarfile=$2
+    zipfile=$3
+
+    # step 1: untar tarball in ztmpdir
+    (cd $ztmpdir; tar xf -) < $tarfile
+    # sanity check
+    if [ ! -d $ztmpdir/$version ]; then
+	echo "untar did not create $ztmpdir/$version source dir"
+	# cleanup
+	rm -rf $ztmpdir
+	return 1
+    fi
+    # step 2: convert text files
+    # There maybe a simpler way to do this.
+    # options used in unix2dos:
+    # -k   Keep the date stamp 
+    # -q   quiet mode
+    # grep redirect output to /dev/null because -q or -s are not portable.
+    find $ztmpdir/$version | \
+	while read inf; do \
+	    if file $inf | grep "$inf\: .*text" > /dev/null 2>&1 ; then \
+		unix2dos -q -k $inf; \
+	    fi\
+	done
+    # step 3: make zipball
+    # -9 maximum compression
+    # -y Store symbolic links as such in the zip archive
+    # -r recursive
+    # -q quiet
+    (cd $ztmpdir; zip -9 -y -r -q $version.zip $version)
+    mv $ztmpdir/$version.zip $zipfile
+
+    # cleanup
+    rm -rf $ztmpdir
+}
+
 # This command must be run at the top level of the hdf5 source directory.
 # Verify this requirement.
 if [ ! \( -f configure -a -f bin/release \) ]; then
@@ -238,10 +308,6 @@ for comp in $methods; do
 	tar)
 	    cp -p $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.tar
 	    ;;
-	compress)
-	    test "$verbose" && echo "   Running compress..." 1>&2
-	    compress -c <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.Z
-	    ;;
 	gzip)
 	    test "$verbose" && echo "   Running gzip..." 1>&2
 	    gzip -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.gz
@@ -250,6 +316,10 @@ for comp in $methods; do
 	    test "$verbose" && echo "   Running bzip2..." 1>&2
 	    bzip2 -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.bz2
 	    ;;
+	zip)
+	    test "$verbose" && echo "   Creating zip ball..." 1>&2
+	    tar2zip $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.zip 1>&2
+	    ;;
 	md5)
 	    test "$verbose" && echo "   Creating checksum..." 1>&2
 	    (cd $tmpdir; md5sum $HDF5_VERS.tar ) > $DEST/$HDF5_VERS.tar.md5
@@ -271,6 +341,10 @@ for comp in $methods; do
 	    (cd $tmpdir && tar cf ${HDF5_VERS}_docs.tar ${HDF5_VERS}_docs)
 	    mv $tmpdir/${HDF5_VERS}_docs.tar $DEST
 	    ;;
+	*)
+	    echo "***Error*** Unknown method $comp"
+	    exit 1
+	    ;;
     esac
 done
 
diff --git a/bin/snapshot b/bin/snapshot
index bb02595..b4adf5e 100755
--- a/bin/snapshot
+++ b/bin/snapshot
@@ -68,7 +68,7 @@ ZLIB_default=
 ZLIB=$ZLIB_default
 
 # What compression methods to use? (md5 does checksum).
-METHODS="gzip bzip2 md5 doc"
+METHODS="gzip zip bzip2 md5 doc"
 
 # Use User's MAKE if set.  Else use generic make.
 MAKE=${MAKE:-make}
diff --git a/bin/test-driver b/bin/test-driver
new file mode 100644
index 0000000..d306056
--- /dev/null
+++ b/bin/test-driver
@@ -0,0 +1,139 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='' # Red.
+  grn='' # Green.
+  lgn='' # Light green.
+  blu='' # Blue.
+  mgn='' # Magenta.
+  std=''     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/bin/trace b/bin/trace
index 3638810..a42d2e3 100755
--- a/bin/trace
+++ b/bin/trace
@@ -62,6 +62,7 @@ $Source = "";
                "int32_t"                    => "Is",
                "unsigned"                   => "Iu",
                "unsigned int"               => "Iu",
+               "uint32_t"                   => "Iu",
                "H5I_type_t"                 => "It",
 	       "H5G_link_t"                 => "Ll", #Same as H5L_type_t now
 	       "H5L_type_t"                 => "Ll",
diff --git a/c++/CMakeLists.txt b/c++/CMakeLists.txt
index 50ea838..89426c5 100644
--- a/c++/CMakeLists.txt
+++ b/c++/CMakeLists.txt
@@ -1,24 +1,24 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_CPP)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Shared/Static Libs
 #-----------------------------------------------------------------------------
-IF (BUILD_SHARED_LIBS)
-  SET (CPP_BUILT_AS_DYNAMIC_LIB 1)
-ELSE (BUILD_SHARED_LIBS)
-  SET (CPP_BUILT_AS_STATIC_LIB 1)
-ENDIF (BUILD_SHARED_LIBS)
+if (BUILD_SHARED_LIBS)
+  set (CPP_BUILT_AS_DYNAMIC_LIB 1)
+else (BUILD_SHARED_LIBS)
+  set (CPP_BUILT_AS_STATIC_LIB 1)
+endif (BUILD_SHARED_LIBS)
 
 #-----------------------------------------------------------------------------
 # Generate configure file
 #-----------------------------------------------------------------------------
-CONFIGURE_FILE (${HDF5_RESOURCES_DIR}/H5cxx_config.h.in
+configure_file (${HDF5_RESOURCES_DIR}/H5cxx_config.h.in
                 ${HDF5_BINARY_DIR}/H5cxx_pubconf.h
 )
 
@@ -31,23 +31,23 @@ INCLUDE_DIRECTORIES (${HDF5_BINARY_DIR})
 #-----------------------------------------------------------------------------
 # Parallel/MPI, prevent spurious cpp/cxx warnings
 #-----------------------------------------------------------------------------
-IF (H5_HAVE_PARALLEL)
-  ADD_DEFINITIONS ("-DMPICH_SKIP_MPICXX")
-  ADD_DEFINITIONS ("-DMPICH_IGNORE_CXX_SEEK")
-ENDIF (H5_HAVE_PARALLEL)
+if (H5_HAVE_PARALLEL)
+  add_definitions ("-DMPICH_SKIP_MPICXX")
+  add_definitions ("-DMPICH_IGNORE_CXX_SEEK")
+endif (H5_HAVE_PARALLEL)
 
-ADD_SUBDIRECTORY (${HDF5_CPP_SOURCE_DIR}/src ${HDF5_CPP_BINARY_DIR}/src)
+add_subdirectory (${HDF5_CPP_SOURCE_DIR}/src ${HDF5_CPP_BINARY_DIR}/src)
 
 #-----------------------------------------------------------------------------
 # Build the CPP Examples
 #-----------------------------------------------------------------------------
-IF (HDF5_BUILD_EXAMPLES)
-  ADD_SUBDIRECTORY (${HDF5_CPP_SOURCE_DIR}/examples ${HDF5_CPP_BINARY_DIR}/examples)
-ENDIF (HDF5_BUILD_EXAMPLES)
+if (HDF5_BUILD_EXAMPLES)
+  add_subdirectory (${HDF5_CPP_SOURCE_DIR}/examples ${HDF5_CPP_BINARY_DIR}/examples)
+endif (HDF5_BUILD_EXAMPLES)
 
 #-----------------------------------------------------------------------------
 # Build the CPP unit tests
 #-----------------------------------------------------------------------------
-IF (BUILD_TESTING)
-  ADD_SUBDIRECTORY (${HDF5_CPP_SOURCE_DIR}/test ${HDF5_CPP_BINARY_DIR}/test)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  add_subdirectory (${HDF5_CPP_SOURCE_DIR}/test ${HDF5_CPP_BINARY_DIR}/test)
+endif (BUILD_TESTING)
diff --git a/c++/Makefile.in b/c++/Makefile.in
index 232299d..c56cfc4 100644
--- a/c++/Makefile.in
+++ b/c++/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # Top-level HDF5-C++ Makefile(.in)
 # 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,10 +94,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = c++
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -94,13 +122,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -108,15 +137,230 @@ am__can_run_installinfo = \
   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
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -213,7 +457,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -446,6 +689,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -490,14 +734,13 @@ clean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -518,31 +761,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -558,12 +783,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -575,15 +795,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -592,9 +808,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -610,6 +827,151 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -691,6 +1053,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -768,14 +1133,11 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool cscopelist cscopelist-recursive \
-	ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 \
@@ -785,7 +1147,7 @@ uninstall-am:
 	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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/c++/examples/CMakeLists.txt b/c++/examples/CMakeLists.txt
index c79f6c2..e3e1077 100644
--- a/c++/examples/CMakeLists.txt
+++ b/c++/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 # --------------------------------------------------------------------
 # Notes: When creating examples they should be prefixed
 # with "cpp_ex_". This allows for easier filtering of the examples.
@@ -10,7 +10,7 @@ PROJECT (HDF5_CPP_EXAMPLES)
 # Define examples
 #-----------------------------------------------------------------------------
 
-SET (examples
+set (examples
     create
     readdata
     writedata
@@ -20,7 +20,7 @@ SET (examples
     h5group
 )
 
-SET (tutr_examples
+set (tutr_examples
     h5tutr_cmprss
     h5tutr_crtdat
     h5tutr_crtatt
@@ -32,22 +32,22 @@ SET (tutr_examples
     h5tutr_subset
 )
 
-FOREACH (example ${examples})
-  ADD_EXECUTABLE (cpp_ex_${example} ${HDF5_CPP_EXAMPLES_SOURCE_DIR}/${example}.cpp)
+foreach (example ${examples})
+  add_executable (cpp_ex_${example} ${HDF5_CPP_EXAMPLES_SOURCE_DIR}/${example}.cpp)
   TARGET_NAMING (cpp_ex_${example} ${LIB_TYPE})
   TARGET_C_PROPERTIES (cpp_ex_${example} " " " ")
-  TARGET_LINK_LIBRARIES (cpp_ex_${example} ${HDF5_CPP_LIB_TARGET} ${HDF5_LIB_TARGET})
-  SET_TARGET_PROPERTIES (cpp_ex_${example} PROPERTIES FOLDER examples/cpp)
-ENDFOREACH (example ${examples})
+  target_link_libraries (cpp_ex_${example} ${HDF5_CPP_LIB_TARGET} ${HDF5_LIB_TARGET})
+  set_target_properties (cpp_ex_${example} PROPERTIES FOLDER examples/cpp)
+endforeach (example ${examples})
 
-FOREACH (example ${tutr_examples})
-  ADD_EXECUTABLE (cpp_ex_${example} ${HDF5_CPP_EXAMPLES_SOURCE_DIR}/${example}.cpp)
+foreach (example ${tutr_examples})
+  add_executable (cpp_ex_${example} ${HDF5_CPP_EXAMPLES_SOURCE_DIR}/${example}.cpp)
   TARGET_NAMING (cpp_ex_${example} ${LIB_TYPE})
   TARGET_C_PROPERTIES (cpp_ex_${example} " " " ")
-  TARGET_LINK_LIBRARIES (cpp_ex_${example} ${HDF5_CPP_LIB_TARGET} ${HDF5_LIB_TARGET})
-  SET_TARGET_PROPERTIES (cpp_ex_${example} PROPERTIES FOLDER examples/cpp)
-ENDFOREACH (example ${tutr_examples})
+  target_link_libraries (cpp_ex_${example} ${HDF5_CPP_LIB_TARGET} ${HDF5_LIB_TARGET})
+  set_target_properties (cpp_ex_${example} PROPERTIES FOLDER examples/cpp)
+endforeach (example ${tutr_examples})
 
-IF (BUILD_TESTING)
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
diff --git a/c++/examples/CMakeTests.cmake b/c++/examples/CMakeTests.cmake
index b39dcfe..4db8c68 100644
--- a/c++/examples/CMakeTests.cmake
+++ b/c++/examples/CMakeTests.cmake
@@ -5,8 +5,8 @@
 ##############################################################################
 ##############################################################################
   # Remove any output file left over from previous test run
-  ADD_TEST (
-      NAME cpp_ex-clear-objects
+  add_test (
+      NAME CPP_ex-clear-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
           Group.h5
@@ -15,24 +15,24 @@
           SDSextendible.h5
           Select.h5
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (cpp_ex-clear-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "cpp_ex-clear-objects")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (CPP_ex-clear-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "CPP_ex-clear-objects")
 
-  FOREACH (example ${examples})
-    ADD_TEST (NAME cpp_ex_${example} COMMAND $<TARGET_FILE:cpp_ex_${example}>)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (cpp_ex_${example} PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "cpp_ex_${example}")
-  ENDFOREACH (example ${examples})
+  foreach (example ${examples})
+    add_test (NAME CPP_ex_${example} COMMAND $<TARGET_FILE:cpp_ex_${example}>)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (CPP_ex_${example} PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "CPP_ex_${example}")
+  endforeach (example ${examples})
 #the following dependicies are handled by the order of the files
-#  SET_TESTS_PROPERTIES(cpp_ex_readdata PROPERTIES DEPENDS cpp_ex_create)
-#  SET_TESTS_PROPERTIES(cpp_ex_chunks PROPERTIES DEPENDS cpp_ex_extend_ds)
+#  SET_TESTS_PROPERTIES(CPP_ex_readdata PROPERTIES DEPENDS CPP_ex_create)
+#  SET_TESTS_PROPERTIES(CPP_ex_chunks PROPERTIES DEPENDS CPP_ex_extend_ds)
 
-  ADD_TEST (
-      NAME cpp_ex_tutr-clear-objects
+  add_test (
+      NAME CPP_ex_tutr-clear-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
           h5tutr_cmprss.h5
@@ -42,20 +42,20 @@
           h5tutr_groups.h5
           h5tutr_subset.h5
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (cpp_ex_tutr-clear-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "cpp_ex_tutr-clear-objects")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (CPP_ex_tutr-clear-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "CPP_ex_tutr-clear-objects")
   
-  FOREACH (example ${tutr_examples})
-    ADD_TEST (NAME cpp_ex_${example} COMMAND $<TARGET_FILE:cpp_ex_${example}>)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (cpp_ex_${example} PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "cpp_ex_${example}")
-  ENDFOREACH (example ${tutr_examples})
+  foreach (example ${tutr_examples})
+    add_test (NAME CPP_ex_${example} COMMAND $<TARGET_FILE:cpp_ex_${example}>)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (CPP_ex_${example} PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "CPP_ex_${example}")
+  endforeach (example ${tutr_examples})
 #the following dependicies are handled by the order of the files
-#  SET_TESTS_PROPERTIES(cpp_ex_h5tutr_crtatt PROPERTIES DEPENDS cpp_ex_h5tutr_crtdat)
-#  SET_TESTS_PROPERTIES(cpp_ex_h5tutr_rdwt PROPERTIES DEPENDS cpp_ex_h5tutr_crtdat)
-#  SET_TESTS_PROPERTIES(cpp_ex_h5tutr_crtgrpd PROPERTIES DEPENDS cpp_ex_h5tutr_crtgrpar)
+#  SET_TESTS_PROPERTIES(CPP_ex_h5tutr_crtatt PROPERTIES DEPENDS CPP_ex_h5tutr_crtdat)
+#  SET_TESTS_PROPERTIES(CPP_ex_h5tutr_rdwt PROPERTIES DEPENDS CPP_ex_h5tutr_crtdat)
+#  SET_TESTS_PROPERTIES(CPP_ex_h5tutr_crtgrpd PROPERTIES DEPENDS CPP_ex_h5tutr_crtgrpar)
   
\ No newline at end of file
diff --git a/c++/examples/Makefile.am b/c++/examples/Makefile.am
index df68447..92c757f 100644
--- a/c++/examples/Makefile.am
+++ b/c++/examples/Makefile.am
@@ -21,6 +21,8 @@
 
 include $(top_srcdir)/config/commence.am
 
+INSTALL_SCRIPT_FILES = run-c++-ex.sh
+
 # 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.
 EXAMPLE_PROG=create readdata writedata compound extend_ds chunks h5group \
@@ -28,6 +30,7 @@ EXAMPLE_PROG=create readdata writedata compound extend_ds chunks h5group \
 	     h5tutr_crtgrp h5tutr_crtgrpd h5tutr_extend h5tutr_rdwt \
 	     h5tutr_subset
 TEST_SCRIPT=testh5c++.sh
+TEST_EXAMPLES_SCRIPT=$(INSTALL_SCRIPT_FILES)
 
 # These are the example files to be installed
 INSTALL_FILES=create.cpp readdata.cpp writedata.cpp compound.cpp \
@@ -35,7 +38,6 @@ INSTALL_FILES=create.cpp readdata.cpp writedata.cpp compound.cpp \
 	      h5tutr_cmprss.cpp h5tutr_crtatt.cpp h5tutr_crtdat.cpp \
 	      h5tutr_crtgrpar.cpp h5tutr_crtgrp.cpp h5tutr_crtgrpd.cpp \
 	      h5tutr_extend.cpp h5tutr_rdwt.cpp h5tutr_subset.cpp
-INSTALL_SCRIPT_FILES = run-c++-ex.sh
 
 # Some of the examples depend on files created by running other examples
 readdata.chkexe_: create.chkexe_
diff --git a/c++/examples/Makefile.in b/c++/examples/Makefile.in
index a9c819d..eb74609 100644
--- a/c++/examples/Makefile.in
+++ b/c++/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 # 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; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,12 +98,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/examples.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(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
+	$(top_srcdir)/bin/test-driver
 TESTS = $(TEST_SCRIPT)
 subdir = c++/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -105,10 +133,207 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -180,7 +405,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -388,6 +612,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
+INSTALL_SCRIPT_FILES = run-c++-ex.sh
 
 # 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.
@@ -397,6 +622,7 @@ EXAMPLE_PROG = create readdata writedata compound extend_ds chunks h5group \
 	     h5tutr_subset
 
 TEST_SCRIPT = testh5c++.sh
+TEST_EXAMPLES_SCRIPT = $(INSTALL_SCRIPT_FILES)
 
 # These are the example files to be installed
 INSTALL_FILES = create.cpp readdata.cpp writedata.cpp compound.cpp \
@@ -405,7 +631,6 @@ INSTALL_FILES = create.cpp readdata.cpp writedata.cpp compound.cpp \
 	      h5tutr_crtgrpar.cpp h5tutr_crtgrp.cpp h5tutr_crtgrpd.cpp \
 	      h5tutr_extend.cpp h5tutr_rdwt.cpp h5tutr_subset.cpp
 
-INSTALL_SCRIPT_FILES = run-c++-ex.sh
 
 # Tell conclude.am that these are C++ tests.
 CXX_API = yes
@@ -444,6 +669,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -485,15 +711,158 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -550,6 +919,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -631,17 +1003,18 @@ uninstall-am: uninstall-local
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local 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 \
+	clean-generic clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local 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 \
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-local
+	pdf-am ps ps-am recheck tags-am uninstall uninstall-am \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -728,27 +1101,34 @@ install-examples: $(EXAMPLEDIR) $(INSTALL_FILES)
 uninstall-examples:
 	@if test -n "$(INSTALL_FILES)" -a -d $(EXAMPLEDIR); then             \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_FILES);                \
-        fi
+	fi
 	@if test -n "$(INSTALL_SCRIPT_FILES)" -a -d $(EXAMPLEDIR); then           \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_SCRIPT_FILES);              \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_FILES);       \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_SCRIPT_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_SCRIPT_FILES);       \
-        fi
+	fi
 
 installcheck-local:
 	@if test "$(STATIC_SHARED)" = "static, shared"; then               \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
 	  $(MAKE) $(AM_MAKEFLAGS) clean;                                   \
 	  H5CCFLAGS="" $(MAKE) $(AM_MAKEFLAGS) check;                      \
-	 elif test "$(STATIC_SHARED)" = "shared"; then                     \
+	elif test "$(STATIC_SHARED)" = "shared"; then                     \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
-	 else                                                              \
+	else                                                              \
 	  $(MAKE) $(AM_MAKEFLAGS) check;                                   \
-	 fi
+	fi 
+	@if test "$(INSTALL_FILES)" -a $(TEST_EXAMPLES_SCRIPT) -a -d $(EXAMPLEDIR); then \
+	    echo "============================";                                         \
+	    echo "Testing $(TEST_EXAMPLES_SCRIPT)";                                      \
+	    echo "============================";                                         \
+	    (cd $(EXAMPLEDIR);                                                           \
+	     /bin/sh ./$(TEST_EXAMPLES_SCRIPT);)                                                   \
+	fi
 
 # lib/progs/tests targets recurse into subdirectories. build-* targets
 # build files in this directory.
diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt
index e7ae371..7a48260 100644
--- a/c++/src/CMakeLists.txt
+++ b/c++/src/CMakeLists.txt
@@ -1,24 +1,24 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_CPP_SRC)
 
 #-----------------------------------------------------------------------------
 # Shared/Static Libs
 #-----------------------------------------------------------------------------
-IF (BUILD_SHARED_LIBS)
-  SET (CPP_BUILT_AS_DYNAMIC_LIB 1)
-ENDIF (BUILD_SHARED_LIBS)
+if (BUILD_SHARED_LIBS)
+  set (CPP_BUILT_AS_DYNAMIC_LIB 1)
+endif (BUILD_SHARED_LIBS)
 
 #-----------------------------------------------------------------------------
 # Generate configure file
 #-----------------------------------------------------------------------------
-CONFIGURE_FILE (${HDF5_RESOURCES_DIR}/H5cxx_config.h.in
+configure_file (${HDF5_RESOURCES_DIR}/H5cxx_config.h.in
                 ${HDF5_BINARY_DIR}/H5cxx_pubconf.h
 )
 
 #-----------------------------------------------------------------------------
 # Define cpp Library
 #-----------------------------------------------------------------------------
-SET (CPP_SRCS
+set (CPP_SRCS
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5AbstractDs.cpp
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5ArrayType.cpp
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5AtomType.cpp
@@ -48,7 +48,7 @@ SET (CPP_SRCS
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5VarLenType.cpp
 )
 
-SET (CPP_HDRS
+set (CPP_HDRS
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5AbstractDs.h
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5Alltypes.h
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5ArrayType.h
@@ -83,17 +83,20 @@ SET (CPP_HDRS
     ${HDF5_CPP_SRC_SOURCE_DIR}/H5VarLenType.h
 )
 
-ADD_LIBRARY (${HDF5_CPP_LIB_TARGET} ${LIB_TYPE} ${CPP_SRCS} ${CPP_HDRS})
+add_library (${HDF5_CPP_LIB_TARGET} ${LIB_TYPE} ${CPP_SRCS} ${CPP_HDRS})
 TARGET_C_PROPERTIES (${HDF5_CPP_LIB_TARGET} " " " ")
-TARGET_LINK_LIBRARIES (${HDF5_CPP_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_CPP_LIB_TARGET}")
+target_link_libraries (${HDF5_CPP_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_CPP_LIB_TARGET}")
 H5_SET_LIB_OPTIONS (${HDF5_CPP_LIB_TARGET} ${HDF5_CPP_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_CPP_LIB_TARGET} PROPERTIES FOLDER libraries/cpp)
+set_target_properties (${HDF5_CPP_LIB_TARGET} PROPERTIES
+    FOLDER libraries/cpp
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install 
 #-----------------------------------------------------------------------------
-INSTALL (
+install (
     FILES
         ${CPP_HDRS}
     DESTINATION
@@ -105,11 +108,12 @@ 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)
+if (HDF5_EXPORTED_TARGETS)
+  if (BUILD_SHARED_LIBS)
+    INSTALL_TARGET_PDB (${HDF5_CPP_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} cpplibraries)
+  endif (BUILD_SHARED_LIBS)
   
-  INSTALL (
+  install (
       TARGETS
           ${HDF5_CPP_LIB_TARGET}
       EXPORT
@@ -118,4 +122,4 @@ IF (HDF5_EXPORTED_TARGETS)
       ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT cpplibraries
       RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT cpplibraries
   )
-ENDIF (HDF5_EXPORTED_TARGETS)
+endif (HDF5_EXPORTED_TARGETS)
diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp
index 34bf256..1182b69 100644
--- a/c++/src/H5Attribute.cpp
+++ b/c++/src/H5Attribute.cpp
@@ -299,75 +299,169 @@ H5std_string Attribute::getFileName() const
 //--------------------------------------------------------------------------
 // Function:	Attribute::getName
 ///\brief	Gets the name of this attribute, returning its length.
-///\param	buf_size  -  IN: Desired length of the name
-///\param	attr_name - OUT: Buffer for the name string
-///\return	Length of the attribute name
+///\param	attr_name - OUT: Buffer for the name string as char*
+///\param	buf_size  -  IN: Length of the buffer, default to 0
+///\return	Actual length of the attribute name
 ///\exception	H5::AttributeIException
-// Programmer	Binh-Minh Ribler - Nov, 2001
+///\par Description
+///		This function retrieves \a buf_size chars of the attribute's
+///		name including null termination.  Thus, if the actual length
+///		of the name is more than buf_size-1, the retrieved name will
+///		be truncated to accommodate the null terminator.
+///		To get length of the attribute's name for buffer allocation,
+///		an application can call this function passing in NULL for the
+///		first argument and ignore the second argument.
+// Programmer	Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+ssize_t Attribute::getName(char* attr_name, size_t buf_size) const
+{
+    // H5Aget_name will get buf_size-1 chars of the name to null terminate it
+    ssize_t name_size = H5Aget_name(id, buf_size, attr_name);
+
+    // If H5Aget_name returns a negative value, raise an exception
+    if (name_size < 0)
+    {
+	throw AttributeIException("Attribute::getName", "H5Aget_name failed");
+    }
+    else if (name_size == 0)
+    {
+	throw AttributeIException("Attribute::getName", "Attribute must have a name, name length is 0");
+    }
+    // Return length of the name
+    return(name_size);
+}
+
 //--------------------------------------------------------------------------
-ssize_t Attribute::getName( size_t buf_size, H5std_string& attr_name ) const
+// Function:	Attribute::getName
+///\brief	Returns the name of this attribute as an \a H5std_string.
+///\return	Name of the attribute
+///\exception	H5::AttributeIException
+// Programmer	Binh-Minh Ribler - May, 2004
+// Modification
+//	Mar 2014 - BMR
+//		Revised to use the modified getName() above
+//--------------------------------------------------------------------------
+H5std_string Attribute::getName() const
 {
-   char* name_C = new char[buf_size+1];  // temporary C-string for C API
+    H5std_string attr_name(""); // attribute name to return
 
-   // Calls C routine H5Aget_name to get the name of the attribute
-   ssize_t name_size = H5Aget_name( id, buf_size, name_C );
+    // Preliminary call to get the size of the attribute name
+    ssize_t name_size = H5Aget_name(id, (size_t)0, NULL);
 
-   // If H5Aget_name returns a negative value, raise an exception,
-   if( name_size < 0 )
-   {
-      throw AttributeIException("Attribute::getName", "H5Aget_name failed");
-   }
-   // otherwise, convert the C attribute name and return
-   attr_name = name_C;
-   delete []name_C;
-   return( name_size );
+    // If H5Aget_name failed, throw exception
+    if (name_size < 0)
+    {
+	throw AttributeIException("Attribute::getName", "H5Aget_name failed");
+    }
+    else if (name_size == 0)
+    {
+	throw AttributeIException("Attribute::getName", "Attribute must have a name, name length is 0");
+    }
+    // Attribute's name exists, retrieve it
+    else if (name_size > 0)
+    {
+        char* name_C = new char[name_size+1];  // temporary C-string
+        HDmemset(name_C, 0, name_size+1); // clear buffer
+
+        // Use overloaded function
+        name_size = getName(name_C, name_size+1);
+
+        // Convert the C attribute name to return
+        attr_name = name_C;
+
+        // Clean up resource
+        delete []name_C;
+
+    }
+    // Return attribute's name
+    return(attr_name);
 }
 
 //--------------------------------------------------------------------------
 // Function:	Attribute::getName
 ///\brief	This is an overloaded member function, provided for convenience.
-///		It differs from the above function in that it returns the
-///		attribute's name, not the length.
-///\return	Name of the attribute
-///\param	buf_size  -  IN: Desired length of the name
+///		It differs from the above function in that it takes an integer
+///		specifying a desired length to be retrieved of the name.
+///\return	Name (or part of name) of the attribute
+///\param	len  -  IN: Desired length of the name
 ///\exception	H5::AttributeIException
 // Programmer	Binh-Minh Ribler - 2000
+// Modification
+//	Mar 2014 - BMR
+//		Revised to use the new getName() below
 //--------------------------------------------------------------------------
-H5std_string Attribute::getName( size_t buf_size ) const
+H5std_string Attribute::getName(size_t len) const
 {
    H5std_string attr_name;
-   ssize_t name_size = getName( buf_size, attr_name );
-   return( attr_name );
+   ssize_t name_size = getName(attr_name, len);
+   return(attr_name);
    // let caller catch exception if any
 }
 
 //--------------------------------------------------------------------------
 // Function:	Attribute::getName
-///\brief	This is an overloaded member function, provided for convenience.
-///		It differs from the above functions in that it doesn't take
-///		any arguments and returns the attribute's name.
-///\return	Name of the attribute
+///\brief	Gets the name of this attribute, returning its length.
+///\param	attr_name - OUT: Buffer for the name string as \a H5std_string
+///\param	len  -  IN: Desired length of the name, default to 0
+///\return	Actual length of the attribute name
 ///\exception	H5::AttributeIException
-// Programmer	Binh-Minh Ribler - May, 2004
+///\par Description
+///		This function retrieves the attribute's name as a string.  The
+///		buf_size can specify a specific length or default to 0, in
+///		which case the entire name will be retrieved.
+// Programmer	Binh-Minh Ribler - Nov, 2001
+// Modification
+//	Mar 2014 - BMR
+//		Added to replace getName(size_t, H5std_string&) so that it'll
+//		allow the argument "len" to be skipped.
 //--------------------------------------------------------------------------
-H5std_string Attribute::getName() const
+ssize_t Attribute::getName(H5std_string& attr_name, size_t len) const
 {
-   // Try with 256 characters for the name first, if the name's length
-   // returned is more than that then, read the name again with the
-   // appropriate space allocation
-   char* name_C = new char[256];  // temporary C-string for C API
-   ssize_t name_size = H5Aget_name(id, 255, name_C);
+    ssize_t name_size = 0;
 
-   H5std_string attr_name;
-   if (name_size >= 256)
-      name_size = getName(name_size, attr_name);
+    // If no length is provided, get the entire attribute name
+    if (len == 0)
+    {
+        attr_name = getName();
+	name_size = attr_name.length();
+    }
+    // If length is provided, get that number of characters in name
+    else
+    {
+        char* name_C = new char[len+1];  // temporary C-string
+        HDmemset(name_C, 0, len+1); // clear buffer
 
-   // otherwise, convert the C attribute name and return
-   else
-      attr_name = name_C;
+        // Use overloaded function
+        name_size = getName(name_C, len+1);
+
+        // Convert the C attribute name to return
+        attr_name = name_C;
+
+        // Clean up resource
+        delete []name_C;
+    }
+    // Otherwise, keep attr_name intact
 
-   delete []name_C;
-   return( attr_name );
+    // Return name size
+    return(name_size);
+}
+
+//--------------------------------------------------------------------------
+// Function:    Attribute::getName
+///\brief       This function is replaced by the previous function, which
+///		provides more convenient prototype.  It will be removed
+///		in future release.
+///\param       len  -  IN: Desired length of the name
+///\param       attr_name - OUT: Buffer for the name string
+///\return      Actual length of the attribute name
+///\exception   H5::AttributeIException
+// Programmer   Binh-Minh Ribler - Nov, 2001
+// Modification
+//		Modified to call its replacement. -BMR, 2014/04/16
+//--------------------------------------------------------------------------
+ssize_t Attribute::getName( size_t len, H5std_string& attr_name ) const
+{
+    return (getName(attr_name, len));
 }
 
 //--------------------------------------------------------------------------
diff --git a/c++/src/H5Attribute.h b/c++/src/H5Attribute.h
index 2c1ccf7..33c4db3 100644
--- a/c++/src/H5Attribute.h
+++ b/c++/src/H5Attribute.h
@@ -38,9 +38,13 @@ class H5_DLLCPP Attribute : public AbstractDs, public IdComponent {
 	H5std_string getFileName() const;
 
 	// Gets the name of this attribute.
+	ssize_t getName(char* attr_name, size_t buf_size = 0) const;
+	H5std_string getName(size_t len) const;
+	H5std_string getName() const;
+	ssize_t getName(H5std_string& attr_name, size_t len = 0) const;
+	// The overloaded function below is replaced by the one above and it
+	// is kept for backward compatibility purpose.
 	ssize_t getName( size_t buf_size, H5std_string& attr_name ) const;
-	H5std_string getName( size_t buf_size ) const; // returns name, not its length
-	H5std_string getName() const; // returns name, no argument
 
 	// Gets a copy of the dataspace for this attribute.
 	virtual DataSpace getSpace() const;
diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp
index 3bf4b4f..d296db4 100644
--- a/c++/src/H5CommonFG.cpp
+++ b/c++/src/H5CommonFG.cpp
@@ -436,6 +436,7 @@ H5std_string CommonFG::getLinkval( const char* name, size_t size ) const
     if (val_size > 0)
     {
 	value_C = new char[val_size+1];  // temporary C-string for C API
+	HDmemset(value_C, 0, val_size+1); // clear buffer
 
 	ret_value = H5Lget_val(getLocId(), name, value_C, val_size, H5P_DEFAULT);
 	if( ret_value < 0 )
@@ -466,9 +467,9 @@ H5std_string CommonFG::getLinkval( const H5std_string& name, size_t size ) const
 ///\param	child - IN: File to mount
 ///\param	plist - IN: Property list to use
 ///\exception	H5::FileIException or H5::GroupIException
-// Programmer	Binh-Minh Ribler - 2000
+// Programmer	Binh-Minh Ribler - 2014 (original 2000)
 //--------------------------------------------------------------------------
-void CommonFG::mount( const char* name, H5File& child, PropList& plist ) const
+void CommonFG::mount(const char* name, const H5File& child, const PropList& plist ) const
 {
    // Obtain identifiers for C API
    hid_t plist_id = plist.getId();
@@ -484,14 +485,41 @@ void CommonFG::mount( const char* name, H5File& child, PropList& plist ) const
 
 //--------------------------------------------------------------------------
 // Function:	CommonFG::mount
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const's.  This wrapper will be removed in future release.
+///\param	name  - IN: Name of the group
+///\param	child - IN: File to mount
+///\param	plist - IN: Property list to use
+///\exception	H5::FileIException or H5::GroupIException
+// Programmer	Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+void CommonFG::mount(const char* name, H5File& child, PropList& plist) const
+{
+   mount(name, (const H5File)child, (const PropList)plist);
+}
+
+//--------------------------------------------------------------------------
+// Function:	CommonFG::mount
 ///\brief	This is an overloaded member function, provided for convenience.
-///		It differs from the above function in that it takes an
-///		\c H5std_string for \a name.
+///		It takes an \c H5std_string for \a name.
 // Programmer	Binh-Minh Ribler - 2000
 //--------------------------------------------------------------------------
-void CommonFG::mount( const H5std_string& name, H5File& child, PropList& plist ) const
+void CommonFG::mount(const H5std_string& name, const H5File& child, const PropList& plist) const
 {
-   mount( name.c_str(), child, plist );
+   mount(name.c_str(), child, plist);
+}
+
+//--------------------------------------------------------------------------
+// Function:	CommonFG::mount
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const's.  This wrapper will be removed in future release.
+// Programmer	Binh-Minh Ribler - 2014
+//--------------------------------------------------------------------------
+void CommonFG::mount(const H5std_string& name, H5File& child, PropList& plist) const
+{
+   mount(name.c_str(), (const H5File)child, (const PropList)plist);
 }
 
 //--------------------------------------------------------------------------
@@ -881,6 +909,8 @@ H5std_string CommonFG::getObjnameByIdx(hsize_t idx) const
 
     // now, allocate C buffer to get the name
     char* name_C = new char[name_len+1];
+    HDmemset(name_C, 0, name_len+1); // clear buffer
+
     name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name_C, name_len+1, H5P_DEFAULT);
 
     // clean up and return the string
@@ -924,8 +954,10 @@ ssize_t CommonFG::getObjnameByIdx(hsize_t idx, char* name, size_t size) const
 //--------------------------------------------------------------------------
 ssize_t CommonFG::getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const
 {
-   char* name_C = new char[size];
-   ssize_t name_len = getObjnameByIdx(idx, name_C, size);
+   char* name_C = new char[size+1]; // temporary C-string for object name
+   HDmemset(name_C, 0, size+1); // clear buffer
+
+   ssize_t name_len = getObjnameByIdx(idx, name_C, size+1);
    if(name_len < 0)
       throwException("getObjnameByIdx", "H5Lget_name_by_idx failed");
 
@@ -934,7 +966,125 @@ ssize_t CommonFG::getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size)
    return (name_len);
 }
 
+//--------------------------------------------------------------------------
+// Function:	CommonFG::childObjType
+///\brief	Returns the type of an object in this file/group, given the
+///		object's name.
+///\param	objname - IN: Name of the object
+///\return	Object type, which can have the following values for group,
+///		dataset, and named datatype
+///		\li \c H5O_TYPE_GROUP
+///		\li \c H5O_TYPE_DATASET
+///		\li \c H5O_TYPE_NAMED_DATATYPE
+///		Refer to the C API documentation for more details:
+///		http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo
+///\exception	H5::FileIException or H5::GroupIException
+///		Exception will be thrown when:
+///		- an error returned by the C API
+///		- object type is not one of the valid values above
+// Programmer	Binh-Minh Ribler - April, 2014
+//--------------------------------------------------------------------------
+H5O_type_t CommonFG::childObjType(const char* objname) const
+{
+    H5O_info_t objinfo;
+    H5O_type_t objtype = H5O_TYPE_UNKNOWN;
+
+    // Use C API to get information of the object
+    herr_t ret_value = H5Oget_info_by_name(getLocId(), objname, &objinfo, H5P_DEFAULT);
+
+    // Throw exception if C API returns failure
+    if (ret_value < 0)
+	throwException("childObjType", "H5Oget_info_by_name failed");
+    // Return a valid type or throw an exception for unknown type
+    else
+      switch (objinfo.type)
+      {
+	case H5O_TYPE_GROUP:
+	case H5O_TYPE_DATASET:
+	case H5O_TYPE_NAMED_DATATYPE:
+	    objtype = objinfo.type;
+	    break;
+	default:
+	    throwException("childObjType", "Unknown type of object");
+      }
+    return(objtype);
+}
+
+//--------------------------------------------------------------------------
+// Function:	CommonFG::childObjType
+///\brief	This is an overloaded member function, provided for convenience.
+///		It takes an \a H5std_string for the object's name.
+///\brief	Returns the type of an object in this group, given the
+///		object's name.
+///\param	objname - IN: Name of the object (H5std_string&)
+///\exception	H5::FileIException or H5::GroupIException
+// Programmer	Binh-Minh Ribler - April, 2014
+//--------------------------------------------------------------------------
+H5O_type_t CommonFG::childObjType(const H5std_string& objname) const
+{
+    // Use overloaded function
+    H5O_type_t objtype = childObjType(objname.c_str());
+    return(objtype);
+}
+
+//--------------------------------------------------------------------------
+// Function:	CommonFG::childObjType
+///\brief	Returns the type of an object in this file/group, given the
+///		object's index and its type and order.
+///\param	index - IN: Position of the object
+///\param	index_type - IN: Type of the index, default to H5_INDEX_NAME
+///\param	order - IN: Traversing order, default to H5_ITER_INC
+///\param	objname - IN: Name of the object, default to "."
+///\return	Object type, which can have the following values for group,
+///		dataset, and named datatype
+///		\li \c H5O_TYPE_GROUP
+///		\li \c H5O_TYPE_DATASET
+///		\li \c H5O_TYPE_NAMED_DATATYPE
+///		Refer to the C API documentation for more details:
+///		http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo
+///\exception	H5::FileIException or H5::GroupIException
+///		Exception will be thrown when:
+///		- an error returned by the C API
+///		- object type is not one of the valid values above
+// Developer's Notes:
+//	- this overload uses H5Oget_info_by_idx instead of H5Oget_info_by_name
+//	  like the previous childObjType()
+//	- index is the required argument so, first
+//	- objname is last because it's more likely the location is already
+//	  fully specified
+//	- Leave property list out for now because C API is not using it, it
+//	  can be added later when needed.
+// Programmer	Binh-Minh Ribler - April, 2014
+//--------------------------------------------------------------------------
+H5O_type_t CommonFG::childObjType(hsize_t index, H5_index_t index_type, H5_iter_order_t order, const char* objname) const
+{
+    herr_t ret_value;
+    H5O_info_t objinfo;
+    H5O_type_t objtype = H5O_TYPE_UNKNOWN;
+
+    // Use C API to get information of the object
+    ret_value = H5Oget_info_by_idx(getLocId(), objname, index_type, order, index, &objinfo, H5P_DEFAULT);
+
+    // Throw exception if C API returns failure
+    if (ret_value < 0)
+	throwException("childObjType", "H5Oget_info_by_idx failed");
+    // Return a valid type or throw an exception for unknown type
+    else
+      switch (objinfo.type)
+      {
+	case H5O_TYPE_GROUP:
+	case H5O_TYPE_DATASET:
+	case H5O_TYPE_NAMED_DATATYPE:
+	    objtype = objinfo.type;
+	    break;
+	default:
+	    throwException("childObjType", "Unknown type of object");
+      }
+    return(objtype);
+}
+
 #ifndef H5_NO_DEPRECATED_SYMBOLS
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
 //--------------------------------------------------------------------------
 // Function:	CommonFG::getObjTypeByIdx
 ///\brief	Returns the type of an object in this group, given the
@@ -959,7 +1109,7 @@ H5G_obj_t CommonFG::getObjTypeByIdx(hsize_t idx) const
 ///		It differs from the above function because it also provides
 ///		the returned object type in text (char*)
 ///\param	idx       - IN: Transient index of the object
-///\param	type_name - IN: Object type in text
+///\param	type_name - OUT: Object type in text
 ///\return	Object type
 ///\exception	H5::FileIException or H5::GroupIException
 // Programmer	Binh-Minh Ribler - May, 2010
@@ -985,7 +1135,7 @@ H5G_obj_t CommonFG::getObjTypeByIdx(hsize_t idx, char* type_name) const
 ///		It differs from the above function because it also provides
 ///		the returned object type in text (H5std_string&)
 ///\param	idx       - IN: Transient index of the object
-///\param	type_name - IN: Object type in text
+///\param	type_name - OUT: Object type in text
 ///\return	Object type
 ///\exception	H5::FileIException or H5::GroupIException
 // Programmer	Binh-Minh Ribler - January, 2003
@@ -1005,6 +1155,7 @@ H5G_obj_t CommonFG::getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const
    }
    return (obj_type);
 }
+#endif // DOXYGEN_SHOULD_SKIP_THIS
 #endif /* H5_NO_DEPRECATED_SYMBOLS */
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
diff --git a/c++/src/H5CommonFG.h b/c++/src/H5CommonFG.h
index 3b20f5c..f11548a 100644
--- a/c++/src/H5CommonFG.h
+++ b/c++/src/H5CommonFG.h
@@ -28,7 +28,7 @@ class ArrayType;
 class VarLenType;
 
 /*! \class CommonFG
-    \brief \i CommonFG is an abstract base class of H5File and H5Group.
+    \brief \a CommonFG is an abstract base class of H5File and H5Group.
 
     It provides common operations of H5File and H5Group.
 */
@@ -65,6 +65,12 @@ class H5_DLLCPP CommonFG {
 	ssize_t getObjnameByIdx(hsize_t idx, char* name, size_t size) const;
 	ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const;
 
+	// Retrieves the type of an object in this file or group, given the
+	// object's name
+	H5O_type_t childObjType(const H5std_string& objname) const;
+	H5O_type_t childObjType(const char* objname) const;
+	H5O_type_t childObjType(hsize_t index, H5_index_t index_type=H5_INDEX_NAME, H5_iter_order_t order=H5_ITER_INC, const char* objname=".") const;
+
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 	// Returns the type of an object in this group, given the
 	// object's index.
@@ -95,8 +101,10 @@ class H5_DLLCPP CommonFG {
 	void unlink(const H5std_string& name) const;
 
 	// Mounts the file 'child' onto this location.
-	void mount(const char* name, H5File& child, PropList& plist) const;
-	void mount(const H5std_string& name, H5File& child, PropList& plist) const;
+	void mount(const char* name, const H5File& child, const PropList& plist) const;
+	void mount(const char* name, H5File& child, PropList& plist) const; // backward compatibility
+	void mount(const H5std_string& name, const H5File& child, const PropList& plist) const;
+	void mount(const H5std_string& name, H5File& child, PropList& plist) const; // backward compatibility
 
 	// Unmounts the file named 'name' from this parent location.
 	void unmount(const char* name) const;
diff --git a/c++/src/H5CompType.cpp b/c++/src/H5CompType.cpp
index df73d9b..191f004 100644
--- a/c++/src/H5CompType.cpp
+++ b/c++/src/H5CompType.cpp
@@ -123,7 +123,7 @@ H5std_string CompType::getMemberName( unsigned member_num ) const
 		"H5Tget_member_name returns NULL for member name");
     }
     H5std_string member_name = H5std_string(member_name_C); // convert C string to string
-    HDfree(member_name_C); // free the C string
+    H5free_memory(member_name_C); // free the C string
     return( member_name ); // return the member name string
 }
 
@@ -451,6 +451,25 @@ void CompType::pack() const
 }
 
 //--------------------------------------------------------------------------
+// Function:	CompType::setSize
+///\brief	Sets the total size for this compound datatype.
+///\param	size - IN: Size to set
+///\exception	H5::DataTypeIException
+// Note
+//	H5Tset_size works on atom datatypes and compound datatypes only
+// Programmer	Binh-Minh Ribler - 2014
+//--------------------------------------------------------------------------
+void CompType::setSize(size_t size) const
+{
+    // Call C routine H5Tset_size to set the total size
+    herr_t ret_value = H5Tset_size(id, size);
+    if (ret_value < 0)
+    {
+	throw DataTypeIException("CompType::setSize", "H5Tset_size failed");
+    }
+}
+
+//--------------------------------------------------------------------------
 // Function:    CompType destructor
 ///\brief       Properly terminates access to this compound datatype.
 // Programmer   Binh-Minh Ribler - 2000
diff --git a/c++/src/H5CompType.h b/c++/src/H5CompType.h
index 3d6a62f..bd6d76c 100644
--- a/c++/src/H5CompType.h
+++ b/c++/src/H5CompType.h
@@ -98,6 +98,9 @@ class H5_DLLCPP CompType : public DataType {
 	// Recursively removes padding from within this compound datatype.
 	void pack() const;
 
+	// Sets the total size for this compound datatype.
+	void setSize(size_t size) const;
+
 	///\brief Returns this class name.
 	virtual H5std_string fromClass () const { return("CompType"); }
 
diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp
index 1a26045..12ea455 100644
--- a/c++/src/H5DataSet.cpp
+++ b/c++/src/H5DataSet.cpp
@@ -85,6 +85,7 @@ DataSet::DataSet(const DataSet& original) : AbstractDs(original), H5Object(origi
 ///			  object that the dataset is located within.
 ///\param	ref - IN: Reference pointer
 ///\param	ref_type - IN: Reference type - default to H5R_OBJECT
+///\param	plist - IN: Property list - default to PropList::DEFAULT
 ///\exception	H5::DataSetIException
 ///\par Description
 ///		\c loc can be DataSet, Group, H5File, or named DataType, that
@@ -106,6 +107,7 @@ DataSet::DataSet(const H5Location& loc, const void* ref, H5R_type_t ref_type) :
 ///\param	attr - IN: Specifying location where the referenced object is in
 ///\param	ref - IN: Reference pointer
 ///\param	ref_type - IN: Reference type - default to H5R_OBJECT
+///\param	plist - IN: Property list - default to PropList::DEFAULT
 ///\exception	H5::ReferenceException
 // Programmer	Binh-Minh Ribler - Oct, 2006
 // Modification
@@ -294,7 +296,7 @@ void DataSet::getSpaceStatus(H5D_space_status_t& status) const
 ///\exception	H5::DataSetIException
 // Programmer	Binh-Minh Ribler - 2000
 //--------------------------------------------------------------------------
-hsize_t DataSet::getVlenBufSize( DataType& type, DataSpace& space ) const
+hsize_t DataSet::getVlenBufSize(const DataType& type, const DataSpace& space ) const
 {
    // Obtain identifiers for C API
    hid_t type_id = type.getId();
@@ -311,6 +313,20 @@ hsize_t DataSet::getVlenBufSize( DataType& type, DataSpace& space ) const
 }
 
 //--------------------------------------------------------------------------
+// Function:	DataSet::getVlenBufSize
+///\brief       This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///             misses const's.  This wrapper will be removed in future release.
+///\return	Amount of storage
+///\exception	H5::DataSetIException
+// Programmer	Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+hsize_t DataSet::getVlenBufSize( DataType& type, DataSpace& space ) const
+{
+    return(getVlenBufSize((const DataType)type, (const DataSpace)space));
+}
+
+//--------------------------------------------------------------------------
 // Function:	DataSet::vlenReclaim
 ///\brief	Reclaims VL datatype memory buffers.
 ///\param	type - IN: Datatype, which is the datatype stored in the buffer
@@ -575,9 +591,11 @@ void DataSet::extend( const hsize_t* size ) const
 ///\param	buf_type - IN: Datatype of the elements in buffer
 ///\param	space - IN: Dataspace describing memory buffer & containing selection to use
 ///\exception	H5::DataSetIException
-// Programmer	Binh-Minh Ribler - 2000
+// Programmer	Binh-Minh Ribler - 2014
+// Modification
+//		Used the non-const version.
 //--------------------------------------------------------------------------
-void DataSet::fillMemBuf(const void *fill, DataType& fill_type, void *buf, DataType& buf_type, DataSpace& space)
+void DataSet::fillMemBuf(const void *fill, const DataType& fill_type, void *buf, const DataType& buf_type, const DataSpace& space) const
 {
     hid_t fill_type_id = fill_type.getId();
     hid_t buf_type_id = buf_type.getId();
@@ -591,16 +609,32 @@ void DataSet::fillMemBuf(const void *fill, DataType& fill_type, void *buf, DataT
 
 //--------------------------------------------------------------------------
 // Function:	DataSet::fillMemBuf
-///\brief	This is an overloaded member function, provided for convenience.
-///		It differs from the above function in that it only takes the
-///		the last three arguments.
+///\brief       This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///             misses const's.  This wrapper will be removed in future release.
+///\param	fill - IN: Pointer to fill value to use - default NULL
+///\param	fill_type - IN: Datatype of the fill value
 ///\param	buf - IN/OUT: Memory buffer to fill selection within
 ///\param	buf_type - IN: Datatype of the elements in buffer
 ///\param	space - IN: Dataspace describing memory buffer & containing selection to use
 ///\exception	H5::DataSetIException
 // Programmer	Binh-Minh Ribler - 2000
 //--------------------------------------------------------------------------
-void DataSet::fillMemBuf(void *buf, DataType& buf_type, DataSpace& space)
+void DataSet::fillMemBuf(const void *fill, DataType& fill_type, void *buf, DataType& buf_type, DataSpace& space)
+{
+    fillMemBuf(fill, (const DataType)fill_type, buf, (const DataType)buf_type, (const DataSpace)space);
+}
+
+//--------------------------------------------------------------------------
+// Function:	DataSet::fillMemBuf
+///\brief	Fills a selection in memory with 0.
+///\param	buf - IN/OUT: Memory buffer to fill selection within
+///\param	buf_type - IN: Datatype of the elements in buffer
+///\param	space - IN: Dataspace describing memory buffer & containing selection to use
+///\exception	H5::DataSetIException
+// Programmer	Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+void DataSet::fillMemBuf(void *buf, const DataType& buf_type, const DataSpace& space) const
 {
     hid_t buf_type_id = buf_type.getId();
     hid_t space_id = space.getId();
@@ -612,6 +646,22 @@ void DataSet::fillMemBuf(void *buf, DataType& buf_type, DataSpace& space)
 }
 
 //--------------------------------------------------------------------------
+// Function:    DataSet::fillMemBuf
+///\brief       This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///             misses const's.  This wrapper will be removed in future release.
+///\param       buf - IN/OUT: Memory buffer to fill selection within
+///\param       buf_type - IN: Datatype of the elements in buffer
+///\param       space - IN: Dataspace describing memory buffer & containing selection to use
+///\exception   H5::DataSetIException
+// Programmer   Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+void DataSet::fillMemBuf(void *buf, DataType& buf_type, DataSpace& space)
+{
+    fillMemBuf(buf, (const DataType)buf_type, (const DataSpace)space);
+}
+
+//--------------------------------------------------------------------------
 // Function:    DataSet::getId
 ///\brief	Get the id of this dataset.
 ///\return	DataSet identifier
@@ -629,7 +679,7 @@ hid_t DataSet::getId() const
 
 //--------------------------------------------------------------------------
 // Function:	DataSet::p_read_fixed_len (private)
-// brief	Reads a fixed length \a H5std_string from an dataset.
+// brief	Reads a fixed length \a H5std_string from a dataset.
 // param	mem_type  - IN: DataSet datatype (in memory)
 // param	strg      - IN: Buffer for read string
 // exception	H5::DataSetIException
@@ -643,14 +693,14 @@ void DataSet::p_read_fixed_len(const hid_t mem_type_id, const hid_t mem_space_id
     // Only allocate for fixed-len string.
 
     // Get the size of the dataset's data
-    size_t attr_size = getInMemDataSize();
+    size_t data_size = getInMemDataSize();
 
     // If there is data, allocate buffer and read it.
-    if (attr_size > 0)
+    if (data_size > 0)
     {
-	char *strg_C = NULL;
+	char *strg_C = new char [data_size+1];
+	HDmemset(strg_C, 0, data_size+1); // clear buffer
 
-	strg_C = new char [(size_t)attr_size+1];
 	herr_t ret_value = H5Dread(id, mem_type_id, mem_space_id, file_space_id, xfer_plist_id, strg_C);
 
 	if( ret_value < 0 )
diff --git a/c++/src/H5DataSet.h b/c++/src/H5DataSet.h
index c407727..e264751 100644
--- a/c++/src/H5DataSet.h
+++ b/c++/src/H5DataSet.h
@@ -37,9 +37,12 @@ class H5_DLLCPP DataSet : public H5Object, public AbstractDs {
 	void extend( const hsize_t* size ) const;
 
 	// Fills a selection in memory with a value
-	void fillMemBuf(const void *fill, DataType& fill_type, void *buf, DataType& buf_type, DataSpace& space);
+	void fillMemBuf(const void *fill, const DataType& fill_type, void *buf, const DataType& buf_type, const DataSpace& space) const;
+	void fillMemBuf(const void *fill, DataType& fill_type, void *buf, DataType& buf_type, DataSpace& space); // kept for backward compatibility
+
 	// Fills a selection in memory with zero
-	void fillMemBuf(void *buf, DataType& buf_type, DataSpace& space);
+	void fillMemBuf(void *buf, const DataType& buf_type, const DataSpace& space) const;
+	void fillMemBuf(void *buf, DataType& buf_type, DataSpace& space); // kept for backward compatibility
 
 	// Gets the creation property list of this dataset.
 	DSetCreatPropList getCreatePlist() const;
@@ -60,7 +63,8 @@ class H5_DLLCPP DataSet : public H5Object, public AbstractDs {
 	virtual size_t getInMemDataSize() const;
 
 	// Returns the number of bytes required to store VL data.
-	hsize_t getVlenBufSize( DataType& type, DataSpace& space ) const;
+	hsize_t getVlenBufSize(const DataType& type, const DataSpace& space ) const;
+	hsize_t getVlenBufSize(DataType& type, DataSpace& space) const; // kept for backward compatibility
 
 	// Reclaims VL datatype memory buffers.
 	static void vlenReclaim(const DataType& type, const DataSpace& space, const DSetMemXferPropList& xfer_plist, void* buf );
diff --git a/c++/src/H5DataSpace.cpp b/c++/src/H5DataSpace.cpp
index 059c812..6ad8c8d 100644
--- a/c++/src/H5DataSpace.cpp
+++ b/c++/src/H5DataSpace.cpp
@@ -279,7 +279,7 @@ H5S_class_t DataSpace::getSimpleExtentType () const
 ///\exception	H5::DataSpaceIException
 // Programmer	Binh-Minh Ribler - 2000
 //--------------------------------------------------------------------------
-void DataSpace::extentCopy ( DataSpace& dest_space ) const
+void DataSpace::extentCopy (const DataSpace& dest_space) const
 {
    hid_t dest_space_id = dest_space.getId();
    herr_t ret_value = H5Sextent_copy( dest_space_id, id );
@@ -290,6 +290,20 @@ void DataSpace::extentCopy ( DataSpace& dest_space ) const
 }
 
 //--------------------------------------------------------------------------
+// Function:	DataSpace::extentCopy
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const.  This wrapper will be removed in future release.
+///\param	dest_space  - IN: Dataspace to copy from
+///\exception	H5::DataSpaceIException
+// Programmer	Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+void DataSpace::extentCopy( DataSpace& dest_space ) const
+{
+    extentCopy((const DataSpace)dest_space);
+}
+
+//--------------------------------------------------------------------------
 // Function:	DataSpace::setExtentSimple
 ///\brief	Sets or resets the size of an existing dataspace.
 ///\param	rank  - IN: Rank of the dataspace
diff --git a/c++/src/H5DataSpace.h b/c++/src/H5DataSpace.h
index 01d6f56..75d4ff8 100644
--- a/c++/src/H5DataSpace.h
+++ b/c++/src/H5DataSpace.h
@@ -43,7 +43,9 @@ class H5_DLLCPP DataSpace : public IdComponent {
 	void copy(const DataSpace& like_space);
 
 	// Copies the extent of this dataspace.
-	void extentCopy( DataSpace& dest_space ) const;
+	void extentCopy(const DataSpace& dest_space) const;
+	// Kept for backward compatibility only.
+	void extentCopy(DataSpace& dest_space) const;
 
 	// Gets the bounding box containing the current selection.
 	void getSelectBounds( hsize_t* start, hsize_t* end ) const;
diff --git a/c++/src/H5DataType.cpp b/c++/src/H5DataType.cpp
index 9e5b76e..016a3d5 100644
--- a/c++/src/H5DataType.cpp
+++ b/c++/src/H5DataType.cpp
@@ -98,6 +98,7 @@ DataType::DataType( const H5T_class_t type_class, size_t size ) : H5Object()
 ///\param       loc - IN: Location referenced object is in
 ///\param	ref - IN: Reference pointer
 ///\param	ref_type - IN: Reference type - default to H5R_OBJECT
+///\param	plist - IN: Property list - default to PropList::DEFAULT
 ///\exception	H5::ReferenceException
 // Programmer	Binh-Minh Ribler - Oct, 2006
 // Modification
@@ -116,6 +117,7 @@ DataType::DataType(const H5Location& loc, const void* ref, H5R_type_t ref_type)
 ///\param       attr - IN: Specifying location where the referenced object is in
 ///\param	ref - IN: Reference pointer
 ///\param	ref_type - IN: Reference type - default to H5R_OBJECT
+///\param	plist - IN: Property list - default to PropList::DEFAULT
 ///\exception	H5::ReferenceException
 // Programmer	Binh-Minh Ribler - Oct, 2006
 // Modification
@@ -264,6 +266,21 @@ void DataType::p_commit(hid_t loc_id, const char* name)
 ///\exception	H5::DataTypeIException
 // Programmer	Binh-Minh Ribler - 2000
 //--------------------------------------------------------------------------
+void DataType::commit(const H5Location& loc, const char* name)
+{
+   p_commit(loc.getId(), name);
+}
+
+//--------------------------------------------------------------------------
+// Function:	DataType::commit
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const's.  This wrapper will be removed in future release.
+///\param	loc - IN: A location (file, dataset, datatype, or group)
+///\param	name - IN: Name of the datatype
+///\exception	H5::DataTypeIException
+// Programmer	Binh-Minh Ribler - Jan, 2007
+//--------------------------------------------------------------------------
 void DataType::commit(H5Location& loc, const char* name)
 {
    p_commit(loc.getId(), name);
@@ -276,6 +293,21 @@ void DataType::commit(H5Location& loc, const char* name)
 ///		argument \a name.
 // Programmer	Binh-Minh Ribler - 2000
 //--------------------------------------------------------------------------
+void DataType::commit(const H5Location& loc, const H5std_string& name)
+{
+   p_commit(loc.getId(), name.c_str());
+}
+
+//--------------------------------------------------------------------------
+// Function:	DataType::commit
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const's.  This wrapper will be removed in future release.
+///\param	loc - IN: A location (file, dataset, datatype, or group)
+///\param	name - IN: Name of the datatype
+///\exception	H5::DataTypeIException
+// Programmer	Binh-Minh Ribler - Jan, 2007
+//--------------------------------------------------------------------------
 void DataType::commit(H5Location& loc, const H5std_string& name)
 {
    p_commit(loc.getId(), name.c_str());
@@ -333,7 +365,7 @@ H5T_conv_t DataType::find( const DataType& dest, H5T_cdata_t **pcdata ) const
 ///\param	buf        - IN/OUT: Array containing pre- and post-conversion
 ///				values
 ///\param	background - IN: Optional backgroud buffer
-///\param	plist      - IN: Dataset transfer property list
+///\param	plist - IN: Property list - default to PropList::DEFAULT
 ///\return	Pointer to a suitable conversion function
 ///\exception	H5::DataTypeIException
 // Programmer	Binh-Minh Ribler - 2000
@@ -563,7 +595,7 @@ H5std_string DataType::getTag() const
     if( tag_Cstr != NULL )
     {
 	H5std_string tag = H5std_string(tag_Cstr); // C string to string object
-	HDfree(tag_Cstr); // free the C string
+	H5free_memory(tag_Cstr); // free the C string
 	return (tag); // return the tag
     }
     else
diff --git a/c++/src/H5DataType.h b/c++/src/H5DataType.h
index ca04548..dca0c87 100644
--- a/c++/src/H5DataType.h
+++ b/c++/src/H5DataType.h
@@ -57,8 +57,12 @@ class H5_DLLCPP DataType : public H5Object {
 
 	// Commits a transient datatype to a file; this datatype becomes
 	// a named datatype which can be accessed from the location.
-	void commit( H5Location& loc, const char* name);
-	void commit( H5Location& loc, const H5std_string& name);
+	void commit(const H5Location& loc, const char* name);
+	void commit(const H5Location& loc, const H5std_string& name);
+	// These two overloaded functions are kept for backward compatibility
+	// only; they missed the const.
+	void commit(H5Location& loc, const char* name);
+	void commit(H5Location& loc, const H5std_string& name);
 
 	// Determines whether this datatype is a named datatype or
 	// a transient datatype.
diff --git a/c++/src/H5DcreatProp.cpp b/c++/src/H5DcreatProp.cpp
index ece435c..2b124ee 100644
--- a/c++/src/H5DcreatProp.cpp
+++ b/c++/src/H5DcreatProp.cpp
@@ -349,13 +349,16 @@ int DSetCreatPropList::getNfilters() const
 ///\param	cd_nelmts  - IN/OUT: Number of elements in \a cd_values /Number
 ///				     of values defined by the filter
 ///\param	cd_values     - OUT: Array to hold the data; allocated by the user
-///\param	namelen       - OUT: Length of \a name
+///\param	namelen       - IN: Length of \a name
 ///\param	name          - OUT: Name of the filter
 ///\param	filter_config - OUT: Flags indicating whether filter can encode/decode
 ///\return	Filter id
 ///\exception	H5::PropListIException
 ///\par Description
 ///		Failure occurs when \a filter_number is out of range.
+//		Note: the first argument was mistakenly typed as int instead
+//		of unsigned int, but for backward compatibility, it cannot be
+//		changed. -BMR (2014/04/15)
 //--------------------------------------------------------------------------
 H5Z_filter_t DSetCreatPropList::getFilter(int filter_number,
 	unsigned int &flags, size_t &cd_nelmts, unsigned int* cd_values,
@@ -635,8 +638,8 @@ int DSetCreatPropList::getExternalCount() const
 ///\param	idx    - IN: Index of the external file, ranges [0-(N-1)] and
 ///		                returned by getExternalCount()
 ///\param	name_size - IN: Maximum length of \a name
-///\param	name   - IN: Name of the external file
-///\param	offset - IN: Location to return an offset value
+///\param	name   - OUT: Name of the external file
+///\param	offset - OUT: Location to return an offset value
 ///\param	size   - OUT: Location to return the size of the external file data
 ///\exception	H5::PropListIException
 ///\par Description
diff --git a/c++/src/H5DxferProp.cpp b/c++/src/H5DxferProp.cpp
index bc3e0af..1f4a638 100644
--- a/c++/src/H5DxferProp.cpp
+++ b/c++/src/H5DxferProp.cpp
@@ -20,6 +20,17 @@
 #include "H5IdComponent.h"
 #include "H5PropList.h"
 #include "H5DxferProp.h"
+#include "H5private.h"		// for HDmemset
+
+#include <iostream>
+
+#ifndef H5_NO_NAMESPACE
+#ifndef H5_NO_STD
+    using std::cerr;
+    using std::endl;
+#endif  // H5_NO_STD
+#endif
+
 
 #ifndef H5_NO_NAMESPACE
 namespace H5 {
@@ -39,6 +50,17 @@ const DSetMemXferPropList DSetMemXferPropList::DEFAULT;
 DSetMemXferPropList::DSetMemXferPropList() : PropList(H5P_DATASET_XFER) {}
 
 //--------------------------------------------------------------------------
+// Function	DSetMemXferPropList constructor
+///\brief	Creates a dataset transfer property list with transform
+///		expression.
+// Programmer:	Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+DSetMemXferPropList::DSetMemXferPropList(const char* exp) : PropList(H5P_DATASET_XFER)
+{
+    setDataTransform(exp);
+}
+
+//--------------------------------------------------------------------------
 // Function	DSetMemXferPropList copy constructor
 ///\brief	Copy constructor: makes a copy of the original
 ///		DSetMemXferPropList object
@@ -175,7 +197,110 @@ void DSetMemXferPropList::getBtreeRatios( double& left, double& middle, double&
 }
 
 //--------------------------------------------------------------------------
-// Function:	DSetMemXferPropList::setTypeConvCB
+// Function:	DSetMemXferPropList::setDataTransform
+///\brief	Sets data transform expression.
+///\param	expression - IN: null-terminated data transform expression (char*)
+///\exception	H5::PropListIException
+// Programmer:	Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+void DSetMemXferPropList::setDataTransform(const char* expression) const
+{
+   herr_t ret_value = H5Pset_data_transform( id, expression);
+   if( ret_value < 0 )
+   {
+      throw PropListIException("DSetMemXferPropList::setDataTransform",
+		"H5Pset_data_transform failed");
+   }
+}
+
+//--------------------------------------------------------------------------
+// Function:	DSetMemXferPropList::setDataTransform
+///\brief	This is an overloaded member function, provided for convenience.
+///		It takes a reference to a \c H5std_string for the expression.
+///\param	expression - IN: H5std_string data transform expression
+///\exception	H5::PropListIException
+// Programmer:	Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+void DSetMemXferPropList::setDataTransform(const H5std_string& expression) const
+{
+    setDataTransform(expression.c_str());
+}
+
+//--------------------------------------------------------------------------
+// Function:	DSetMemXferPropList::getDataTransform
+///\brief	Sets data transform expression.
+///\param	exp - OUT: buffer for data transform expression (char*)
+///\param	buf_size   - IN: size of buffer for expression, including the
+///				 null terminator
+///\exception	H5::PropListIException
+// Programmer:	Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+ssize_t DSetMemXferPropList::getDataTransform(char* exp, size_t buf_size) const
+{
+    // H5Pget_data_transform will get buf_size characters of the expression
+    // including the null terminator
+    ssize_t exp_len;
+    exp_len = H5Pget_data_transform(id, exp, buf_size);
+
+    // H5Pget_data_transform returns a negative value, raise an exception
+    if (exp_len < 0)
+    {
+	throw PropListIException("DSetMemXferPropList::getDataTransform",
+		"H5Pget_data_transform failed");
+    }
+
+    // H5Pget_data_transform will put a null terminator at the end of the
+    // expression or at [buf_size-1] if the expression is at least the size
+    // of the buffer.
+
+    // Return the expression length, which might be different from buf_size
+    return(exp_len);
+}
+
+//--------------------------------------------------------------------------
+// Function:	DSetMemXferPropList::getDataTransform
+///\brief	This is an overloaded member function, provided for convenience.
+///		It takes no parameter and returns a \c H5std_string for the expression.
+///\exception	H5::PropListIException
+// Programmer:	Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+H5std_string DSetMemXferPropList::getDataTransform() const
+{
+    // Initialize string to "", so that if there is no expression, the returned
+    // string will be empty
+    H5std_string expression("");
+
+    // Preliminary call to get the expression's length
+    ssize_t exp_len = H5Pget_data_transform(id, NULL, (size_t)0);
+
+    // If H5Pget_data_transform returns a negative value, raise an exception
+    if (exp_len < 0)
+    {
+        throw PropListIException("DSetMemXferPropList::getDataTransform", "H5Pget_data_transform failed");
+    }
+
+    // If expression exists, calls C routine again to get it
+    else if (exp_len > 0)
+    {
+        // Temporary buffer for char* expression
+        char* exp_C = new char[exp_len+1];
+        HDmemset(exp_C, 0, exp_len+1); // clear buffer
+
+        // Used overloaded function
+        exp_len = getDataTransform(exp_C, exp_len+1);
+
+        // Convert the C expression to return
+        expression = exp_C;
+
+        // Clean up resource
+        delete []exp_C;
+    }
+    // Return the string expression
+    return(expression);
+}
+
+//--------------------------------------------------------------------------
+// Function:	DSetMemXferPropList::getTypeConvCB
 ///\brief	Sets an exception handling callback for datatype conversion
 ///		for a dataset transfer property list.
 ///\param	op        - IN: User's function
diff --git a/c++/src/H5DxferProp.h b/c++/src/H5DxferProp.h
index 846082d..835dfdb 100644
--- a/c++/src/H5DxferProp.h
+++ b/c++/src/H5DxferProp.h
@@ -35,6 +35,9 @@ class H5_DLLCPP DSetMemXferPropList : public PropList {
 	// Creates a dataset memory and transfer property list.
 	DSetMemXferPropList();
 
+	// Creates a dataset transform property list.
+	DSetMemXferPropList(const char* expression);
+
 	// Sets type conversion and background buffers.
 	void setBuffer( size_t size, void* tconv, void* bkg ) const;
 
@@ -47,6 +50,14 @@ class H5_DLLCPP DSetMemXferPropList : public PropList {
 	// Gets B-tree split ratios for a dataset transfer property list.
 	void getBtreeRatios( double& left, double& middle, double& right ) const;
 
+	// Sets data transform expression.
+	void setDataTransform(const char* expression) const;
+	void setDataTransform(const H5std_string& expression) const;
+
+	// Gets data transform expression.
+	ssize_t getDataTransform(char* exp, size_t buf_size=0) const;
+	H5std_string getDataTransform() const;
+
 	// Sets the dataset transfer property list status to TRUE or FALSE.
 	void setPreserve( bool status ) const;
 
diff --git a/c++/src/H5EnumType.cpp b/c++/src/H5EnumType.cpp
index ff632af..04bb9e0 100644
--- a/c++/src/H5EnumType.cpp
+++ b/c++/src/H5EnumType.cpp
@@ -30,6 +30,7 @@
 #include "H5AtomType.h"
 #include "H5IntType.h"
 #include "H5EnumType.h"
+#include "H5private.h"			// for HDmemset
 
 #ifndef H5_NO_NAMESPACE
 namespace H5 {
@@ -150,6 +151,7 @@ void EnumType::insert( const H5std_string& name, void *value ) const
 H5std_string EnumType::nameOf( void *value, size_t size ) const
 {
    char* name_C = new char[size+1];  // temporary C-string for C API
+   HDmemset(name_C, 0, size+1); // clear buffer
 
    // Calls C routine H5Tenum_nameof to get the name of the specified enum type
    herr_t ret_value = H5Tenum_nameof( id, value, name_C, size );
@@ -160,7 +162,7 @@ H5std_string EnumType::nameOf( void *value, size_t size ) const
       throw DataTypeIException("EnumType::nameOf", "H5Tenum_nameof failed");
    }
    // otherwise, create the string to hold the datatype name and return it
-   H5std_string name = H5std_string(name_C);
+   H5std_string name(name_C);
    delete []name_C;
    return( name );
 }
diff --git a/c++/src/H5Exception.cpp b/c++/src/H5Exception.cpp
index 8513372..2d18825 100644
--- a/c++/src/H5Exception.cpp
+++ b/c++/src/H5Exception.cpp
@@ -295,16 +295,33 @@ const char* Exception::getCFuncName() const
 }
 
 //--------------------------------------------------------------------------
-// Function:	Exception::printError
+// Function:	Exception::printErrorStack (static)
 ///\brief	Prints the error stack in a default manner.
+///\param	stream    - IN: File pointer, default to stderr
+///\param	err_stack - IN: Error stack ID, default to H5E_DEFAULT(0)
+// Programmer	Binh-Minh Ribler - Apr, 2014 (1.8.13)
+//--------------------------------------------------------------------------
+void Exception::printErrorStack(FILE* stream, hid_t err_stack)
+{
+    herr_t ret_value = H5Eprint2(err_stack, stream);
+    if( ret_value < 0 )
+	throw Exception( "Printing error stack", "H5Eprint2 failed" );
+}
+
+//--------------------------------------------------------------------------
+// Function:	Exception::printError
+///\brief	Prints the error stack in a default manner.  This member
+///		function is replaced by the static function printErrorStack
+///		and will be removed from the next major release.
 ///\param	stream - IN: File pointer
 // Programmer	Binh-Minh Ribler - 2000
+// Description:
+//		This function can be removed in next major release.
+//		-BMR, 2014/04/24
 //--------------------------------------------------------------------------
-void Exception::printError( FILE* stream ) const
+void Exception::printError(FILE* stream) const
 {
-   herr_t ret_value = H5Eprint2( H5E_DEFAULT, stream ); // print to stderr
-   if( ret_value < 0 )
-      throw Exception( "Exception::printError", "H5Eprint failed" );
+    Exception::printErrorStack(stream, H5E_DEFAULT);
 }
 
 //--------------------------------------------------------------------------
@@ -312,7 +329,7 @@ void Exception::printError( FILE* stream ) const
 ///\brief	Noop destructor
 // Programmer	Binh-Minh Ribler - 2000
 //--------------------------------------------------------------------------
-Exception::~Exception() {}
+Exception::~Exception() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	FileIException
@@ -335,7 +352,7 @@ FileIException::FileIException(const H5std_string& func_name, const H5std_string
 // Function:	FileIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-FileIException::~FileIException() {}
+FileIException::~FileIException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	GroupIException
@@ -358,7 +375,7 @@ GroupIException::GroupIException(const H5std_string& func_name, const H5std_stri
 // Function:	GroupIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-GroupIException::~GroupIException() {}
+GroupIException::~GroupIException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	DataSpaceIException
@@ -381,7 +398,7 @@ DataSpaceIException::DataSpaceIException(const H5std_string& func_name, const H5
 // Function:	DataSpaceIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-DataSpaceIException::~DataSpaceIException() {}
+DataSpaceIException::~DataSpaceIException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	DataTypeIException
@@ -404,7 +421,7 @@ DataTypeIException::DataTypeIException(const H5std_string& func_name, const H5st
 // Function:	DataTypeIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-DataTypeIException::~DataTypeIException() {}
+DataTypeIException::~DataTypeIException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	PropListIException
@@ -427,7 +444,7 @@ PropListIException::PropListIException(const H5std_string& func_name, const H5st
 // Function:	PropListIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-PropListIException::~PropListIException() {}
+PropListIException::~PropListIException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	DataSetIException
@@ -450,7 +467,7 @@ DataSetIException::DataSetIException(const H5std_string& func_name, const H5std_
 // Function:	DataSetIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-DataSetIException::~DataSetIException() {}
+DataSetIException::~DataSetIException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	AttributeIException
@@ -473,7 +490,7 @@ AttributeIException::AttributeIException(const H5std_string& func_name, const H5
 // Function:	AttributeIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-AttributeIException::~AttributeIException() {}
+AttributeIException::~AttributeIException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	ReferenceException
@@ -496,7 +513,7 @@ ReferenceException::ReferenceException(const H5std_string& func_name, const H5st
 // Function:	ReferenceException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-ReferenceException::~ReferenceException() {}
+ReferenceException::~ReferenceException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	LibraryIException
@@ -519,7 +536,30 @@ LibraryIException::LibraryIException(const H5std_string& func_name, const H5std_
 // Function:	LibraryIException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-LibraryIException::~LibraryIException() {}
+LibraryIException::~LibraryIException() throw() {}
+
+//--------------------------------------------------------------------------
+// Subclass:	LocationException
+// Programmer	Binh-Minh Ribler - 2014
+//--------------------------------------------------------------------------
+//--------------------------------------------------------------------------
+// Function:	LocationException default constructor
+///\brief	Default constructor.
+//--------------------------------------------------------------------------
+LocationException::LocationException():Exception(){}
+//--------------------------------------------------------------------------
+// Function:	LocationException overloaded constructor
+///\brief	Creates a LocationException with the name of the function,
+///		in which the failure occurs, and an optional detailed message.
+///\param	func_name - IN: Name of the function where failure occurs
+///\param	message   - IN: Message on the failure
+//--------------------------------------------------------------------------
+LocationException::LocationException(const H5std_string& func_name, const H5std_string& message) : Exception(func_name, message) {}
+//--------------------------------------------------------------------------
+// Function:	LocationException destructor
+///\brief	Noop destructor.
+//--------------------------------------------------------------------------
+LocationException::~LocationException() throw() {}
 
 //--------------------------------------------------------------------------
 // Subclass:	IdComponentException
@@ -542,7 +582,7 @@ IdComponentException::IdComponentException(const H5std_string& func_name, const
 // Function:	IdComponentException destructor
 ///\brief	Noop destructor.
 //--------------------------------------------------------------------------
-IdComponentException::~IdComponentException() {}
+IdComponentException::~IdComponentException() throw() {}
 #ifndef H5_NO_NAMESPACE
 } // end namespace
 #endif
diff --git a/c++/src/H5Exception.h b/c++/src/H5Exception.h
index ee6496e..5373150 100644
--- a/c++/src/H5Exception.h
+++ b/c++/src/H5Exception.h
@@ -72,7 +72,9 @@ class H5_DLLCPP Exception {
 				H5E_walk2_t func, void* client_data);
 
 	// Prints the error stack in a default manner.
-	virtual void printError( FILE* stream = NULL ) const;
+	static void printErrorStack(FILE* stream = stderr,
+				    hid_t err_stack = H5E_DEFAULT); // Static
+	virtual void printError(FILE* stream = NULL) const;
 
 	// Default constructor
 	Exception();
@@ -81,7 +83,7 @@ class H5_DLLCPP Exception {
 	Exception( const Exception& orig);
 
 	// virtual Destructor
-	virtual ~Exception();
+	virtual ~Exception() throw();
 
    private:
 	H5std_string detail_message;
@@ -96,70 +98,77 @@ class H5_DLLCPP FileIException : public Exception {
    public:
 	FileIException( const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	FileIException();
-	virtual ~FileIException();
+	virtual ~FileIException() throw();
 };
 
 class H5_DLLCPP GroupIException : public Exception {
    public:
 	GroupIException( const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	GroupIException();
-	virtual ~GroupIException();
+	virtual ~GroupIException() throw();
 };
 
 class H5_DLLCPP DataSpaceIException : public Exception {
    public:
 	DataSpaceIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	DataSpaceIException();
-	virtual ~DataSpaceIException();
+	virtual ~DataSpaceIException() throw();
 };
 
 class H5_DLLCPP DataTypeIException : public Exception {
    public:
 	DataTypeIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	DataTypeIException();
-	virtual ~DataTypeIException();
+	virtual ~DataTypeIException() throw();
 };
 
 class H5_DLLCPP PropListIException : public Exception {
    public:
 	PropListIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	PropListIException();
-	virtual ~PropListIException();
+	virtual ~PropListIException() throw();
 };
 
 class H5_DLLCPP DataSetIException : public Exception {
    public:
 	DataSetIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	DataSetIException();
-	virtual ~DataSetIException();
+	virtual ~DataSetIException() throw();
 };
 
 class H5_DLLCPP AttributeIException : public Exception {
    public:
 	AttributeIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	AttributeIException();
-	virtual ~AttributeIException();
+	virtual ~AttributeIException() throw();
 };
 
 class H5_DLLCPP ReferenceException : public Exception {
    public:
 	ReferenceException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	ReferenceException();
-	virtual ~ReferenceException();
+	virtual ~ReferenceException() throw();
 };
 
 class H5_DLLCPP LibraryIException : public Exception {
    public:
 	LibraryIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	LibraryIException();
-	virtual ~LibraryIException();
+	virtual ~LibraryIException() throw();
+};
+
+class H5_DLLCPP LocationException : public Exception {
+   public:
+	LocationException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
+	LocationException();
+	virtual ~LocationException() throw();
 };
 
 class H5_DLLCPP IdComponentException : public Exception {
    public:
 	IdComponentException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG);
 	IdComponentException();
-	virtual ~IdComponentException();
+	virtual ~IdComponentException() throw();
 };
 
 #ifndef H5_NO_NAMESPACE
diff --git a/c++/src/H5FaccProp.cpp b/c++/src/H5FaccProp.cpp
index 4fb3836..5696742 100644
--- a/c++/src/H5FaccProp.cpp
+++ b/c++/src/H5FaccProp.cpp
@@ -264,7 +264,7 @@ FileAccPropList FileAccPropList::getFamily(hsize_t& memb_size) const
 /// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetFaplSplit
 // Programmer:  Binh-Minh Ribler - April, 2004
 //--------------------------------------------------------------------------
-void FileAccPropList::setSplit( FileAccPropList& meta_plist, FileAccPropList& raw_plist, const char* meta_ext, const char* raw_ext ) const
+void FileAccPropList::setSplit(const FileAccPropList& meta_plist, const FileAccPropList& raw_plist, const char* meta_ext, const char* raw_ext ) const
 {
    hid_t meta_pid = meta_plist.getId();
    hid_t raw_pid = raw_plist.getId();
@@ -277,19 +277,54 @@ void FileAccPropList::setSplit( FileAccPropList& meta_plist, FileAccPropList& ra
 
 //--------------------------------------------------------------------------
 // Function:	FileAccPropList::setSplit
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const's.  This wrapper will be removed in future release.
+///\param	meta_plist  - IN: File access plist for the metadata file
+///\param	raw_plist   - IN: File access plist for the raw data file
+///\param	meta_ext    - IN: Metadata filename extension as \c char*
+///\param	raw_ext     - IN: Raw data filename extension as \c char*
+///\exception	H5::PropListIException
+// Programmer:  Binh-Minh Ribler - April, 2004
+// Note:	Retiring April, 2014
+//--------------------------------------------------------------------------
+void FileAccPropList::setSplit(FileAccPropList& meta_plist, FileAccPropList& raw_plist, const char* meta_ext, const char* raw_ext ) const
+{
+    setSplit((const FileAccPropList)meta_plist, (const FileAccPropList)raw_plist, meta_ext, raw_ext);
+}
+
+//--------------------------------------------------------------------------
+// Function:	FileAccPropList::setSplit
 ///\brief	This is an overloaded member function, provided for convenience.
-///		It differs from the above function only in what arguments it
-///		accepts.
+///		It takes character arguments as \c H5std_string.
+///\param	meta_plist  - IN: File access plist for the metadata file
+///\param	raw_plist   - IN: File access plist for the raw data file
+///\param	meta_ext    - IN: Metadata filename extension as \c H5std_string
+///\param	raw_ext     - IN: Raw data filename extension as \c H5std_string
+///\exception	H5::PropListIException
+// Programmer:  Binh-Minh Ribler - April, 2004
+//--------------------------------------------------------------------------
+void FileAccPropList::setSplit(const FileAccPropList& meta_plist, const FileAccPropList& raw_plist, const H5std_string& meta_ext, const H5std_string& raw_ext ) const
+{
+   setSplit( meta_plist, raw_plist, meta_ext.c_str(), raw_ext.c_str() );
+}
+
+//--------------------------------------------------------------------------
+// Function:	FileAccPropList::setSplit
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const's.  This wrapper will be removed in future release.
 ///\param	meta_plist  - IN: File access plist for the metadata file
 ///\param	raw_plist   - IN: File access plist for the raw data file
 ///\param	meta_ext    - IN: Metadata filename extension as \c string
 ///\param	raw_ext     - IN: Raw data filename extension as \c string
 ///\exception	H5::PropListIException
 // Programmer:  Binh-Minh Ribler - April, 2004
+// Note:	Retiring April, 2014
 //--------------------------------------------------------------------------
-void FileAccPropList::setSplit( FileAccPropList& meta_plist, FileAccPropList& raw_plist, const H5std_string& meta_ext, const H5std_string& raw_ext ) const
+void FileAccPropList::setSplit(FileAccPropList& meta_plist, FileAccPropList& raw_plist, const H5std_string& meta_ext, const H5std_string& raw_ext ) const
 {
-   setSplit( meta_plist, raw_plist, meta_ext.c_str(), raw_ext.c_str() );
+   setSplit((const FileAccPropList)meta_plist, (const FileAccPropList)raw_plist, meta_ext.c_str(), raw_ext.c_str() );
 }
 
 // Stream Virtual File Driver had been removed from the main library.
diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h
index 4688440..4042eba 100644
--- a/c++/src/H5FaccProp.h
+++ b/c++/src/H5FaccProp.h
@@ -65,18 +65,21 @@ class H5_DLLCPP FileAccPropList : public PropList {
 	FileAccPropList getFamily(hsize_t& memb_size) const;
 
 	// Emulates the old split file driver,
-	void setSplit( FileAccPropList& meta_plist, FileAccPropList& raw_plist,
-	     const char* meta_ext = ".meta", const char* raw_ext = ".raw" ) const;
-	void setSplit( FileAccPropList& meta_plist, FileAccPropList& raw_plist,
-	     const H5std_string& meta_ext, const H5std_string& raw_ext ) const;
-
-#ifdef H5_HAVE_STREAM // for Stream Virtual File Driver
-	// Modifies this file access property list to use the Stream driver.
-	void setStream(H5FD_stream_fapl_t &fapl) const;
-
-	// Retrieves the streaming I/O driver settings
-	H5FD_stream_fapl_t getStream() const;
-#endif
+	void setSplit(const FileAccPropList& meta_plist,
+		      const FileAccPropList& raw_plist,
+		      const char* meta_ext = ".meta",
+		      const char* raw_ext = ".raw" ) const;
+	void setSplit(const FileAccPropList& meta_plist,
+		      const FileAccPropList& raw_plist,
+		      const H5std_string& meta_ext = ".meta",
+		      const H5std_string& raw_ext = ".raw") const;
+	// These two overloaded functions are kept for backward compatibility
+	// only; they missed the const's and will be removed in future release.
+	void setSplit(FileAccPropList& meta_plist, FileAccPropList& raw_plist,
+	     const char* meta_ext=".meta", const char* raw_ext=".raw") const;
+	void setSplit(FileAccPropList& meta_plist, FileAccPropList& raw_plist,
+	     const H5std_string& meta_ext=".meta",
+	     const H5std_string& raw_ext=".raw") const;
 
 	// Sets the maximum size of the data sieve buffer.
 	void setSieveBufSize(size_t bufsize) const;
diff --git a/c++/src/H5File.cpp b/c++/src/H5File.cpp
index 0b319cb..6e04fc1 100644
--- a/c++/src/H5File.cpp
+++ b/c++/src/H5File.cpp
@@ -442,7 +442,7 @@ void H5File::getObjIDs(unsigned types, size_t max_objs, hid_t *oid_list) const
 ///		closed and reopened or opened during a subsequent session.
 // Programmer   Binh-Minh Ribler - May 2004
 //--------------------------------------------------------------------------
-void H5File::getVFDHandle(FileAccPropList& fapl, void **file_handle) const
+void H5File::getVFDHandle(const FileAccPropList& fapl, void **file_handle) const
 {
    hid_t fapl_id = fapl.getId();
    herr_t ret_value = H5Fget_vfd_handle(id, fapl_id, file_handle);
@@ -454,6 +454,23 @@ void H5File::getVFDHandle(FileAccPropList& fapl, void **file_handle) const
 
 //--------------------------------------------------------------------------
 // Function:	H5File::getVFDHandle
+///\brief	This is an overloaded member function, kept for backward
+///		compatibility.  It differs from the above function in that it
+///		misses const.  This wrapper will be removed in future release.
+///\param	fapl        - File access property list
+///\param	file_handle - Pointer to the file handle being used by
+///			      the low-level virtual file driver
+///\exception	H5::FileIException
+// Programmer   Binh-Minh Ribler - May 2004
+// Note:	Retiring April, 2014
+//--------------------------------------------------------------------------
+void H5File::getVFDHandle(FileAccPropList& fapl, void **file_handle) const
+{
+    getVFDHandle((const FileAccPropList)fapl, file_handle);
+}
+
+//--------------------------------------------------------------------------
+// Function:	H5File::getVFDHandle
 ///\brief	This is an overloaded member function, provided for convenience.
 ///		It differs from the above function only in what arguments it
 ///		accepts.
diff --git a/c++/src/H5File.h b/c++/src/H5File.h
index 06b4fec..0ef85b5 100644
--- a/c++/src/H5File.h
+++ b/c++/src/H5File.h
@@ -67,8 +67,9 @@ class H5_DLLCPP H5File : public H5Location, public CommonFG {
 	void getObjIDs(unsigned types, size_t max_objs, hid_t *oid_list) const;
 
 	// Returns the pointer to the file handle of the low-level file driver.
-	void getVFDHandle(FileAccPropList& fapl, void **file_handle) const;
 	void getVFDHandle(void **file_handle) const;
+	void getVFDHandle(const FileAccPropList& fapl, void **file_handle) const;
+	void getVFDHandle(FileAccPropList& fapl, void **file_handle) const; // kept for backward compatibility
 
 	// Determines if a file, specified by its name, is in HDF5 format
 	static bool isHdf5(const char* name );
@@ -76,6 +77,7 @@ class H5_DLLCPP H5File : public H5Location, public CommonFG {
 
 	// Reopens this file.
 	void reOpen();	// added for better name
+
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 	void reopen();  // obsolete in favor of reOpen()
 
@@ -102,6 +104,12 @@ class H5_DLLCPP H5File : public H5Location, public CommonFG {
 	// H5File destructor.
 	virtual ~H5File();
 
+   protected:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+	// Sets the HDF5 file id.
+	virtual void p_setId(const hid_t new_id);
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
    private:
 	hid_t id;	// HDF5 file id
 
@@ -109,13 +117,6 @@ class H5_DLLCPP H5File : public H5Location, public CommonFG {
 	// constructors taking a string or a char*
 	void p_get_file( const char* name, unsigned int flags, const FileCreatPropList& create_plist, const FileAccPropList& access_plist );
 
-   protected:
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-	// Sets the HDF5 file id.
-	virtual void p_setId(const hid_t new_id);
-
-#endif // DOXYGEN_SHOULD_SKIP_THIS
-
 };
 #ifndef H5_NO_NAMESPACE
 }
diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h
index 8194344..100b214 100644
--- a/c++/src/H5Group.h
+++ b/c++/src/H5Group.h
@@ -59,14 +59,15 @@ class H5_DLLCPP Group : public H5Object, public CommonFG {
 	// Creates a copy of an existing group using its id.
 	Group( const hid_t group_id );
 
-   private:
-	hid_t id;	// HDF5 group id
-
    protected:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 	// Sets the group id.
 	virtual void p_setId(const hid_t new_id);
 #endif // DOXYGEN_SHOULD_SKIP_THIS
+
+   private:
+	hid_t id;	// HDF5 group id
+
 };
 #ifndef H5_NO_NAMESPACE
 }
diff --git a/c++/src/H5IdComponent.cpp b/c++/src/H5IdComponent.cpp
index c60d05c..99a8dc4 100644
--- a/c++/src/H5IdComponent.cpp
+++ b/c++/src/H5IdComponent.cpp
@@ -25,6 +25,7 @@
 #include "H5Library.h"
 #include "H5IdComponent.h"
 #include "H5DataSpace.h"
+#include "H5private.h"			// for HDmemset
 
 #ifndef H5_NO_NAMESPACE
 namespace H5 {
@@ -129,7 +130,7 @@ int IdComponent::getCounter() const
 }
 
 //--------------------------------------------------------------------------
-// Function:	hdfObjectType
+// Function:	getHDFObjType (static)
 ///\brief	Given an id, returns the type of the object.
 ///\return	a valid HDF object type, which may be one of the following:
 ///		\li \c H5I_FILE
@@ -154,6 +155,26 @@ H5I_type_t IdComponent::getHDFObjType(const hid_t obj_id)
 }
 
 //--------------------------------------------------------------------------
+// Function:	getHDFObjType
+///\brief	Returns the type of the object.  It is an overloaded function
+///		of the above function.
+///\return	a valid HDF object type, which may be one of the following:
+///		\li \c H5I_FILE
+///		\li \c H5I_GROUP
+///		\li \c H5I_DATATYPE
+///		\li \c H5I_DATASPACE
+///		\li \c H5I_DATASET
+///		\li \c H5I_ATTR
+///		\li or \c H5I_BADID, if no valid type can be determined or the
+///				input object id is invalid.
+// Programmer   Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+H5I_type_t IdComponent::getHDFObjType() const
+{
+    return(getHDFObjType(getId()));
+}
+
+//--------------------------------------------------------------------------
 // Function:	IdComponent::operator=
 ///\brief	Assignment operator.
 ///\param	rhs - IN: Reference to the existing object
@@ -289,6 +310,8 @@ H5std_string IdComponent::p_get_file_name() const
 
    // Call H5Fget_name again to get the actual file name
    char* name_C = new char[name_size+1];  // temporary C-string for C API
+   HDmemset(name_C, 0, name_size+1); // clear buffer
+
    name_size = H5Fget_name(temp_id, name_C, name_size+1);
 
    // Check for failure again
diff --git a/c++/src/H5IdComponent.h b/c++/src/H5IdComponent.h
index 6877cb6..986e50a 100644
--- a/c++/src/H5IdComponent.h
+++ b/c++/src/H5IdComponent.h
@@ -48,6 +48,9 @@ class H5_DLLCPP IdComponent {
 	// Returns an HDF5 object type, given the object id.
 	static H5I_type_t getHDFObjType(const hid_t obj_id);
 
+	// Returns an HDF5 object type of this object.
+	H5I_type_t getHDFObjType() const;
+
 	// Assignment operator.
 	IdComponent& operator=( const IdComponent& rhs );
 
diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp
index 88c56ee..42aa99a 100644
--- a/c++/src/H5Location.cpp
+++ b/c++/src/H5Location.cpp
@@ -32,6 +32,7 @@
 #include "H5File.h"
 #include "H5DataSet.h"
 #include "H5Attribute.h"
+#include "H5private.h"		// for HDmemset
 
 #ifndef H5_NO_NAMESPACE
 namespace H5 {
@@ -355,7 +356,7 @@ void H5Location::flush(H5F_scope_t scope) const
    herr_t ret_value = H5Fflush(getId(), scope);
    if( ret_value < 0 )
    {
-      throw Exception(inMemFunc("flush"), "H5Fflush failed");
+      throw LocationException(inMemFunc("flush"), "H5Fflush failed");
    }
 }
 
@@ -363,7 +364,7 @@ void H5Location::flush(H5F_scope_t scope) const
 // Function:	H5Location::getFileName
 ///\brief	Gets the name of the file, in which this HDF5 object belongs.
 ///\return	File name
-///\exception	H5::IdComponentException
+///\exception	H5::LocationException
 // Programmer	Binh-Minh Ribler - Jul, 2004
 //--------------------------------------------------------------------------
 H5std_string H5Location::getFileName() const
@@ -371,7 +372,7 @@ H5std_string H5Location::getFileName() const
    try {
       return(p_get_file_name());
    }
-   catch (IdComponentException E) {
+   catch (LocationException E) {
       throw FileIException(inMemFunc("getFileName"), E.getDetailMsg());
    }
 }
@@ -381,7 +382,7 @@ H5std_string H5Location::getFileName() const
 ///\brief	Sets or resets the comment for an object specified by its name.
 ///\param	name  - IN: Name of the object
 ///\param	comment - IN: New comment
-///\exception	H5::Exception
+///\exception	H5::LocationException
 ///\par	Description
 ///		If \a comment is an empty string or a null pointer, the comment
 ///		message is removed from the object.
@@ -400,7 +401,7 @@ void H5Location::setComment(const char* name, const char* comment) const
 {
    herr_t ret_value = H5Oset_comment_by_name(getId(), name, comment, H5P_DEFAULT);
    if( ret_value < 0 )
-      throw Exception(inMemFunc("setComment"), "H5Oset_comment_by_name failed");
+      throw LocationException(inMemFunc("setComment"), "H5Oset_comment_by_name failed");
 }
 
 //--------------------------------------------------------------------------
@@ -427,7 +428,7 @@ void H5Location::setComment(const char* comment) const
 {
    herr_t ret_value = H5Oset_comment_by_name(getId(), ".", comment, H5P_DEFAULT);
    if( ret_value < 0 )
-      throw Exception(inMemFunc("setComment"), "H5Oset_comment_by_name failed");
+      throw LocationException(inMemFunc("setComment"), "H5Oset_comment_by_name failed");
 }
 
 //--------------------------------------------------------------------------
@@ -446,7 +447,7 @@ void H5Location::setComment(const H5std_string& comment) const
 // Function:	H5Location::removeComment
 ///\brief	Removes the comment from an object specified by its name.
 ///\param	name  - IN: Name of the object
-///\exception	H5::Exception
+///\exception	H5::LocationException
 // Programmer	Binh-Minh Ribler - May 2005 (moved from CommonFG, Sep 2013)
 //	2007: QAK modified to use H5O APIs; however the first parameter is
 //		no longer just file or group, this function should be moved
@@ -457,7 +458,7 @@ void H5Location::removeComment(const char* name) const
 {
    herr_t ret_value = H5Oset_comment_by_name(getId(), name, NULL, H5P_DEFAULT);
    if( ret_value < 0 )
-      throw Exception(inMemFunc("removeComment"), "H5Oset_comment_by_name failed");
+      throw LocationException(inMemFunc("removeComment"), "H5Oset_comment_by_name failed");
 }
 
 //--------------------------------------------------------------------------
@@ -474,52 +475,94 @@ void H5Location::removeComment(const H5std_string& name) const
 
 //--------------------------------------------------------------------------
 // Function:	H5Location::getComment
-///\brief	Retrieves comment for the specified object and its comment's
-///		length.
-///\param	name  - IN: Name of the object
-///\param	bufsize - IN: Length of the comment to retrieve
+///\brief	Retrieves the comment for this location, returning its length.
+///\param	name     - IN: Name of the object
+///\param	buf_size - IN: Length of the comment to retrieve
+///\param	comment  - OUT: Retrieved comment
+///\return	Actual length of the comment
+///\exception	H5::LocationException
+///\par Description
+///		This function retrieves \a buf_size characters of the comment
+///		including the null terminator.  Thus, if the actual length
+///		of the comment is more than buf_size-1, the retrieved comment
+///		will be truncated to accommodate the null terminator.
+// Programmer	Binh-Minh Ribler - Mar 2014
+//--------------------------------------------------------------------------
+ssize_t H5Location::getComment(const char* name, size_t buf_size, char* comment) const
+{
+    // H5Oget_comment_by_name will get buf_size chars of the comment including
+    // the null terminator
+    ssize_t comment_len;
+    comment_len = H5Oget_comment_by_name(getId(), name, comment, buf_size, H5P_DEFAULT);
+
+    // If H5Oget_comment_by_name returns a negative value, raise an exception
+    if (comment_len < 0)
+    {
+        throw LocationException("H5Location::getComment", "H5Oget_comment_by_name failed");
+    }
+    // If the comment is longer than the provided buffer size, the C library
+    // will not null terminate it
+    if ((size_t)comment_len >= buf_size)
+	comment[buf_size-1] = '\0';
+
+    // Return the actual comment length, which might be different from buf_size
+    return(comment_len);
+}
+
+//--------------------------------------------------------------------------
+// Function:	H5Location::getComment
+///\brief	Returns the comment as \a string for this location,
+///		returning its length.
+///\param	name     - IN: Name of the object
+///\param	buf_size - IN: Length of the comment to retrieve, default to 0
 ///\return	Comment string
-///\exception	H5::Exception
+///\exception	H5::LocationException
 // Programmer	Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013)
-//	2007: QAK modified to use H5O APIs; however the first parameter is
-//		no longer just file or group, this function should be moved
-//		to another class to accommodate attribute, dataset, and named
-//		datatype. - BMR
 //--------------------------------------------------------------------------
-H5std_string H5Location::getComment(const char* name, size_t bufsize) const
+H5std_string H5Location::getComment(const char* name, size_t buf_size) const
 {
-   // bufsize is default to 256
-   // temporary variable
-   hid_t loc_id = getId();   // temporary variable
+    // Initialize string to "", so that if there is no comment, the returned
+    // string will be empty
+    H5std_string comment("");
 
-   // temporary C-string for the object's comment; bufsize already including
-   // null character
-   char* comment_C = new char[bufsize];
-   ssize_t ret_value = H5Oget_comment_by_name(loc_id, name, comment_C, bufsize, H5P_DEFAULT);
+    // Preliminary call to get the comment's length
+    ssize_t comment_len = H5Oget_comment_by_name(getId(), name, NULL, (size_t)0, H5P_DEFAULT);
 
-   // if the actual length of the comment is longer than bufsize and bufsize
-   // was the default value, i.e., not given by the user, then call
-   // H5Oget_comment_by_name again with the correct value.
-   // If the call to H5Oget_comment_by_name returned an error, skip this block
-   // and throw an exception below.
-   if (ret_value >= 0 && (size_t)ret_value > bufsize && bufsize == 256)
-   {
-	size_t new_size = ret_value;
-	delete []comment_C;
-	comment_C = new char[new_size];	// new_size including null terminator
-	ret_value = H5Oget_comment_by_name(loc_id, name, comment_C, new_size, H5P_DEFAULT);
-   }
+    // If H5Oget_comment_by_name returns a negative value, raise an exception
+    if (comment_len < 0)
+    {
+        throw LocationException("H5Location::getComment", "H5Oget_comment_by_name failed");
+    }
 
-   // if H5Oget_comment_by_name returns SUCCEED, return the string comment,
-   // otherwise, throw an exception
-   if (ret_value < 0) {
-       delete []comment_C;
-       throw Exception(inMemFunc("getComment"), "H5Oget_comment_by_name failed");
-   }
+    // If comment exists, calls C routine again to get it
+    else if (comment_len > 0)
+    {
+	size_t tmp_len = buf_size;
+
+	// If buffer size is not provided, use comment length
+	if (tmp_len == 0)
+	    tmp_len = comment_len;
 
-   H5std_string comment = H5std_string(comment_C);
-   delete []comment_C;
-   return (comment);
+	// Temporary buffer for char* comment
+	char* comment_C = new char[tmp_len+1];
+	HDmemset(comment_C, 0, tmp_len+1); // clear buffer
+
+	// Used overloaded function
+	ssize_t comment_len = getComment(name, tmp_len+1, comment_C);
+	if (comment_len < 0)
+	{
+	    throw LocationException("H5Location::getComment", "H5Oget_comment_by_name failed");
+	}
+
+	// Convert the C comment to return
+	comment = comment_C;
+
+	// Clean up resource
+	delete []comment_C;
+    }
+
+    // Return the string comment
+    return(comment);
 }
 
 //--------------------------------------------------------------------------
@@ -529,9 +572,9 @@ H5std_string H5Location::getComment(const char* name, size_t bufsize) const
 ///		\c H5std_string for \a name.
 // Programmer	Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013)
 //--------------------------------------------------------------------------
-H5std_string H5Location::getComment(const H5std_string& name, size_t bufsize) const
+H5std_string H5Location::getComment(const H5std_string& name, size_t buf_size) const
 {
-   return(getComment(name.c_str(), bufsize));
+    return(getComment(name.c_str(), buf_size));
 }
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
@@ -542,7 +585,7 @@ H5std_string H5Location::getComment(const H5std_string& name, size_t bufsize) co
 //		name - IN: Name of the object to be referenced
 //		dataspace - IN: Dataspace with selection
 //		ref_type - IN: Type of reference; default to \c H5R_DATASET_REGION
-// Exception	H5::IdComponentException
+// Exception	H5::ReferenceException
 // Programmer	Binh-Minh Ribler - May, 2004
 //--------------------------------------------------------------------------
 void H5Location::p_reference(void* ref, const char* name, hid_t space_id, H5R_type_t ref_type) const
@@ -681,6 +724,7 @@ hid_t H5Location::p_dereference(hid_t loc_id, const void* ref, H5R_type_t ref_ty
 ///\param	loc - IN: Location of the referenced object
 ///\param	ref - IN: Reference pointer
 ///\param	ref_type - IN: Reference type
+///\param	plist - IN: Property list - default to PropList::DEFAULT
 ///\exception	H5::ReferenceException
 // Programmer	Binh-Minh Ribler - Oct, 2006
 // Modification
@@ -698,6 +742,7 @@ void H5Location::dereference(const H5Location& loc, const void* ref, H5R_type_t
 ///\param	attr - IN: Attribute specifying the location of the referenced object
 ///\param	ref - IN: Reference pointer
 ///\param	ref_type - IN: Reference type
+///\param	plist - IN: Property list - default to PropList::DEFAULT
 ///\exception	H5::ReferenceException
 // Programmer	Binh-Minh Ribler - Oct, 2006
 // Modification
@@ -815,11 +860,14 @@ H5O_type_t H5Location::p_get_ref_obj_type(void *ref, H5R_type_t ref_type) const
 {
    H5O_type_t obj_type = H5O_TYPE_UNKNOWN;
    herr_t ret_value = H5Rget_obj_type2(getId(), ref_type, ref, &obj_type);
-
-   if (obj_type == H5O_TYPE_UNKNOWN || obj_type >= H5O_TYPE_NTYPES)
+   if (ret_value < 0)
    {
       throw ReferenceException(inMemFunc("getRefObjType"), "H5Rget_obj_type2 failed");
    }
+   if (obj_type == H5O_TYPE_UNKNOWN || obj_type >= H5O_TYPE_NTYPES)
+   {
+      throw ReferenceException(inMemFunc("getRefObjType"), "H5Rget_obj_type2 returned invalid type");
+   }
    return(obj_type);
 }
 
diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h
index db22bff..592f68d 100644
--- a/c++/src/H5Location.h
+++ b/c++/src/H5Location.h
@@ -103,8 +103,9 @@ class H5_DLLCPP H5Location : public IdComponent {
 	void setComment(const H5std_string& comment) const;
 
 	// Retrieves comment for the HDF5 object specified by its name.
-	H5std_string getComment(const char* name, size_t bufsize=256) const;
-	H5std_string getComment(const H5std_string& name, size_t bufsize=256) const;
+	ssize_t getComment(const char* name, size_t buf_size, char* comment) const;
+	H5std_string getComment(const char* name, size_t buf_size=0) const;
+	H5std_string getComment(const H5std_string& name, size_t buf_size=0) const;
 
 	// Removes the comment for the HDF5 object specified by its name.
 	void removeComment(const char* name) const;
diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp
index 1d96f2e..94b03ab 100644
--- a/c++/src/H5Object.cpp
+++ b/c++/src/H5Object.cpp
@@ -31,6 +31,7 @@
 #include "H5File.h"
 #include "H5DataSet.h"
 #include "H5Attribute.h"
+#include "H5private.h"		// for HDmemset
 
 #ifndef H5_NO_NAMESPACE
 namespace H5 {
@@ -53,6 +54,117 @@ H5Object::H5Object() : H5Location() {}
 H5Object::H5Object( const hid_t object_id ) : H5Location( object_id ) {}
 
 //--------------------------------------------------------------------------
+// Function:    getObjName
+///\brief       Given an id, returns the type of the object.
+///\return      The name of the object
+// Programmer   Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+ssize_t H5Object::getObjName(char *obj_name, size_t buf_size) const
+{
+    // H5Iget_name will get buf_size-1 chars of the name to null terminate it
+    ssize_t name_size = H5Iget_name(getId(), obj_name, buf_size);
+
+    // If H5Iget_name returns a negative value, raise an exception
+    if (name_size < 0)
+    {
+        throw Exception(inMemFunc("getObjName"), "H5Iget_name failed");
+    }
+    else if (name_size == 0)
+    {
+        throw Exception(inMemFunc("getObjName"), "Object must have a name, but name length is 0");
+    }
+    // Return length of the name
+    return(name_size);
+}
+
+//--------------------------------------------------------------------------
+// Function:    H5Object::getObjName
+///\brief       Returns the name of this object as an \a H5std_string.
+///\return      Name of the object
+///\exception   H5::Exception
+// Programmer   Binh-Minh Ribler - Mar, 2014
+// Modification
+//--------------------------------------------------------------------------
+H5std_string H5Object::getObjName() const
+{
+    H5std_string obj_name(""); // object name to return
+
+    // Preliminary call to get the size of the object name
+    ssize_t name_size = H5Iget_name(getId(), NULL, (size_t)0);
+
+    // If H5Iget_name failed, throw exception
+    if (name_size < 0)
+    {
+        throw Exception(inMemFunc("getObjName"), "H5Iget_name failed");
+    }
+    else if (name_size == 0)
+    {
+        throw Exception(inMemFunc("getObjName"), "Object must have a name, but name length is 0");
+    }
+    // Object's name exists, retrieve it
+    else if (name_size > 0)
+    {
+        char* name_C = new char[name_size+1];  // temporary C-string
+        HDmemset(name_C, 0, name_size+1); // clear buffer
+
+        // Use overloaded function
+        name_size = getObjName(name_C, name_size+1);
+
+        // Convert the C object name to return
+        obj_name = name_C;
+
+        // Clean up resource
+        delete []name_C;
+    }
+    // Return object's name
+    return(obj_name);
+}
+
+//--------------------------------------------------------------------------
+// Function:    H5Object::getObjName
+///\brief       Gets the name of this object, returning its length.
+///\param       obj_name - OUT: Buffer for the name string as \a H5std_string
+///\param       len  -  IN: Desired length of the name, default to 0
+///\return      Actual length of the object name
+///\exception   H5::Exception
+///\par Description
+///             This function retrieves the object's name as an std string.
+///             buf_size can specify a specific length or default to 0, in
+///             which case the entire name will be retrieved.
+// Programmer   Binh-Minh Ribler - Mar, 2014
+//--------------------------------------------------------------------------
+ssize_t H5Object::getObjName(H5std_string& obj_name, size_t len) const
+{
+    ssize_t name_size = 0;
+
+    // If no length is provided, get the entire object name
+    if (len == 0)
+    {
+        obj_name = getObjName();
+        name_size = obj_name.length();
+    }
+    // If length is provided, get that number of characters in name
+    else
+    {
+        char* name_C = new char[len+1];  // temporary C-string
+        HDmemset(name_C, 0, len+1); // clear buffer
+
+        // Use overloaded function
+        name_size = getObjName(name_C, len+1);
+
+        // Convert the C object name to return
+        obj_name = name_C;
+
+        // Clean up resource
+        delete []name_C;
+    }
+    // Otherwise, keep obj_name intact
+
+    // Return name size
+    return(name_size);
+}
+
+//--------------------------------------------------------------------------
 // Function:	H5Object copy constructor
 ///\brief	Copy constructor: makes a copy of the original H5Object
 ///		instance.
diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h
index 5c2ef98..5576d13 100644
--- a/c++/src/H5Object.h
+++ b/c++/src/H5Object.h
@@ -33,7 +33,7 @@
 //		H5Object is H5File is not an HDF5 object, and renaming H5Object
 //		to H5Location will risk breaking user applications.
 //		-BMR
-
+//	Apr 2, 2014: Added wrapper getObjName for H5Iget_name 
 #ifndef H5_NO_NAMESPACE
 namespace H5 {
 #endif
@@ -50,6 +50,12 @@ class H5_DLLCPP H5Object : public H5Location {
 	// Copy constructor: makes copy of an H5Object object.
 	H5Object(const H5Object& original);
 
+	// Gets the name of this HDF5 object, i.e., Group, DataSet, or
+	// DataType.
+	ssize_t getObjName(char *obj_name, size_t buf_size = 0) const;
+	ssize_t getObjName(H5std_string& obj_name, size_t len = 0) const;
+	H5std_string getObjName() const;
+
 	// Noop destructor.
 	virtual ~H5Object();
 
diff --git a/c++/src/H5PropList.cpp b/c++/src/H5PropList.cpp
index 9476d46..0b740d8 100644
--- a/c++/src/H5PropList.cpp
+++ b/c++/src/H5PropList.cpp
@@ -390,8 +390,13 @@ void PropList::getProperty(const char* name, void* value) const
 //--------------------------------------------------------------------------
 H5std_string PropList::getProperty(const char* name) const
 {
+   // Get property size first
    size_t size = getPropSize(name);
+
+   // Allocate buffer then get the property
    char* prop_strg_C = new char[size+1];  // temporary C-string for C API
+   HDmemset(prop_strg_C, 0, size+1); // clear buffer
+
    herr_t ret_value = H5Pget(id, name, prop_strg_C); // call C API
 
    // Throw exception if H5Pget returns failure
@@ -485,7 +490,7 @@ H5std_string PropList::getClassName() const
    if (temp_str != NULL)
    {
       H5std_string class_name(temp_str);
-      HDfree(temp_str);
+      H5free_memory(temp_str);
       return(class_name);
    }
    else
diff --git a/c++/src/Makefile.am b/c++/src/Makefile.am
index ec942fd..7c1f497 100644
--- a/c++/src/Makefile.am
+++ b/c++/src/Makefile.am
@@ -22,7 +22,7 @@ include $(top_srcdir)/config/commence.am
 include $(top_srcdir)/config/lt_vers.am
 
 # Include src directory
-INCLUDES=-I$(top_srcdir)/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src
 
 # This is our main target
 lib_LTLIBRARIES=libhdf5_cpp.la
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index 3ef45c6..719b608 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -34,23 +34,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -69,12 +97,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/lt_vers.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(srcdir)/h5c++.in $(top_srcdir)/bin/depcomp \
+	$(include_HEADERS) $(top_srcdir)/bin/test-driver
 
 # Shared C++ libraries aren't universally supported.
 @CXX_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
@@ -178,12 +206,198 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 HEADERS = $(include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -195,7 +409,9 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src directory
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -255,7 +471,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -467,12 +682,9 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 8
-LT_VERS_REVISION = 1
+LT_VERS_REVISION = 2 
 LT_VERS_AGE = 0
 
-# Include src directory
-INCLUDES = -I$(top_srcdir)/src
-
 # This is our main target
 lib_LTLIBRARIES = libhdf5_cpp.la
 
@@ -532,7 +744,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .cpp .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -566,6 +778,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 h5c++: $(top_builddir)/config.status $(srcdir)/h5c++.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -600,6 +813,7 @@ clean-libLTLIBRARIES:
 	  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)
@@ -720,26 +934,15 @@ uninstall-includeHEADERS:
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -751,15 +954,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -768,9 +967,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -786,6 +986,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -844,6 +1189,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -929,20 +1277,21 @@ 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 \
-	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 \
-	install-exec install-exec-am install-html install-html-am \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool cscopelist-am ctags ctags-am 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 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-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 \
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \
 	uninstall-binSCRIPTS uninstall-includeHEADERS \
 	uninstall-libLTLIBRARIES
 
diff --git a/c++/src/cpp_doc_config b/c++/src/cpp_doc_config
index 1fac954..ea10b04 100644
--- a/c++/src/cpp_doc_config
+++ b/c++/src/cpp_doc_config
@@ -1,234 +1,2351 @@
-# 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.
-
-# Doxyfile 1.4.2
+# Doxyfile 1.8.5
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+# 
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+# 
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
 
 #---------------------------------------------------------------------------
 # Project related configuration options
 #---------------------------------------------------------------------------
-PROJECT_NAME           = 
-PROJECT_NUMBER         = 
-OUTPUT_DIRECTORY       = cpplus_RM/
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME           = "HDF5 C++ API"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER         = 1.8.13
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          = 
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO           = ./header_files/hdf_logo.jpg
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = HTML
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
 CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-
+# Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Farsi,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en,
+# Korean, Korean-en, Latvian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
+# Turkish, Ukrainian and Vietnamese.
+# The default value is: English.
+
 OUTPUT_LANGUAGE        = English
-USE_WINDOWS_ENCODING   = YES
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
 BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+# 
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF           = NO
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
 ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
 INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES        = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+# 
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
 STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
 STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
 SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
 JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+# 
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
 MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
 INHERIT_DOCS           = YES
-DISTRIBUTE_GROUP_DOC   = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
 SEPARATE_MEMBER_PAGES  = NO
-TAB_SIZE               = 8
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE               = 4
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
 ALIASES                = 
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST              = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
 OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
 OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C.
+# 
+# Note For files without extension you can use no_extension as a placeholder.
+# 
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING      = 
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT       = NO
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT       = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
 SUBGROUPING            = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+# 
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS  = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE      = 0
+
 #---------------------------------------------------------------------------
 # Build related configuration options
 #---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
 EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
 EXTRACT_PRIVATE        = NO
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
 EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
 HIDE_UNDOC_MEMBERS     = YES
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
 HIDE_UNDOC_CLASSES     = YES
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
 HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
 HIDE_IN_BODY_DOCS      = NO
-INTERNAL_DOCS          = YES
-CASE_SENSE_NAMES       = YES
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
 HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
 SHOW_INCLUDE_FILES     = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
 INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = NO
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: NO.
+
 SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
 SORT_BY_SCOPE_NAME     = NO
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING  = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST      = NO
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST      = NO
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST       = NO
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= NO
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
 ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
 MAX_INITIALIZER_LINES  = 30
-SHOW_USED_FILES        = NO
-SHOW_DIRECTORIES       = YES
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES        = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES             = NO
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES        = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
 FILE_VERSION_FILTER    = 
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+# 
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE            = 
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES         = 
+
 #---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
 QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+# 
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
 WARNINGS               = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
 WARN_IF_UNDOCUMENTED   = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
 WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
 WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
 WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
 WARN_LOGFILE           = 
+
 #---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
 #---------------------------------------------------------------------------
-INPUT                  = 
-FILE_PATTERNS          = 
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT                  = .
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.idl \
+                         *.ddl \
+                         *.odl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.cs \
+                         *.d \
+                         *.php \
+                         *.php4 \
+                         *.php5 \
+                         *.phtml \
+                         *.inc \
+                         *.m \
+                         *.markdown \
+                         *.md \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.for \
+                         *.tcl \
+                         *.vhd \
+                         *.vhdl \
+                         *.ucf \
+                         *.qsf \
+                         *.as \
+                         *.js
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
 RECURSIVE              = NO
-EXCLUDE                = 
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# 
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE                = C:/hdf/C++/src/H5Alltypes.h \
+                         C:/hdf/C++/src/H5Classes.h
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
 EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+# 
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
 EXCLUDE_PATTERNS       = 
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+# 
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS        = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
 EXAMPLE_PATH           = ../examples
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
 EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
 EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
 IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+# 
+# <filter> <input-file>
+# 
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+# 
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
 INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
 FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
 FILTER_SOURCE_FILES    = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS = 
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE = 
+
 #---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
 #---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+# 
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
 SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
 INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
 STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
 REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
 REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS        = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+# 
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+# 
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+# 
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
 VERBATIM_HEADERS       = YES
+
+# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
+# cost of reduced performance. This can be particularly helpful with template
+# rich C++ code for which doxygen's built-in parser lacks the necessary type
+# information.
+# Note: The availability of this option depends on whether or not doxygen was
+# compiled with the --with-libclang option.
+# The default value is: NO.
+
+# CLANG_ASSISTED_PARSING = NO
+
+# If clang assisted parsing is enabled you can provide the compiler with command
+# line options that you would normally use when invoking the compiler. Note that
+# the include paths will already be set by doxygen for the files and directories
+# specified with INPUT and INCLUDE_PATH.
+# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+
+# CLANG_OPTIONS          = 
+
 #---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = NO
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX     = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
 COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
 IGNORE_PREFIX          = 
+
 #---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
 GENERATE_HTML          = YES
-HTML_OUTPUT            = .
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT            = HTML
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = header.html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+# 
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 HTML_FOOTER            = 
-HTML_STYLESHEET        = RM_stylesheet.css
-HTML_ALIGN_MEMBERS     = YES
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET        = 
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET  = 
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES       = 
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE    = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT    = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP         = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET        = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+# 
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 GENERATE_HTMLHELP      = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 CHM_FILE               = 
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 HHC_LOCATION           = 
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 GENERATE_CHI           = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING     = 
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE               = 
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME   = 
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS  = 
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS  = 
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION           = 
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 GENERATE_TREEVIEW      = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+# 
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 TREEVIEW_WIDTH         = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+# 
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT    = NO
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT         = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS     = 
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE       = 
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE           = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavours of web server based searching depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools. See
+# the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH    = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+# 
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+# 
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+# 
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL       = 
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID     = 
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS  = 
+
 #---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
 GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+# 
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE             = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+# 
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+# 
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER           = 
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES      = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS         = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_BATCHMODE        = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_HIDE_INDICES     = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+# 
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE      = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE        = plain
+
 #---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
 GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+# 
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+# 
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 RTF_EXTENSIONS_FILE    = 
+
 #---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
 GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
 MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
 MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
 MAN_LINKS              = NO
+
 #---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
 GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
 XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
+# validating XML parser to check the syntax of the XML files.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
 XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
+# validating XML parser to check the syntax of the XML files.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
 XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
 XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK       = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT         = docbook
+
 #---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options for the AutoGen Definitions output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
 GENERATE_AUTOGEN_DEF   = NO
+
 #---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+# 
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
 GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
 PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
 PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
 PERLMOD_MAKEVAR_PREFIX = 
+
 #---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
+# Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
 ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
 INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all refrences to function-like macros that are alone on a line, have an
+# all uppercase name, and do not end with a semicolon. Such function macros are
+# typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 SKIP_FUNCTION_MACROS   = YES
+
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references   
+# Configuration options related to external references
 #---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have an unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
 TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
 GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
 ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
 EXTERNAL_GROUPS        = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES         = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
 PERL_PATH              = /usr/bin/perl
+
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
+# Configuration options related to the dot tool
 #---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
 CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
 HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
+
 HAVE_DOT               = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS        = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME           = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH           = 
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 UML_LOOK               = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 TEMPLATE_RELATIONS     = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 INCLUDE_GRAPH          = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+# 
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+# 
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_IMAGE_FORMAT       = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+# 
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG        = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           = 
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+# 
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
diff --git a/c++/src/header_files/hdf_logo.jpg b/c++/src/header_files/hdf_logo.jpg
new file mode 100644
index 0000000..2770aa4
Binary files /dev/null and b/c++/src/header_files/hdf_logo.jpg differ
diff --git a/c++/src/header_files/help.jpg b/c++/src/header_files/help.jpg
new file mode 100644
index 0000000..f30550a
Binary files /dev/null and b/c++/src/header_files/help.jpg differ
diff --git a/c++/test/CMakeLists.txt b/c++/test/CMakeLists.txt
index e498fc5..acb2b7f 100644
--- a/c++/test/CMakeLists.txt
+++ b/c++/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_CPP_TEST)
 # --------------------------------------------------------------------
 # Notes: When creating unit test executables they should be prefixed
@@ -11,14 +11,16 @@ PROJECT (HDF5_CPP_TEST)
 #-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
-SET (CPP_TEST_SRCS
+set (CPP_TEST_SRCS
     ${HDF5_CPP_TEST_SOURCE_DIR}/testhdf5.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/tattr.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/tcompound.cpp
+    ${HDF5_CPP_TEST_SOURCE_DIR}/tdspl.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/tfile.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/tfilter.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/th5s.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/tlinks.cpp
+    ${HDF5_CPP_TEST_SOURCE_DIR}/tobject.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/trefer.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/ttypes.cpp
     ${HDF5_CPP_TEST_SOURCE_DIR}/tvlstr.cpp
@@ -29,27 +31,27 @@ SET (CPP_TEST_SRCS
 #-----------------------------------------------------------------------------
 # Generate the H5srcdir_str.h file containing user settings needed by compilation
 #-----------------------------------------------------------------------------
-SET (srcdir ${CMAKE_CURRENT_SOURCE_DIR})
-CONFIGURE_FILE (${HDF5_CPP_TEST_SOURCE_DIR}/H5srcdir_str.h.in H5srcdir_str.h  @ONLY)
-INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR})
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR})
+configure_file (${HDF5_CPP_TEST_SOURCE_DIR}/H5srcdir_str.h.in H5srcdir_str.h  @ONLY)
 
-INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR} )
-
-ADD_EXECUTABLE (cpp_testhdf5 ${CPP_TEST_SRCS} )
+add_executable (cpp_testhdf5 ${CPP_TEST_SRCS} )
 TARGET_NAMING (cpp_testhdf5 ${LIB_TYPE})
 TARGET_C_PROPERTIES (cpp_testhdf5 " " " ")
-TARGET_LINK_LIBRARIES (cpp_testhdf5
+target_link_libraries (cpp_testhdf5
     ${HDF5_CPP_LIB_TARGET}
     ${HDF5_LIB_TARGET}
     ${HDF5_TEST_LIB_TARGET}
 )
-SET_TARGET_PROPERTIES (cpp_testhdf5 PROPERTIES FOLDER test/cpp)
+set_target_properties (cpp_testhdf5 PROPERTIES
+    FOLDER test/cpp
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
-ADD_CUSTOM_COMMAND (
+add_custom_command (
     TARGET     cpp_testhdf5
     POST_BUILD
     COMMAND    ${CMAKE_COMMAND}
     ARGS       -E copy_if_different ${HDF5_CPP_TEST_SOURCE_DIR}/th5s.h5 ${PROJECT_BINARY_DIR}/th5s.h5
 )
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/c++/test/CMakeTests.cmake b/c++/test/CMakeTests.cmake
index 3e4f6d9..147972f 100644
--- a/c++/test/CMakeTests.cmake
+++ b/c++/test/CMakeTests.cmake
@@ -5,8 +5,8 @@
 ##############################################################################
 ##############################################################################
 # Remove any output file left over from previous test run
-ADD_TEST (
-    NAME cpp_testhdf5-clear-objects
+add_test (
+    NAME CPP_testhdf5-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
             tattr_basic.h5
@@ -17,12 +17,12 @@ ADD_TEST (
             tfattrs.h5
 )
 
-ADD_TEST (NAME cpp_testhdf5 COMMAND $<TARGET_FILE:cpp_testhdf5>)
-SET_TESTS_PROPERTIES (cpp_testhdf5 PROPERTIES DEPENDS cpp_testhdf5-clear-objects)
+add_test (NAME CPP_testhdf5 COMMAND $<TARGET_FILE:cpp_testhdf5>)
+set_tests_properties (CPP_testhdf5 PROPERTIES DEPENDS CPP_testhdf5-clear-objects)
 
-IF (HDF5_TEST_VFD)
+if (HDF5_TEST_VFD)
 
-  SET (VFD_LIST
+  set (VFD_LIST
       sec2
       stdio
       core
@@ -31,14 +31,14 @@ IF (HDF5_TEST_VFD)
       family
   )
   
-  IF (DIRECT_VFD)
-    SET (VFD_LIST ${VFD_LIST} direct)
-  ENDIF (DIRECT_VFD)
+  if (DIRECT_VFD)
+    set (VFD_LIST ${VFD_LIST} direct)
+  endif (DIRECT_VFD)
 
   MACRO (ADD_VFD_TEST vfdname resultcode)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
-          NAME VFD-${vfdname}-cpp_testhdf5-clear-objects
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME CPP_VFD-${vfdname}-cpp_testhdf5-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
                   tattr_basic.h5
@@ -48,8 +48,8 @@ IF (HDF5_TEST_VFD)
                   tattr_scalar.h5
                   tfattrs.h5
       )
-      ADD_TEST (
-        NAME VFD-${vfdname}-cpp_testhdf5 
+      add_test (
+        NAME CPP_VFD-${vfdname}-cpp_testhdf5 
         COMMAND "${CMAKE_COMMAND}"
             -D "TEST_PROGRAM=$<TARGET_FILE:cpp_testhdf5>"
             -D "TEST_ARGS:STRING="
@@ -59,13 +59,13 @@ IF (HDF5_TEST_VFD)
             -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
             -P "${HDF5_RESOURCES_DIR}/vfdTest.cmake"
       )
-      SET_TESTS_PROPERTIES (VFD-${vfdname}-cpp_testhdf5 PROPERTIES DEPENDS VFD-${vfdname}-cpp_testhdf5-clear-objects)
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (CPP_VFD-${vfdname}-cpp_testhdf5 PROPERTIES DEPENDS CPP_VFD-${vfdname}-cpp_testhdf5-clear-objects)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_VFD_TEST)
   
   # Run test with different Virtual File Driver
-  FOREACH (vfd ${VFD_LIST})
+  foreach (vfd ${VFD_LIST})
     ADD_VFD_TEST (${vfd} 0)
-  ENDFOREACH (vfd ${VFD_LIST})
+  endforeach (vfd ${VFD_LIST})
 
-ENDIF (HDF5_TEST_VFD)
+endif (HDF5_TEST_VFD)
diff --git a/c++/test/Makefile.am b/c++/test/Makefile.am
index 687f0ca..2717e9c 100644
--- a/c++/test/Makefile.am
+++ b/c++/test/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src, test, and c++/src directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/c++/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/c++/src
 
 # Shared C++ libraries aren't universally supported.
 if CXX_SHARED_CONDITIONAL
@@ -38,8 +38,8 @@ check_PROGRAMS=$(TEST_PROG)
 LDADD=$(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5)
 
 testhdf5_SOURCES=testhdf5.cpp dsets.cpp tattr.cpp tcompound.cpp	\
-	tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp trefer.cpp	\
-	ttypes.cpp tvlstr.cpp h5cpputil.cpp
+	tdspl.cpp tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp tobject.cpp \
+	trefer.cpp ttypes.cpp tvlstr.cpp h5cpputil.cpp
 
 # Tell conclude.am that these are C++ tests.
 CXX_API=yes
@@ -51,5 +51,8 @@ mostlyclean-local:
 	@if test -d ii_files; then                                       \
 	  $(RM) -rf ii_files;                                           \
 	fi
+# Temporary files
+CHECK_CLEANFILES+=tattr_multi.h5 tfattrs.h5 tattr_scalar.h5 tattr_compound.h5 \
+	tattr_dtype.h5 tattr_basic.h5
 
 include $(top_srcdir)/config/conclude.am
diff --git a/c++/test/Makefile.in b/c++/test/Makefile.in
index ef1455c..621618e 100644
--- a/c++/test/Makefile.in
+++ b/c++/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # HDF5-C++ Makefile(.in)
 #
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,11 +94,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/H5srcdir_str.h.in $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(srcdir)/H5srcdir_str.h.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/test-driver
 
 # Shared C++ libraries aren't universally supported.
 @CXX_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
@@ -87,10 +115,10 @@ CONFIG_CLEAN_FILES = H5srcdir_str.h
 CONFIG_CLEAN_VPATH_FILES =
 am__EXEEXT_1 = testhdf5$(EXEEXT)
 am_testhdf5_OBJECTS = testhdf5.$(OBJEXT) dsets.$(OBJEXT) \
-	tattr.$(OBJEXT) tcompound.$(OBJEXT) tfile.$(OBJEXT) \
-	tfilter.$(OBJEXT) th5s.$(OBJEXT) tlinks.$(OBJEXT) \
-	trefer.$(OBJEXT) ttypes.$(OBJEXT) tvlstr.$(OBJEXT) \
-	h5cpputil.$(OBJEXT)
+	tattr.$(OBJEXT) tcompound.$(OBJEXT) tdspl.$(OBJEXT) \
+	tfile.$(OBJEXT) tfilter.$(OBJEXT) th5s.$(OBJEXT) \
+	tlinks.$(OBJEXT) tobject.$(OBJEXT) trefer.$(OBJEXT) \
+	ttypes.$(OBJEXT) tvlstr.$(OBJEXT) h5cpputil.$(OBJEXT)
 testhdf5_OBJECTS = $(am_testhdf5_OBJECTS)
 testhdf5_LDADD = $(LDADD)
 testhdf5_DEPENDENCIES = $(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5)
@@ -139,12 +167,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -156,7 +399,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src, test, and c++/src directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/test -I$(top_srcdir)/c++/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -216,7 +462,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -423,10 +668,10 @@ TRACE = perl $(top_srcdir)/bin/trace
 # .chkexe files are used to mark tests that have run successfully.
 # .chklog files are output from those tests.
 # *.clog are from the MPE option.
-CHECK_CLEANFILES = *.chkexe *.chklog *.clog
-
-# Include src, test, and c++/src directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/c++/src
+# Temporary files
+CHECK_CLEANFILES = *.chkexe *.chklog *.clog tattr_multi.h5 tfattrs.h5 \
+	tattr_scalar.h5 tattr_compound.h5 tattr_dtype.h5 \
+	tattr_basic.h5
 
 # These are our main targets.  They should be listed in the order to be
 # executed, generally most specific tests to least specific tests.
@@ -435,8 +680,8 @@ TEST_PROG = testhdf5
 # The tests depend on the hdf5 library, test library, and the c++ library
 LDADD = $(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5)
 testhdf5_SOURCES = testhdf5.cpp dsets.cpp tattr.cpp tcompound.cpp	\
-	tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp trefer.cpp	\
-	ttypes.cpp tvlstr.cpp h5cpputil.cpp
+	tdspl.cpp tfile.cpp tfilter.cpp th5s.cpp tlinks.cpp tobject.cpp \
+	trefer.cpp ttypes.cpp tvlstr.cpp h5cpputil.cpp
 
 
 # Tell conclude.am that these are C++ tests.
@@ -464,7 +709,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .cpp .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -507,6 +752,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) $(EXTRA_testhdf5_DEPENDENCIES) 
 	@rm -f testhdf5$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(testhdf5_OBJECTS) $(testhdf5_LDADD) $(LIBS)
@@ -521,11 +767,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/h5cpputil.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tattr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tcompound.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tdspl.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testhdf5.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tfile.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tfilter.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/th5s.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tlinks.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobject.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/trefer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ttypes.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tvlstr.Po at am__quote@
@@ -557,26 +805,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -588,15 +825,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -605,9 +838,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -623,6 +857,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+testhdf5.log: testhdf5$(EXEEXT)
+	@p='testhdf5$(EXEEXT)'; \
+	b='testhdf5'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -679,6 +1065,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -762,19 +1151,19 @@ 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 \
-	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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/c++/test/dsets.cpp b/c++/test/dsets.cpp
index 811d8c7..d1ced1d 100644
--- a/c++/test/dsets.cpp
+++ b/c++/test/dsets.cpp
@@ -49,6 +49,7 @@
 
 const H5std_string	FILE1("dataset.h5");
 const H5std_string	DSET_DEFAULT_NAME("default");
+const H5std_string	DSET_DEFAULT_NAME_PATH("/default");
 const H5std_string	DSET_CHUNKED_NAME("chunked");
 const H5std_string	DSET_SIMPLE_IO_NAME("simple_io");
 const H5std_string	DSET_TCONV_NAME	("tconv");
@@ -96,6 +97,7 @@ test_create( H5File& file)
 	dataset = new DataSet (file.createDataSet
 		(DSET_DEFAULT_NAME, PredType::NATIVE_DOUBLE, space));
 
+
 	// Add a comment to the dataset
 	file.setComment (DSET_DEFAULT_NAME, "This is a dataset");
 
@@ -120,6 +122,16 @@ test_create( H5File& file)
 	// way to open an existing dataset for accessing.
 	dataset = new DataSet (file.openDataSet (DSET_DEFAULT_NAME));
 
+	// Get and verify the name of this dataset, using
+	// H5std_string getObjName()
+	H5std_string ds_name = dataset->getObjName();
+	verify_val(ds_name, DSET_DEFAULT_NAME_PATH, "DataSet::getObjName", __LINE__, __FILE__);
+
+	// Get and verify the comment from this dataset, using
+	// H5std_string getComment(const H5std_string& name, <buf_size=0, by default>)
+	H5std_string comment = file.getComment(DSET_DEFAULT_NAME);
+	verify_val(comment, "This is a dataset", "DataSet::getComment", __LINE__, __FILE__);
+
 	// Close the dataset when accessing is completed
 	delete dataset;
 
@@ -300,10 +312,14 @@ test_datasize(FileAccPropList &fapl)
 	// Get the dimension sizes.
 	hsize_t dims[2];
 	int n_dims = space.getSimpleExtentDims(dims);
+	if (n_dims < 0)
+	{
+	    throw Exception("test_compression", "DataSpace::getSimpleExtentDims() failed");
+	}
 
 	// Calculate the supposed size.  Size of each value is int (4), from
 	// test_simple_io.
-	int expected_size = 4 * dims[0] * dims[1];
+	size_t expected_size = 4 * dims[0] * dims[1];
 
 	// getInMemDataSize() returns the in memory size of the data.
 	size_t ds_size = dset.getInMemDataSize();
@@ -1045,11 +1061,6 @@ void test_dset()
 
     try
     {
-	// Turn of the auto-printing when failure occurs so that we can
-	// handle the errors appropriately since sometime failures are
-	// caused deliberately and expected.
-	Exception::dontPrint();
-
 	// Use the file access template id to create a file access prop.
 	// list object to pass in H5File::H5File
 	FileAccPropList fapl(fapl_id);
@@ -1060,12 +1071,12 @@ void test_dset()
 	Group grp = file.createGroup( "emit diagnostics", 0);
 	grp.setComment("Causes diagnostic messages to be emitted");
 
-	nerrors += test_create(file)<0 	?1:0;
-	nerrors += test_simple_io(file)<0	?1:0;
-	nerrors += test_tconv(file)<0	?1:0;
-	nerrors += test_compression(file)<0	?1:0;
-	nerrors += test_multiopen (file)<0	?1:0;
-	nerrors += test_types(file)<0       ?1:0;
+	nerrors += test_create(file) < 0 ? 1:0;
+	nerrors += test_simple_io(file) < 0 ? 1:0;
+	nerrors += test_tconv(file) < 0 ? 1:0;
+	nerrors += test_compression(file) < 0 ? 1:0;
+	nerrors += test_multiopen (file) < 0 ? 1:0;
+	nerrors += test_types(file) < 0 ? 1:0;
 
 	// Close group "emit diagnostics".
 	grp.close();
diff --git a/c++/test/h5cpputil.cpp b/c++/test/h5cpputil.cpp
index cd85b6e..40e81cc 100644
--- a/c++/test/h5cpputil.cpp
+++ b/c++/test/h5cpputil.cpp
@@ -220,7 +220,7 @@ InvalidActionException::InvalidActionException(const H5std_string func_name, con
 //--------------------------------------------------------------------------
 // Function:    InvalidActionException destructor
 //--------------------------------------------------------------------------
-InvalidActionException::~InvalidActionException() {}
+InvalidActionException::~InvalidActionException() throw() {}
 
 //--------------------------------------------------------------------------
 // Function:    TestFailedException default constructor
@@ -242,5 +242,5 @@ TestFailedException::TestFailedException(const H5std_string func_name, const H5s
 //--------------------------------------------------------------------------
 // Function:    TestFailedException destructor
 //--------------------------------------------------------------------------
-TestFailedException::~TestFailedException() {}
+TestFailedException::~TestFailedException() throw() {}
 
diff --git a/c++/test/h5cpputil.h b/c++/test/h5cpputil.h
index e6aba79..8625213 100644
--- a/c++/test/h5cpputil.h
+++ b/c++/test/h5cpputil.h
@@ -49,14 +49,14 @@ class InvalidActionException : public Exception {
    public:
 	InvalidActionException(const H5std_string func_name, const H5std_string message = DEFAULT_MSG);
 	InvalidActionException();
-	virtual ~InvalidActionException();
+	virtual ~InvalidActionException() throw();
 };
 
 class TestFailedException : public Exception {
    public:
 	TestFailedException(const H5std_string func_name, const H5std_string message = DEFAULT_MSG);
 	TestFailedException();
-	virtual ~TestFailedException();
+	virtual ~TestFailedException() throw();
 };
 
 // Overloaded/Template functions to verify values and display proper info
@@ -115,16 +115,31 @@ template <class Type1, class Type2>
     }
 }
 
+template <class Type1, class Type2>
+    void CHECK(Type1 x, Type2 value, const char* msg, int line, const char* file_name)
+{
+    if (x == value)
+    {
+	cerr << endl;
+        cerr << "*** Function " << msg << " FAILED at line " << line << endl;
+	IncTestNumErrs();
+	throw TestFailedException(file_name, msg);
+    }
+}
+
+
 /* Prototypes for the test routines */
 #ifdef __cplusplus
 extern "C" {
 #endif
 void test_attr();
 void test_compound();
+void test_dsproplist();
 void test_file();
 void test_filters();
 void test_links();
 void test_h5s();
+void test_object();
 void test_reference();
 void test_types();
 void test_vlstrings();
@@ -133,11 +148,13 @@ void test_dset();
 /* Prototypes for the cleanup routines */
 void cleanup_attr();
 void cleanup_compound();
+void cleanup_dsproplist();
 void cleanup_dsets();
 void cleanup_file();
 void cleanup_filters();
 void cleanup_links();
 void cleanup_h5s();
+void cleanup_object();
 void cleanup_reference();
 void cleanup_types();
 void cleanup_vlstrings();
diff --git a/c++/test/tattr.cpp b/c++/test/tattr.cpp
index 8e2d7ee..e56110c 100644
--- a/c++/test/tattr.cpp
+++ b/c++/test/tattr.cpp
@@ -244,6 +244,140 @@ static void test_attr_basic_write()
 
 /****************************************************************
 **
+**  test_attr_getname(): Test getting attribute name functions.
+**
+**  Test these functions:
+**  A. ssize_t Attribute::getName(char* attr_name, size_t buf_size)
+**    1. With arbitrary buf_size that is larger than the name size
+**    2. With arbitrary buf_size that is smaller than the name's length.
+**    3. With a buf_size that equals the name's length.
+**
+**  B. ssize_t Attribute::getName(H5std_string& attr_name, size_t buf_size)
+**    1. With buffer smaller than the actual name
+**    2. Same test but with retiring overloaded function
+**	ssize_t Attribute::getName(size_t buf_size, H5std_string& attr_name)
+**
+**  C. H5std_string Attribute::getName()
+**
+**  D. H5std_string Attribute::getName(size_t len)
+**
+**  E. ssize_t Attribute::getName(H5std_string& attr_name, size_t buf_size)
+**	With buffer size equals the name's length, i.e., buf_size=0
+**
+****************************************************************/
+static void test_attr_getname()
+{
+    // Output message about test being performed
+    SUBTEST("Testing all overloads of Attribute::getName");
+
+    try {
+	//
+	// Open the file FILE_BASIC and test getName with its attribute
+	//
+
+	// Open file
+	H5File fid1(FILE_BASIC, H5F_ACC_RDWR);
+
+	// Check for existence of attribute FATTR1_NAME
+	bool attr_exists = fid1.attrExists(FATTR1_NAME);
+	if (attr_exists == false)
+	    throw InvalidActionException("H5File::attrExists", "Attribute should exist but does not");
+
+	// Open attribute 
+	Attribute fattr1(fid1.openAttribute(FATTR1_NAME));
+
+	// A. Get attribute name with
+	// ssize_t Attribute::getName(char* attr_name, size_t buf_size)
+	// using different buffer sizes and verify against FATTR1_NAME (3 cases)
+
+	// 1. With arbitrary buf_size that is larger than the name size
+	size_t buf_size = FATTR1_NAME.length() + 10;
+	char* fattr1_name = new char[buf_size+1];
+	HDmemset(fattr1_name, 0, buf_size+1);
+	ssize_t name_size = 0; // actual length of attribute name
+	name_size = fattr1.getName(fattr1_name, buf_size+1);
+	CHECK(name_size, FAIL, "Attribute::getName", __LINE__, __FILE__);
+	verify_val((size_t)name_size, FATTR1_NAME.length(), "Attribute::getName", __LINE__, __FILE__);
+	verify_val((const char*)fattr1_name, FATTR1_NAME, "Attribute::getName", __LINE__, __FILE__);
+	delete []fattr1_name;
+
+	// 2. With arbitrary buf_size that is smaller than the name's length.
+	// Let's try 4 first characters in the name.
+	buf_size = 4;
+	char short_name[5] = "File"; // to verify the read name
+	fattr1_name = new char[buf_size+1];
+	HDmemset(fattr1_name, 0, buf_size+1);
+	name_size = fattr1.getName(fattr1_name, buf_size+1);
+	CHECK(name_size, FAIL, "Attribute::getName", __LINE__, __FILE__);
+	verify_val((size_t)name_size, FATTR1_NAME.size(), "Attribute::getName", __LINE__, __FILE__);
+	verify_val((const char*)fattr1_name, (const char*)short_name, "Attribute::getName", __LINE__, __FILE__);
+	delete []fattr1_name;
+
+	// 3. With a buf_size that equals the name's length.
+	buf_size = FATTR1_NAME.length();
+	fattr1_name = new char[buf_size+1];
+	HDmemset(fattr1_name, 0, buf_size+1);
+	name_size = fattr1.getName(fattr1_name, buf_size+1);
+	CHECK(name_size, FAIL, "Attribute::getName", __LINE__, __FILE__);
+	verify_val(fattr1_name, FATTR1_NAME, "Attribute::getName", __LINE__, __FILE__);
+	delete []fattr1_name;
+
+	// B. Get attribute name with
+	// ssize_t Attribute::getName(H5std_string& attr_name, size_t buf_size)
+	// using buffer smaller than the actual name
+	buf_size = 4;
+	H5std_string fattr1_name2;
+	name_size = fattr1.getName(fattr1_name2, buf_size);
+	verify_val(fattr1_name2, "File", "Attribute::getName", __LINE__, __FILE__);
+
+	// Same test as above, but with deprecated overloaded function
+	// ssize_t Attribute::getName(size_t buf_size, H5std_string& attr_name)
+	// using buffer smaller than the actual name
+	H5std_string fattr1_name2a;
+	name_size = fattr1.getName(fattr1_name2a, buf_size);
+	verify_val(fattr1_name2a, "File", "Attribute::getName", __LINE__, __FILE__);
+
+	// C. Get file attribute's name with
+	// H5std_string Attribute::getName()
+	H5std_string fattr1_name3 = fattr1.getName();
+	verify_val(fattr1_name3, FATTR1_NAME, "Attribute::getName", __LINE__, __FILE__);
+
+	//
+	// D. Test getName getting part of an attribute's name using
+	// H5std_string Attribute::getName(len)
+	//
+
+	// Open dataset DSET1_NAME
+	DataSet dataset = fid1.openDataSet(DSET1_NAME);
+
+	// Check for existence of attribute
+	attr_exists = dataset.attrExists(ATTR1_NAME);
+	if (attr_exists == false)
+	    throw InvalidActionException("H5File::attrExists", "Attribute should exist but does not");
+
+	// Open attribute
+	Attribute attr1(dataset.openAttribute(ATTR1_NAME));
+
+	size_t len = 4;
+	H5std_string dattr_name1 = attr1.getName(len);
+	verify_val(dattr_name1, "Attr", "Attribute::getName", __LINE__, __FILE__);
+
+	// E. Get dataset's attribute name with
+	// H5std_string Attribute::getName(H5std_string attr_name, buf_size=0)
+	H5std_string dattr_name2;
+	name_size = attr1.getName(dattr_name2);
+	verify_val(dattr_name2, ATTR1_NAME, "Attribute::getName", __LINE__, __FILE__);
+
+	PASSED();
+    } // end try block
+
+    catch (Exception E) {
+	issue_fail_msg("test_attr_getname()", __LINE__, __FILE__, E.getCDetailMsg());
+    }
+}   // test_attr_getname()
+
+/****************************************************************
+**
 **  test_attr_rename(): Test renaming attribute function.
 **
 ****************************************************************/
@@ -490,7 +624,7 @@ static void test_attr_compound_read()
     size_t      size;   // Attribute datatype size as stored in file
     size_t      offset; // Attribute datatype field offset
     struct attr4_struct read_data4[ATTR4_DIM1][ATTR4_DIM2]; // Buffer for reading 4th attribute
-    int     i,j;
+    hsize_t i,j;
 
     // Output message about test being performed
     SUBTEST("Basic Attribute Functions");
@@ -1435,6 +1569,7 @@ void test_attr()
     MESSAGE(5, ("Testing Attributes\n"));
 
     test_attr_basic_write();	// Test basic H5A writing code
+    test_attr_getname();	// Test overloads of Attribute::getName
     test_attr_rename();		// Test renaming attribute
     test_attr_basic_read(); 	// Test basic H5A reading code
 
@@ -1474,6 +1609,10 @@ extern "C"
 #endif
 void cleanup_attr()
 {
-    //HDremove(FILENAME.c_str());
+    HDremove(FILE_BASIC.c_str());
+    HDremove(FILE_COMPOUND.c_str());
+    HDremove(FILE_SCALAR.c_str());
+    HDremove(FILE_MULTI.c_str());
+    HDremove(FILE_DTYPE.c_str());
 }
 
diff --git a/c++/test/tcompound.cpp b/c++/test/tcompound.cpp
index fbb1219..62a90e8 100644
--- a/c++/test/tcompound.cpp
+++ b/c++/test/tcompound.cpp
@@ -727,7 +727,95 @@ cerr << "test_compound_7 in catch" << endl;
         issue_fail_msg(E.getCFuncName(), __LINE__, __FILE__, E.getCDetailMsg());
     }
 }   // test_compound_7()
+

+/*-------------------------------------------------------------------------
+ * Function:	test_compound_set_size
+ *
+ * Purpose:	Tests member function setSize() on compound datatype
+ *
+ * Return:	None
+ *
+ * Programmer:	Binh-Minh Ribler (use partial C version test_ooo_order)
+ *              March, 2014
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+const H5std_string COMPFILE("tcompound_types.h5");
+static void test_compound_set_size()
+{
+    typedef struct {
+	int a, b, c[4], d, e;
+    } src_typ_t;
+
+    // Output message about test being performed
+    SUBTEST("Setting Size on Compound Datatype");
+    try {
+        // Create File
+        H5File file(COMPFILE, H5F_ACC_TRUNC);
+
+        // Create a compound datatype
+        CompType dtype(sizeof(src_typ_t));
 
+        dtype.insertMember("a", HOFFSET(src_typ_t, a), PredType::NATIVE_INT);
+        dtype.insertMember("b", HOFFSET(src_typ_t, b), PredType::NATIVE_FLOAT);
+        dtype.insertMember("c", HOFFSET(src_typ_t, c), PredType::NATIVE_LONG);
+        dtype.insertMember("d", HOFFSET(src_typ_t, d), PredType::NATIVE_DOUBLE);
+
+	// Verify that the compound is not packed
+	// bool packed = dtype.packed(); // not until C library provides API
+	// verify_val(packed, FALSE, "DataType::packed", __LINE__, __FILE__);
+
+	dtype.commit(file, "dtype");
+
+	// Close the type and file
+	dtype.close();
+	file.close();
+
+	// Open the file for read/write
+	file.openFile(COMPFILE, H5F_ACC_RDWR);
+
+	// Open the data type "dtype"
+	CompType dtype_tmp = file.openCompType("dtype");
+
+	// Make a copy of the data type
+	dtype = dtype_tmp;
+
+	// Verify that the compound is not packed
+	// packed = dtype_tmp.packed(); // not until C library provides API
+	// verify_val(packed, FALSE, "DataType::packed", __LINE__, __FILE__);
+
+	// Expand the type, and verify that it became unpacked
+	dtype.setSize((size_t)33);
+	// packed = dtype.packed(); // not until C library provides API
+	// verify_val(packed, FALSE, "DataType::packed", __LINE__, __FILE__);
+
+	// Verify setSize() actually set size
+	size_t new_size = dtype.getSize();
+	verify_val(new_size, (size_t)33, "DataType::getSize", __LINE__, __FILE__);
+
+	// Shrink the type, and verify that it became packed
+	dtype.setSize((size_t)32);
+	// packed = dtype.packed(); // not until C library provides API
+	// verify_val(packed, TRUE, "DataType::packed", __LINE__, __FILE__);
+
+	// Verify setSize() actually set size again
+	new_size = dtype.getSize();
+	verify_val(new_size, (size_t)32, "DataType::getSize", __LINE__, __FILE__);
+
+	/* Close types and file */
+	dtype_tmp.close();
+	dtype.close();
+	file.close();
+
+	PASSED();
+    }   // end of try block
+
+    catch (Exception E) {
+        issue_fail_msg(E.getCFuncName(), __LINE__, __FILE__, E.getCDetailMsg());
+    }
+}   // test_compound_set_size()
 

 /*-------------------------------------------------------------------------
  * Function:	test_compound
@@ -759,6 +847,7 @@ void test_compound()
     test_compound_5();	// optimized struct converter
     test_compound_6();	// compound element growing
     test_compound_7();	// compound element insertion
+    test_compound_set_size();	// set size on compound data types
 }   // test_compound()
 
 

@@ -778,4 +867,5 @@ extern "C"
 #endif
 void cleanup_compound()
 {
+    HDremove(COMPFILE.c_str());
 }   // cleanup_file
diff --git a/c++/test/tdspl.cpp b/c++/test/tdspl.cpp
new file mode 100644
index 0000000..5c1d953
--- /dev/null
+++ b/c++/test/tdspl.cpp
@@ -0,0 +1,147 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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.     *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*****************************************************************************
+   FILE
+   tdspl.cpp - HDF5 C++ testing the dataset memory and transfer property
+		list functionality
+
+ ***************************************************************************/
+
+#ifdef OLD_HEADER_FILENAME
+#include <iostream.h>
+#else
+#include <iostream>
+#endif
+#include <string>
+
+#ifndef H5_NO_NAMESPACE
+#ifndef H5_NO_STD
+    using std::cerr;
+    using std::endl;
+#endif  // H5_NO_STD
+#endif
+
+#include "H5Cpp.h"      // C++ API header file
+
+#ifndef H5_NO_NAMESPACE
+    using namespace H5;
+#endif
+
+#include "h5cpputil.h"  // C++ utilility header file
+
+const H5std_string FILENAME("tdatatransform.h5");
+
+static void test_transfplist()
+{
+    const char* c_to_f = "(9/5.0)*x + 32";
+    const char* simple = "(4/2) * ( (2 + 4)/(5 - 2.5))"; /* this equals 4.8 */
+    /* inverses the utrans transform in init_test to get back original array */
+    const char* utrans_inv = "(x/3)*4 - 100";
+
+    SUBTEST("DSetMemXferPropList::set/getDataTransform()");
+    try {
+	// Create various data set prop lists and set data transform expression.
+	DSetMemXferPropList dxpl_c_to_f(c_to_f);
+
+	DSetMemXferPropList dxpl_simple;
+	dxpl_simple.setDataTransform(simple);
+
+	DSetMemXferPropList dxpl_utrans_inv;
+	dxpl_utrans_inv.setDataTransform(utrans_inv);
+
+	//
+	// Make a copy of one of those prop lists then read the data transform
+	// expression and verify that it's the same as the original.
+	//
+
+	// Copy the prop list.
+	DSetMemXferPropList dxpl_c_to_f_copy;
+	dxpl_c_to_f_copy.copy(dxpl_c_to_f);
+
+	// Find out the length of the transform expression, allocate the buffer
+	// for it, then read and verify the expression from the copied plist
+	ssize_t tran_len = dxpl_c_to_f_copy.getDataTransform(NULL);
+	char *c_to_f_read = (char *)HDmalloc(tran_len+1);
+	HDmemset(c_to_f_read, 0, tran_len+1);
+	dxpl_c_to_f_copy.getDataTransform(c_to_f_read, tran_len+1);
+	verify_val((const char*)c_to_f_read, (const char*)c_to_f,
+		"DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+	HDfree(c_to_f_read);
+
+	//
+	// Read the expression of each of the prop lists and verify the read
+	// expression
+	//
+
+	// Get and verify the expression with:
+	// ssize_t getDataTransform(char* exp, const size_t buf_size [default=0])
+	tran_len =  dxpl_c_to_f.getDataTransform(NULL);
+	c_to_f_read = (char *)HDmalloc(tran_len+1);
+	HDmemset(c_to_f_read, 0, tran_len+1);
+	dxpl_c_to_f.getDataTransform(c_to_f_read, tran_len+1);
+	verify_val((const char*)c_to_f_read, (const char*)c_to_f,
+		"DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+	HDfree(c_to_f_read);
+
+	// Get and verify the expression with:
+	// H5std_string DSetMemXferPropList::getDataTransform()
+	H5std_string simple_read = dxpl_simple.getDataTransform();
+	verify_val((const char*)simple_read.c_str(), (const char*)simple,
+		"DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+
+	// Get and verify the expression with:
+	// ssize_t getDataTransform(char* exp, const size_t buf_size)
+	tran_len = dxpl_utrans_inv.getDataTransform(NULL, 0);
+	char *utrans_inv_read = (char *)HDmalloc(tran_len+1);
+	HDmemset(utrans_inv_read, 0, tran_len+1);
+	dxpl_utrans_inv.getDataTransform(utrans_inv_read, tran_len+1);
+	verify_val((const char*)utrans_inv_read, (const char*)utrans_inv,
+		"DSetMemXferPropList::getDataTransform", __LINE__, __FILE__);
+	HDfree(utrans_inv_read);
+
+	PASSED();
+    }
+    catch (Exception E) {
+	issue_fail_msg("test_transfplist", __LINE__, __FILE__, E.getCDetailMsg());
+    }
+}
+
+

+/****************************************************************
+**
+**  test_dsproplist(): Main dataset property list testing routine.
+**
+****************************************************************/
+#ifdef __cplusplus
+extern "C"
+#endif
+void test_dsproplist()
+{
+    // Output message about test being performed
+    MESSAGE(5, ("Testing Generic Dataset Property Lists\n"));
+
+    test_transfplist(); // test set/getDataTransform()
+
+}   // test_dsproplist()
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+void cleanup_dsproplist()
+{
+    HDremove(FILENAME.c_str());
+}
diff --git a/c++/test/testhdf5.cpp b/c++/test/testhdf5.cpp
index fe08d6d..19b4f0d 100644
--- a/c++/test/testhdf5.cpp
+++ b/c++/test/testhdf5.cpp
@@ -67,40 +67,54 @@
 int
 main(int argc, char *argv[])
 {
-    /* Initialize testing framework */
-    TestInit(argv[0], NULL, NULL);
-
-    // testing file creation and opening in tfile.cpp
-    AddTest("tfile", test_file, cleanup_file, "File I/O Operations", NULL);
-    // testing dataset functionalities in dset.cpp
-    AddTest("dsets", test_dset, cleanup_dsets, "Dataset I/O Operations", NULL);
-    // testing dataspace functionalities in th5s.cpp
-    AddTest("th5s",  test_h5s,  cleanup_h5s,  "Dataspaces", NULL);
-    // testing attribute functionalities in tattr.cpp
-    AddTest("tattr", test_attr, cleanup_attr,  "Attributes", NULL);
-    // testing reference functionalities in trefer.cpp
-    AddTest("trefer", test_reference, cleanup_reference,  "References", NULL);
-    // testing variable-length strings in tvlstr.cpp
-    AddTest("tvlstr", test_vlstrings, cleanup_vlstrings,  "Variable-Length Strings", NULL);
-    AddTest("ttypes", test_types, cleanup_types,  "Generic Data Types", NULL);
-    AddTest("tcompound", test_compound, cleanup_compound,  "Compound Data Types", NULL);
-    AddTest("tfilter", test_filters, cleanup_filters,  "Various Filters", NULL);
-    AddTest("tlinks", test_links, cleanup_links,  "Various Links", NULL);
+    try
+    {
+	// Turn of the auto-printing when failure occurs so that we can
+	// handle the errors appropriately since sometime failures are
+	// caused deliberately and expected.
+	Exception::dontPrint();
+	/* Initialize testing framework */
+	TestInit(argv[0], NULL, NULL);
+
+	// testing file creation and opening in tfile.cpp
+	AddTest("tfile", test_file, cleanup_file, "File I/O Operations", NULL);
+	// testing dataset functionalities in dset.cpp
+	AddTest("dsets", test_dset, cleanup_dsets, "Dataset I/O Operations", NULL);
+	// testing dataspace functionalities in th5s.cpp
+	AddTest("th5s",  test_h5s,  cleanup_h5s,  "Dataspaces", NULL);
+	// testing attribute functionalities in tattr.cpp
+	AddTest("tattr", test_attr, cleanup_attr,  "Attributes", NULL);
+	// testing object functionalities in tobject.cpp
+	AddTest("tobject", test_object, cleanup_object,  "Objects", NULL);
+	// testing reference functionalities in trefer.cpp
+	AddTest("trefer", test_reference, cleanup_reference,  "References", NULL);
+	// testing variable-length strings in tvlstr.cpp
+	AddTest("tvlstr", test_vlstrings, cleanup_vlstrings,  "Variable-Length Strings", NULL);
+	AddTest("ttypes", test_types, cleanup_types,  "Generic Data Types", NULL);
+	AddTest("tcompound", test_compound, cleanup_compound,  "Compound Data Types", NULL);
+	AddTest("tdspl", test_dsproplist, cleanup_dsproplist,  "Dataset Property List", NULL);
+	AddTest("tfilter", test_filters, cleanup_filters,  "Various Filters", NULL);
+	AddTest("tlinks", test_links, cleanup_links,  "Various Links", NULL);
 /* Comment out tests that are not done yet. - BMR, Feb 2001
-    AddTest("select", test_select, cleanup_select,  "Selections", NULL);
-    AddTest("time", test_time, cleanup_time,  "Time Datatypes", NULL);
-    AddTest("vltypes", test_vltypes, cleanup_vltypes,  "Variable-Length Datatypes", NULL);
-    AddTest("iterate", test_iterate, cleanup_iterate,  "Group & Attribute Iteration", NULL);
-    AddTest("array", test_array, cleanup_array,  "Array Datatypes", NULL);
-    AddTest("genprop", test_genprop, cleanup_genprop,  "Generic Properties", NULL);
-    AddTest("id", test_ids, NULL,  "User-Created Identifiers", NULL);
+	AddTest("select", test_select, cleanup_select,  "Selections", NULL);
+	AddTest("time", test_time, cleanup_time,  "Time Datatypes", NULL);
+	AddTest("vltypes", test_vltypes, cleanup_vltypes,  "Variable-Length Datatypes", NULL);
+	AddTest("iterate", test_iterate, cleanup_iterate,  "Group & Attribute Iteration", NULL);
+	AddTest("array", test_array, cleanup_array,  "Array Datatypes", NULL);
+	AddTest("genprop", test_genprop, cleanup_genprop,  "Generic Properties", NULL);
+	AddTest("id", test_ids, NULL,  "User-Created Identifiers", NULL);
 
 Comment out tests that are not done yet */
 
 /* Tentative - BMR 2007/1/12
-    AddTest("datatypes", test_dtypes, cleanup_dtypes,  "Data Types", NULL);
-    AddTest("enum", test_enum, cleanup_enum,  "Enum Data Types", NULL);
+	AddTest("enum", test_enum, cleanup_enum,  "Enum Data Types", NULL);
 */
+    }
+    catch (Exception E)
+    {
+        issue_fail_msg("Tests failed", __LINE__, __FILE__, E.getCDetailMsg());
+    }
+
     /* Display testing information */
     TestInfo(argv[0]);
 
diff --git a/c++/test/tfile.cpp b/c++/test/tfile.cpp
index 65b7f11..0f4ea33 100644
--- a/c++/test/tfile.cpp
+++ b/c++/test/tfile.cpp
@@ -654,4 +654,5 @@ void cleanup_file()
     HDremove(FILE2.c_str());
     HDremove(FILE3.c_str());
     HDremove(FILE4.c_str());
+    HDremove(FILE5.c_str());
 }   // cleanup_file
diff --git a/c++/test/tfilter.cpp b/c++/test/tfilter.cpp
index 257e4be..854c7bb 100644
--- a/c++/test/tfilter.cpp
+++ b/c++/test/tfilter.cpp
@@ -165,7 +165,7 @@ static void test_null_filter()
 
 const H5std_string      DSET_SZIP_NAME("szipped dataset");
 
-void test_szip_filter(H5File& file1)
+static void test_szip_filter(H5File& file1)
 {
 #ifdef H5_HAVE_FILTER_SZIP
     int      points[DSET_DIM1][DSET_DIM2], check[DSET_DIM1][DSET_DIM2];
diff --git a/c++/test/tobject.cpp b/c++/test/tobject.cpp
new file mode 100644
index 0000000..b86d7cb
--- /dev/null
+++ b/c++/test/tobject.cpp
@@ -0,0 +1,335 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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.     *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*****************************************************************************
+   FILE
+   tobject.cpp - HDF5 C++ testing object related functionality
+
+ ***************************************************************************/
+
+#ifdef OLD_HEADER_FILENAME
+#include <iostream.h>
+#else
+#include <iostream>
+#endif
+#include <string>
+
+#ifndef H5_NO_NAMESPACE
+#ifndef H5_NO_STD
+    using std::cerr;
+    using std::endl;
+#endif  // H5_NO_STD
+#endif
+
+#include "H5Cpp.h"      // C++ API header file
+
+#ifndef H5_NO_NAMESPACE
+    using namespace H5;
+#endif
+
+#include "h5cpputil.h"  // C++ utilility header file
+
+const H5std_string	FILE_OBJECTS("tobjects.h5");
+const H5std_string	GROUP1("Top Group");
+const H5std_string	GROUP1_PATH("/Top Group");
+const H5std_string	GROUP1_1("Sub-Group 1.1");
+const H5std_string	GROUP1_1_PATH("/Top Group/Sub-Group 1.1");
+const H5std_string	GROUP1_2("Sub-Group 1.2");
+const H5std_string	GROUP1_2_PATH("/Top Group/Sub-Group 1.2");
+const H5std_string	DSET_DEFAULT_NAME("default");
+const H5std_string	DSET_IN_FILE("Dataset in File");
+const H5std_string	DSET_IN_FILE_PATH("/Dataset in File");
+const H5std_string	DSET_IN_GRP1("Dataset in Group 1");
+const H5std_string	DSET_IN_GRP1_PATH("/Top Group/Dataset in Group 1");
+const H5std_string	DSET_IN_GRP1_2("Dataset in Group 1.2");
+const H5std_string	DSET_IN_GRP1_2_PATH("/Top Group/Sub-Group 1.2/Dataset in Group 1.2");
+
+/*-------------------------------------------------------------------------
+ * Function:	test_get_objname
+ *
+ * Purpose:	Tests getting object name of groups and datasets.
+ *
+ * Return:	Success:	0
+ *		Failure:	-1
+ *
+ * Programmer:	Binh-Minh Ribler
+ *		Friday, March 4, 2014
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static void test_get_objname()
+{
+    SUBTEST("H5Object::getObjName on Groups and Datasets");
+
+    try {
+	// Create file
+	H5File file(FILE_OBJECTS, H5F_ACC_TRUNC);
+
+	// Create a top group and 2 subgroups
+	Group grp1 = file.createGroup(GROUP1, 0);
+	Group grp1_1 = grp1.createGroup(GROUP1_1, 0);
+	Group grp1_2 = grp1.createGroup(GROUP1_2, 0);
+
+	// Get part of the group's name, random length using
+	// ssize_t getObjName(char* comment, size_t buf_size)
+
+	// Get the length of the group's name first
+	ssize_t name_len = grp1.getObjName(NULL);
+
+	// Random length is 4
+	if (name_len > 4)
+	{
+	    char* grp1_name = new char[5];
+	    name_len = grp1.getObjName(grp1_name, 5);
+	    verify_val((const char*)grp1_name, "/Top", "Group::getObjName", __LINE__, __FILE__);
+	    delete []grp1_name;
+	}
+
+	// Create a data space
+	hsize_t     dims[2];
+	dims[0] = 2;
+	dims[1] = 5;
+	DataSpace space (2, dims, NULL);
+
+	// Create a dataset in the file
+	DataSet dsinfile = file.createDataSet(DSET_IN_FILE,
+			 PredType::NATIVE_DOUBLE, space);
+
+	// Create a dataset in the group
+	DataSet dsingrp = grp1.createDataSet(DSET_IN_GRP1,
+			 PredType::NATIVE_INT, space);
+
+	// Get and verify the name of each dataset, using
+	// H5std_string getObjName() and
+	// ssize_t getObjName(H5std_string& obj_name, size_t len = 0)
+	H5std_string ds_name = dsinfile.getObjName();
+	verify_val(ds_name, DSET_IN_FILE_PATH, "DataSet::getObjName", __LINE__, __FILE__);
+
+	name_len = dsingrp.getObjName(ds_name); // default len
+	verify_val(ds_name, DSET_IN_GRP1_PATH, "DataSet::getObjName", __LINE__, __FILE__);
+
+	// Close dataset
+	dsingrp.close();
+
+	// Create a dataset in sub-group 1.2
+	dsingrp = grp1_2.createDataSet(DSET_IN_GRP1_2, PredType::NATIVE_INT, space);
+
+	// Get and verify the name of the dataset that belongs to subgroup
+	// 1.2, using H5std_string getObjName()
+	ds_name = dsingrp.getObjName();
+	verify_val(ds_name, DSET_IN_GRP1_2_PATH, "DataSet::getObjName", __LINE__, __FILE__);
+
+	// Close dataset
+	dsingrp.close();
+
+	// Reopen that same dataset then check the name again with another
+	// overload: ssize_t getObjName(H5std_string& obj_name, size_t len = 0)
+	dsingrp = grp1_2.openDataSet(DSET_IN_GRP1_2);
+	name_len = dsingrp.getObjName(ds_name);
+	verify_val(ds_name, DSET_IN_GRP1_2_PATH, "DataSet::getObjName", __LINE__, __FILE__);
+
+	// Everything will be closed as they go out of scope
+
+	PASSED();
+    }	// try block
+
+    // catch all other exceptions
+    catch (Exception E)
+    {
+	issue_fail_msg("test_get_objname", __LINE__, __FILE__);
+    }
+}   // test_get_objname
+
+/*-------------------------------------------------------------------------
+ * Function:	test_get_objname_ontypes
+ *
+ * Purpose:	Test getting object name from various committed types.
+ *
+ * Return:	Success:	0
+ *		Failure:	-1
+ *
+ * Programmer:  Binh-Minh Ribler
+ *		March 4, 2014
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static void test_get_objname_ontypes()
+{
+    SUBTEST("H5Object::getObjName on Committed Datatypes");
+
+    try {
+	// Create a file with default prop lists
+	H5File file(FILE_OBJECTS, H5F_ACC_RDWR);
+
+	// Create a group
+	Group grp = file.createGroup ("typetests");
+
+	// Create a datatype and save it
+	DataType dtype(PredType::STD_B8LE);
+	dtype.commit(file, "STD_B8LE");
+
+	// Get and verify its name
+	H5std_string type_name = dtype.getObjName();
+	verify_val(type_name, "/STD_B8LE", "DataSet::getObjName", __LINE__, __FILE__);
+
+	// Test getting type's name from copied type
+	DataType copied_type;
+	copied_type.copy(dtype);
+	copied_type.commit(file, "copy of STD_B8LE");
+	type_name = copied_type.getObjName();
+	verify_val(type_name, "/copy of STD_B8LE", "DataSet::getObjName", __LINE__, __FILE__);
+
+	// Test copying an integer predefined type
+	IntType new_int_type(PredType::NATIVE_INT);
+
+	// Name this datatype
+	new_int_type.commit(grp, "IntType NATIVE_INT");
+	ssize_t name_len = new_int_type.getObjName(type_name); // default len
+	verify_val(type_name, "/typetests/IntType NATIVE_INT", "DataSet::getObjName", __LINE__, __FILE__);
+
+	// Close everything or they can be closed when objects go out of scope
+	dtype.close();
+	copied_type.close();
+	new_int_type.close();
+	grp.close();
+	file.close();
+
+	PASSED();
+    } // end top try block
+
+    catch (Exception E)
+    {
+	issue_fail_msg("test_get_objname_ontypes", __LINE__, __FILE__);
+    }
+}   // test_get_objname_ontypes
+
+/*-------------------------------------------------------------------------
+ * Function:	test_get_objtype
+ *
+ * Purpose:	Tests getting object type
+ *
+ * Return:	Success:	0
+ *		Failure:	-1
+ *
+ * Programmer:	Binh-Minh Ribler
+ *		Friday, March 4, 2014
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static void test_get_objtype()
+{
+    SUBTEST("H5File::childObjType and H5Group::childObjType");
+
+    try {
+	// Open file
+	H5File file(FILE_OBJECTS, H5F_ACC_RDWR);
+
+	// Open the top group
+	Group grp1 = file.openGroup(GROUP1);
+
+	// Create a datatype and save it
+	DataType dtype(PredType::STD_I32LE);
+	dtype.commit(grp1, "STD_I32LE");
+
+	// Get and verify object type with
+	// H5O_type_t childObjType(const H5std_string& objname)
+	H5O_type_t objtype = file.childObjType(DSET_IN_FILE);
+	verify_val(objtype, H5O_TYPE_DATASET, "DataSet::childObjType", __LINE__, __FILE__);
+
+	// Get and verify object type with
+	// H5O_type_t childObjType(const char* objname)
+	objtype = grp1.childObjType(GROUP1_1.c_str());
+	verify_val(objtype, H5O_TYPE_GROUP, "DataSet::childObjType", __LINE__, __FILE__);
+
+	// Get and verify object type with
+	// H5O_type_t childObjType(hsize_t index, H5_index_t index_type,
+	// H5_iter_order_t order, const char* objname=".")
+	objtype = grp1.childObjType((hsize_t)1, H5_INDEX_NAME, H5_ITER_INC);
+	verify_val(objtype, H5O_TYPE_NAMED_DATATYPE, "DataSet::childObjType", __LINE__, __FILE__);
+
+	// Get and verify object type with
+	// H5O_type_t childObjType(hsize_t index,
+	// H5_index_t index_type=H5_INDEX_NAME,
+	// H5_iter_order_t order=H5_ITER_INC, const char* objname=".")
+	objtype = grp1.childObjType((hsize_t)2);
+	verify_val(objtype, H5O_TYPE_GROUP, "DataSet::childObjType", __LINE__, __FILE__);
+
+	// Everything will be closed as they go out of scope
+
+	PASSED();
+    }	// try block
+
+    // catch all other exceptions
+    catch (Exception E)
+    {
+	issue_fail_msg("test_get_objtype", __LINE__, __FILE__);
+    }
+}   // test_get_objtype
+
+/*-------------------------------------------------------------------------
+ * Function:	test_objects
+ *
+ * Purpose:	Tests HDF5 object related functionality
+ *
+ * Return:	Success: 0
+ *		Failure: -1
+ *
+ * Programmer:	Binh-Minh Ribler
+ *		Friday, Mar 4, 2014
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifdef __cplusplus
+extern "C"
+#endif
+void test_object()
+{
+    // Output message about test being performed
+    MESSAGE(5, ("Testing Object Functions\n"));
+
+    test_get_objname();    // Test get object name from groups/datasets
+    test_get_objname_ontypes();	// Test get object name from types
+    test_get_objtype();    // Test get object type
+
+}   // test_objects
+
+/*-------------------------------------------------------------------------
+ * Function:    cleanup_objects
+ *
+ * Purpose:     Cleanup temporary test files
+ *
+ * Return:      none
+ *
+ * Programmer:  (use C version)
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifdef __cplusplus
+extern "C"
+#endif
+void cleanup_object()
+{
+    HDremove(FILE_OBJECTS.c_str());
+} // cleanup_objects
diff --git a/c++/test/trefer.cpp b/c++/test/trefer.cpp
index ae1ab02..c4ff9af 100644
--- a/c++/test/trefer.cpp
+++ b/c++/test/trefer.cpp
@@ -317,11 +317,17 @@ static void test_reference_obj(void)
 	// Dereference group object from the location where 'dataset' is located
 	group.dereference(dataset, &rbuf[2]);
 
-	// Get group's comment
+	// Get group's comment using
+	// H5std_string getComment(const char* name, <buf_size=0 by default>)
 	H5std_string read_comment1 = group.getComment(".", 10);
 	verify_val(read_comment1.c_str(), write_comment, "Group::getComment",__LINE__,__FILE__);
 
-	// Test that getComment handles failures gracefully
+	// Test with the old default value
+	read_comment1 = group.getComment(".", 256);
+	verify_val(read_comment1.c_str(), write_comment, "Group::getComment",__LINE__,__FILE__);
+
+	// Test that getComment handles failures gracefully, using
+	// H5std_string getComment(const char* name, <buf_size=0 by default>)
 	try {
 	    H5std_string read_comment_tmp = group.getComment(NULL);
 	}
diff --git a/c++/test/ttypes.cpp b/c++/test/ttypes.cpp
index 6950523..5e683c7 100644
--- a/c++/test/ttypes.cpp
+++ b/c++/test/ttypes.cpp
@@ -210,7 +210,7 @@ static void test_query()
 	float  b;
 	long   c;
 	double d;
-    } s_type_t;
+    } src_typ_t;
     short	enum_val;
 
     // Output message about test being performed
@@ -221,12 +221,12 @@ static void test_query()
 	H5File file(FILENAME[2], H5F_ACC_TRUNC);
 
 	// Create a compound datatype
-	CompType tid1(sizeof(s_type_t));
+	CompType tid1(sizeof(src_typ_t));
 
-	tid1.insertMember("a", HOFFSET(s_type_t, a), PredType::NATIVE_INT);
-	tid1.insertMember("b", HOFFSET(s_type_t, b), PredType::NATIVE_FLOAT);
-	tid1.insertMember("c", HOFFSET(s_type_t, c), PredType::NATIVE_LONG);
-	tid1.insertMember("d", HOFFSET(s_type_t, d), PredType::NATIVE_DOUBLE);
+	tid1.insertMember("a", HOFFSET(src_typ_t, a), PredType::NATIVE_INT);
+	tid1.insertMember("b", HOFFSET(src_typ_t, b), PredType::NATIVE_FLOAT);
+	tid1.insertMember("c", HOFFSET(src_typ_t, c), PredType::NATIVE_LONG);
+	tid1.insertMember("d", HOFFSET(src_typ_t, d), PredType::NATIVE_DOUBLE);
 
 	// Create a enumerate datatype
 	EnumType tid2(sizeof(short));
@@ -411,6 +411,23 @@ static void test_named ()
         IntType itype(PredType::NATIVE_INT);
         itype.commit(file, "native-int");
 
+	// Test commit passing in const H5File& for prototype with const
+	try
+	{
+	    // Create random char type
+	    IntType atype(PredType::NATIVE_UCHAR);
+
+	    // Creating group, declared as const
+	    const Group const_grp = file.createGroup("GR as loc");
+
+	    // Commit type passing in const group; compilation would fail if
+	    // no matching prototype
+	    atype.commit(const_grp, "random uchar");
+	}   // end of try block
+	catch (Exception E) {
+	    issue_fail_msg("test_named", __LINE__, __FILE__, "Commit at const group");
+	}
+
 	// Check that it is committed.
 	if (itype.committed() == false)
 	    cerr << "IntType::committed() returned false" << endl;
diff --git a/c++/test/tvlstr.cpp b/c++/test/tvlstr.cpp
index 89f24f2..a2669db 100644
--- a/c++/test/tvlstr.cpp
+++ b/c++/test/tvlstr.cpp
@@ -50,10 +50,6 @@ const H5std_string FILENAME("tvlstr.h5");
 const int SPACE1_RANK = 1;
 const hsize_t SPACE1_DIM1 = 4;
 
-// Utility functions - not used now, later though.
-void *test_vlstr_alloc_custom(size_t size, void *info);
-void test_vlstr_free_custom(void *mem, void *info);
-
 /****************************************************************
 **
 **  test_vlstr_alloc_custom(): Test VL datatype custom memory
@@ -62,9 +58,9 @@ void test_vlstr_free_custom(void *mem, void *info);
 **	allocated.  It is passed into setVlenMemManager.
 **
 **  Note: exact copy from the C version.
-**
+**  (Not used now)
 ****************************************************************/
-void *test_vlstr_alloc_custom(size_t size, void *info)
+static void *test_vlstr_alloc_custom(size_t size, void *info)
 {
     void *ret_value=NULL;	// Pointer to return
     size_t *mem_used=(size_t *)info;  // Get the pointer to the memory used
@@ -94,9 +90,9 @@ void *test_vlstr_alloc_custom(size_t size, void *info)
 **	allocated.  It is passed into setVlenMemManager.
 **
 **  Note: exact copy from the C version.
-**
+**  (Not used now)
 ****************************************************************/
-void test_vlstr_free_custom(void *_mem, void *info)
+static void test_vlstr_free_custom(void *_mem, void *info)
 {
     unsigned char *mem;
     size_t *mem_used=(size_t *)info;  // Get the pointer to the memory used
diff --git a/config/Makefile.am.blank b/config/Makefile.am.blank
index 05799fc..a54c734 100644
--- a/config/Makefile.am.blank
+++ b/config/Makefile.am.blank
@@ -40,7 +40,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Add include directories to the C preprocessor flags
-INCLUDES=-I$(top_srcdir)/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src
 
 # Our main targets, the library foo.la and the programs bar and baz
 lib_LTLIBRARIES=foo.la
diff --git a/config/cmake/CPack.cmake b/config/cmake/CPack.cmake
deleted file mode 100644
index bdfa5b8..0000000
--- a/config/cmake/CPack.cmake
+++ /dev/null
@@ -1,588 +0,0 @@
-##section Variables common to all CPack generators
-##end
-##module
-# - Build binary and source package installers.
-# The CPack module generates binary and source installers in a variety
-# of formats using the cpack program. Inclusion of the CPack module
-# adds two new targets to the resulting makefiles, package and
-# package_source, which build the binary and source installers,
-# respectively. The generated binary installers contain everything
-# installed via CMake's INSTALL command (and the deprecated
-# INSTALL_FILES, INSTALL_PROGRAMS, and INSTALL_TARGETS commands).
-#
-# For certain kinds of binary installers (including the graphical
-# installers on Mac OS X and Windows), CPack generates installers that
-# allow users to select individual application components to
-# install. See CPackComponent module for that.
-#
-# The CPACK_GENERATOR variable has different meanings in different
-# contexts. In your CMakeLists.txt file, CPACK_GENERATOR is a
-# *list of generators*: when run with no other arguments, CPack
-# will iterate over that list and produce one package for each
-# generator. In a CPACK_PROJECT_CONFIG_FILE, though, CPACK_GENERATOR
-# is a *string naming a single generator*. If you need per-cpack-
-# generator logic to control *other* cpack settings, then you need
-# a CPACK_PROJECT_CONFIG_FILE.
-#
-# The CMake source tree itself contains a CPACK_PROJECT_CONFIG_FILE.
-# See the top level file CMakeCPackOptions.cmake.in for an example.
-#
-# If set, the CPACK_PROJECT_CONFIG_FILE is included automatically
-# on a per-generator basis. It only need contain overrides.
-#
-# Here's how it works:
-#  - cpack runs
-#  - it includes CPackConfig.cmake
-#  - it iterates over the generators listed in that file's
-#    CPACK_GENERATOR list variable (unless told to use just a
-#    specific one via -G on the command line...)
-#
-#  - foreach generator, it then
-#    - sets CPACK_GENERATOR to the one currently being iterated
-#    - includes the CPACK_PROJECT_CONFIG_FILE
-#    - produces the package for that generator
-#
-# This is the key: For each generator listed in CPACK_GENERATOR
-# in CPackConfig.cmake, cpack will *reset* CPACK_GENERATOR
-# internally to *the one currently being used* and then include
-# the CPACK_PROJECT_CONFIG_FILE.
-#
-# Before including this CPack module in your CMakeLists.txt file,
-# there are a variety of variables that can be set to customize
-# the resulting installers. The most commonly-used variables are:
-##end
-#
-##variable
-#  CPACK_PACKAGE_NAME - The name of the package (or application). If
-#  not specified, defaults to the project name.
-##end
-#
-##variable
-#  CPACK_PACKAGE_VENDOR - The name of the package vendor. (e.g.,
-#  "Kitware").
-##end
-#
-##variable
-#  CPACK_PACKAGE_DIRECTORY - The directory in which CPack is doing its
-#  packaging. If it is not set then this will default (internally) to the
-#  build dir. This variable may be defined in CPack config file or from
-#  the cpack command line option "-B". If set the command line option
-#  override the value found in the config file.
-##end
-#
-##variable
-#  CPACK_PACKAGE_VERSION_MAJOR - Package major Version
-##end
-#
-##variable
-#  CPACK_PACKAGE_VERSION_MINOR - Package minor Version
-##end
-#
-##variable
-#  CPACK_PACKAGE_VERSION_PATCH - Package patch Version
-##end
-#
-##variable
-#  CPACK_PACKAGE_DESCRIPTION_FILE - A text file used to describe the
-#  project. Used, for example, the introduction screen of a
-#  CPack-generated Windows installer to describe the project.
-##end
-#
-##variable
-#  CPACK_PACKAGE_DESCRIPTION_SUMMARY - Short description of the
-#  project (only a few words).
-##end
-#
-##variable
-#  CPACK_PACKAGE_FILE_NAME - The name of the package file to generate,
-#  not including the extension. For example, cmake-2.6.1-Linux-i686.
-#  The default value is
-#
-#  ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}.
-##end
-#
-##variable
-#  CPACK_PACKAGE_INSTALL_DIRECTORY - Installation directory on the
-#  target system. This may be used by some CPack generators
-#  like NSIS to create an installation directory e.g., "CMake 2.5"
-#  below the installation prefix. All installed element will be
-#  put inside this directory.
-##end
-#
-##variable
-#   CPACK_PACKAGE_ICON - A branding image that will be displayed inside
-#   the installer (used by GUI installers).
-##end
-#
-##variable
-#  CPACK_PROJECT_CONFIG_FILE - CPack-time project CPack configuration
-#  file. This file included at cpack time, once per
-#  generator after CPack has set CPACK_GENERATOR to the actual generator
-#  being used. It allows per-generator setting of CPACK_* variables at
-#  cpack time.
-##end
-#
-##variable
-#  CPACK_RESOURCE_FILE_LICENSE - License to be embedded in the installer. It
-#  will typically be displayed to the user by the produced installer
-#  (often with an explicit "Accept" button, for graphical installers)
-#  prior to installation. This license file is NOT added to installed
-#  file but is used by some CPack generators like NSIS. If you want
-#  to install a license file (may be the same as this one)
-#  along with your project you must add an appropriate CMake INSTALL
-#  command in your CMakeLists.txt.
-##end
-#
-##variable
-#  CPACK_RESOURCE_FILE_README - ReadMe file to be embedded in the installer. It
-#  typically describes in some detail the purpose of the project
-#  during the installation. Not all CPack generators uses
-#  this file.
-##end
-#
-##variable
-#  CPACK_RESOURCE_FILE_WELCOME - Welcome file to be embedded in the
-#  installer. It welcomes users to this installer.
-#  Typically used in the graphical installers on Windows and Mac OS X.
-##end
-#
-##variable
-#  CPACK_MONOLITHIC_INSTALL - Disables the component-based
-#  installation mechanism. When set the component specification is ignored
-#  and all installed items are put in a single "MONOLITHIC" package.
-#  Some CPack generators do monolithic packaging by default and
-#  may be asked to do component packaging by setting
-#  CPACK_<GENNAME>_COMPONENT_INSTALL to 1/TRUE.
-##end
-#
-##variable
-#  CPACK_GENERATOR - List of CPack generators to use. If not
-#  specified, CPack will create a set of options CPACK_BINARY_<GENNAME> (e.g.,
-#  CPACK_BINARY_NSIS) allowing the user to enable/disable individual
-#  generators. This variable may be used on the command line
-#  as well as in:
-#
-#    cpack -D CPACK_GENERATOR="ZIP;TGZ" /path/to/build/tree
-##end
-#
-##variable
-#  CPACK_OUTPUT_CONFIG_FILE - The name of the CPack binary configuration
-#  file. This file is the CPack configuration generated by the CPack module
-#  for binary installers. Defaults to CPackConfig.cmake.
-##end
-#
-##variable
-#  CPACK_PACKAGE_EXECUTABLES - Lists each of the executables and associated
-#  text label to be used to create Start Menu shortcuts. For example,
-#  setting this to the list ccmake;CMake will
-#  create a shortcut named "CMake" that will execute the installed
-#  executable ccmake. Not all CPack generators use it (at least NSIS and
-#  OSXX11 do).
-##end
-#
-##variable
-#  CPACK_STRIP_FILES - List of files to be stripped. Starting with
-#  CMake 2.6.0 CPACK_STRIP_FILES will be a boolean variable which
-#  enables stripping of all files (a list of files evaluates to TRUE
-#  in CMake, so this change is compatible).
-##end
-#
-# The following CPack variables are specific to source packages, and
-# will not affect binary packages:
-#
-##variable
-#  CPACK_SOURCE_PACKAGE_FILE_NAME - The name of the source package. For
-#  example cmake-2.6.1.
-##end
-#
-##variable
-#  CPACK_SOURCE_STRIP_FILES - List of files in the source tree that
-#  will be stripped. Starting with CMake 2.6.0
-#  CPACK_SOURCE_STRIP_FILES will be a boolean variable which enables
-#  stripping of all files (a list of files evaluates to TRUE in CMake,
-#  so this change is compatible).
-##end
-#
-##variable
-#  CPACK_SOURCE_GENERATOR - List of generators used for the source
-#  packages. As with CPACK_GENERATOR, if this is not specified then
-#  CPack will create a set of options (e.g., CPACK_SOURCE_ZIP)
-#  allowing users to select which packages will be generated.
-##end
-#
-##variable
-#  CPACK_SOURCE_OUTPUT_CONFIG_FILE - The name of the CPack source
-#  configuration file. This file is the CPack configuration generated by the
-#  CPack module for source installers. Defaults to CPackSourceConfig.cmake.
-##end
-#
-##variable
-#  CPACK_SOURCE_IGNORE_FILES - Pattern of files in the source tree
-#  that won't be packaged when building a source package. This is a
-#  list of regular expression patterns (that must be properly escaped),
-#  e.g., /CVS/;/\\.svn/;\\.swp$;\\.#;/#;.*~;cscope.*
-##end
-#
-# The following variables are for advanced uses of CPack:
-#
-##variable
-#  CPACK_CMAKE_GENERATOR - What CMake generator should be used if the
-#  project is CMake project. Defaults to the value of CMAKE_GENERATOR
-#  few users will want to change this setting.
-##end
-#
-##variable
-#  CPACK_INSTALL_CMAKE_PROJECTS - List of four values that specify
-#  what project to install. The four values are: Build directory,
-#  Project Name, Project Component, Directory. If omitted, CPack will
-#  build an installer that installers everything.
-##end
-#
-##variable
-#  CPACK_SYSTEM_NAME - System name, defaults to the value of
-#  ${CMAKE_SYSTEM_NAME}.
-##end
-#
-##variable
-#  CPACK_PACKAGE_VERSION - Package full version, used internally. By
-#  default, this is built from CPACK_PACKAGE_VERSION_MAJOR,
-#  CPACK_PACKAGE_VERSION_MINOR, and CPACK_PACKAGE_VERSION_PATCH.
-##end
-#
-##variable
-#  CPACK_TOPLEVEL_TAG - Directory for the installed files.
-##end
-#
-##variable
-#  CPACK_INSTALL_COMMANDS - Extra commands to install components.
-##end
-#
-##variable
-#  CPACK_INSTALLED_DIRECTORIES - Extra directories to install.
-##end
-#
-##variable
-#   CPACK_PACKAGE_INSTALL_REGISTRY_KEY - Registry key used when
-#   installing this project. This is only used
-#   by installer for Windows.
-##end
-##variable
-#   CPACK_CREATE_DESKTOP_LINKS - List of desktop links to create.
-##end
-#
-
-#=============================================================================
-# Copyright 2006-2009 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-# Define this var in order to avoid (or warn) concerning multiple inclusion
-if(CPack_CMake_INCLUDED)
-  message(WARNING "CPack.cmake has already been included!!")
-else()
-  set(CPack_CMake_INCLUDED 1)
-endif()
-
-# Pick a configuration file
-set(cpack_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
-if(EXISTS "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
-  set(cpack_input_file "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
-endif()
-set(cpack_source_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
-if(EXISTS "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
-  set(cpack_source_input_file "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
-endif()
-
-# Backward compatibility
-# Include CPackComponent macros if it has not already been included before.
-include(CPackComponent)
-
-# Macro for setting values if a user did not overwrite them
-macro(cpack_set_if_not_set name value)
-  if(NOT DEFINED "${name}")
-    set(${name} "${value}")
-  endif()
-endmacro()
-
-# cpack_encode_variables - Macro to encode variables for the configuration file
-# find any variable that starts with CPACK and create a variable
-# _CPACK_OTHER_VARIABLES_ that contains SET commands for
-# each cpack variable.  _CPACK_OTHER_VARIABLES_ is then
-# used as an @ replacment in configure_file for the CPackConfig.
-macro(cpack_encode_variables)
-  set(_CPACK_OTHER_VARIABLES_)
-  get_cmake_property(res VARIABLES)
-  foreach(var ${res})
-    if("xxx${var}" MATCHES "xxxCPACK")
-      set(_CPACK_OTHER_VARIABLES_
-        "${_CPACK_OTHER_VARIABLES_}\nSET(${var} \"${${var}}\")")
-      endif()
-  endforeach()
-endmacro()
-
-# Set the package name
-cpack_set_if_not_set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
-cpack_set_if_not_set(CPACK_PACKAGE_VERSION_MAJOR "0")
-cpack_set_if_not_set(CPACK_PACKAGE_VERSION_MINOR "1")
-cpack_set_if_not_set(CPACK_PACKAGE_VERSION_PATCH "1")
-cpack_set_if_not_set(CPACK_PACKAGE_VERSION
-  "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
-cpack_set_if_not_set(CPACK_PACKAGE_VENDOR "Humanity")
-cpack_set_if_not_set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
-  "${CMAKE_PROJECT_NAME} built using CMake")
-
-cpack_set_if_not_set(CPACK_PACKAGE_DESCRIPTION_FILE
-  "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
-cpack_set_if_not_set(CPACK_RESOURCE_FILE_LICENSE
-  "${CMAKE_ROOT}/Templates/CPack.GenericLicense.txt")
-cpack_set_if_not_set(CPACK_RESOURCE_FILE_README
-  "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
-cpack_set_if_not_set(CPACK_RESOURCE_FILE_WELCOME
-  "${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
-
-cpack_set_if_not_set(CPACK_MODULE_PATH "${CMAKE_MODULE_PATH}")
-
-if(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL)
-  set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
-endif()
-
-if(CPACK_NSIS_MODIFY_PATH)
-  set(CPACK_NSIS_MODIFY_PATH ON)
-endif()
-
-set(__cpack_system_name ${CMAKE_SYSTEM_NAME})
-if(${__cpack_system_name} MATCHES Windows)
-  if(CMAKE_CL_64)
-    set(__cpack_system_name win64)
-  else()
-    set(__cpack_system_name win32)
-  endif()
-endif()
-cpack_set_if_not_set(CPACK_SYSTEM_NAME "${__cpack_system_name}")
-
-# Root dir: default value should be the string literal "$PROGRAMFILES"
-# for backwards compatibility. Projects may set this value to anything.
-if(CMAKE_CL_64)
-set(__cpack_root_default "$PROGRAMFILES64")
-else()
-set(__cpack_root_default "$PROGRAMFILES")
-endif()
-cpack_set_if_not_set(CPACK_NSIS_INSTALL_ROOT "${__cpack_root_default}")
-
-# <project>-<major>.<minor>.<patch>-<release>-<platform>.<pkgtype>
-cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME
-  "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")
-cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_DIRECTORY
-  "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
-cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
-  "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-cpack_set_if_not_set(CPACK_PACKAGE_DEFAULT_LOCATION "/")
-cpack_set_if_not_set(CPACK_PACKAGE_RELOCATABLE "true")
-
-# always force to exactly "true" or "false" for CPack.Info.plist.in:
-if(CPACK_PACKAGE_RELOCATABLE)
-  set(CPACK_PACKAGE_RELOCATABLE "true")
-else()
-  set(CPACK_PACKAGE_RELOCATABLE "false")
-endif()
-
-macro(cpack_check_file_exists file description)
-  if(NOT EXISTS "${file}")
-    message(SEND_ERROR "CPack ${description} file: \"${file}\" could not be found.")
-  endif()
-endmacro()
-
-cpack_check_file_exists("${CPACK_PACKAGE_DESCRIPTION_FILE}" "package description")
-cpack_check_file_exists("${CPACK_RESOURCE_FILE_LICENSE}"    "license resource")
-cpack_check_file_exists("${CPACK_RESOURCE_FILE_README}"     "readme resource")
-cpack_check_file_exists("${CPACK_RESOURCE_FILE_WELCOME}"    "welcome resource")
-
-macro(cpack_optional_append _list _cond _item)
-  if(${_cond})
-    set(${_list} ${${_list}} ${_item})
-  endif()
-endmacro()
-
-##variable
-# CPACK_BINARY_<GENNAME> - CPack generated options for binary generators. The
-# CPack.cmake module generates (when CPACK_GENERATOR is not set)
-# a set of CMake options (see CMake option command) which may then be used to
-# select the CPack generator(s) to be used when launching the package target.
-##end
-# Provide options to choose generators
-# we might check here if the required tools for the generates exist
-# and set the defaults according to the results
-if(NOT CPACK_GENERATOR)
-  if(UNIX)
-    if(CYGWIN)
-      option(CPACK_BINARY_CYGWIN "Enable to build Cygwin binary packages" ON)
-    else()
-      if(APPLE)
-        option(CPACK_BINARY_BUNDLE       "Enable to build OSX bundles"      OFF)
-        option(CPACK_BINARY_DRAGNDROP    "Enable to build OSX Drag And Drop package" OFF)
-        option(CPACK_BINARY_PACKAGEMAKER "Enable to build PackageMaker packages" ON)
-        option(CPACK_BINARY_OSXX11       "Enable to build OSX X11 packages"      OFF)
-      else()
-        option(CPACK_BINARY_TZ  "Enable to build TZ packages"     ON)
-      endif()
-      option(CPACK_BINARY_STGZ "Enable to build STGZ packages"    ON)
-      option(CPACK_BINARY_TGZ  "Enable to build TGZ packages"     ON)
-      option(CPACK_BINARY_TBZ2 "Enable to build TBZ2 packages"    OFF)
-      option(CPACK_BINARY_DEB  "Enable to build Debian packages"  OFF)
-      option(CPACK_BINARY_RPM  "Enable to build RPM packages"     OFF)
-      option(CPACK_BINARY_NSIS "Enable to build NSIS packages"    OFF)
-    endif()
-  else()
-    option(CPACK_BINARY_NSIS "Enable to build NSIS packages" ON)
-    option(CPACK_BINARY_WIX  "Enable to build WiX packages" OFF)
-    option(CPACK_BINARY_ZIP  "Enable to build ZIP packages" OFF)
-  endif()
-
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_BUNDLE       Bundle)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_DRAGNDROP    DragNDrop)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PACKAGEMAKER PackageMaker)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_OSXX11       OSXX11)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_CYGWIN       CygwinBinary)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_DEB          DEB)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_RPM          RPM)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NSIS         NSIS)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_STGZ         STGZ)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TGZ          TGZ)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TBZ2         TBZ2)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TZ           TZ)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_WIX          WIX)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_ZIP          ZIP)
-
-endif()
-
-# Provide options to choose source generators
-if(NOT CPACK_SOURCE_GENERATOR)
-  if(UNIX)
-    if(CYGWIN)
-      option(CPACK_SOURCE_CYGWIN "Enable to build Cygwin source packages" ON)
-    else()
-      option(CPACK_SOURCE_TBZ2 "Enable to build TBZ2 source packages" ON)
-      option(CPACK_SOURCE_TGZ  "Enable to build TGZ source packages"  ON)
-      option(CPACK_SOURCE_TZ   "Enable to build TZ source packages"   ON)
-      option(CPACK_SOURCE_ZIP  "Enable to build ZIP source packages"  OFF)
-    endif()
-  else()
-    option(CPACK_SOURCE_ZIP "Enable to build ZIP source packages" ON)
-  endif()
-
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_CYGWIN  CygwinSource)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TGZ     TGZ)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TBZ2    TBZ2)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TZ      TZ)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_ZIP     ZIP)
-endif()
-
-# mark the above options as advanced
-mark_as_advanced(CPACK_BINARY_CYGWIN CPACK_BINARY_PACKAGEMAKER CPACK_BINARY_OSXX11
-                 CPACK_BINARY_STGZ   CPACK_BINARY_TGZ          CPACK_BINARY_TBZ2
-                 CPACK_BINARY_DEB    CPACK_BINARY_RPM          CPACK_BINARY_TZ
-                 CPACK_BINARY_NSIS CPACK_BINARY_WIX CPACK_BINARY_ZIP CPACK_BINARY_BUNDLE
-                 CPACK_SOURCE_CYGWIN CPACK_SOURCE_TBZ2 CPACK_SOURCE_TGZ
-                 CPACK_SOURCE_TZ CPACK_SOURCE_ZIP CPACK_BINARY_DRAGNDROP)
-
-# Set some other variables
-cpack_set_if_not_set(CPACK_INSTALL_CMAKE_PROJECTS
-  "${CMAKE_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/")
-cpack_set_if_not_set(CPACK_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
-cpack_set_if_not_set(CPACK_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}")
-# if the user has set CPACK_NSIS_DISPLAY_NAME remember it
-if(DEFINED CPACK_NSIS_DISPLAY_NAME)
-  set(CPACK_NSIS_DISPLAY_NAME_SET TRUE)
-endif()
-# if the user has set CPACK_NSIS_DISPLAY
-# explicitly, then use that as the default
-# value of CPACK_NSIS_PACKAGE_NAME  instead
-# of CPACK_PACKAGE_INSTALL_DIRECTORY
-cpack_set_if_not_set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-
-if(CPACK_NSIS_DISPLAY_NAME_SET)
-  string(REPLACE "\\" "\\\\"
-    _NSIS_DISPLAY_NAME_TMP  "${CPACK_NSIS_DISPLAY_NAME}")
-  cpack_set_if_not_set(CPACK_NSIS_PACKAGE_NAME "${_NSIS_DISPLAY_NAME_TMP}")
-else()
-  cpack_set_if_not_set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-endif()
-
-cpack_set_if_not_set(CPACK_OUTPUT_CONFIG_FILE
-  "${CMAKE_BINARY_DIR}/CPackConfig.cmake")
-
-cpack_set_if_not_set(CPACK_SOURCE_OUTPUT_CONFIG_FILE
-  "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake")
-
-cpack_set_if_not_set(CPACK_SET_DESTDIR OFF)
-cpack_set_if_not_set(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-
-cpack_set_if_not_set(CPACK_NSIS_INSTALLER_ICON_CODE "")
-cpack_set_if_not_set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "")
-
-# WiX specific variables
-cpack_set_if_not_set(CPACK_WIX_SIZEOF_VOID_P "${CMAKE_SIZEOF_VOID_P}")
-
-if(DEFINED CPACK_COMPONENTS_ALL)
-  if(CPACK_MONOLITHIC_INSTALL)
-    message("CPack warning: both CPACK_COMPONENTS_ALL and CPACK_MONOLITHIC_INSTALL have been set.\nDefaulting to a monolithic installation.")
-    set(CPACK_COMPONENTS_ALL)
-  else()
-    # The user has provided the set of components to be installed as
-    # part of a component-based installation; trust her.
-    set(CPACK_COMPONENTS_ALL_SET_BY_USER TRUE)
-  endif()
-else()
-  # If the user has not specifically requested a monolithic installer
-  # but has specified components in various "install" commands, tell
-  # CPack about those components.
-  if(NOT CPACK_MONOLITHIC_INSTALL)
-    get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
-    list(LENGTH CPACK_COMPONENTS_ALL CPACK_COMPONENTS_LEN)
-    if(CPACK_COMPONENTS_LEN EQUAL 1)
-      # Only one component: this is not a component-based installation
-      # (at least, it isn't a component-based installation, but may
-      # become one later if the user uses the cpack_add_* commands).
-      set(CPACK_COMPONENTS_ALL)
-    endif()
-    set(CPACK_COMPONENTS_LEN)
-  endif()
-endif()
-
-# CMake always generates a component named "Unspecified", which is
-# used to install everything that doesn't have an explicitly-provided
-# component. Since these files should always be installed, we'll make
-# them hidden and required.
-set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN TRUE)
-set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED TRUE)
-
-cpack_encode_variables()
-configure_file("${cpack_input_file}" "${CPACK_OUTPUT_CONFIG_FILE}" @ONLY IMMEDIATE)
-
-# Generate source file
-cpack_set_if_not_set(CPACK_SOURCE_INSTALLED_DIRECTORIES
-  "${CMAKE_SOURCE_DIR};/")
-cpack_set_if_not_set(CPACK_SOURCE_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}-Source")
-cpack_set_if_not_set(CPACK_SOURCE_PACKAGE_FILE_NAME
-  "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Source")
-cpack_set_if_not_set(CPACK_SOURCE_IGNORE_FILES
-  "/CVS/;/\\\\\\\\.svn/;/\\\\\\\\.bzr/;/\\\\\\\\.hg/;/\\\\\\\\.git/;\\\\\\\\.swp$;\\\\\\\\.#;/#")
-set(CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_SOURCE_INSTALL_CMAKE_PROJECTS}")
-set(CPACK_INSTALLED_DIRECTORIES "${CPACK_SOURCE_INSTALLED_DIRECTORIES}")
-set(CPACK_GENERATOR "${CPACK_SOURCE_GENERATOR}")
-set(CPACK_TOPLEVEL_TAG "${CPACK_SOURCE_TOPLEVEL_TAG}")
-set(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
-set(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}")
-set(CPACK_STRIP_FILES "${CPACK_SOURCE_STRIP_FILES}")
-
-cpack_encode_variables()
-configure_file("${cpack_source_input_file}"
-  "${CPACK_SOURCE_OUTPUT_CONFIG_FILE}" @ONLY IMMEDIATE)
diff --git a/config/cmake/CTestCustom.cmake b/config/cmake/CTestCustom.cmake
index 236519b..4df2c8c 100644
--- a/config/cmake/CTestCustom.cmake
+++ b/config/cmake/CTestCustom.cmake
@@ -1,6 +1,6 @@
-SET (CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 3000)
+set (CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 3000)
  
-SET (CTEST_CUSTOM_WARNING_EXCEPTION
+set (CTEST_CUSTOM_WARNING_EXCEPTION
     ${CTEST_CUSTOM_WARNING_EXCEPTION}
     "H5detect.c.[0-9]+.[ \t]*:[ \t]*warning C4090:"
     "H5detect.c.[0-9]+.[ \t]*:[ \t]*warning:[ \t]*passing argument"
@@ -17,25 +17,26 @@ SET (CTEST_CUSTOM_WARNING_EXCEPTION
 #    "fpp:[ \t]*warning:[ \t]*cannot remove H5_DEBUG_API - not a predefined macro"
 )
  
-SET (CTEST_CUSTOM_MEMCHECK_IGNORE
+set (CTEST_CUSTOM_MEMCHECK_IGNORE
     ${CTEST_CUSTOM_MEMCHECK_IGNORE}
-    flush1           #designed to fail
-    flush2           #designed to need flush1
-    error_test       #uses runTest.cmake
-    err_compat       #uses runTest.cmake
-    links_env        #uses runTest.cmake
-    testlibinfo      #uses grepTest.cmake
-    h5test-clear-testhdf5-objects
-    h5test-clear-objects
-    h5test-clear-cache-objects
-    h5test-clear-cache_api-objects
-    h5test-clear-ttsafe-objects
-    h5test-clear-err_compat-objects
-    h5test-clear-error_test-objects
-    h5test-clear-links_env-objects
+    H5TEST-flush1           #designed to fail
+    H5TEST-flush2           #designed to need flush1
+    H5TEST-error_test       #uses runTest.cmake
+    H5TEST-err_compat       #uses runTest.cmake
+    H5TEST-links_env        #uses runTest.cmake
+    H5TEST-testlibinfo      #uses grepTest.cmake
+    H5TEST-clear-testhdf5-objects
+    H5TEST-clear-objects
+    H5TEST-clear-cache-objects
+    H5TEST-clear-cache_api-objects
+    H5TEST-clear-ttsafe-objects
+    H5TEST-clear-err_compat-objects
+    H5TEST-clear-error_test-objects
+    H5TEST-clear-links_env-objects
     PERFORM_h5perform-clear-objects
-    hl_test-clear-objects
-    hl_fortran_test-clear-objects
+    HL_TOOLS-clear-objects
+    HL_test-clear-objects
+    HL_fortran_test-clear-objects
     ######### tools/h5copy #########
     H5COPY-clearall-objects
     ######### tools/h5diff #########
@@ -201,6 +202,7 @@ SET (CTEST_CUSTOM_MEMCHECK_IGNORE
     H5REPACK_VERIFY_LAYOUT-contig_small_fixed_compa     #uses grepTest.cmake
     H5REPACK_VERIFY_LAYOUT_ALL-layout_long_switches     #uses grepTest.cmake
     H5REPACK_VERIFY_LAYOUT_ALL-layout_short_switches    #uses grepTest.cmake
+    H5REPACK-plugin
     ######### tools/h5stat #########
     H5STAT-clearall-objects
     ######### tools/misc #########
@@ -208,5 +210,5 @@ SET (CTEST_CUSTOM_MEMCHECK_IGNORE
     H5MKGRP-clearall-objects
     ######### examples #########
     EXAMPLES-clear-objects
-    cpp_ex-clear-objects
+    CPP_ex-clear-objects
 )
diff --git a/config/cmake/CheckTypeSize.cmake b/config/cmake/CheckTypeSize.cmake
index eca6e76..4af5741 100644
--- a/config/cmake/CheckTypeSize.cmake
+++ b/config/cmake/CheckTypeSize.cmake
@@ -8,23 +8,23 @@
 #
 
 MACRO (HDF_CHECK_TYPE_SIZE TYPE VARIABLE)
-  SET (CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1)
-  IF ("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
-    SET (MACRO_CHECK_TYPE_SIZE_FLAGS 
+  set (CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1)
+  if ("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
+    set (MACRO_CHECK_TYPE_SIZE_FLAGS 
         "-DCHECK_TYPE_SIZE_TYPE=\"${TYPE}\" ${CMAKE_REQUIRED_FLAGS}"
     )
-    FOREACH (def HAVE_SYS_TYPES_H HAVE_STDINT_H HAVE_STDDEF_H HAVE_INTTYPES_H)
-      IF ("${def}")
-        SET (MACRO_CHECK_TYPE_SIZE_FLAGS "${MACRO_CHECK_TYPE_SIZE_FLAGS} -D${def}")
+    foreach (def HAVE_SYS_TYPES_H HAVE_STDINT_H HAVE_STDDEF_H HAVE_INTTYPES_H)
+      if ("${def}")
+        set (MACRO_CHECK_TYPE_SIZE_FLAGS "${MACRO_CHECK_TYPE_SIZE_FLAGS} -D${def}")
       ENDIF("${def}")
-    ENDFOREACH (def)
+    endforeach (def)
 
-    MESSAGE (STATUS "Check size of ${TYPE}")
-    IF (CMAKE_REQUIRED_LIBRARIES)
-      SET (CHECK_TYPE_SIZE_ADD_LIBRARIES 
+    message (STATUS "Check size of ${TYPE}")
+    if (CMAKE_REQUIRED_LIBRARIES)
+      set (CHECK_TYPE_SIZE_ADD_LIBRARIES 
           "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}"
       )
-    ENDIF (CMAKE_REQUIRED_LIBRARIES)
+    endif (CMAKE_REQUIRED_LIBRARIES)
     TRY_RUN (${VARIABLE} HAVE_${VARIABLE}
         ${CMAKE_BINARY_DIR}
         ${HDF5_RESOURCES_DIR}/CheckTypeSize.c
@@ -32,17 +32,17 @@ MACRO (HDF_CHECK_TYPE_SIZE TYPE VARIABLE)
         "${CHECK_TYPE_SIZE_ADD_LIBRARIES}"
         OUTPUT_VARIABLE OUTPUT
     )
-    IF (HAVE_${VARIABLE})
-      MESSAGE (STATUS "Check size of ${TYPE} - done")
-      FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log 
+    if (HAVE_${VARIABLE})
+      message (STATUS "Check size of ${TYPE} - done")
+      file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log 
           "Determining size of ${TYPE} passed with the following output:\n${OUTPUT}\n\n"
       )
-    ELSE (HAVE_${VARIABLE})
-      MESSAGE (STATUS "Check size of ${TYPE} - failed")
-      FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log 
+    else (HAVE_${VARIABLE})
+      message (STATUS "Check size of ${TYPE} - failed")
+      file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log 
           "Determining size of ${TYPE} failed with the following output:\n${OUTPUT}\n\n"
       )
-    ENDIF (HAVE_${VARIABLE})
-  ENDIF ("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
-  SET (CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS)
+    endif (HAVE_${VARIABLE})
+  endif ("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
+  set (CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS)
 ENDMACRO (HDF_CHECK_TYPE_SIZE)
diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake
index aba6d59..9816755 100644
--- a/config/cmake/ConfigureChecks.cmake
+++ b/config/cmake/ConfigureChecks.cmake
@@ -1,63 +1,68 @@
 #-----------------------------------------------------------------------------
 # Include all the necessary files for macros
 #-----------------------------------------------------------------------------
-INCLUDE (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
-INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
-INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFileCXX.cmake)
-INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFiles.cmake)
-INCLUDE (${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake)
-INCLUDE (${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake)
-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)
+include (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
+include (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
+include (${CMAKE_ROOT}/Modules/CheckIncludeFileCXX.cmake)
+include (${CMAKE_ROOT}/Modules/CheckIncludeFiles.cmake)
+include (${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake)
+include (${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake)
+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)
 
 #-----------------------------------------------------------------------------
 # APPLE/Darwin setup
 #-----------------------------------------------------------------------------
-IF (APPLE)
-  LIST(LENGTH CMAKE_OSX_ARCHITECTURES ARCH_LENGTH)
-  IF(ARCH_LENGTH GREATER 1)
+if (APPLE)
+  list (LENGTH CMAKE_OSX_ARCHITECTURES ARCH_LENGTH)
+  if (ARCH_LENGTH GREATER 1)
     set (CMAKE_OSX_ARCHITECTURES "" CACHE STRING "" FORCE)
     message(FATAL_ERROR "Building Universal Binaries on OS X is NOT supported by the HDF5 project. This is"
     "due to technical reasons. The best approach would be build each architecture in separate directories"
     "and use the 'lipo' tool to combine them into a single executable or library. The 'CMAKE_OSX_ARCHITECTURES'"
     "variable has been set to a blank value which will build the default architecture for this system.")
-  ENDIF()
-  SET (H5_AC_APPLE_UNIVERSAL_BUILD 0)
-ENDIF (APPLE)
+  endif ()
+  set (H5_AC_APPLE_UNIVERSAL_BUILD 0)
+endif (APPLE)
 
 # Check for Darwin (not just Apple - we also want to catch OpenDarwin)
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 
-    SET (H5_HAVE_DARWIN 1) 
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 
+    set (H5_HAVE_DARWIN 1) 
+endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+# Check for Solaris
+if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") 
+    set (H5_HAVE_SOLARIS 1) 
+endif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
 
 #-----------------------------------------------------------------------------
 # Option to Clear File Buffers before write --enable-clear-file-buffers
 #-----------------------------------------------------------------------------
-OPTION (HDF5_Enable_Clear_File_Buffers "Securely clear file buffers before writing to file" ON)
-IF (HDF5_Enable_Clear_File_Buffers)
-  SET (H5_CLEAR_MEMORY 1)
-ENDIF (HDF5_Enable_Clear_File_Buffers)
+option (HDF5_Enable_Clear_File_Buffers "Securely clear file buffers before writing to file" ON)
+if (HDF5_Enable_Clear_File_Buffers)
+  set (H5_CLEAR_MEMORY 1)
+endif (HDF5_Enable_Clear_File_Buffers)
 MARK_AS_ADVANCED (HDF5_Enable_Clear_File_Buffers)
 
 #-----------------------------------------------------------------------------
 # Option for --enable-strict-format-checks
 #-----------------------------------------------------------------------------
-OPTION (HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" OFF)
-IF (HDF5_STRICT_FORMAT_CHECKS)
-  SET (H5_STRICT_FORMAT_CHECKS 1)
-ENDIF (HDF5_STRICT_FORMAT_CHECKS)
+option (HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" OFF)
+if (HDF5_STRICT_FORMAT_CHECKS)
+  set (H5_STRICT_FORMAT_CHECKS 1)
+endif (HDF5_STRICT_FORMAT_CHECKS)
 MARK_AS_ADVANCED (HDF5_STRICT_FORMAT_CHECKS)
 
 #-----------------------------------------------------------------------------
 # Option for --enable-metadata-trace-file
 #-----------------------------------------------------------------------------
-OPTION (HDF5_METADATA_TRACE_FILE "Enable metadata trace file collection" OFF)
-IF (HDF5_METADATA_TRACE_FILE)
-  SET (H5_METADATA_TRACE_FILE 1)
-ENDIF (HDF5_METADATA_TRACE_FILE)
+option (HDF5_METADATA_TRACE_FILE "Enable metadata trace file collection" OFF)
+if (HDF5_METADATA_TRACE_FILE)
+  set (H5_METADATA_TRACE_FILE 1)
+endif (HDF5_METADATA_TRACE_FILE)
 MARK_AS_ADVANCED (HDF5_METADATA_TRACE_FILE)
 
 # ----------------------------------------------------------------------
@@ -66,10 +71,10 @@ MARK_AS_ADVANCED (HDF5_METADATA_TRACE_FILE)
 # though the data may be wrong (for example, some compilers don't
 # support denormalized floating values) to maximize speed.
 #
-OPTION (HDF5_WANT_DATA_ACCURACY "IF data accuracy is guaranteed during data conversions" ON)
-IF (HDF5_WANT_DATA_ACCURACY)
-  SET (H5_WANT_DATA_ACCURACY 1)
-ENDIF(HDF5_WANT_DATA_ACCURACY)
+option (HDF5_WANT_DATA_ACCURACY "IF data accuracy is guaranteed during data conversions" ON)
+if (HDF5_WANT_DATA_ACCURACY)
+  set (H5_WANT_DATA_ACCURACY 1)
+endif (HDF5_WANT_DATA_ACCURACY)
 MARK_AS_ADVANCED (HDF5_WANT_DATA_ACCURACY)
 
 # ----------------------------------------------------------------------
@@ -78,199 +83,192 @@ MARK_AS_ADVANCED (HDF5_WANT_DATA_ACCURACY)
 # for the speed optimization of hard conversions.  Soft conversions can
 # actually benefit little.
 #
-OPTION (HDF5_WANT_DCONV_EXCEPTION "exception handling functions is checked during data conversions" ON)
-IF (HDF5_WANT_DCONV_EXCEPTION)
-  SET (H5_WANT_DCONV_EXCEPTION 1)
-ENDIF (HDF5_WANT_DCONV_EXCEPTION)
+option (HDF5_WANT_DCONV_EXCEPTION "exception handling functions is checked during data conversions" ON)
+if (HDF5_WANT_DCONV_EXCEPTION)
+  set (H5_WANT_DCONV_EXCEPTION 1)
+endif (HDF5_WANT_DCONV_EXCEPTION)
 MARK_AS_ADVANCED (HDF5_WANT_DCONV_EXCEPTION)
 
 # ----------------------------------------------------------------------
 # Check if they would like the function stack support compiled in
 #
-OPTION (HDF5_ENABLE_CODESTACK "Enable the function stack tracing (for developer debugging)." OFF)
-IF (HDF5_ENABLE_CODESTACK)
-  SET (H5_HAVE_CODESTACK 1)
-ENDIF (HDF5_ENABLE_CODESTACK)
+option (HDF5_ENABLE_CODESTACK "Enable the function stack tracing (for developer debugging)." OFF)
+if (HDF5_ENABLE_CODESTACK)
+  set (H5_HAVE_CODESTACK 1)
+endif (HDF5_ENABLE_CODESTACK)
 MARK_AS_ADVANCED (HDF5_ENABLE_CODESTACK)
 
-OPTION (HDF5_ENABLE_HSIZET "Enable datasets larger than memory" ON)
+option (HDF5_ENABLE_HSIZET "Enable datasets larger than memory" ON)
 
 # ----------------------------------------------------------------------
 # 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)
 #
-#  SET (H5_HW_FP_TO_LLONG_NOT_WORKS 0)
+#  set (H5_HW_FP_TO_LLONG_NOT_WORKS 0)
 
 # so far we have no check for this
-SET(H5_HAVE_TMPFILE 1)
+set (H5_HAVE_TMPFILE 1)
 
 #-----------------------------------------------------------------------------
 # This MACRO checks IF the symbol exists in the library and IF it
 # does, it appends library to the list.
 #-----------------------------------------------------------------------------
-SET (LINK_LIBS "")
+set (LINK_LIBS "")
 MACRO (CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
   CHECK_LIBRARY_EXISTS ("${LIBRARY};${LINK_LIBS}" ${SYMBOL} "" ${VARIABLE})
-  IF (${VARIABLE})
-    SET (LINK_LIBS ${LINK_LIBS} ${LIBRARY})
-  ENDIF (${VARIABLE})
+  if (${VARIABLE})
+    set (LINK_LIBS ${LINK_LIBS} ${LIBRARY})
+  endif (${VARIABLE})
 ENDMACRO (CHECK_LIBRARY_EXISTS_CONCAT)
 
 # ----------------------------------------------------------------------
 # WINDOWS Hard code Values
 # ----------------------------------------------------------------------
 
-SET (WINDOWS)
-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)
-  ENDIF (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
-ENDIF (WIN32)
-
-#IF (WIN32)
-#  SET (DEFAULT_STREAM_VFD OFF)
-#ELSE (WIN32)
-#  SET (DEFAULT_STREAM_VFD ON)
-#ENDIF (WIN32)
-#OPTION (HDF5_STREAM_VFD "Compile Stream Virtual File Driver support" ${DEFAULT_STREAM_VFD})
+set (WINDOWS)
+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)
+  endif (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
+endif (WIN32)
 
 # TODO --------------------------------------------------------------------------
 # 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 (NOT DEFINED "H5_DEFAULT_PLUGINDIR")
-  IF (WINDOWS)
-    SET (H5_DEFAULT_PLUGINDIR "%ALLUSERSPROFILE%/hdf5/lib/plugin")
-  ELSE (WINDOWS)
-    SET (H5_DEFAULT_PLUGINDIR "/usr/local/hdf5/lib/plugin")
-  ENDIF (WINDOWS)
-ENDIF (NOT DEFINED "H5_DEFAULT_PLUGINDIR")
-
-IF (WINDOWS)
-  SET (H5_HAVE_WINDOWS 1)
+set (H5_DEFAULT_VFD H5FD_SEC2)
+
+if (NOT DEFINED "H5_DEFAULT_PLUGINDIR")
+  if (WINDOWS)
+    set (H5_DEFAULT_PLUGINDIR "%ALLUSERSPROFILE%/hdf5/lib/plugin")
+  else (WINDOWS)
+    set (H5_DEFAULT_PLUGINDIR "/usr/local/hdf5/lib/plugin")
+  endif (WINDOWS)
+endif (NOT DEFINED "H5_DEFAULT_PLUGINDIR")
+
+if (WINDOWS)
+  set (H5_HAVE_WINDOWS 1)
   # ----------------------------------------------------------------------
   # 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)
-  SET (H5_HAVE_WINDOW_PATH 1)
-ENDIF (WINDOWS)
-
-IF (WINDOWS)
-  SET (H5_HAVE_STDDEF_H 1)
-  SET (H5_HAVE_SYS_STAT_H 1)
-  SET (H5_HAVE_SYS_TYPES_H 1)
-  SET (H5_HAVE_LIBM 1)
-  SET (H5_HAVE_STRDUP 1)
-  SET (H5_HAVE_SYSTEM 1)
-  SET (H5_HAVE_LONGJMP 1)
-  IF (NOT MINGW)
-    SET (H5_HAVE_GETHOSTNAME 1)
-  ENDIF (NOT MINGW)
-  IF (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
-    SET (H5_HAVE_GETCONSOLESCREENBUFFERINFO 1)
-  ENDIF (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
-  SET (H5_HAVE_FUNCTION 1)
-  SET (H5_GETTIMEOFDAY_GIVES_TZ 1)
-  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)
+  set (H5_HAVE_WINDOW_PATH 1)
+endif (WINDOWS)
+
+if (WINDOWS)
+  set (H5_HAVE_STDDEF_H 1)
+  set (H5_HAVE_SYS_STAT_H 1)
+  set (H5_HAVE_SYS_TYPES_H 1)
+  set (H5_HAVE_LIBM 1)
+  set (H5_HAVE_STRDUP 1)
+  set (H5_HAVE_SYSTEM 1)
+  set (H5_HAVE_LONGJMP 1)
+  if (NOT MINGW)
+    set (H5_HAVE_GETHOSTNAME 1)
+  endif (NOT MINGW)
+  if (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
+    set (H5_HAVE_GETCONSOLESCREENBUFFERINFO 1)
+  endif (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
+  set (H5_HAVE_FUNCTION 1)
+  set (H5_GETTIMEOFDAY_GIVES_TZ 1)
+  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)
 
   #-----------------------------------------------------------------------------
   # These tests need to be manually SET for windows since there is currently
   # something not quite correct with the actual test implementation. This affects
   # the 'dt_arith' test and most likely lots of other code
   # ----------------------------------------------------------------------------
-  SET (H5_FP_TO_ULLONG_RIGHT_MAXIMUM "" CACHE INTERNAL "")
-ENDIF (WINDOWS)
+  set (H5_FP_TO_ULLONG_RIGHT_MAXIMUM "" CACHE INTERNAL "")
+endif (WINDOWS)
 
 # ----------------------------------------------------------------------
 # END of WINDOWS Hard code Values
 # ----------------------------------------------------------------------
 
-IF (CYGWIN)
-  SET (H5_HAVE_LSEEK64 0)
-ENDIF (CYGWIN)
+if (CYGWIN)
+  set (H5_HAVE_LSEEK64 0)
+endif (CYGWIN)
 
 #-----------------------------------------------------------------------------
 #  Check for the math library "m"
 #-----------------------------------------------------------------------------
-IF (NOT WINDOWS)
+if (NOT WINDOWS)
   CHECK_LIBRARY_EXISTS_CONCAT ("m" ceil     H5_HAVE_LIBM)
   CHECK_LIBRARY_EXISTS_CONCAT ("dl" dlopen     H5_HAVE_LIBDL)
   CHECK_LIBRARY_EXISTS_CONCAT ("ws2_32" WSAStartup  H5_HAVE_LIBWS2_32)
   CHECK_LIBRARY_EXISTS_CONCAT ("wsock32" gethostbyname H5_HAVE_LIBWSOCK32)
-ENDIF (NOT WINDOWS)
+endif (NOT WINDOWS)
 
 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)
 
-IF (NOT NOT_NEED_LIBNSL)
+if (NOT NOT_NEED_LIBNSL)
   CHECK_LIBRARY_EXISTS_CONCAT ("nsl"    gethostbyname  H5_HAVE_LIBNSL)
-ENDIF (NOT NOT_NEED_LIBNSL)
+endif (NOT NOT_NEED_LIBNSL)
 
 # For other tests to use the same libraries
-SET (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LINK_LIBS})
+set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LINK_LIBS})
 
-SET (USE_INCLUDES "")
-IF (WINDOWS)
-  SET (USE_INCLUDES ${USE_INCLUDES} "windows.h")
-ENDIF (WINDOWS)
+set (USE_INCLUDES "")
+if (WINDOWS)
+  set (USE_INCLUDES ${USE_INCLUDES} "windows.h")
+endif (WINDOWS)
 
-IF (NOT WINDOWS)
-  TEST_BIG_ENDIAN(H5_WORDS_BIGENDIAN)
-ENDIF (NOT WINDOWS)
+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
+  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 ("${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
+    if (LARGEFILE)
+      set (MACRO_CHECK_FUNCTION_DEFINITIONS
           "${MACRO_CHECK_FUNCTION_DEFINITIONS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE"
       )
-    ENDIF (LARGEFILE)
+    endif (LARGEFILE)
 
-    #MESSAGE (STATUS "Performing ${OTHER_TEST}")
+    #message (STATUS "Performing ${OTHER_TEST}")
     TRY_COMPILE (${OTHER_TEST}
         ${CMAKE_BINARY_DIR}
         ${HDF5_RESOURCES_DIR}/HDF5Tests.c
@@ -278,18 +276,18 @@ MACRO (HDF5_FUNCTION_TEST OTHER_TEST)
         "${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
+    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}$")
+    endif (${OTHER_TEST})
+  endif ("H5_${OTHER_TEST}" MATCHES "^H5_${OTHER_TEST}$")
 ENDMACRO (HDF5_FUNCTION_TEST)
 
 #-----------------------------------------------------------------------------
@@ -301,58 +299,58 @@ 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$")
+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 (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$")
+  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)
+    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)
+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)
+  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)
 #-----------------------------------------------------------------------------
 
 #-----------------------------------------------------------------------------
@@ -360,9 +358,9 @@ ENDIF (NOT WINDOWS)
 #-----------------------------------------------------------------------------
 MACRO (CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
   CHECK_INCLUDE_FILES ("${USE_INCLUDES};${FILE}" ${VARIABLE})
-  IF (${VARIABLE})
-    SET (USE_INCLUDES ${USE_INCLUDES} ${FILE})
-  ENDIF (${VARIABLE})
+  if (${VARIABLE})
+    set (USE_INCLUDES ${USE_INCLUDES} ${FILE})
+  endif (${VARIABLE})
 ENDMACRO (CHECK_INCLUDE_FILE_CONCAT)
 
 #-----------------------------------------------------------------------------
@@ -384,31 +382,31 @@ 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
 # has been initialized (e.g. the project also includes some c++)
-IF (H5_HAVE_STDINT_H AND CMAKE_CXX_COMPILER_LOADED)
+if (H5_HAVE_STDINT_H AND CMAKE_CXX_COMPILER_LOADED)
   CHECK_INCLUDE_FILE_CXX ("stdint.h" H5_HAVE_STDINT_H_CXX)
-  IF (NOT H5_HAVE_STDINT_H_CXX)
-    SET (H5_HAVE_STDINT_H "" CACHE INTERNAL "Have includes HAVE_STDINT_H")
-    SET (USE_INCLUDES ${USE_INCLUDES} "stdint.h")
-  ENDIF (NOT H5_HAVE_STDINT_H_CXX)
-ENDIF (H5_HAVE_STDINT_H AND CMAKE_CXX_COMPILER_LOADED)
+  if (NOT H5_HAVE_STDINT_H_CXX)
+    set (H5_HAVE_STDINT_H "" CACHE INTERNAL "Have includes HAVE_STDINT_H")
+    set (USE_INCLUDES ${USE_INCLUDES} "stdint.h")
+  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)
+if (NOT CYGWIN)
   CHECK_INCLUDE_FILE_CONCAT ("winsock2.h"      H5_HAVE_WINSOCK2_H)
-ENDIF (NOT CYGWIN)
+endif (NOT CYGWIN)
 CHECK_INCLUDE_FILE_CONCAT ("sys/timeb.h"     H5_HAVE_SYS_TIMEB_H)
 
-IF (CMAKE_SYSTEM_NAME MATCHES "OSF")
+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")
+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)
@@ -428,11 +426,12 @@ CHECK_INCLUDE_FILE_CONCAT ("netinet/in.h"    H5_HAVE_NETINET_IN_H)
 #-----------------------------------------------------------------------------
 
 # The linux-lfs option is deprecated.
-SET (LINUX_LFS 0)
+set (LINUX_LFS 0)
 
-SET (HDF5_EXTRA_C_FLAGS)
-SET (HDF5_EXTRA_FLAGS)
-IF (NOT WINDOWS)
+set (HDF5_EXTRA_C_FLAGS)
+set (HDF5_EXTRA_FLAGS)
+if (NOT WINDOWS)
+  if (NOT H5_HAVE_SOLARIS)
   # Linux Specific flags
   # This was originally defined as _POSIX_SOURCE which was updated to
   # _POSIX_C_SOURCE=199506L to expose a greater amount of POSIX
@@ -440,92 +439,93 @@ IF (NOT WINDOWS)
   # 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)
+  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")
+  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")
     TRY_RUN (TEST_LFS_WORKS_RUN   TEST_LFS_WORKS_COMPILE
         ${HDF5_BINARY_DIR}/CMake
         ${HDF5_RESOURCES_DIR}/HDF5Tests.c
         CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-DTEST_LFS_WORKS
         OUTPUT_VARIABLE OUTPUT
     )
-    IF (TEST_LFS_WORKS_COMPILE)
-      IF (TEST_LFS_WORKS_RUN  MATCHES 0)
-        SET (TEST_LFS_WORKS 1 CACHE INTERNAL ${msg})
-        SET (LARGEFILE 1)
-        SET (HDF5_EXTRA_FLAGS ${HDF5_EXTRA_FLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE)
-        MESSAGE (STATUS "${msg}... yes")
-      ELSE (TEST_LFS_WORKS_RUN  MATCHES 0)
-        SET (TEST_LFS_WORKS "" CACHE INTERNAL ${msg})
-        MESSAGE (STATUS "${msg}... no")
-        FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+    if (TEST_LFS_WORKS_COMPILE)
+      if (TEST_LFS_WORKS_RUN  MATCHES 0)
+        set (TEST_LFS_WORKS 1 CACHE INTERNAL ${msg})
+        set (LARGEFILE 1)
+        set (HDF5_EXTRA_FLAGS ${HDF5_EXTRA_FLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE)
+        message (STATUS "${msg}... yes")
+      else (TEST_LFS_WORKS_RUN  MATCHES 0)
+        set (TEST_LFS_WORKS "" CACHE INTERNAL ${msg})
+        message (STATUS "${msg}... no")
+        file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
               "Test TEST_LFS_WORKS Run failed with the following output and exit code:\n ${OUTPUT}\n"
         )
-      ENDIF (TEST_LFS_WORKS_RUN  MATCHES 0)
-    ELSE (TEST_LFS_WORKS_COMPILE )
-      SET (TEST_LFS_WORKS "" CACHE INTERNAL ${msg})
-      MESSAGE (STATUS "${msg}... no")
-      FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+      endif (TEST_LFS_WORKS_RUN  MATCHES 0)
+    else (TEST_LFS_WORKS_COMPILE )
+      set (TEST_LFS_WORKS "" CACHE INTERNAL ${msg})
+      message (STATUS "${msg}... no")
+      file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
           "Test TEST_LFS_WORKS Compile failed with the following output:\n ${OUTPUT}\n"
       )
-    ENDIF (TEST_LFS_WORKS_COMPILE)
-  ENDIF (HDF5_ENABLE_LARGE_FILE)
-  SET (CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${HDF5_EXTRA_FLAGS})
-ENDIF (NOT WINDOWS)
+    endif (TEST_LFS_WORKS_COMPILE)
+  endif (HDF5_ENABLE_LARGE_FILE)
+  set (CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${HDF5_EXTRA_FLAGS})
+  endif (NOT H5_HAVE_SOLARIS)
+endif (NOT WINDOWS)
 
-ADD_DEFINITIONS (${HDF5_EXTRA_FLAGS})
+add_definitions (${HDF5_EXTRA_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Check for HAVE_OFF64_T functionality
 #-----------------------------------------------------------------------------
-IF (NOT WINDOWS OR MINGW)
+if (NOT WINDOWS OR MINGW)
   HDF5_FUNCTION_TEST (HAVE_OFF64_T)
-  IF (H5_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)
+  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)
+  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)
+  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)
-  SET (aType ${type})
-  SET (aVar  ${var})
-#  MESSAGE (STATUS "Checking size of ${aType} and storing into ${aVar}")
+  set (aType ${type})
+  set (aVar  ${var})
+#  message (STATUS "Checking size of ${aType} and storing into ${aVar}")
   CHECK_TYPE_SIZE (${aType}   ${aVar})
-  IF (NOT ${aVar})
-    SET (${aVar} 0 CACHE INTERNAL "SizeOf for ${aType}")
-#    MESSAGE (STATUS "Size of ${aType} was NOT Found")
-  ENDIF (NOT ${aVar})
+  if (NOT ${aVar})
+    set (${aVar} 0 CACHE INTERNAL "SizeOf for ${aType}")
+#    message (STATUS "Size of ${aType} was NOT Found")
+  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)
 H5_CHECK_TYPE_SIZE (unsigned       H5_SIZEOF_UNSIGNED)
-IF (NOT APPLE)
+if (NOT APPLE)
   H5_CHECK_TYPE_SIZE (long         H5_SIZEOF_LONG)
-ENDIF (NOT APPLE)
+endif (NOT APPLE)
 H5_CHECK_TYPE_SIZE ("long long"    H5_SIZEOF_LONG_LONG)
 H5_CHECK_TYPE_SIZE (__int64        H5_SIZEOF___INT64)
-IF (NOT H5_SIZEOF___INT64)
-  SET (H5_SIZEOF___INT64 0)
-ENDIF (NOT H5_SIZEOF___INT64)
+if (NOT H5_SIZEOF___INT64)
+  set (H5_SIZEOF___INT64 0)
+endif (NOT H5_SIZEOF___INT64)
 
 H5_CHECK_TYPE_SIZE (float          H5_SIZEOF_FLOAT)
 H5_CHECK_TYPE_SIZE (double         H5_SIZEOF_DOUBLE)
@@ -559,24 +559,24 @@ 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)
+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)
-  IF (NOT WINDOWS)
+  if (NOT H5_SIZEOF_SSIZE_T)
+    set (H5_SIZEOF_SSIZE_T 0)
+  endif (NOT H5_SIZEOF_SSIZE_T)
+  if (NOT WINDOWS)
     H5_CHECK_TYPE_SIZE (ptrdiff_t    H5_SIZEOF_PTRDIFF_T)
-  ENDIF (NOT WINDOWS)
-ENDIF (NOT APPLE)
+  endif (NOT WINDOWS)
+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 H5_SIZEOF_OFF64_T)
+  set (H5_SIZEOF_OFF64_T 0)
+endif (NOT H5_SIZEOF_OFF64_T)
 
-IF (NOT WINDOWS)
+if (NOT WINDOWS)
   #-----------------------------------------------------------------------------
   # Check if the dev_t type is a scalar type
   #-----------------------------------------------------------------------------
@@ -591,7 +591,7 @@ IF (NOT WINDOWS)
   #-----------------------------------------------------------------------------
   # Check a bunch of time functions
   #-----------------------------------------------------------------------------
-  FOREACH (test
+  foreach (test
       HAVE_TM_GMTOFF
       HAVE___TM_GMTOFF
 #      HAVE_TIMEZONE
@@ -602,11 +602,11 @@ IF (NOT WINDOWS)
       HAVE_STRUCT_TM_TM_ZONE
   )
     HDF5_FUNCTION_TEST (${test})
-  ENDFOREACH (test)
-  IF (NOT CYGWIN AND NOT MINGW)
+  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 (NOT CYGWIN AND NOT MINGW)
 
   # ----------------------------------------------------------------------
   # Does the struct stat have the st_blocks field?  This field is not Posix.
@@ -622,12 +622,12 @@ IF (NOT WINDOWS)
   CHECK_FUNCTION_EXISTS (_getvideoconfig   H5_HAVE__GETVIDEOCONFIG)
   CHECK_FUNCTION_EXISTS (gettextinfo       H5_HAVE_GETTEXTINFO)
   CHECK_FUNCTION_EXISTS (_scrsize          H5_HAVE__SCRSIZE)
-  IF (NOT CYGWIN AND NOT MINGW)
+  if (NOT CYGWIN AND NOT MINGW)
     CHECK_FUNCTION_EXISTS (GetConsoleScreenBufferInfo    H5_HAVE_GETCONSOLESCREENBUFFERINFO)
-  ENDIF (NOT CYGWIN AND NOT MINGW)
+  endif (NOT CYGWIN AND NOT MINGW)
   CHECK_SYMBOL_EXISTS (TIOCGWINSZ "sys/ioctl.h" H5_HAVE_TIOCGWINSZ)
   CHECK_SYMBOL_EXISTS (TIOCGETD   "sys/ioctl.h" H5_HAVE_TIOCGETD)
-ENDIF (NOT WINDOWS)
+endif (NOT WINDOWS)
 
 #-----------------------------------------------------------------------------
 # Check for some functions that are used
@@ -666,23 +666,23 @@ CHECK_FUNCTION_EXISTS (vasprintf         H5_HAVE_VASPRINTF)
 CHECK_FUNCTION_EXISTS (waitpid           H5_HAVE_WAITPID)
 
 CHECK_FUNCTION_EXISTS (vsnprintf         H5_HAVE_VSNPRINTF)
-IF (NOT WINDOWS)
-  IF (H5_HAVE_VSNPRINTF)
+if (NOT WINDOWS)
+  if (H5_HAVE_VSNPRINTF)
     HDF5_FUNCTION_TEST (VSNPRINTF_WORKS)
-  ENDIF (H5_HAVE_VSNPRINTF)
-ENDIF (NOT WINDOWS)
+  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)
+if (NOT H5_HAVE_SIGSETJMP)
+  if (H5_HAVE_SETJMP_H)
     CHECK_SYMBOL_EXISTS (sigsetjmp "setjmp.h" H5_HAVE_MACRO_SIGSETJMP)
-    IF (H5_HAVE_MACRO_SIGSETJMP)
-      SET (H5_HAVE_SIGSETJMP 1)
-    ENDIF (H5_HAVE_MACRO_SIGSETJMP)
-  ENDIF (H5_HAVE_SETJMP_H)
-ENDIF (NOT H5_HAVE_SIGSETJMP)
+    if (H5_HAVE_MACRO_SIGSETJMP)
+      set (H5_HAVE_SIGSETJMP 1)
+    endif (H5_HAVE_MACRO_SIGSETJMP)
+  endif (H5_HAVE_SETJMP_H)
+endif (NOT H5_HAVE_SIGSETJMP)
 
 #-----------------------------------------------------------------------------
 # Check for Symbols
@@ -691,8 +691,8 @@ CHECK_SYMBOL_EXISTS (tzname "time.h" H5_HAVE_DECL_TZNAME)
 #-----------------------------------------------------------------------------
 # Check a bunch of other functions
 #-----------------------------------------------------------------------------
-IF (NOT WINDOWS)
-  FOREACH (test
+if (NOT WINDOWS)
+  foreach (test
       LONE_COLON
       HAVE_ATTRIBUTE
       HAVE_C99_FUNC
@@ -703,40 +703,40 @@ IF (NOT WINDOWS)
       CXX_HAVE_OFFSETOF
   )
     HDF5_FUNCTION_TEST (${test})
-  ENDFOREACH (test)
-ENDIF (NOT WINDOWS)
+  endforeach (test)
+endif (NOT WINDOWS)
 
 # 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)
-      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
+  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)
+      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 ("${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
+    if (LARGEFILE)
+      set (MACRO_CHECK_FUNCTION_DEFINITIONS
           "${MACRO_CHECK_FUNCTION_DEFINITIONS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE"
       )
-    ENDIF (LARGEFILE)
+    endif (LARGEFILE)
 
-    #MESSAGE (STATUS "Performing ${OTHER_TEST}")
+    #message (STATUS "Performing ${OTHER_TEST}")
     TRY_COMPILE (${OTHER_TEST}
         ${CMAKE_BINARY_DIR}
         ${HDF5_RESOURCES_DIR}/HDF5CXXTests.cpp
@@ -744,25 +744,25 @@ MACRO (HDF5_CXX_FUNCTION_TEST OTHER_TEST)
         "${OTHER_TEST_ADD_LIBRARIES}"
         OUTPUT_VARIABLE OUTPUT
     )
-    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
+    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 CXX Test ${OTHER_TEST} failed with the following output:\n"
           "${OUTPUT}\n"
       )
-    ENDIF ("${OTHER_TEST}" EQUAL 0)
-  ENDIF ("${OTHER_TEST}" MATCHES "^${OTHER_TEST}$")
+    endif ("${OTHER_TEST}" EQUAL 0)
+  endif ("${OTHER_TEST}" MATCHES "^${OTHER_TEST}$")
 ENDMACRO (HDF5_CXX_FUNCTION_TEST)
 
 #-----------------------------------------------------------------------------
 # Check a bunch of cxx functions
 #-----------------------------------------------------------------------------
-IF (CMAKE_CXX_COMPILER_LOADED)
-  FOREACH (test
+if (CMAKE_CXX_COMPILER_LOADED)
+  foreach (test
       OLD_HEADER_FILENAME
       H5_NO_NAMESPACE
       H5_NO_STD
@@ -770,81 +770,71 @@ IF (CMAKE_CXX_COMPILER_LOADED)
       NO_STATIC_CAST
   )
     HDF5_CXX_FUNCTION_TEST (${test})
-  ENDFOREACH (test)
-ENDIF (CMAKE_CXX_COMPILER_LOADED)
+  endforeach (test)
+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}")
+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)
+    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
+        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
+      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)
+    endif (TEST_DIRECT_VFD_WORKS_COMPILE)
+  endif (HDF5_ENABLE_DIRECT_VFD)
+endif (NOT WINDOWS)
 
 #-----------------------------------------------------------------------------
 # Check if InitOnceExecuteOnce is available
 #-----------------------------------------------------------------------------
-IF (WINDOWS)
-  IF (NOT HDF5_NO_IOEO_TEST)
-  MESSAGE (STATUS "Checking for InitOnceExecuteOnce:")
-  IF("${H5_HAVE_IOEO}" MATCHES "^${H5_HAVE_IOEO}$")
-    IF (LARGEFILE)
-      SET (CMAKE_REQUIRED_DEFINITIONS
+if (WINDOWS)
+  if (NOT HDF5_NO_IOEO_TEST)
+  message (STATUS "Checking for InitOnceExecuteOnce:")
+  if ("${H5_HAVE_IOEO}" MATCHES "^${H5_HAVE_IOEO}$")
+    if (LARGEFILE)
+      set (CMAKE_REQUIRED_DEFINITIONS
           "${CURRENT_TEST_DEFINITIONS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE"
       )
-    ENDIF (LARGEFILE)
-    SET(MACRO_CHECK_FUNCTION_DEFINITIONS 
+    endif (LARGEFILE)
+    set (MACRO_CHECK_FUNCTION_DEFINITIONS 
       "-DHAVE_IOEO ${CMAKE_REQUIRED_FLAGS}")
-    IF(CMAKE_REQUIRED_LIBRARIES)
-      SET(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
+    if (CMAKE_REQUIRED_LIBRARIES)
+      set (CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
         "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-    ELSE(CMAKE_REQUIRED_LIBRARIES)
-      SET(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
-    ENDIF(CMAKE_REQUIRED_LIBRARIES)
-    IF(CMAKE_REQUIRED_INCLUDES)
-      SET(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
+    else (CMAKE_REQUIRED_LIBRARIES)
+      set (CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
+    endif (CMAKE_REQUIRED_LIBRARIES)
+    if (CMAKE_REQUIRED_INCLUDES)
+      set (CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
         "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    ELSE(CMAKE_REQUIRED_INCLUDES)
-      SET(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
-    ENDIF(CMAKE_REQUIRED_INCLUDES)
+    else (CMAKE_REQUIRED_INCLUDES)
+      set (CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
+    endif (CMAKE_REQUIRED_INCLUDES)
 
     TRY_RUN(HAVE_IOEO_EXITCODE HAVE_IOEO_COMPILED
       ${CMAKE_BINARY_DIR}
@@ -856,108 +846,96 @@ IF (WINDOWS)
       "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
       COMPILE_OUTPUT_VARIABLE OUTPUT)
     # if it did not compile make the return value fail code of 1
-    IF(NOT HAVE_IOEO_COMPILED)
-      SET(HAVE_IOEO_EXITCODE 1)
-    ENDIF(NOT HAVE_IOEO_COMPILED)
+    if (NOT HAVE_IOEO_COMPILED)
+      set (HAVE_IOEO_EXITCODE 1)
+    endif (NOT HAVE_IOEO_COMPILED)
     # if the return value was 0 then it worked
-    IF("${HAVE_IOEO_EXITCODE}" EQUAL 0)
-      SET(H5_HAVE_IOEO 1 CACHE INTERNAL "Test InitOnceExecuteOnce")
-      MESSAGE(STATUS "Performing Test InitOnceExecuteOnce - Success")
-      FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
+    if ("${HAVE_IOEO_EXITCODE}" EQUAL 0)
+      set (H5_HAVE_IOEO 1 CACHE INTERNAL "Test InitOnceExecuteOnce")
+      message (STATUS "Performing Test InitOnceExecuteOnce - Success")
+      file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
         "Performing C SOURCE FILE Test InitOnceExecuteOnce succeded with the following output:\n"
         "${OUTPUT}\n"
         "Return value: ${HAVE_IOEO}\n")
-    ELSE("${HAVE_IOEO_EXITCODE}" EQUAL 0)
-      IF(CMAKE_CROSSCOMPILING AND "${HAVE_IOEO_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        SET(H5_HAVE_IOEO "${HAVE_IOEO_EXITCODE}")
-      ELSE(CMAKE_CROSSCOMPILING AND "${HAVE_IOEO_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        SET(H5_HAVE_IOEO "" CACHE INTERNAL "Test InitOnceExecuteOnce")
-      ENDIF(CMAKE_CROSSCOMPILING AND "${HAVE_IOEO_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-
-      MESSAGE(STATUS "Performing Test InitOnceExecuteOnce - Failed")
-      FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
+    else ("${HAVE_IOEO_EXITCODE}" EQUAL 0)
+      if (CMAKE_CROSSCOMPILING AND "${HAVE_IOEO_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+        set (H5_HAVE_IOEO "${HAVE_IOEO_EXITCODE}")
+      else (CMAKE_CROSSCOMPILING AND "${HAVE_IOEO_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+        set (H5_HAVE_IOEO "" CACHE INTERNAL "Test InitOnceExecuteOnce")
+      endif (CMAKE_CROSSCOMPILING AND "${HAVE_IOEO_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+
+      message (STATUS "Performing Test InitOnceExecuteOnce - Failed")
+      file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
         "Performing InitOnceExecuteOnce Test  failed with the following output:\n"
         "${OUTPUT}\n"
         "Return value: ${HAVE_IOEO_EXITCODE}\n")
-    ENDIF("${HAVE_IOEO_EXITCODE}" EQUAL 0)
-  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
-#-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GPFS "Enable GPFS hints for the MPI/POSIX file driver" OFF)
-IF (HDF5_ENABLE_GPFS)
-  CHECK_INCLUDE_FILE_CONCAT ("gpfs.h"        HAVE_GPFS)
-  IF (HAVE_GPFS)
-    HDF5_FUNCTION_TEST (HAVE_GPFS)  
-  ENDIF (HAVE_GPFS)
-ENDIF (HDF5_ENABLE_GPFS)
-MARK_AS_ADVANCED (HDF5_ENABLE_GPFS)
+    endif ("${HAVE_IOEO_EXITCODE}" EQUAL 0)
+  endif ("${H5_HAVE_IOEO}" MATCHES "^${H5_HAVE_IOEO}$")
+  endif (NOT HDF5_NO_IOEO_TEST)
+endif (WINDOWS)
 
 #-----------------------------------------------------------------------------
 # Determine how 'inline' is used
 #-----------------------------------------------------------------------------
-SET (HDF5_EXTRA_TEST_DEFINITIONS INLINE_TEST_INLINE)
-FOREACH (inline_test inline __inline__ __inline)
-  SET (INLINE_TEST_INLINE ${inline_test})
+set (HDF5_EXTRA_TEST_DEFINITIONS INLINE_TEST_INLINE)
+foreach (inline_test inline __inline__ __inline)
+  set (INLINE_TEST_INLINE ${inline_test})
   HDF5_FUNCTION_TEST (INLINE_TEST_${inline_test})
-ENDFOREACH (inline_test)
-
-SET (HDF5_EXTRA_TEST_DEFINITIONS)
-IF (INLINE_TEST___inline__)
-  SET (H5_inline __inline__)
-ELSE (INLINE_TEST___inline__)
-  IF (INLINE_TEST___inline)
-    SET (H5_inline __inline)
-  ELSE (INLINE_TEST___inline)
-    IF (INLINE_TEST_inline)
-      SET (H5_inline inline)
-    ENDIF (INLINE_TEST_inline)
-  ENDIF (INLINE_TEST___inline)
-ENDIF (INLINE_TEST___inline__)
+endforeach (inline_test)
+
+set (HDF5_EXTRA_TEST_DEFINITIONS)
+if (INLINE_TEST___inline__)
+  set (H5_inline __inline__)
+else (INLINE_TEST___inline__)
+  if (INLINE_TEST___inline)
+    set (H5_inline __inline)
+  else (INLINE_TEST___inline)
+    if (INLINE_TEST_inline)
+      set (H5_inline inline)
+    endif (INLINE_TEST_inline)
+  endif (INLINE_TEST___inline)
+endif (INLINE_TEST___inline__)
 
 #-----------------------------------------------------------------------------
 # Check how to print a Long Long integer
 #-----------------------------------------------------------------------------
-IF (NOT H5_PRINTF_LL_WIDTH OR H5_PRINTF_LL_WIDTH MATCHES "unknown")
-  SET (PRINT_LL_FOUND 0)
-  MESSAGE (STATUS "Checking for appropriate format for 64 bit long:")
-  FOREACH (HDF5_PRINTF_LL l64 l L q I64 ll)
-    SET (CURRENT_TEST_DEFINITIONS "-DPRINTF_LL_WIDTH=${HDF5_PRINTF_LL}")
-    IF (H5_SIZEOF_LONG_LONG)
-      SET (CURRENT_TEST_DEFINITIONS "${CURRENT_TEST_DEFINITIONS} -DHAVE_LONG_LONG")
-    ENDIF (H5_SIZEOF_LONG_LONG)
+if (NOT H5_PRINTF_LL_WIDTH OR H5_PRINTF_LL_WIDTH MATCHES "unknown")
+  set (PRINT_LL_FOUND 0)
+  message (STATUS "Checking for appropriate format for 64 bit long:")
+  foreach (HDF5_PRINTF_LL l64 l L q I64 ll)
+    set (CURRENT_TEST_DEFINITIONS "-DPRINTF_LL_WIDTH=${HDF5_PRINTF_LL}")
+    if (H5_SIZEOF_LONG_LONG)
+      set (CURRENT_TEST_DEFINITIONS "${CURRENT_TEST_DEFINITIONS} -DHAVE_LONG_LONG")
+    endif (H5_SIZEOF_LONG_LONG)
     TRY_RUN (HDF5_PRINTF_LL_TEST_RUN   HDF5_PRINTF_LL_TEST_COMPILE
         ${HDF5_BINARY_DIR}/CMake
         ${HDF5_RESOURCES_DIR}/HDF5Tests.c
         CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CURRENT_TEST_DEFINITIONS}
         OUTPUT_VARIABLE OUTPUT
     )
-    IF (HDF5_PRINTF_LL_TEST_COMPILE)
-      IF (HDF5_PRINTF_LL_TEST_RUN MATCHES 0)
-        SET (H5_PRINTF_LL_WIDTH "\"${HDF5_PRINTF_LL}\"" CACHE INTERNAL "Width for printf for type `long long' or `__int64', us. `ll")
-        SET (PRINT_LL_FOUND 1)
-      ELSE (HDF5_PRINTF_LL_TEST_RUN MATCHES 0)
-        MESSAGE ("Width with ${HDF5_PRINTF_LL} failed with result: ${HDF5_PRINTF_LL_TEST_RUN}")
-      ENDIF (HDF5_PRINTF_LL_TEST_RUN MATCHES 0)
-    ELSE (HDF5_PRINTF_LL_TEST_COMPILE)
-      FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+    if (HDF5_PRINTF_LL_TEST_COMPILE)
+      if (HDF5_PRINTF_LL_TEST_RUN MATCHES 0)
+        set (H5_PRINTF_LL_WIDTH "\"${HDF5_PRINTF_LL}\"" CACHE INTERNAL "Width for printf for type `long long' or `__int64', us. `ll")
+        set (PRINT_LL_FOUND 1)
+      else (HDF5_PRINTF_LL_TEST_RUN MATCHES 0)
+        message ("Width with ${HDF5_PRINTF_LL} failed with result: ${HDF5_PRINTF_LL_TEST_RUN}")
+      endif (HDF5_PRINTF_LL_TEST_RUN MATCHES 0)
+    else (HDF5_PRINTF_LL_TEST_COMPILE)
+      file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
           "Test H5_PRINTF_LL_WIDTH for ${HDF5_PRINTF_LL} failed with the following output:\n ${OUTPUT}\n"
       )
-    ENDIF (HDF5_PRINTF_LL_TEST_COMPILE)
-  ENDFOREACH (HDF5_PRINTF_LL)
-
-  IF (PRINT_LL_FOUND)
-    MESSAGE (STATUS "Checking for apropriate format for 64 bit long: found ${H5_PRINTF_LL_WIDTH}")
-  ELSE (PRINT_LL_FOUND)
-    MESSAGE (STATUS "Checking for apropriate format for 64 bit long: not found")
-    SET (H5_PRINTF_LL_WIDTH "\"unknown\"" CACHE INTERNAL
+    endif (HDF5_PRINTF_LL_TEST_COMPILE)
+  endforeach (HDF5_PRINTF_LL)
+
+  if (PRINT_LL_FOUND)
+    message (STATUS "Checking for apropriate format for 64 bit long: found ${H5_PRINTF_LL_WIDTH}")
+  else (PRINT_LL_FOUND)
+    message (STATUS "Checking for apropriate format for 64 bit long: not found")
+    set (H5_PRINTF_LL_WIDTH "\"unknown\"" CACHE INTERNAL
         "Width for printf for type `long long' or `__int64', us. `ll"
     )
-  ENDIF (PRINT_LL_FOUND)
-ENDIF (NOT H5_PRINTF_LL_WIDTH OR H5_PRINTF_LL_WIDTH MATCHES "unknown")
+  endif (PRINT_LL_FOUND)
+endif (NOT H5_PRINTF_LL_WIDTH OR H5_PRINTF_LL_WIDTH MATCHES "unknown")
 
 # ----------------------------------------------------------------------
 # Set the flag to indicate that the machine can handle converting
@@ -965,62 +943,62 @@ ENDIF (NOT H5_PRINTF_LL_WIDTH OR H5_PRINTF_LL_WIDTH MATCHES "unknown")
 # (This flag should be set for all machines, except for the Crays, where
 # the cache value is set in it's config file)
 #
-SET (H5_CONVERT_DENORMAL_FLOAT 1)
+set (H5_CONVERT_DENORMAL_FLOAT 1)
 
 #-----------------------------------------------------------------------------
 #  Are we going to use HSIZE_T
 #-----------------------------------------------------------------------------
-IF (HDF5_ENABLE_HSIZET)
-  SET (H5_HAVE_LARGE_HSIZET 1)
-ENDIF (HDF5_ENABLE_HSIZET)
+if (HDF5_ENABLE_HSIZET)
+  set (H5_HAVE_LARGE_HSIZET 1)
+endif (HDF5_ENABLE_HSIZET)
 
 #-----------------------------------------------------------------------------
 # Macro to determine the various conversion capabilities
 #-----------------------------------------------------------------------------
 MACRO (H5ConversionTests TEST msg)
-  IF ("${TEST}" MATCHES "^${TEST}$")
-   # MESSAGE (STATUS "===> ${TEST}")
+  if ("${TEST}" MATCHES "^${TEST}$")
+   # message (STATUS "===> ${TEST}")
     TRY_RUN (${TEST}_RUN   ${TEST}_COMPILE
         ${HDF5_BINARY_DIR}/CMake
         ${HDF5_RESOURCES_DIR}/ConversionTests.c
         CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-D${TEST}_TEST
         OUTPUT_VARIABLE OUTPUT
     )
-    IF (${TEST}_COMPILE)
-      IF (${TEST}_RUN  MATCHES 0)
-        SET (${TEST} 1 CACHE INTERNAL ${msg})
-        MESSAGE (STATUS "${msg}... yes")
-      ELSE (${TEST}_RUN  MATCHES 0)
-        SET (${TEST} "" CACHE INTERNAL ${msg})
-        MESSAGE (STATUS "${msg}... no")
-        FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+    if (${TEST}_COMPILE)
+      if (${TEST}_RUN  MATCHES 0)
+        set (${TEST} 1 CACHE INTERNAL ${msg})
+        message (STATUS "${msg}... yes")
+      else (${TEST}_RUN  MATCHES 0)
+        set (${TEST} "" CACHE INTERNAL ${msg})
+        message (STATUS "${msg}... no")
+        file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
               "Test ${TEST} Run failed with the following output and exit code:\n ${OUTPUT}\n"
         )
-      ENDIF (${TEST}_RUN  MATCHES 0)
-    ELSE (${TEST}_COMPILE )
-      SET (${TEST} "" CACHE INTERNAL ${msg})
-      MESSAGE (STATUS "${msg}... no")
-      FILE (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+      endif (${TEST}_RUN  MATCHES 0)
+    else (${TEST}_COMPILE )
+      set (${TEST} "" CACHE INTERNAL ${msg})
+      message (STATUS "${msg}... no")
+      file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
           "Test ${TEST} Compile failed with the following output:\n ${OUTPUT}\n"
       )
-    ENDIF (${TEST}_COMPILE)
+    endif (${TEST}_COMPILE)
 
-  ENDIF("${TEST}" MATCHES "^${TEST}$")
+  endif ("${TEST}" MATCHES "^${TEST}$")
 ENDMACRO (H5ConversionTests)
 
 #-----------------------------------------------------------------------------
 # Macro to make some of the conversion tests easier to write/read
 #-----------------------------------------------------------------------------
 MACRO (H5MiscConversionTest  VAR TEST msg)
-  IF ("${TEST}" MATCHES "^${TEST}$")
-    IF (${VAR})
-      SET (${TEST} 1 CACHE INTERNAL ${msg})
-      MESSAGE (STATUS "${msg}... yes")
-    ELSE (${VAR})
-      SET (${TEST} "" CACHE INTERNAL ${msg})
-      MESSAGE (STATUS "${msg}... no")
-    ENDIF (${VAR})
-  ENDIF ("${TEST}" MATCHES "^${TEST}$")
+  if ("${TEST}" MATCHES "^${TEST}$")
+    if (${VAR})
+      set (${TEST} 1 CACHE INTERNAL ${msg})
+      message (STATUS "${msg}... yes")
+    else (${VAR})
+      set (${TEST} "" CACHE INTERNAL ${msg})
+      message (STATUS "${msg}... no")
+    endif (${VAR})
+  endif ("${TEST}" MATCHES "^${TEST}$")
 ENDMACRO (H5MiscConversionTest)
 
 #-----------------------------------------------------------------------------
@@ -1043,9 +1021,9 @@ H5MiscConversionTest (H5_SIZEOF_LONG_DOUBLE H5_LDOUBLE_TO_INTEGER_ACCURATE "chec
 # integers except 'unsigned long long'.  Other HP-UX systems are unknown
 # yet. (1/8/05 - SLU)
 #
-IF (NOT MSVC)
+if (NOT MSVC)
   H5ConversionTests (H5_LDOUBLE_TO_INTEGER_WORKS "Checking IF converting from long double to integers works")
-ENDIF (NOT MSVC)
+endif (NOT MSVC)
 # -----------------------------------------------------------------------
 # Set flag to indicate that the machine can handle conversion from
 # integers to long double.  (This flag should be set "yes" for all
@@ -1071,11 +1049,11 @@ H5ConversionTests (H5_ULONG_TO_FLOAT_ACCURATE "Checking IF accurately converting
 # 64-bit machines, where the short program below tests if round-up is
 # correctly handled.
 #
-IF (CMAKE_SYSTEM MATCHES "solaris2.*")
+if (CMAKE_SYSTEM MATCHES "solaris2.*")
   H5ConversionTests (H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE "Checking IF accurately converting unsigned long long to floating-point values")
-ELSE (CMAKE_SYSTEM MATCHES "solaris2.*")
-  SET(H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE 1)
-ENDIF (CMAKE_SYSTEM MATCHES "solaris2.*")
+else (CMAKE_SYSTEM MATCHES "solaris2.*")
+  set (H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE 1)
+endif (CMAKE_SYSTEM MATCHES "solaris2.*")
 # ----------------------------------------------------------------------
 # Set the flag to indicate that the machine can accurately convert
 # 'float' or 'double' to 'unsigned long long' values.
@@ -1103,19 +1081,19 @@ H5ConversionTests (H5_LDOUBLE_TO_UINT_ACCURATE "Checking IF correctly converting
 # 'unsigned long long' to 'float' and 'double' typecasts.
 # (This flag should be set for all machines.)
 #
-IF (H5_ULLONG_TO_FP_CAST_WORKS MATCHES ^H5_ULLONG_TO_FP_CAST_WORKS$)
-  SET (H5_ULLONG_TO_FP_CAST_WORKS 1 CACHE INTERNAL "Checking IF compiling unsigned long long to floating-point typecasts work")
-  MESSAGE (STATUS "Checking IF compiling unsigned long long to floating-point typecasts work... yes")
-ENDIF (H5_ULLONG_TO_FP_CAST_WORKS MATCHES ^H5_ULLONG_TO_FP_CAST_WORKS$)
+if (H5_ULLONG_TO_FP_CAST_WORKS MATCHES ^H5_ULLONG_TO_FP_CAST_WORKS$)
+  set (H5_ULLONG_TO_FP_CAST_WORKS 1 CACHE INTERNAL "Checking IF compiling unsigned long long to floating-point typecasts work")
+  message (STATUS "Checking IF compiling unsigned long long to floating-point typecasts work... yes")
+endif (H5_ULLONG_TO_FP_CAST_WORKS MATCHES ^H5_ULLONG_TO_FP_CAST_WORKS$)
 # ----------------------------------------------------------------------
 # 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.)
 #
-IF (H5_LLONG_TO_FP_CAST_WORKS MATCHES ^H5_LLONG_TO_FP_CAST_WORKS$)
-  SET (H5_LLONG_TO_FP_CAST_WORKS 1 CACHE INTERNAL "Checking IF compiling long long to floating-point typecasts work")
-  MESSAGE (STATUS "Checking IF compiling long long to floating-point typecasts work... yes")
-ENDIF (H5_LLONG_TO_FP_CAST_WORKS MATCHES ^H5_LLONG_TO_FP_CAST_WORKS$)
+if (H5_LLONG_TO_FP_CAST_WORKS MATCHES ^H5_LLONG_TO_FP_CAST_WORKS$)
+  set (H5_LLONG_TO_FP_CAST_WORKS 1 CACHE INTERNAL "Checking IF compiling long long to floating-point typecasts work")
+  message (STATUS "Checking IF compiling long long to floating-point typecasts work... yes")
+endif (H5_LLONG_TO_FP_CAST_WORKS MATCHES ^H5_LLONG_TO_FP_CAST_WORKS$)
 # ----------------------------------------------------------------------
 # Set the flag to indicate that the machine can convert from
 # 'unsigned long long' to 'long double' without precision loss.
@@ -1123,9 +1101,9 @@ ENDIF (H5_LLONG_TO_FP_CAST_WORKS MATCHES ^H5_LLONG_TO_FP_CAST_WORKS$)
 # 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.)
 #
-IF (NOT MSVC)
+if (NOT MSVC)
   H5ConversionTests (H5_ULLONG_TO_LDOUBLE_PRECISION "Checking IF converting unsigned long long to long double with precision")
-ENDIF (NOT MSVC)
+endif (NOT MSVC)
 # ----------------------------------------------------------------------
 # Set the flag to indicate that the machine can handle overflow converting
 # all floating-point to all integer types.
@@ -1143,10 +1121,10 @@ H5ConversionTests (H5_FP_TO_INTEGER_OVERFLOW_WORKS  "Checking IF overflows norma
 # 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$)
+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.  
@@ -1155,10 +1133,10 @@ ENDIF (H5_LDOUBLE_TO_LONG_SPECIAL MATCHES ^H5_LDOUBLE_TO_LONG_SPECIAL$)
 # ..., 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$)
+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
@@ -1179,15 +1157,36 @@ H5ConversionTests (H5_LDOUBLE_TO_LLONG_ACCURATE "Checking IF correctly convertin
 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
+# for the H5VM_log2_gen() routine in src/H5VMprivate.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$)
+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)
+
+# -----------------------------------------------------------------------
+# wrapper script variables
+# 
+set (prefix ${CMAKE_INSTALL_PREFIX})
+set (exec_prefix "\${prefix}")
+set (libdir "${exec_prefix}/lib")
+set (includedir "\${prefix}/include")
+set (host_os ${CMAKE_HOST_SYSTEM_NAME})
+set (CC ${CMAKE_C_COMPILER})
+set (CXX ${CMAKE_CXX_COMPILER})
+set (FC ${CMAKE_Fortran_COMPILER})
+foreach (LINK_LIB ${LINK_LIBS})
+  set (LIBS "${LIBS} -l${LINK_LIB}")
+endforeach (LINK_LIB ${LINK_LIBS})
diff --git a/config/cmake/FindHDF5.cmake.in b/config/cmake/FindHDF5.cmake.in
index 1b51ed4..0ac8bc9 100644
--- a/config/cmake/FindHDF5.cmake.in
+++ b/config/cmake/FindHDF5.cmake.in
@@ -38,18 +38,18 @@
 # 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)
+include (SelectLibraryConfigurations)
+include (FindPackageHandleStandardArgs)
 
 # The HINTS option should only be used for values computed from the system.
-SET (_HDF5_HINTS
+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
+set (_HDF5_PATHS
     $ENV{HOME}/.local
     $ENV{HDF5_ROOT}
     $ENV{HDF5_ROOT_DIR_HINT}
@@ -78,9 +78,9 @@ FIND_PATH (HDF5_INCLUDE_DIRS "H5public.h"
 
 # For backwards compatibility we set HDF5_INCLUDE_DIR to the value of
 # HDF5_INCLUDE_DIRS
-SET ( HDF5_INCLUDE_DIR "${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)
+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/FindMPI.cmake b/config/cmake/FindMPI.cmake
index b16c9c3..1b67a30 100644
--- a/config/cmake/FindMPI.cmake
+++ b/config/cmake/FindMPI.cmake
@@ -86,7 +86,7 @@ include(GetPrerequisites)
 #
 # The compilers are detected in this order:
 #
-# 1. Try to find the most generic availble MPI compiler, as this is usually set up by
+# 1. Try to find the most generic available MPI compiler, as this is usually set up by
 #    cluster admins.  e.g., if plain old mpicc is available, we'll use it and assume it's
 #    the right compiler.
 #
@@ -354,6 +354,20 @@ function (interrogate_mpi_compiler lang try_libs)
         # Extract the set of libraries to link against from the link command
         # line
         string(REGEX MATCHALL "(^| )-l([^\" ]+|\"[^\"]+\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}")
+        # add the compiler implicit directories because some compilers
+        # such as the intel compiler have libraries that show up
+        # in the showme list that can only be found in the implicit
+        # link directories of the compiler. Do this for C++ and C
+        # compilers if the implicit link directories are defined.
+        if (DEFINED CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES)
+          set(MPI_LINK_PATH
+            "${MPI_LINK_PATH};${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES}")
+        endif ()
+
+        if (DEFINED CMAKE_C_IMPLICIT_LINK_DIRECTORIES)
+          set(MPI_LINK_PATH
+            "${MPI_LINK_PATH};${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
+        endif ()
 
         # Determine full path names for all of the libraries that one needs
         # to link against in an MPI program
@@ -413,18 +427,18 @@ function (interrogate_mpi_compiler lang try_libs)
           HINTS         ${_MPI_BASE_DIR} ${_MPI_PREFIX_PATH}
           PATH_SUFFIXES lib)
         if (MPI_LIBRARIES_WORK AND MPI_LIB)
-          set(MPI_LIBRARIES_WORK ${MPI_LIBRARIES_WORK} ${MPI_LIB})
+          list(APPEND MPI_LIBRARIES_WORK ${MPI_LIB})
         endif()
       endif()
 
       if (${lang} STREQUAL Fortran)
         set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE FILEPATH "Cleared" FORCE)
         find_library(MPI_LIB
-          NAMES         fmpi fmpich fmpich2 fmpich2g
+          NAMES         fmpi fmpich fmpich2 fmpich2g msmpifec msmpifmc
           HINTS         ${_MPI_BASE_DIR} ${_MPI_PREFIX_PATH}
-          PATH_SUFFIXES lib)
+          PATH_SUFFIXES lib lib/${MS_MPI_ARCH_DIR} Lib Lib/${MS_MPI_ARCH_DIR})
         if (MPI_LIBRARIES_WORK AND MPI_LIB)
-          set(MPI_LIBRARIES_WORK ${MPI_LIBRARIES_WORK} ${MPI_LIB})
+          list(APPEND MPI_LIBRARIES_WORK ${MPI_LIB})
         endif()
       endif()
 
@@ -573,6 +587,11 @@ foreach (lang C CXX Fortran)
       try_regular_compiler(${lang} regular_compiler_worked)
     endif()
 
+    set(MPI_${lang}_FIND_QUIETLY ${MPI_FIND_QUIETLY})
+    set(MPI_${lang}_FIND_REQUIRED ${MPI_FIND_REQUIRED})
+    set(MPI_${lang}_FIND_VERSION ${MPI_FIND_VERSION})
+    set(MPI_${lang}_FIND_VERSION_EXACT ${MPI_FIND_VERSION_EXACT})
+
     if (regular_compiler_worked)
       find_package_handle_standard_args(MPI_${lang} DEFAULT_MSG MPI_${lang}_COMPILER)
     else()
diff --git a/config/cmake/FindSZIP.cmake b/config/cmake/FindSZIP.cmake
index b358862..f657cfa 100644
--- a/config/cmake/FindSZIP.cmake
+++ b/config/cmake/FindSZIP.cmake
@@ -11,7 +11,7 @@
 #  SZIP_LIBRARY_DEBUG - Debug version of SZIP library
 #  SZIP_LIBRARY_RELEASE - Release Version of SZIP library
 
-# MESSAGE (STATUS "Finding SZIP library and headers..." )
+# message (STATUS "Finding SZIP library and headers..." )
 
 ############################################
 #
@@ -25,41 +25,41 @@
 #########################################################################
 
 MACRO (SZIP_ADJUST_LIB_VARS basename)
-  IF (${basename}_INCLUDE_DIR)
+  if (${basename}_INCLUDE_DIR)
 
     # if only the release version was found, set the debug variable also to the release version
-    IF (${basename}_LIBRARY_RELEASE AND NOT ${basename}_LIBRARY_DEBUG)
-      SET (${basename}_LIBRARY_DEBUG ${${basename}_LIBRARY_RELEASE})
-      SET (${basename}_LIBRARY       ${${basename}_LIBRARY_RELEASE})
-      SET (${basename}_LIBRARIES     ${${basename}_LIBRARY_RELEASE})
-    ENDIF (${basename}_LIBRARY_RELEASE AND NOT ${basename}_LIBRARY_DEBUG)
+    if (${basename}_LIBRARY_RELEASE AND NOT ${basename}_LIBRARY_DEBUG)
+      set (${basename}_LIBRARY_DEBUG ${${basename}_LIBRARY_RELEASE})
+      set (${basename}_LIBRARY       ${${basename}_LIBRARY_RELEASE})
+      set (${basename}_LIBRARIES     ${${basename}_LIBRARY_RELEASE})
+    endif (${basename}_LIBRARY_RELEASE AND NOT ${basename}_LIBRARY_DEBUG)
 
     # if only the debug version was found, set the release variable also to the debug version
-    IF (${basename}_LIBRARY_DEBUG AND NOT ${basename}_LIBRARY_RELEASE)
-      SET (${basename}_LIBRARY_RELEASE ${${basename}_LIBRARY_DEBUG})
-      SET (${basename}_LIBRARY         ${${basename}_LIBRARY_DEBUG})
-      SET (${basename}_LIBRARIES       ${${basename}_LIBRARY_DEBUG})
-    ENDIF (${basename}_LIBRARY_DEBUG AND NOT ${basename}_LIBRARY_RELEASE)
-    IF (${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE)
+    if (${basename}_LIBRARY_DEBUG AND NOT ${basename}_LIBRARY_RELEASE)
+      set (${basename}_LIBRARY_RELEASE ${${basename}_LIBRARY_DEBUG})
+      set (${basename}_LIBRARY         ${${basename}_LIBRARY_DEBUG})
+      set (${basename}_LIBRARIES       ${${basename}_LIBRARY_DEBUG})
+    endif (${basename}_LIBRARY_DEBUG AND NOT ${basename}_LIBRARY_RELEASE)
+    if (${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE)
       # if the generator supports configuration types then set
       # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
-      IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-        SET (${basename}_LIBRARY       optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG})
+      if (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+        set (${basename}_LIBRARY       optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG})
       ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
         # if there are no configuration types and CMAKE_BUILD_TYPE has no value
         # then just use the release libraries
-        SET (${basename}_LIBRARY       ${${basename}_LIBRARY_RELEASE} )
-      ENDIF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-      SET (${basename}_LIBRARIES       optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG})
-    ENDIF (${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE)
+        set (${basename}_LIBRARY       ${${basename}_LIBRARY_RELEASE} )
+      endif (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+      set (${basename}_LIBRARIES       optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG})
+    endif (${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE)
 
-    SET (${basename}_LIBRARY ${${basename}_LIBRARY} CACHE FILEPATH "The ${basename} library")
+    set (${basename}_LIBRARY ${${basename}_LIBRARY} CACHE FILEPATH "The ${basename} library")
 
-    IF (${basename}_LIBRARY)
-      SET (${basename}_FOUND 1)
-    ENDIF (${basename}_LIBRARY)
+    if (${basename}_LIBRARY)
+      set (${basename}_FOUND 1)
+    endif (${basename}_LIBRARY)
 
-  ENDIF (${basename}_INCLUDE_DIR )
+  endif (${basename}_INCLUDE_DIR )
 
   # Make variables changeble to the advanced user
   MARK_AS_ADVANCED (${basename}_LIBRARY ${basename}_LIBRARY_RELEASE ${basename}_LIBRARY_DEBUG ${basename}_INCLUDE_DIR )
@@ -67,19 +67,19 @@ ENDMACRO (SZIP_ADJUST_LIB_VARS)
 
 
 # Look for the header file.
-SET (SZIP_INCLUDE_SEARCH_DIRS
+set (SZIP_INCLUDE_SEARCH_DIRS
     $ENV{SZIP_INSTALL}/include
     $ENV{SZIP_INSTALL}/include/szip
     /usr/include
     /usr/include/szip
 )
 
-SET (SZIP_LIB_SEARCH_DIRS
+set (SZIP_LIB_SEARCH_DIRS
     $ENV{SZIP_INSTALL}/lib
     /usr/lib
 )
 
-SET (SZIP_BIN_SEARCH_DIRS
+set (SZIP_BIN_SEARCH_DIRS
     $ENV{SZIP_INSTALL}/bin
     /usr/bin
 )
@@ -90,13 +90,13 @@ FIND_PATH (SZIP_INCLUDE_DIR
     NO_DEFAULT_PATH
 )
 
-IF (WIN32)
-    SET (SZIP_SEARCH_DEBUG_NAMES "sz_d;libsz_d")
-    SET (SZIP_SEARCH_RELEASE_NAMES "sz;libsz;libszip")
-ELSE (WIN32)
-    SET (SZIP_SEARCH_DEBUG_NAMES "sz_d")
-    SET (SZIP_SEARCH_RELEASE_NAMES "sz;szip")
-ENDIF (WIN32)
+if (WIN32)
+    set (SZIP_SEARCH_DEBUG_NAMES "sz_d;libsz_d")
+    set (SZIP_SEARCH_RELEASE_NAMES "sz;libsz;libszip")
+else (WIN32)
+    set (SZIP_SEARCH_DEBUG_NAMES "sz_d")
+    set (SZIP_SEARCH_RELEASE_NAMES "sz;szip")
+endif (WIN32)
 
 # Look for the library.
 FIND_LIBRARY (SZIP_LIBRARY_DEBUG
@@ -113,67 +113,67 @@ FIND_LIBRARY (SZIP_LIBRARY_RELEASE
 
 SZIP_ADJUST_LIB_VARS (SZIP)
 
-IF (SZIP_INCLUDE_DIR AND SZIP_LIBRARY)
-  SET (SZIP_FOUND 1)
-  SET (SZIP_LIBRARIES ${SZIP_LIBRARY})
-  SET (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR})
-  IF (SZIP_LIBRARY_DEBUG)
+if (SZIP_INCLUDE_DIR AND SZIP_LIBRARY)
+  set (SZIP_FOUND 1)
+  set (SZIP_LIBRARIES ${SZIP_LIBRARY})
+  set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR})
+  if (SZIP_LIBRARY_DEBUG)
     GET_FILENAME_COMPONENT (SZIP_LIBRARY_PATH ${SZIP_LIBRARY_DEBUG} PATH)
-    SET (SZIP_LIB_DIR  ${SZIP_LIBRARY_PATH})
-  ELSEIF (SZIP_LIBRARY_RELEASE)
+    set (SZIP_LIB_DIR  ${SZIP_LIBRARY_PATH})
+  elseif (SZIP_LIBRARY_RELEASE)
     GET_FILENAME_COMPONENT (SZIP_LIBRARY_PATH ${SZIP_LIBRARY_RELEASE} PATH)
-    SET (SZIP_LIB_DIR  ${SZIP_LIBRARY_PATH})
-  ENDIF (SZIP_LIBRARY_DEBUG)
+    set (SZIP_LIB_DIR  ${SZIP_LIBRARY_PATH})
+  endif (SZIP_LIBRARY_DEBUG)
 
-ELSE (SZIP_INCLUDE_DIR AND SZIP_LIBRARY)
-  SET (SZIP_FOUND 0)
-  SET (SZIP_LIBRARIES)
-  SET (SZIP_INCLUDE_DIRS)
-ENDIF (SZIP_INCLUDE_DIR AND SZIP_LIBRARY)
+else (SZIP_INCLUDE_DIR AND SZIP_LIBRARY)
+  set (SZIP_FOUND 0)
+  set (SZIP_LIBRARIES)
+  set (SZIP_INCLUDE_DIRS)
+endif (SZIP_INCLUDE_DIR AND SZIP_LIBRARY)
 
 # Report the results.
-IF (NOT SZIP_FOUND)
-  SET (SZIP_DIR_MESSAGE
+if (NOT SZIP_FOUND)
+  set (SZIP_DIR_MESSAGE
       "SZip was not found. Make sure SZIP_LIBRARY and SZIP_INCLUDE_DIR are set or set the SZIP_INSTALL environment variable."
   )
-  IF (NOT SZIP_FIND_QUIETLY)
-    MESSAGE (STATUS "${SZIP_DIR_MESSAGE}")
-  ELSE (NOT SZIP_FIND_QUIETLY)
-    IF (SZIP_FIND_REQUIRED)
-      MESSAGE (FATAL_ERROR "SZip was NOT found and is Required by this project")
-    ENDIF (SZIP_FIND_REQUIRED)
-  ENDIF (NOT SZIP_FIND_QUIETLY)
-ENDIF (NOT SZIP_FOUND)
-
-IF (SZIP_FOUND)
-  INCLUDE (CheckSymbolExists)
+  if (NOT SZIP_FIND_QUIETLY)
+    message (STATUS "${SZIP_DIR_MESSAGE}")
+  else (NOT SZIP_FIND_QUIETLY)
+    if (SZIP_FIND_REQUIRED)
+      message (FATAL_ERROR "SZip was NOT found and is Required by this project")
+    endif (SZIP_FIND_REQUIRED)
+  endif (NOT SZIP_FIND_QUIETLY)
+endif (NOT SZIP_FOUND)
+
+if (SZIP_FOUND)
+  include (CheckSymbolExists)
   #############################################
   # Find out if SZIP was build using dll's
   #############################################
   # Save required variable
-  SET (CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES})
-  SET (CMAKE_REQUIRED_FLAGS_SAVE    ${CMAKE_REQUIRED_FLAGS})
+  set (CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES})
+  set (CMAKE_REQUIRED_FLAGS_SAVE    ${CMAKE_REQUIRED_FLAGS})
   # Add SZIP_INCLUDE_DIR to CMAKE_REQUIRED_INCLUDES
-  SET (CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${SZIP_INCLUDE_DIRS}")
+  set (CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${SZIP_INCLUDE_DIRS}")
 
   CHECK_SYMBOL_EXISTS (SZIP_BUILT_AS_DYNAMIC_LIB "SZconfig.h" HAVE_SZIP_DLL)
 
-  IF (HAVE_SZIP_DLL STREQUAL "TRUE")
-    SET (HAVE_SZIP_DLL "1")
-  ENDIF (HAVE_SZIP_DLL STREQUAL "TRUE")
+  if (HAVE_SZIP_DLL STREQUAL "TRUE")
+    set (HAVE_SZIP_DLL "1")
+  endif (HAVE_SZIP_DLL STREQUAL "TRUE")
 
   # Restore CMAKE_REQUIRED_INCLUDES and CMAKE_REQUIRED_FLAGS variables
-  SET (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE})
-  SET (CMAKE_REQUIRED_FLAGS    ${CMAKE_REQUIRED_FLAGS_SAVE})
+  set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE})
+  set (CMAKE_REQUIRED_FLAGS    ${CMAKE_REQUIRED_FLAGS_SAVE})
   #
   #############################################
-ENDIF (SZIP_FOUND)
-
-IF (FIND_SZIP_DEBUG)
-  MESSAGE (STATUS "SZIP_INCLUDE_DIR: ${SZIP_INCLUDE_DIR}")
-  MESSAGE (STATUS "SZIP_INCLUDE_DIRS: ${SZIP_INCLUDE_DIRS}")
-  MESSAGE (STATUS "SZIP_LIBRARY_DEBUG: ${SZIP_LIBRARY_DEBUG}")
-  MESSAGE (STATUS "SZIP_LIBRARY_RELEASE: ${SZIP_LIBRARY_RELEASE}")
-  MESSAGE (STATUS "HAVE_SZIP_DLL: ${HAVE_SZIP_DLL}")
-  MESSAGE (STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
-ENDIF (FIND_SZIP_DEBUG)
+endif (SZIP_FOUND)
+
+if (FIND_SZIP_DEBUG)
+  message (STATUS "SZIP_INCLUDE_DIR: ${SZIP_INCLUDE_DIR}")
+  message (STATUS "SZIP_INCLUDE_DIRS: ${SZIP_INCLUDE_DIRS}")
+  message (STATUS "SZIP_LIBRARY_DEBUG: ${SZIP_LIBRARY_DEBUG}")
+  message (STATUS "SZIP_LIBRARY_RELEASE: ${SZIP_LIBRARY_RELEASE}")
+  message (STATUS "HAVE_SZIP_DLL: ${HAVE_SZIP_DLL}")
+  message (STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
+endif (FIND_SZIP_DEBUG)
diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in
index 2aca31c..9f5206d 100644
--- a/config/cmake/H5pubconf.h.in
+++ b/config/cmake/H5pubconf.h.in
@@ -213,12 +213,6 @@
 /* Define to 1 if you have the `get_fpc_csr' function. */
 #cmakedefine H5_HAVE_GET_FPC_CSR @H5_HAVE_GET_FPC_CSR@
 
-/* Define if we have GPFS support */
-#cmakedefine H5_HAVE_GPFS @H5_HAVE_GPFS@
-
-/* Define to 1 if you have the <gpfs.h> header file. */
-#cmakedefine H5_HAVE_GPFS_H @H5_HAVE_GPFS_H@
-
 /* Define if library will contain instrumentation to detect correct
    optimization operation */
 #cmakedefine H5_HAVE_INSTRUMENTED_LIBRARY @H5_HAVE_INSTRUMENTED_LIBRARY@
@@ -565,7 +559,7 @@
 #define H5_PACKAGE_URL "@HDF5_PACKAGE_URL@"
 
 /* Define to the version of this package. */
-#define H5_PACKAGE_VERSION "@HDF5_PACKAGE_VERSION@"
+#define H5_PACKAGE_VERSION "@HDF5_PACKAGE_VERSION_STRING@"
 
 /* Width for printf() for type `long long' or `__int64', use `ll' */
 #cmakedefine H5_PRINTF_LL_WIDTH @H5_PRINTF_LL_WIDTH@
@@ -747,7 +741,7 @@
 #cmakedefine H5_USING_MEMCHECKER @H5_USING_MEMCHECKER@
 
 /* Version number of package */
-#define H5_VERSION "@HDF5_PACKAGE_VERSION@"
+#define H5_VERSION "@HDF5_PACKAGE_VERSION_STRING@"
 
 /* Define if vsnprintf() returns the correct value for formatted strings that
    don't fit into size allowed */
diff --git a/config/cmake/HDF518_Examples.cmake.in b/config/cmake/HDF518_Examples.cmake.in
index 699e2d0..075920e 100644
--- a/config/cmake/HDF518_Examples.cmake.in
+++ b/config/cmake/HDF518_Examples.cmake.in
@@ -1,112 +1,119 @@
-cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
-###############################################################################################################
-# This script will build and run the examples from a compressed file
-# Execute from a command line:
-#     ctest -S HDF518_Examples.cmake,HDF5Examples-0.1.1-Source -C Release -O test.log
-###############################################################################################################
-
-set(INSTALLDIR "@CMAKE_INSTALL_PREFIX@/@HDF5_PACKAGE_VERSION@")
-set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@")
-set(STATICLIBRARIES "@H5_ENABLE_STATIC_LIB@")
-set(CTEST_SOURCE_NAME ${CTEST_SCRIPT_ARG})
-set(CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY})
-set(CTEST_BUILD_CONFIGURATION "Release")
-
-###############################################################################################################
-#     Adjust the following SET Commands as needed
-###############################################################################################################
-if(WIN32)
-  if(STATICLIBRARIES)
-    set(BUILD_OPTIONS "-DUSE_SHARED_LIBS:BOOL=OFF")
-  endif(STATICLIBRARIES)
-  set(ENV{HDF5_DIR} "${INSTALLDIR}/cmake/hdf5")
-  set(CTEST_BINARY_NAME ${CTEST_SOURCE_NAME}\\build)
-  set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\${CTEST_SOURCE_NAME}")
-  set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\${CTEST_BINARY_NAME}")
-else(WIN32)
-  if(STATICLIBRARIES)
-    set(BUILD_OPTIONS "-DUSE_SHARED_LIBS:BOOL=OFF -DCMAKE_ANSI_CFLAGS:STRING=-fPIC")
-  endif(STATICLIBRARIES)
-  set(ENV{HDF5_DIR} "${INSTALLDIR}/share/cmake/hdf5")
-  set(ENV{LD_LIBRARY_PATH} "${INSTALLDIR}/lib")
-  set(CTEST_BINARY_NAME ${CTEST_SOURCE_NAME}/build)
-  set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_SOURCE_NAME}")
-  set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}")
-endif(WIN32)
-
-###############################################################################################################
-# For any comments please contact cdashhelp at hdfgroup.org
-#
-###############################################################################################################
- 
-#-----------------------------------------------------------------------------
-# MAC machines need special option
-#-----------------------------------------------------------------------------
-if(APPLE)
-  # Compiler choice
-  execute_process(COMMAND xcrun --find cc OUTPUT_VARIABLE XCODE_CC OUTPUT_STRIP_TRAILING_WHITESPACE)
-  execute_process(COMMAND xcrun --find c++ OUTPUT_VARIABLE XCODE_CXX OUTPUT_STRIP_TRAILING_WHITESPACE)
-  set(ENV{CC} "${XCODE_CC}")
-  set(ENV{CXX} "${XCODE_CXX}")
-  # Shared fortran is not supported, build static 
-  set(BUILD_OPTIONS "${BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_ANSI_CFLAGS:STRING=-fPIC")
-  set(BUILD_OPTIONS "${BUILD_OPTIONS} -DCTEST_USE_LAUNCHERS:BOOL=ON -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF")
-endif(APPLE)
- 
-#-----------------------------------------------------------------------------
-set(CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"")
-## Uncompress source in tar file provided
-## --------------------------
-if(WIN32)
-  set(CTEST_7Z_COMMAND "C:/Program Files/7-Zip/7z.exe")
-  message("extracting... [${CTEST_7Z_COMMAND} x ${CTEST_SOURCE_NAME}.zip]")
-  execute_process(COMMAND ${CTEST_7Z_COMMAND} x ${CTEST_SOURCE_NAME}.zip RESULT_VARIABLE rv)
-else(WIN32)
-  message("extracting... [${CTEST_CMAKE_COMMAND} -E tar -xvf ${CTEST_SOURCE_NAME}.tar.gz]")
-  execute_process(COMMAND tar -xvf ${CTEST_SOURCE_NAME}.tar.gz RESULT_VARIABLE rv)
-endif(WIN32)
- 
-if(NOT rv EQUAL 0)
-  message("extracting... [error-(${rv}) clean up]")
-  file(REMOVE_RECURSE "${CTEST_SOURCE_DIRECTORY}")
-  message(FATAL_ERROR "error: extract of ${CTEST_SOURCE_NAME} failed")
-endif(NOT rv EQUAL 0)
- 
-#-----------------------------------------------------------------------------
-## Clear the build directory
-## --------------------------
-set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE)
-file(MAKE_DIRECTORY "${CTEST_BINARY_DIRECTORY}")
-ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
-
-# Use multiple CPU cores to build
-include(ProcessorCount)
-ProcessorCount(N)
-if(NOT N EQUAL 0)
-  if(NOT WIN32)
-    set(CTEST_BUILD_FLAGS -j${N})
-  endif(NOT WIN32)
-  set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N})
-endif()
-set (CTEST_CONFIGURE_COMMAND
-    "${CTEST_CMAKE_COMMAND} -C \"${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\""
-)
- 
-#-----------------------------------------------------------------------------
-## -- set output to english
-set($ENV{LC_MESSAGES}  "en_EN")
- 
-#-----------------------------------------------------------------------------
-  ## NORMAL process
-  ## --------------------------
-  CTEST_START (Experimental)
-  CTEST_CONFIGURE (BUILD "${CTEST_BINARY_DIRECTORY}")
-  CTEST_READ_CUSTOM_FILES ("${CTEST_BINARY_DIRECTORY}")
-  CTEST_BUILD (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND)
-  CTEST_TEST (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args} RETURN_VALUE res)
-  if(res GREATER 0)
-    message (FATAL_ERROR "tests FAILED")
-  endif(res GREATER 0)
-#-----------------------------------------------------------------------------
-############################################################################################################## 
+cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
+###############################################################################################################
+# This script will build and run the examples from a compressed file
+# Execute from a command line:
+#     ctest -S HDF518_Examples.cmake,HDF5Examples-0.1.1-Source -C Release -O test.log
+###############################################################################################################
+
+set(INSTALLDIR "@CMAKE_INSTALL_PREFIX@")
+set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@")
+set(STATICLIBRARIES "@H5_ENABLE_STATIC_LIB@")
+set(CTEST_SOURCE_NAME ${CTEST_SCRIPT_ARG})
+set(CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY})
+set(CTEST_BUILD_CONFIGURATION "Release")
+#set(NO_MAC_FORTRAN "true")
+#set(BUILD_OPTIONS ""${BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=OFF")
+#set(BUILD_OPTIONS "${BUILD_OPTIONS} -DHDF_ENABLE_F2003:BOOL=ON)
+
+###############################################################################################################
+#     Adjust the following SET Commands as needed
+###############################################################################################################
+if(WIN32)
+  if(STATICLIBRARIES)
+    set(BUILD_OPTIONS "${BUILD_OPTIONS} -DUSE_SHARED_LIBS:BOOL=OFF")
+  endif(STATICLIBRARIES)
+  set(ENV{HDF5_DIR} "${INSTALLDIR}/cmake/hdf5")
+  set(CTEST_BINARY_NAME ${CTEST_SOURCE_NAME}\\build)
+  set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\${CTEST_SOURCE_NAME}")
+  set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\${CTEST_BINARY_NAME}")
+else(WIN32)
+  if(STATICLIBRARIES)
+    set(BUILD_OPTIONS "${BUILD_OPTIONS} -DUSE_SHARED_LIBS:BOOL=OFF -DCMAKE_ANSI_CFLAGS:STRING=-fPIC")
+  endif(STATICLIBRARIES)
+  set(ENV{HDF5_DIR} "${INSTALLDIR}/share/cmake/hdf5")
+  set(ENV{LD_LIBRARY_PATH} "${INSTALLDIR}/lib")
+  set(CTEST_BINARY_NAME ${CTEST_SOURCE_NAME}/build)
+  set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_SOURCE_NAME}")
+  set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}")
+endif(WIN32)
+
+###############################################################################################################
+# For any comments please contact cdashhelp at hdfgroup.org
+#
+###############################################################################################################
+ 
+#-----------------------------------------------------------------------------
+# MAC machines need special option
+#-----------------------------------------------------------------------------
+if(APPLE)
+  # Compiler choice
+  execute_process(COMMAND xcrun --find cc OUTPUT_VARIABLE XCODE_CC OUTPUT_STRIP_TRAILING_WHITESPACE)
+  execute_process(COMMAND xcrun --find c++ OUTPUT_VARIABLE XCODE_CXX OUTPUT_STRIP_TRAILING_WHITESPACE)
+  set(ENV{CC} "${XCODE_CC}")
+  set(ENV{CXX} "${XCODE_CXX}")
+  if(NOT NO_MAC_FORTRAN)
+    # Shared fortran is not supported, build static 
+    set(BUILD_OPTIONS "${BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_ANSI_CFLAGS:STRING=-fPIC")
+  else(NOT NO_MAC_FORTRAN)
+    set(BUILD_OPTIONS "${BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF")
+  endif(NOT NO_MAC_FORTRAN)
+  set(BUILD_OPTIONS "${BUILD_OPTIONS} -DCTEST_USE_LAUNCHERS:BOOL=ON -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF")
+endif(APPLE)
+ 
+#-----------------------------------------------------------------------------
+set(CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"")
+## Uncompress source in tar file provided
+## --------------------------
+if(WIN32)
+  set(CTEST_7Z_COMMAND "C:/Program Files/7-Zip/7z.exe")
+  message("extracting... [${CTEST_7Z_COMMAND} x ${CTEST_SOURCE_NAME}.zip]")
+  execute_process(COMMAND ${CTEST_7Z_COMMAND} x ${CTEST_SOURCE_NAME}.zip RESULT_VARIABLE rv)
+else(WIN32)
+  message("extracting... [${CTEST_CMAKE_COMMAND} -E tar -xvf ${CTEST_SOURCE_NAME}.tar.gz]")
+  execute_process(COMMAND tar -xvf ${CTEST_SOURCE_NAME}.tar.gz RESULT_VARIABLE rv)
+endif(WIN32)
+ 
+if(NOT rv EQUAL 0)
+  message("extracting... [error-(${rv}) clean up]")
+  file(REMOVE_RECURSE "${CTEST_SOURCE_DIRECTORY}")
+  message(FATAL_ERROR "error: extract of ${CTEST_SOURCE_NAME} failed")
+endif(NOT rv EQUAL 0)
+ 
+#-----------------------------------------------------------------------------
+## Clear the build directory
+## --------------------------
+set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE)
+file(MAKE_DIRECTORY "${CTEST_BINARY_DIRECTORY}")
+ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
+
+# Use multiple CPU cores to build
+include(ProcessorCount)
+ProcessorCount(N)
+if(NOT N EQUAL 0)
+  if(NOT WIN32)
+    set(CTEST_BUILD_FLAGS -j${N})
+  endif(NOT WIN32)
+  set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N})
+endif()
+set (CTEST_CONFIGURE_COMMAND
+    "${CTEST_CMAKE_COMMAND} -C \"${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\""
+)
+ 
+#-----------------------------------------------------------------------------
+## -- set output to english
+set($ENV{LC_MESSAGES}  "en_EN")
+ 
+#-----------------------------------------------------------------------------
+  ## NORMAL process
+  ## --------------------------
+  CTEST_START (Experimental)
+  CTEST_CONFIGURE (BUILD "${CTEST_BINARY_DIRECTORY}")
+  CTEST_READ_CUSTOM_FILES ("${CTEST_BINARY_DIRECTORY}")
+  CTEST_BUILD (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND)
+  CTEST_TEST (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args} RETURN_VALUE res)
+  if(res GREATER 0)
+    message (FATAL_ERROR "tests FAILED")
+  endif(res GREATER 0)
+#-----------------------------------------------------------------------------
+############################################################################################################## 
 message("DONE")
\ No newline at end of file
diff --git a/config/cmake/HDF5Macros.cmake b/config/cmake/HDF5Macros.cmake
index 3e6ee18..d0379db 100644
--- a/config/cmake/HDF5Macros.cmake
+++ b/config/cmake/HDF5Macros.cmake
@@ -1,31 +1,31 @@
 #-------------------------------------------------------------------------------
 MACRO (H5_SET_LIB_OPTIONS libtarget libname libtype)
-  SET (LIB_OUT_NAME "${libname}")
-  IF (${libtype} MATCHES "SHARED")
-    IF (WIN32)
-      SET (LIBHDF_VERSION ${HDF5_PACKAGE_VERSION_MAJOR})
-    ELSE (WIN32)
-      SET (LIBHDF_VERSION ${HDF5_PACKAGE_VERSION})
-    ENDIF (WIN32)
-    SET_TARGET_PROPERTIES (${libtarget} PROPERTIES VERSION ${LIBHDF_VERSION})
-    IF (WIN32)
-        SET (${LIB_OUT_NAME} "${LIB_OUT_NAME}-${HDF5_PACKAGE_SOVERSION}")
-    ELSE (WIN32)
-        SET_TARGET_PROPERTIES (${libtarget} PROPERTIES SOVERSION ${HDF5_PACKAGE_SOVERSION})
-    ENDIF (WIN32)
-  ENDIF (${libtype} MATCHES "SHARED")
+  set (LIB_OUT_NAME "${libname}")
+  if (${libtype} MATCHES "SHARED")
+    if (WIN32)
+      set (LIBHDF_VERSION ${HDF5_PACKAGE_VERSION_MAJOR})
+    else (WIN32)
+      set (LIBHDF_VERSION ${HDF5_PACKAGE_VERSION})
+    endif (WIN32)
+    set_target_properties (${libtarget} PROPERTIES VERSION ${LIBHDF_VERSION})
+    if (WIN32)
+        set (${LIB_OUT_NAME} "${LIB_OUT_NAME}-${HDF5_PACKAGE_SOVERSION}")
+    else (WIN32)
+        set_target_properties (${libtarget} PROPERTIES SOVERSION ${HDF5_PACKAGE_SOVERSION})
+    endif (WIN32)
+  endif (${libtype} MATCHES "SHARED")
   HDF_SET_LIB_OPTIONS (${libtarget} ${LIB_OUT_NAME} ${libtype})
 
   #-- Apple Specific install_name for libraries
-  IF (APPLE)
-    OPTION (HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF)
-    IF (HDF5_BUILD_WITH_INSTALL_NAME)
+  if (APPLE)
+    option (HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF)
+    if (HDF5_BUILD_WITH_INSTALL_NAME)
       SET_TARGET_PROPERTIES(${libtarget} PROPERTIES
           LINK_FLAGS "-current_version ${HDF5_PACKAGE_VERSION} -compatibility_version ${HDF5_PACKAGE_VERSION}"
           INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib"
           BUILD_WITH_INSTALL_RPATH ${HDF5_BUILD_WITH_INSTALL_NAME}
       )
-    ENDIF (HDF5_BUILD_WITH_INSTALL_NAME)
-  ENDIF (APPLE)
+    endif (HDF5_BUILD_WITH_INSTALL_NAME)
+  endif (APPLE)
 
 ENDMACRO (H5_SET_LIB_OPTIONS)
diff --git a/config/cmake/HDF5Tests.c b/config/cmake/HDF5Tests.c
index 2f69ec8..355c06f 100644
--- a/config/cmake/HDF5Tests.c
+++ b/config/cmake/HDF5Tests.c
@@ -377,10 +377,10 @@ int main(int argc, char **argv)
 #endif
 
 #ifdef GETTIMEOFDAY_GIVES_TZ
+#include <time.h>
 #ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
-#include <time.h>
 int main(void)
 {
  struct timeval tv;
@@ -437,17 +437,6 @@ main ()
 
 #endif
 
-#ifdef HAVE_GPFS
-
-#include <gpfs.h>
-int main ()
-{
-    int fd = 0; 
-    gpfs_fcntl(fd, (void *)0);
-}
-
-#endif /* HAVE_GPFS */
-
 #ifdef HAVE_IOEO
 
 #include <windows.h>
diff --git a/config/cmake/HDF5UseFortran.cmake b/config/cmake/HDF5UseFortran.cmake
index 8fa76b8..e65ea21 100644
--- a/config/cmake/HDF5UseFortran.cmake
+++ b/config/cmake/HDF5UseFortran.cmake
@@ -7,7 +7,7 @@ ENABLE_LANGUAGE (Fortran)
 #-----------------------------------------------------------------------------
 # Detect name mangling convention used between Fortran and C
 #-----------------------------------------------------------------------------
-INCLUDE (FortranCInterface)
+include (FortranCInterface)
 FortranCInterface_HEADER (
     ${CMAKE_BINARY_DIR}/FCMangle.h
     MACRO_NAMESPACE "H5_FC_"
@@ -15,28 +15,28 @@ FortranCInterface_HEADER (
     SYMBOLS mysub mymod:my_sub
 )
 
-FILE (STRINGS ${CMAKE_BINARY_DIR}/FCMangle.h CONTENTS REGEX "H5_FC_GLOBAL\\(.*,.*\\) +(.*)")
-STRING (REGEX MATCH "H5_FC_GLOBAL\\(.*,.*\\) +(.*)" RESULT ${CONTENTS})
-SET (H5_FC_FUNC "H5_FC_FUNC(name,NAME) ${CMAKE_MATCH_1}")
+file (STRINGS ${CMAKE_BINARY_DIR}/FCMangle.h CONTENTS REGEX "H5_FC_GLOBAL\\(.*,.*\\) +(.*)")
+string (REGEX MATCH "H5_FC_GLOBAL\\(.*,.*\\) +(.*)" RESULT ${CONTENTS})
+set (H5_FC_FUNC "H5_FC_FUNC(name,NAME) ${CMAKE_MATCH_1}")
 
-FILE (STRINGS ${CMAKE_BINARY_DIR}/FCMangle.h CONTENTS REGEX "H5_FC_GLOBAL_\\(.*,.*\\) +(.*)")
-STRING (REGEX MATCH "H5_FC_GLOBAL_\\(.*,.*\\) +(.*)" RESULT ${CONTENTS})
-SET (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) ${CMAKE_MATCH_1}")
+file (STRINGS ${CMAKE_BINARY_DIR}/FCMangle.h CONTENTS REGEX "H5_FC_GLOBAL_\\(.*,.*\\) +(.*)")
+string (REGEX MATCH "H5_FC_GLOBAL_\\(.*,.*\\) +(.*)" RESULT ${CONTENTS})
+set (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) ${CMAKE_MATCH_1}")
 
 #-----------------------------------------------------------------------------
 # The provided CMake Fortran macros don't provide a general check function
 # so this one is used for a sizeof test.
 #-----------------------------------------------------------------------------
 MACRO (CHECK_FORTRAN_FEATURE FUNCTION CODE VARIABLE)
-  IF (NOT DEFINED ${VARIABLE})
-    MESSAGE (STATUS "Testing Fortran ${FUNCTION}")
-    IF (CMAKE_REQUIRED_LIBRARIES)
-      SET (CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
+  if (NOT DEFINED ${VARIABLE})
+    message (STATUS "Testing Fortran ${FUNCTION}")
+    if (CMAKE_REQUIRED_LIBRARIES)
+      set (CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
           "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-    ELSE (CMAKE_REQUIRED_LIBRARIES)
-      SET (CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
-    ENDIF (CMAKE_REQUIRED_LIBRARIES)
-    FILE (WRITE
+    else (CMAKE_REQUIRED_LIBRARIES)
+      set (CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
+    endif (CMAKE_REQUIRED_LIBRARIES)
+    file (WRITE
         ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
         "${CODE}"
     )
@@ -47,25 +47,25 @@ MACRO (CHECK_FORTRAN_FEATURE FUNCTION CODE VARIABLE)
         OUTPUT_VARIABLE OUTPUT
     )
 
-#    MESSAGE ( "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ")
-#    MESSAGE ( "Test result ${OUTPUT}")
-#    MESSAGE ( "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ")
+#    message ( "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ")
+#    message ( "Test result ${OUTPUT}")
+#    message ( "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ")
 
-    IF (${VARIABLE})
-      SET (${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
-      MESSAGE (STATUS "Testing Fortran ${FUNCTION} - OK")
-      FILE (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    if (${VARIABLE})
+      set (${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
+      message (STATUS "Testing Fortran ${FUNCTION} - OK")
+      file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
           "Determining if the Fortran ${FUNCTION} exists passed with the following output:\n"
           "${OUTPUT}\n\n"
       )
-    ELSE (${VARIABLE})
-      MESSAGE (STATUS "Testing Fortran ${FUNCTION} - Fail")
-      SET (${VARIABLE} "" CACHE INTERNAL "Have Fortran function ${FUNCTION}")
-      FILE (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+    else (${VARIABLE})
+      message (STATUS "Testing Fortran ${FUNCTION} - Fail")
+      set (${VARIABLE} "" CACHE INTERNAL "Have Fortran function ${FUNCTION}")
+      file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
           "Determining if the Fortran ${FUNCTION} exists failed with the following output:\n"
           "${OUTPUT}\n\n")
-    ENDIF (${VARIABLE})
-  ENDIF (NOT DEFINED ${VARIABLE})
+    endif (${VARIABLE})
+  endif (NOT DEFINED ${VARIABLE})
 ENDMACRO (CHECK_FORTRAN_FEATURE)
 
 #-----------------------------------------------------------------------------
@@ -131,9 +131,9 @@ CHECK_FORTRAN_FEATURE(iso_c_binding
 #-----------------------------------------------------------------------------
 # Add debug information (intel Fortran : JB)
 #-----------------------------------------------------------------------------
-IF (CMAKE_Fortran_COMPILER MATCHES ifort)
-    IF (WIN32)
-        SET (CMAKE_Fortran_FLAGS_DEBUG "/debug:full /dbglibs " CACHE "flags" STRING FORCE)
-        SET (CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG" CACHE "flags" STRING FORCE)
-    ENDIF (WIN32)
-ENDIF (CMAKE_Fortran_COMPILER MATCHES ifort)
+if (CMAKE_Fortran_COMPILER MATCHES ifort)
+    if (WIN32)
+        set (CMAKE_Fortran_FLAGS_DEBUG "/debug:full /dbglibs " CACHE "flags" STRING FORCE)
+        set (CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG" CACHE "flags" STRING FORCE)
+    endif (WIN32)
+endif (CMAKE_Fortran_COMPILER MATCHES ifort)
diff --git a/config/cmake/HDFLibMacros.cmake b/config/cmake/HDFLibMacros.cmake
index 57e6be7..505a9d5 100644
--- a/config/cmake/HDFLibMacros.cmake
+++ b/config/cmake/HDFLibMacros.cmake
@@ -3,7 +3,7 @@ MACRO (EXTERNAL_JPEG_LIBRARY compress_type libtype jpeg_pic)
   # May need to build JPEG with PIC on x64 machines with gcc
   # Need to use CMAKE_ANSI_CFLAGS define so that compiler test works
 
-  IF (${compress_type} MATCHES "SVN")
+  if (${compress_type} MATCHES "SVN")
     EXTERNALPROJECT_ADD (JPEG
         SVN_REPOSITORY ${JPEG_URL}
         # [SVN_REVISION rev] 
@@ -19,7 +19,7 @@ MACRO (EXTERNAL_JPEG_LIBRARY compress_type libtype jpeg_pic)
             -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
             -DCMAKE_ANSI_CFLAGS:STRING=${jpeg_pic}
     ) 
-  ELSEIF (${compress_type} MATCHES "TGZ")
+  elseif (${compress_type} MATCHES "TGZ")
     EXTERNALPROJECT_ADD (JPEG
         URL ${JPEG_URL}
         URL_MD5 ""
@@ -35,72 +35,72 @@ MACRO (EXTERNAL_JPEG_LIBRARY compress_type libtype jpeg_pic)
             -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
             -DCMAKE_ANSI_CFLAGS:STRING=${jpeg_pic}
     ) 
-  ENDIF (${compress_type} MATCHES "SVN")
+  endif (${compress_type} MATCHES "SVN")
   EXTERNALPROJECT_GET_PROPERTY (JPEG BINARY_DIR SOURCE_DIR) 
 
-  IF (${CMAKE_BUILD_TYPE} MATCHES "Debug")
-    IF (WIN32)
-      SET (JPEG_LIB_NAME "jpeg_D")
-    ELSE (WIN32)
-      SET (JPEG_LIB_NAME "jpeg_debug")
-    ENDIF (WIN32)
-  ELSE (${CMAKE_BUILD_TYPE} MATCHES "Debug")
-    SET (JPEG_LIB_NAME "jpeg")
-  ENDIF (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+  if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+    if (WIN32)
+      set (JPEG_LIB_NAME "jpeg_D")
+    else (WIN32)
+      set (JPEG_LIB_NAME "jpeg_debug")
+    endif (WIN32)
+  else (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+    set (JPEG_LIB_NAME "jpeg")
+  endif (${CMAKE_BUILD_TYPE} MATCHES "Debug")
 
   # Create imported target szip
   ADD_LIBRARY(jpeg ${libtype} IMPORTED)
   ADD_DEPENDENCIES (jpeg JPEG)
 
-  IF (${libtype} MATCHES "SHARED")
-    IF (WIN32)
-      IF (MINGW)
+  if (${libtype} MATCHES "SHARED")
+    if (WIN32)
+      if (MINGW)
         SET_TARGET_PROPERTIES(jpeg PROPERTIES
             IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${JPEG_LIB_NAME}.lib"
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${JPEG_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
-      ELSE (MINGW)
+      else (MINGW)
         SET_TARGET_PROPERTIES(jpeg PROPERTIES
             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)
-      IF (CYGWIN)
+      endif (MINGW)
+    else (WIN32)
+      if (CYGWIN)
         SET_TARGET_PROPERTIES(jpeg PROPERTIES
             IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_IMPORT_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_IMPORT_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
-      ELSE (CYGWIN)
+      else (CYGWIN)
         SET_TARGET_PROPERTIES(jpeg PROPERTIES
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_SHARED_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
             IMPORTED_SONAME "${CMAKE_SHARED_LIBRARY_PREFIX}${JPEG_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${JPEG_VERSION_STRING}"
             SOVERSION "${JPEG_VERSION_STRING}"
         )
-      ENDIF (CYGWIN)
-    ENDIF (WIN32)
-  ELSE (${libtype} MATCHES "SHARED")
-    IF (WIN32 AND NOT MINGW)
+      endif (CYGWIN)
+    endif (WIN32)
+  else (${libtype} MATCHES "SHARED")
+    if (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(jpeg PROPERTIES
           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)
+    else (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(jpeg PROPERTIES
           IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${JPEG_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
           IMPORTED_LINK_INTERFACE_LANGUAGES "C"
       )
-    ENDIF (WIN32 AND NOT MINGW)
-  ENDIF (${libtype} MATCHES "SHARED")
+    endif (WIN32 AND NOT MINGW)
+  endif (${libtype} MATCHES "SHARED")
 
-#  INCLUDE (${BINARY_DIR}/JPEG-targets.cmake)  
-  SET (JPEG_LIBRARY "jpeg")
+#  include (${BINARY_DIR}/JPEG-targets.cmake)  
+  set (JPEG_LIBRARY "jpeg")
   
-  SET (JPEG_INCLUDE_DIR_GEN "${BINARY_DIR}")
-  SET (JPEG_INCLUDE_DIR "${SOURCE_DIR}/src")
-  SET (JPEG_FOUND 1)
-  SET (JPEG_LIBRARIES ${JPEG_LIBRARY})
-  SET (JPEG_INCLUDE_DIRS ${JPEG_INCLUDE_DIR_GEN} ${JPEG_INCLUDE_DIR})
+  set (JPEG_INCLUDE_DIR_GEN "${BINARY_DIR}")
+  set (JPEG_INCLUDE_DIR "${SOURCE_DIR}/src")
+  set (JPEG_FOUND 1)
+  set (JPEG_LIBRARIES ${JPEG_LIBRARY})
+  set (JPEG_INCLUDE_DIRS ${JPEG_INCLUDE_DIR_GEN} ${JPEG_INCLUDE_DIR})
 ENDMACRO (EXTERNAL_JPEG_LIBRARY)
 
 #-------------------------------------------------------------------------------
@@ -109,15 +109,15 @@ MACRO (PACKAGE_JPEG_LIBRARY compress_type)
       COMMAND ${CMAKE_COMMAND} -E copy_if_different ${JPEG_INCLUDE_DIR_GEN}/jconfig.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/
       COMMENT "Copying ${JPEG_INCLUDE_DIR_GEN}/jconfig.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/"
   )
-  SET (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/jconfig.h)
-  IF (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
+  set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/jconfig.h)
+  if (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
     ADD_DEPENDENCIES (JPEG-GenHeader-Copy JPEG)
-  ENDIF (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
+  endif (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
 ENDMACRO (PACKAGE_JPEG_LIBRARY)
 
 #-------------------------------------------------------------------------------
 MACRO (EXTERNAL_SZIP_LIBRARY compress_type libtype encoding)
-  IF (${compress_type} MATCHES "SVN")
+  if (${compress_type} MATCHES "SVN")
     EXTERNALPROJECT_ADD (SZIP
         SVN_REPOSITORY ${SZIP_URL}
         # [SVN_REVISION rev] 
@@ -134,7 +134,7 @@ MACRO (EXTERNAL_SZIP_LIBRARY compress_type libtype encoding)
             -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS}
             -DSZIP_ENABLE_ENCODING:BOOL=${encoding}
     ) 
-  ELSEIF (${compress_type} MATCHES "TGZ")
+  elseif (${compress_type} MATCHES "TGZ")
     EXTERNALPROJECT_ADD (SZIP
         URL ${SZIP_URL}
         URL_MD5 ""
@@ -151,72 +151,72 @@ MACRO (EXTERNAL_SZIP_LIBRARY compress_type libtype encoding)
             -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS}
             -DSZIP_ENABLE_ENCODING:BOOL=${encoding}
     ) 
-  ENDIF (${compress_type} MATCHES "SVN")
+  endif (${compress_type} MATCHES "SVN")
   EXTERNALPROJECT_GET_PROPERTY (SZIP BINARY_DIR SOURCE_DIR) 
 
-  IF (${CMAKE_BUILD_TYPE} MATCHES "Debug")
-    IF (WIN32)
-      SET (SZIP_LIB_NAME "szip_D")
-    ELSE (WIN32)
-      SET (SZIP_LIB_NAME "szip_debug")
-    ENDIF (WIN32)
-  ELSE (${CMAKE_BUILD_TYPE} MATCHES "Debug")
-    SET (SZIP_LIB_NAME "szip")
-  ENDIF (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+  if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+    if (WIN32)
+      set (SZIP_LIB_NAME "szip_D")
+    else (WIN32)
+      set (SZIP_LIB_NAME "szip_debug")
+    endif (WIN32)
+  else (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+    set (SZIP_LIB_NAME "szip")
+  endif (${CMAKE_BUILD_TYPE} MATCHES "Debug")
 
   # Create imported target szip
   ADD_LIBRARY(szip ${libtype} IMPORTED)
   ADD_DEPENDENCIES (szip SZIP)
 
-  IF (${libtype} MATCHES "SHARED")
-    IF (WIN32)
-      IF (MINGW)
+  if (${libtype} MATCHES "SHARED")
+    if (WIN32)
+      if (MINGW)
         SET_TARGET_PROPERTIES(szip PROPERTIES
             IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${SZIP_LIB_NAME}.lib"
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${SZIP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
-      ELSE (MINGW)
+      else (MINGW)
         SET_TARGET_PROPERTIES(szip PROPERTIES
             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)
-      IF (CYGWIN)
+      endif (MINGW)
+    else (WIN32)
+      if (CYGWIN)
         SET_TARGET_PROPERTIES(szip PROPERTIES
             IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_IMPORT_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_IMPORT_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
-      ELSE (CYGWIN)
+      else (CYGWIN)
         SET_TARGET_PROPERTIES(szip PROPERTIES
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_SHARED_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
             IMPORTED_SONAME "${CMAKE_SHARED_LIBRARY_PREFIX}${SZIP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${SZIP_VERSION_STRING}"
             SOVERSION "${SZIP_VERSION_STRING}"
         )
-      ENDIF (CYGWIN)
-    ENDIF (WIN32)
-  ELSE (${libtype} MATCHES "SHARED")
-    IF (WIN32 AND NOT MINGW)
+      endif (CYGWIN)
+    endif (WIN32)
+  else (${libtype} MATCHES "SHARED")
+    if (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(szip PROPERTIES
           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)
+    else (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(szip PROPERTIES
           IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${SZIP_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
           IMPORTED_LINK_INTERFACE_LANGUAGES "C"
       )
-    ENDIF (WIN32 AND NOT MINGW)
-  ENDIF (${libtype} MATCHES "SHARED")
+    endif (WIN32 AND NOT MINGW)
+  endif (${libtype} MATCHES "SHARED")
 
-#  INCLUDE (${BINARY_DIR}/SZIP-targets.cmake)  
-  SET (SZIP_LIBRARY "szip")
+#  include (${BINARY_DIR}/SZIP-targets.cmake)  
+  set (SZIP_LIBRARY "szip")
 
-  SET (SZIP_INCLUDE_DIR_GEN "${BINARY_DIR}")
-  SET (SZIP_INCLUDE_DIR "${SOURCE_DIR}/src")
-  SET (SZIP_FOUND 1)
-  SET (SZIP_LIBRARIES ${SZIP_LIBRARY})
-  SET (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR_GEN} ${SZIP_INCLUDE_DIR})
+  set (SZIP_INCLUDE_DIR_GEN "${BINARY_DIR}")
+  set (SZIP_INCLUDE_DIR "${SOURCE_DIR}/src")
+  set (SZIP_FOUND 1)
+  set (SZIP_LIBRARIES ${SZIP_LIBRARY})
+  set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR_GEN} ${SZIP_INCLUDE_DIR})
 ENDMACRO (EXTERNAL_SZIP_LIBRARY)
 
 #-------------------------------------------------------------------------------
@@ -225,15 +225,15 @@ MACRO (PACKAGE_SZIP_LIBRARY compress_type)
       COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SZIP_INCLUDE_DIR_GEN}/SZconfig.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/
       COMMENT "Copying ${SZIP_INCLUDE_DIR_GEN}/SZconfig.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/"
   )
-  SET (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/SZconfig.h)
-  IF (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
+  set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/SZconfig.h)
+  if (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
     ADD_DEPENDENCIES (SZIP-GenHeader-Copy SZIP)
-  ENDIF (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
+  endif (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
 ENDMACRO (PACKAGE_SZIP_LIBRARY)
 
 #-------------------------------------------------------------------------------
 MACRO (EXTERNAL_ZLIB_LIBRARY compress_type libtype)
-  IF (${compress_type} MATCHES "SVN")
+  if (${compress_type} MATCHES "SVN")
     EXTERNALPROJECT_ADD (ZLIB
         SVN_REPOSITORY ${ZLIB_URL}
         # [SVN_REVISION rev] 
@@ -249,7 +249,7 @@ MACRO (EXTERNAL_ZLIB_LIBRARY compress_type libtype)
             -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
             -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS}
     ) 
-  ELSEIF (${compress_type} MATCHES "TGZ")
+  elseif (${compress_type} MATCHES "TGZ")
     EXTERNALPROJECT_ADD (ZLIB
         URL ${ZLIB_URL}
         URL_MD5 ""
@@ -265,76 +265,76 @@ MACRO (EXTERNAL_ZLIB_LIBRARY compress_type libtype)
             -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
             -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS}
     ) 
-  ENDIF (${compress_type} MATCHES "SVN")
+  endif (${compress_type} MATCHES "SVN")
   EXTERNALPROJECT_GET_PROPERTY (ZLIB BINARY_DIR SOURCE_DIR) 
 
-  IF (${CMAKE_BUILD_TYPE} MATCHES "Debug")
-    IF (WIN32)
-      SET (ZLIB_LIB_NAME "zlib_D")
-    ELSE (WIN32)
-      SET (ZLIB_LIB_NAME "z_debug")
-    ENDIF (WIN32)
-  ELSE (${CMAKE_BUILD_TYPE} MATCHES "Debug")
-    IF (WIN32)
-      SET (ZLIB_LIB_NAME "zlib")
-    ELSE (WIN32)
-      SET (ZLIB_LIB_NAME "z")
-    ENDIF (WIN32)
-  ENDIF (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+  if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+    if (WIN32)
+      set (ZLIB_LIB_NAME "zlib_D")
+    else (WIN32)
+      set (ZLIB_LIB_NAME "z_debug")
+    endif (WIN32)
+  else (${CMAKE_BUILD_TYPE} MATCHES "Debug")
+    if (WIN32)
+      set (ZLIB_LIB_NAME "zlib")
+    else (WIN32)
+      set (ZLIB_LIB_NAME "z")
+    endif (WIN32)
+  endif (${CMAKE_BUILD_TYPE} MATCHES "Debug")
 
   # Create imported target szip
   ADD_LIBRARY(zlib ${libtype} IMPORTED)
   ADD_DEPENDENCIES (zlib ZLIB)
   
-  IF (${libtype} MATCHES "SHARED")
-    IF (WIN32)
-      IF (MINGW)
+  if (${libtype} MATCHES "SHARED")
+    if (WIN32)
+      if (MINGW)
         SET_TARGET_PROPERTIES(zlib PROPERTIES
             IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${ZLIB_LIB_NAME}.lib"
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${ZLIB_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
-      ELSE (MINGW)
+      else (MINGW)
         SET_TARGET_PROPERTIES(zlib PROPERTIES
             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)
-      IF (CYGWIN)
+      endif (MINGW)
+    else (WIN32)
+      if (CYGWIN)
         SET_TARGET_PROPERTIES(zlib PROPERTIES
             IMPORTED_IMPLIB "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_IMPORT_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_IMPORT_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
         )
-      ELSE (CYGWIN)
+      else (CYGWIN)
         SET_TARGET_PROPERTIES(zlib PROPERTIES
             IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_SHARED_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
             IMPORTED_SONAME "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_SHARED_LIBRARY_PREFIX}${ZLIB_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${ZLIB_VERSION_STRING}"
             SOVERSION "${ZLIB_VERSION_STRING}"
         )
-      ENDIF (CYGWIN)
-    ENDIF (WIN32)
-  ELSE (${libtype} MATCHES "SHARED")
-    IF (WIN32 AND NOT MINGW)
+      endif (CYGWIN)
+    endif (WIN32)
+  else (${libtype} MATCHES "SHARED")
+    if (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(zlib PROPERTIES
           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)
+    else (WIN32 AND NOT MINGW)
       SET_TARGET_PROPERTIES(zlib PROPERTIES
           IMPORTED_LOCATION "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${ZLIB_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
           IMPORTED_LINK_INTERFACE_LANGUAGES "C"
       )
-    ENDIF (WIN32 AND NOT MINGW)
-  ENDIF (${libtype} MATCHES "SHARED")
+    endif (WIN32 AND NOT MINGW)
+  endif (${libtype} MATCHES "SHARED")
 
-#  INCLUDE (${BINARY_DIR}/ZLIB-targets.cmake)  
-  SET (ZLIB_LIBRARY "zlib")
+#  include (${BINARY_DIR}/ZLIB-targets.cmake)  
+  set (ZLIB_LIBRARY "zlib")
   
-  SET (ZLIB_INCLUDE_DIR_GEN "${BINARY_DIR}")
-  SET (ZLIB_INCLUDE_DIR "${SOURCE_DIR}")
-  SET (ZLIB_FOUND 1)
-  SET (ZLIB_LIBRARIES ${ZLIB_LIBRARY})
-  SET (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR_GEN} ${ZLIB_INCLUDE_DIR})
+  set (ZLIB_INCLUDE_DIR_GEN "${BINARY_DIR}")
+  set (ZLIB_INCLUDE_DIR "${SOURCE_DIR}")
+  set (ZLIB_FOUND 1)
+  set (ZLIB_LIBRARIES ${ZLIB_LIBRARY})
+  set (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR_GEN} ${ZLIB_INCLUDE_DIR})
 ENDMACRO (EXTERNAL_ZLIB_LIBRARY)
 
 #-------------------------------------------------------------------------------
@@ -343,8 +343,8 @@ MACRO (PACKAGE_ZLIB_LIBRARY compress_type)
       COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ZLIB_INCLUDE_DIR_GEN}/zconf.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/
       COMMENT "Copying ${ZLIB_INCLUDE_DIR_GEN}/zconf.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/"
   )
-  SET (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/zconf.h)
-  IF (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
+  set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/zconf.h)
+  if (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
     ADD_DEPENDENCIES (ZLIB-GenHeader-Copy ZLIB)
-  ENDIF (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
+  endif (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ")
 ENDMACRO (PACKAGE_ZLIB_LIBRARY)
diff --git a/config/cmake/HDFMacros.cmake b/config/cmake/HDFMacros.cmake
index b0788f2..56fdf83 100644
--- a/config/cmake/HDFMacros.cmake
+++ b/config/cmake/HDFMacros.cmake
@@ -1,52 +1,52 @@
 #-------------------------------------------------------------------------------
 MACRO (SET_GLOBAL_VARIABLE name value)
-  SET (${name} ${value} CACHE INTERNAL "Used to pass variables between directories" FORCE)
+  set (${name} ${value} CACHE INTERNAL "Used to pass variables between directories" FORCE)
 ENDMACRO (SET_GLOBAL_VARIABLE)
 
 #-------------------------------------------------------------------------------
 MACRO (IDE_GENERATED_PROPERTIES SOURCE_PATH HEADERS SOURCES)
   #set(source_group_path "Source/AIM/${NAME}")
-  STRING (REPLACE "/" "\\\\" source_group_path ${SOURCE_PATH})
+  string (REPLACE "/" "\\\\" source_group_path ${SOURCE_PATH})
   source_group (${source_group_path} FILES ${HEADERS} ${SOURCES})
 
   #-- The following is needed if we ever start to use OS X Frameworks but only
   #--  works on CMake 2.6 and greater
-  #SET_PROPERTY (SOURCE ${HEADERS}
+  #set_property (SOURCE ${HEADERS}
   #       PROPERTY MACOSX_PACKAGE_LOCATION Headers/${NAME}
   #)
 ENDMACRO (IDE_GENERATED_PROPERTIES)
 
 #-------------------------------------------------------------------------------
 MACRO (IDE_SOURCE_PROPERTIES SOURCE_PATH HEADERS SOURCES)
-  #  INSTALL (FILES ${HEADERS}
+  #  install (FILES ${HEADERS}
   #       DESTINATION include/R3D/${NAME}
   #       COMPONENT Headers       
   #  )
 
-  STRING (REPLACE "/" "\\\\" source_group_path ${SOURCE_PATH}  )
+  string (REPLACE "/" "\\\\" source_group_path ${SOURCE_PATH}  )
   source_group (${source_group_path} FILES ${HEADERS} ${SOURCES})
 
   #-- The following is needed if we ever start to use OS X Frameworks but only
   #--  works on CMake 2.6 and greater
-  #SET_PROPERTY (SOURCE ${HEADERS}
+  #set_property (SOURCE ${HEADERS}
   #       PROPERTY MACOSX_PACKAGE_LOCATION Headers/${NAME}
   #)
 ENDMACRO (IDE_SOURCE_PROPERTIES)
 
 #-------------------------------------------------------------------------------
 MACRO (TARGET_NAMING libtarget libtype)
-  IF (WIN32)
-    IF (${libtype} MATCHES "SHARED")
-      SET_TARGET_PROPERTIES (${libtarget} PROPERTIES OUTPUT_NAME "${libtarget}dll")
-    ENDIF (${libtype} MATCHES "SHARED")
-  ENDIF (WIN32)
+  if (WIN32)
+    if (${libtype} MATCHES "SHARED")
+      set_target_properties (${libtarget} PROPERTIES OUTPUT_NAME "${libtarget}dll")
+    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 (
+  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
@@ -54,15 +54,15 @@ MACRO (INSTALL_TARGET_PDB libtarget targetdestination targetcomponent)
       CONFIGURATIONS RelWithDebInfo
       COMPONENT ${targetcomponent}
   )
-  ENDIF (WIN32 AND MSVC)
+  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 (
+  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
@@ -70,37 +70,37 @@ MACRO (INSTALL_PROGRAM_PDB progtarget targetdestination targetcomponent)
       CONFIGURATIONS RelWithDebInfo
       COMPONENT ${targetcomponent}
   )
-  ENDIF (WIN32 AND MSVC)
+  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")
-    IF (WIN32)
-      SET (LIB_RELEASE_NAME "${libname}")
-      SET (LIB_DEBUG_NAME "${libname}_D")
-    ELSE (WIN32)
-      SET (LIB_RELEASE_NAME "${libname}")
-      SET (LIB_DEBUG_NAME "${libname}_debug")
-    ENDIF (WIN32)
-  ELSE (${libtype} MATCHES "SHARED")
-    IF (WIN32)
-      SET (LIB_RELEASE_NAME "lib${libname}")
-      SET (LIB_DEBUG_NAME "lib${libname}_D")
-    ELSE (WIN32)
+  if (${libtype} MATCHES "SHARED")
+    if (WIN32)
+      set (LIB_RELEASE_NAME "${libname}")
+      set (LIB_DEBUG_NAME "${libname}_D")
+    else (WIN32)
+      set (LIB_RELEASE_NAME "${libname}")
+      set (LIB_DEBUG_NAME "${libname}_debug")
+    endif (WIN32)
+  else (${libtype} MATCHES "SHARED")
+    if (WIN32)
+      set (LIB_RELEASE_NAME "lib${libname}")
+      set (LIB_DEBUG_NAME "lib${libname}_D")
+    else (WIN32)
       # if the generator supports configuration types or if the CMAKE_BUILD_TYPE has a value
-      IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-        SET (LIB_RELEASE_NAME "${libname}")
-        SET (LIB_DEBUG_NAME "${libname}_debug")
-      ELSE (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-        SET (LIB_RELEASE_NAME "lib${libname}")
-        SET (LIB_DEBUG_NAME "lib${libname}_debug")
-      ENDIF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-    ENDIF (WIN32)
-  ENDIF (${libtype} MATCHES "SHARED")
+      if (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+        set (LIB_RELEASE_NAME "${libname}")
+        set (LIB_DEBUG_NAME "${libname}_debug")
+      else (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+        set (LIB_RELEASE_NAME "lib${libname}")
+        set (LIB_DEBUG_NAME "lib${libname}_debug")
+      endif (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+    endif (WIN32)
+  endif (${libtype} MATCHES "SHARED")
   
-  SET_TARGET_PROPERTIES (${libtarget}
+  set_target_properties (${libtarget}
       PROPERTIES
       DEBUG_OUTPUT_NAME          ${LIB_DEBUG_NAME}
       RELEASE_OUTPUT_NAME        ${LIB_RELEASE_NAME}
@@ -109,79 +109,79 @@ MACRO (HDF_SET_LIB_OPTIONS libtarget libname libtype)
   )
   
   #----- Use MSVC Naming conventions for Shared Libraries
-  IF (MINGW AND ${libtype} MATCHES "SHARED")
-    SET_TARGET_PROPERTIES (${libtarget}
+  if (MINGW AND ${libtype} MATCHES "SHARED")
+    set_target_properties (${libtarget}
         PROPERTIES
         IMPORT_SUFFIX ".lib"
         IMPORT_PREFIX ""
         PREFIX ""
     )
-  ENDIF (MINGW AND ${libtype} MATCHES "SHARED")
+  endif (MINGW AND ${libtype} MATCHES "SHARED")
 
 ENDMACRO (HDF_SET_LIB_OPTIONS)
 
 #-------------------------------------------------------------------------------
 MACRO (TARGET_C_PROPERTIES wintarget addcompileflags addlinkflags)
-  IF (MSVC)
+  if (MSVC)
     TARGET_MSVC_PROPERTIES (${wintarget} "${addcompileflags} ${WIN_COMPILE_FLAGS}" "${addlinkflags} ${WIN_LINK_FLAGS}")
-  ELSE (MSVC)
-    IF (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${wintarget}
+  else (MSVC)
+    if (BUILD_SHARED_LIBS)
+      set_target_properties (${wintarget}
           PROPERTIES
               COMPILE_FLAGS "${addcompileflags}"
               LINK_FLAGS "${addlinkflags}"
       ) 
-    ELSE (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${wintarget}
+    else (BUILD_SHARED_LIBS)
+      set_target_properties (${wintarget}
           PROPERTIES
               COMPILE_FLAGS "${addcompileflags}"
               LINK_FLAGS "${addlinkflags}"
       ) 
-    ENDIF (BUILD_SHARED_LIBS)
-  ENDIF (MSVC)
+    endif (BUILD_SHARED_LIBS)
+  endif (MSVC)
 ENDMACRO (TARGET_C_PROPERTIES)
 
 #-------------------------------------------------------------------------------
 MACRO (TARGET_MSVC_PROPERTIES wintarget addcompileflags addlinkflags)
-  IF (MSVC)
-    IF (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${wintarget}
+  if (MSVC)
+    if (BUILD_SHARED_LIBS)
+      set_target_properties (${wintarget}
           PROPERTIES
               COMPILE_FLAGS "${addcompileflags}"
               LINK_FLAGS "${addlinkflags}"
       ) 
-    ELSE (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${wintarget}
+    else (BUILD_SHARED_LIBS)
+      set_target_properties (${wintarget}
           PROPERTIES
               COMPILE_FLAGS "${addcompileflags}"
               LINK_FLAGS "${addlinkflags}"
       ) 
-    ENDIF (BUILD_SHARED_LIBS)
-  ENDIF (MSVC)
+    endif (BUILD_SHARED_LIBS)
+  endif (MSVC)
 ENDMACRO (TARGET_MSVC_PROPERTIES)
 
 #-------------------------------------------------------------------------------
 MACRO (TARGET_FORTRAN_PROPERTIES forttarget addcompileflags addlinkflags)
-  IF (WIN32)
+  if (WIN32)
     TARGET_FORTRAN_WIN_PROPERTIES (${forttarget} "${addcompileflags} ${WIN_COMPILE_FLAGS}" "${addlinkflags} ${WIN_LINK_FLAGS}")
-  ENDIF (WIN32)
+  endif (WIN32)
 ENDMACRO (TARGET_FORTRAN_PROPERTIES)
 
 #-------------------------------------------------------------------------------
 MACRO (TARGET_FORTRAN_WIN_PROPERTIES forttarget addcompileflags addlinkflags)
-  IF (MSVC)
-    IF (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${forttarget}
+  if (MSVC)
+    if (BUILD_SHARED_LIBS)
+      set_target_properties (${forttarget}
           PROPERTIES
               COMPILE_FLAGS "/dll ${addcompileflags}"
               LINK_FLAGS "/SUBSYSTEM:CONSOLE ${addlinkflags}"
       ) 
-    ELSE (BUILD_SHARED_LIBS)
-      SET_TARGET_PROPERTIES (${forttarget}
+    else (BUILD_SHARED_LIBS)
+      set_target_properties (${forttarget}
           PROPERTIES
               COMPILE_FLAGS "${addcompileflags}"
               LINK_FLAGS "/SUBSYSTEM:CONSOLE ${addlinkflags}"
       ) 
-    ENDIF (BUILD_SHARED_LIBS)
-  ENDIF (MSVC)
+    endif (BUILD_SHARED_LIBS)
+  endif (MSVC)
 ENDMACRO (TARGET_FORTRAN_WIN_PROPERTIES)
diff --git a/config/cmake/NSIS.template.in b/config/cmake/NSIS.template.in
index f28db0f..ecced05 100644
--- a/config/cmake/NSIS.template.in
+++ b/config/cmake/NSIS.template.in
@@ -25,7 +25,7 @@
   !include "MUI.nsh"
 
   ;Default installation folder
-  InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_DIRECTORY@\@CPACK_PACKAGE_VERSION@"
+  InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
 
 ;--------------------------------
 ;General
@@ -37,7 +37,7 @@
   ;Set compression
   SetCompressor @CPACK_NSIS_COMPRESSOR@
 
- at CPACK_NSIS_DEFINES@   
+ at CPACK_NSIS_DEFINES@
 
   !include Sections.nsh
 
@@ -71,10 +71,10 @@ Var AR_RegFlags
   ;  This macro reads component installed flag from the registry and
   ;changes checked state of the section on the components page.
   ;Input: section index constant name specified in Section command.
-   
+
   ClearErrors
   ;Reading component status from registry
-  ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" "Installed"
+  ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed"
   IfErrors "default_${SecName}"
     ;Status will stay default if registry value not found
     ;(component was never installed)
@@ -86,20 +86,20 @@ Var AR_RegFlags
   ; Note whether this component was installed before
   !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags
   IntOp $R0 $AR_RegFlags & $AR_RegFlags
-  
+
   ;Writing modified flags
   SectionSetFlags ${${SecName}} $AR_SecFlags
-  
+
  "default_${SecName}:"
  !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
 !macroend
- 
+
 !macro FinishSection SecName
   ;  This macro reads section flag set by user and removes the section
   ;if it is not selected.
   ;Then it writes component installed flag to registry
   ;Input: section index constant name specified in Section command.
- 
+
   SectionGetFlags ${${SecName}} $AR_SecFlags  ;Reading section flags
   ;Checking lowest bit:
   IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED}
@@ -107,23 +107,23 @@ Var AR_RegFlags
     ;Section is not selected:
     ;Calling Section uninstall macro and writing zero installed flag
     !insertmacro "Remove_${${SecName}}"
-    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
   "Installed" 0
     Goto "exit_${SecName}"
- 
+
  "leave_${SecName}:"
     ;Section is selected:
-    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
   "Installed" 1
- 
+
  "exit_${SecName}:"
 !macroend
- 
-!macro RemoveSection SecName
+
+!macro RemoveSection_CPack SecName
   ;  This macro is used to call section's Remove_... macro
   ;from the uninstaller.
   ;Input: section index constant name specified in Section command.
- 
+
   !insertmacro "Remove_${${SecName}}"
 !macroend
 
@@ -132,18 +132,18 @@ Var AR_RegFlags
   !insertmacro LoadVar ${SecName}_selected
   SectionGetFlags ${${SecName}} $R1
   IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits
-  
+
   ; See if the status has changed:
   IntCmp $R0 $R1 "${SecName}_unchanged"
   !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
-  
+
   IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected"
   !insertmacro "Deselect_required_by_${SecName}"
   goto "${SecName}_unchanged"
-  
+
   "${SecName}_was_selected:"
   !insertmacro "Select_${SecName}_depends"
-  
+
   "${SecName}_unchanged:"
 !macroend
 ;--- End of Add/Remove macros ---
@@ -153,7 +153,7 @@ Var AR_RegFlags
 
   !define MUI_HEADERIMAGE
   !define MUI_ABORTWARNING
-    
+
 ;--------------------------------
 ; path functions
 
@@ -168,7 +168,7 @@ Var AR_RegFlags
 !include "WinMessages.NSH"
 !verbose 4
 ;====================================================
-; get_NT_environment 
+; get_NT_environment
 ;     Returns: the selected environment
 ;     Output : head of the stack
 ;====================================================
@@ -198,22 +198,22 @@ FunctionEnd
     !define WriteEnvStr_RegKey 'HKCU "Environment"'
   !endif
 !endif
- 
+
 ; AddToPath - Adds the given dir to the search path.
 ;        Input - head of the stack
 ;        Note - Win9x systems requires reboot
- 
+
 Function AddToPath
   Exch $0
   Push $1
   Push $2
   Push $3
- 
+
   # don't add if the path doesn't exist
   IfFileExists "$0\*.*" "" AddToPath_done
- 
+
   ReadEnvStr $1 PATH
-  ; if the path is too long for a NSIS variable NSIS will return a 0 
+  ; if the path is too long for a NSIS variable NSIS will return a 0
   ; length string.  If we find that, then warn and skip any path
   ; modification as it will trash the existing path.
   StrLen $2 $1
@@ -243,7 +243,7 @@ Function AddToPath
   Call StrStr
   Pop $2
   StrCmp $2 "" "" AddToPath_done
- 
+
   Call IsNT
   Pop $1
   StrCmp $1 1 AddToPath_NT
@@ -258,7 +258,7 @@ Function AddToPath
     FileClose $1
     SetRebootFlag true
     Goto AddToPath_done
- 
+
   AddToPath_NT:
     StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey
       ReadRegStr $1 ${NT_current_env} "PATH"
@@ -279,7 +279,7 @@ Function AddToPath
         WriteRegExpandStr ${NT_all_env} "PATH" $0
       DoSend:
       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
- 
+
   AddToPath_done:
     Pop $3
     Pop $2
@@ -287,10 +287,10 @@ Function AddToPath
     Pop $0
 FunctionEnd
 
- 
+
 ; RemoveFromPath - Remove a given dir from the path
 ;     Input: head of the stack
- 
+
 Function un.RemoveFromPath
   Exch $0
   Push $1
@@ -299,9 +299,9 @@ Function un.RemoveFromPath
   Push $4
   Push $5
   Push $6
- 
+
   IntFmt $6 "%c" 26 # DOS EOF
- 
+
   Call un.IsNT
   Pop $1
   StrCmp $1 1 unRemoveFromPath_NT
@@ -313,7 +313,7 @@ Function un.RemoveFromPath
     GetFullPathName /SHORT $0 $0
     StrCpy $0 "SET PATH=%PATH%;$0"
     Goto unRemoveFromPath_dosLoop
- 
+
     unRemoveFromPath_dosLoop:
       FileRead $1 $3
       StrCpy $5 $3 1 -1 # read last char
@@ -328,7 +328,7 @@ Function un.RemoveFromPath
       unRemoveFromPath_dosLoopRemoveLine:
         SetRebootFlag true
         Goto unRemoveFromPath_dosLoop
- 
+
     unRemoveFromPath_dosLoopEnd:
       FileClose $2
       FileClose $1
@@ -337,7 +337,7 @@ Function un.RemoveFromPath
       CopyFiles /SILENT $4 "$1\autoexec.bat"
       Delete $4
       Goto unRemoveFromPath_done
- 
+
   unRemoveFromPath_NT:
     StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey
       ReadRegStr $1 ${NT_current_env} "PATH"
@@ -361,11 +361,11 @@ Function un.RemoveFromPath
       StrCpy $5 $1 -$4 # $5 is now the part before the path to remove
       StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove
       StrCpy $3 $5$6
- 
+
       StrCpy $5 $3 1 -1 # copy last char
       StrCmp $5 ";" 0 +2 # if last char == ;
         StrCpy $3 $3 -1 # remove last char
- 
+
       StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey
         WriteRegExpandStr ${NT_current_env} "PATH" $3
         Goto unDoSend
@@ -373,7 +373,7 @@ Function un.RemoveFromPath
         WriteRegExpandStr ${NT_all_env} "PATH" $3
       unDoSend:
       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
- 
+
   unRemoveFromPath_done:
     Pop $6
     Pop $5
@@ -383,7 +383,7 @@ Function un.RemoveFromPath
     Pop $1
     Pop $0
 FunctionEnd
- 
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; Uninstall sutff
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -391,7 +391,7 @@ FunctionEnd
 ###########################################
 #            Utility Functions            #
 ###########################################
- 
+
 ;====================================================
 ; IsNT - Returns 1 if the current system is NT, 0
 ;        otherwise.
@@ -405,7 +405,7 @@ FunctionEnd
 ;   Call IsNT
 ;   Pop $R0
 ;  ($R0 at this point is 1 or 0)
- 
+
 !macro IsNT un
 Function ${un}IsNT
   Push $0
@@ -415,7 +415,7 @@ Function ${un}IsNT
   Pop $0
   Push 0
   Return
- 
+
   IsNT_yes:
     ; NT!!!
     Pop $0
@@ -424,7 +424,7 @@ FunctionEnd
 !macroend
 !insertmacro IsNT ""
 !insertmacro IsNT "un."
- 
+
 ; StrStr
 ; input, top of stack = string to search for
 ;        top of stack-1 = string to search in
@@ -437,7 +437,7 @@ FunctionEnd
 ;   Call StrStr
 ;   Pop $R0
 ;  ($R0 at this point is "ass string")
- 
+
 !macro StrStr un
 Function ${un}StrStr
 Exch $R1 ; st=haystack,old$R1, $R1=needle
@@ -472,28 +472,28 @@ FunctionEnd
 !insertmacro StrStr "un."
 
 Function Trim ; Added by Pelaca
-  Exch $R1
-  Push $R2
+	Exch $R1
+	Push $R2
 Loop:
-  StrCpy $R2 "$R1" 1 -1
-  StrCmp "$R2" " " RTrim
-  StrCmp "$R2" "$\n" RTrim
-  StrCmp "$R2" "$\r" RTrim
-  StrCmp "$R2" ";" RTrim
-  GoTo Done
-RTrim:  
-  StrCpy $R1 "$R1" -1
-  Goto Loop
+	StrCpy $R2 "$R1" 1 -1
+	StrCmp "$R2" " " RTrim
+	StrCmp "$R2" "$\n" RTrim
+	StrCmp "$R2" "$\r" RTrim
+	StrCmp "$R2" ";" RTrim
+	GoTo Done
+RTrim:
+	StrCpy $R1 "$R1" -1
+	Goto Loop
 Done:
-  Pop $R2
-  Exch $R1
+	Pop $R2
+	Exch $R1
 FunctionEnd
 
 Function ConditionalAddToRegisty
   Pop $0
   Pop $1
   StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
-    WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
+    WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \
     "$1" "$0"
     ;MessageBox MB_OK "Set Registry: '$1' to '$0'"
     DetailPrint "Set install registry entry: '$1' to '$0'"
@@ -516,7 +516,7 @@ Function DownloadFile
 
   try_again:
     NSISdl::download "$1/$0" "$INSTDIR\$0"
-    
+
     Pop $1
     StrCmp $1 "success" success
     StrCmp $1 "Cancelled" cancel
@@ -549,10 +549,10 @@ FunctionEnd
   !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@"
   Page custom InstallOptionsPage
   !insertmacro MUI_PAGE_DIRECTORY
-  
+
   ;Start Menu Folder Page Configuration
-  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" 
-  !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" 
+  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
+  !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
   !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
   !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
 
@@ -637,11 +637,12 @@ Section "-Core installation"
   ;Use the entire tree produced by the INSTALL target.  Keep the
   ;list of directories here in sync with the RMDir commands below.
   SetOutPath "$INSTDIR"
+  @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@
   @CPACK_NSIS_FULL_INSTALL@
-  
+
   ;Store installation folder
   WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR
-  
+
   ;Create uninstaller
   WriteUninstaller "$INSTDIR\Uninstall.exe"
   Push "DisplayName"
@@ -659,7 +660,7 @@ Section "-Core installation"
   Push "NoRepair"
   Push "1"
   Call ConditionalAddToRegisty
-  
+
   !ifdef CPACK_NSIS_ADD_REMOVE
   ;Create add/remove functionality
   Push "ModifyPath"
@@ -670,7 +671,7 @@ Section "-Core installation"
   Push "1"
   Call ConditionalAddToRegisty
   !endif
-  
+
   ; Optional registration
   Push "DisplayIcon"
   Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
@@ -686,7 +687,7 @@ Section "-Core installation"
   Call ConditionalAddToRegisty
   !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State"
   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
-  
+
   ;Create shortcuts
   CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
 @CPACK_NSIS_CREATE_ICONS@
@@ -724,7 +725,7 @@ SectionEnd
 Section "-Add to path"
   Push $INSTDIR\bin
   StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath
-  StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0  
+  StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0
     Call AddToPath
   doNotAddToPath:
 SectionEnd
@@ -755,12 +756,12 @@ Function un.onInit
     SetShellVarContext all
     ;MessageBox MB_OK 'User "$0" is in the Power Users group'
     Goto done
-    
+
   noLM:
     ;Get installation folder from registry if available
 
   done:
-    
+
 FunctionEnd
 
 ;--- Add/Remove callback functions: ---
@@ -769,25 +770,25 @@ FunctionEnd
   ;List all of your components in following manner here.
 @CPACK_NSIS_COMPONENT_SECTION_LIST@
 !macroend
- 
+
 Section -FinishComponents
   ;Removes unselected components and writes component status to registry
   !insertmacro SectionList "FinishSection"
-  
-!ifdef CPACK_NSIS_ADD_REMOVE  
+
+!ifdef CPACK_NSIS_ADD_REMOVE
   ; Get the name of the installer executable
   System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
   StrCpy $R3 $R0
-  
+
   ; Strip off the last 13 characters, to see if we have AddRemove.exe
   StrLen $R1 $R0
   IntOp $R1 $R0 - 13
   StrCpy $R2 $R0 13 $R1
   StrCmp $R2 "AddRemove.exe" addremove_installed
-  
+
   ; We're not running AddRemove.exe, so install it
   CopyFiles $R3 $INSTDIR\AddRemove.exe
-  
+
   addremove_installed:
 !endif
 SectionEnd
@@ -804,17 +805,17 @@ FunctionEnd
 
 Section "Uninstall"
   ReadRegStr $START_MENU SHCTX \
-   "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "StartMenu"
+   "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
   ;MessageBox MB_OK "Start menu is in: $START_MENU"
   ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "DoNotAddToPath"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath"
   ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathAllUsers"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers"
   ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathCurrentUser"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser"
   ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
   ReadRegStr $INSTALL_DESKTOP SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "InstallToDesktop"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop"
   ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
 
 @CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
@@ -824,14 +825,14 @@ Section "Uninstall"
 @CPACK_NSIS_DELETE_FILES@
 @CPACK_NSIS_DELETE_DIRECTORIES@
 
-!ifdef CPACK_NSIS_ADD_REMOVE  
+!ifdef CPACK_NSIS_ADD_REMOVE
   ;Remove the add/remove program
   Delete "$INSTDIR\AddRemove.exe"
 !endif
 
   ;Remove the uninstaller itself.
   Delete "$INSTDIR\Uninstall.exe"
-  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@"
+  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
 
   ;Remove the installation directory if it is empty.
   RMDir "$INSTDIR"
@@ -840,24 +841,24 @@ Section "Uninstall"
   DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
 
   ; Removes all optional components
-  !insertmacro SectionList "RemoveSection"
-  
+  !insertmacro SectionList "RemoveSection_CPack"
+
   !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
-    
+
   Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
 @CPACK_NSIS_DELETE_ICONS@
 @CPACK_NSIS_DELETE_ICONS_EXTRA@
-  
+
   ;Delete empty start menu parent diretories
   StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
- 
+
   startMenuDeleteLoop:
     ClearErrors
     RMDir $MUI_TEMP
     GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
-    
+
     IfErrors startMenuDeleteLoopDone
-  
+
     StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
   startMenuDeleteLoopDone:
 
@@ -866,17 +867,17 @@ Section "Uninstall"
   StrCpy $MUI_TEMP "$START_MENU"
   Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
 @CPACK_NSIS_DELETE_ICONS_EXTRA@
-  
+
   ;Delete empty start menu parent diretories
   StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
- 
+
   secondStartMenuDeleteLoop:
     ClearErrors
     RMDir $MUI_TEMP
     GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
-    
+
     IfErrors secondStartMenuDeleteLoopDone
-  
+
     StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop
   secondStartMenuDeleteLoopDone:
 
@@ -899,22 +900,46 @@ SectionEnd
 ; "Program Files" for AllUsers, "My Documents" for JustMe...
 
 Function .onInit
+  StrCmp "@CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL@" "ON" 0 inst
+
+  ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "UninstallString"
+  StrCmp $0 "" inst
+
+  MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION \
+  "@CPACK_NSIS_PACKAGE_NAME@ is already installed. $\n$\nDo you want to uninstall the old version before installing the new one?" \
+  IDYES uninst IDNO inst
+  Abort
+
+;Run the uninstaller
+uninst:
+  ClearErrors
+  StrLen $2 "\Uninstall.exe"
+  StrCpy $3 $0 -$2 # remove "\Uninstall.exe" from UninstallString to get path
+  ExecWait '$0 _?=$3' ;Do not copy the uninstaller to a temp file
+
+  IfErrors uninst_failed inst
+uninst_failed:
+  MessageBox MB_OK|MB_ICONSTOP "Uninstall failed."
+  Abort
+
+
+inst:
   ; Reads components status for registry
   !insertmacro SectionList "InitSection"
 
-  ; check to see if /D has been used to change 
-  ; the install directory by comparing it to the 
+  ; check to see if /D has been used to change
+  ; the install directory by comparing it to the
   ; install directory that is expected to be the
   ; default
   StrCpy $IS_DEFAULT_INSTALLDIR 0
-  StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_DIRECTORY@\@CPACK_PACKAGE_VERSION@" 0 +2
+  StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2
     StrCpy $IS_DEFAULT_INSTALLDIR 1
-  
+
   StrCpy $SV_ALLUSERS "JustMe"
   ; if default install dir then change the default
   ; if it is installed for JustMe
   StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
-    StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_DIRECTORY@\@CPACK_PACKAGE_VERSION@"
+    StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
 
   ClearErrors
   UserInfo::GetName
@@ -922,17 +947,17 @@ Function .onInit
   Pop $0
   UserInfo::GetAccountType
   Pop $1
-  StrCmp $1 "Admin" 0 +3
+  StrCmp $1 "Admin" 0 +4
     SetShellVarContext all
     ;MessageBox MB_OK 'User "$0" is in the Admin group'
     StrCpy $SV_ALLUSERS "AllUsers"
     Goto done
-  StrCmp $1 "Power" 0 +3
+  StrCmp $1 "Power" 0 +4
     SetShellVarContext all
     ;MessageBox MB_OK 'User "$0" is in the Power Users group'
     StrCpy $SV_ALLUSERS "AllUsers"
     Goto done
-    
+
   noLM:
     StrCpy $SV_ALLUSERS "AllUsers"
     ;Get installation folder from registry if available
@@ -940,7 +965,7 @@ Function .onInit
   done:
   StrCmp $SV_ALLUSERS "AllUsers" 0 +3
     StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
-      StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_DIRECTORY@\@CPACK_PACKAGE_VERSION@"
+      StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
 
   StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage
     !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
diff --git a/config/cmake/PkgInfo.in b/config/cmake/PkgInfo.in
new file mode 100644
index 0000000..e530f88
--- /dev/null
+++ b/config/cmake/PkgInfo.in
@@ -0,0 +1 @@
+FMWK????
\ No newline at end of file
diff --git a/config/cmake/README.txt.cmake.in b/config/cmake/README.txt.cmake.in
new file mode 100644
index 0000000..4d3ab3d
--- /dev/null
+++ b/config/cmake/README.txt.cmake.in
@@ -0,0 +1,53 @@
+ at HDF5_PACKAGE_NAME@ version @HDF5_PACKAGE_VERSION_STRING@
+------------------------------------------------------------------------------
+
+This directory contains the binary (release) distribution of 
+ at HDF5_PACKAGE_NAME@ @HDF5_PACKAGE_VERSION_MAJOR@ that was compiled on;
+    @BINARY_PLATFORM at . 
+
+It was built with the following options: 
+    -- @LIB_TYPE@ C/C++/Fortran libraries
+    -- SZIP (encoder enabled) and ZLIB
+    -- @LIB_TYPE@ HDF5 tools
+
+The contents of this directory are:
+
+    COPYING                 - Copyright notice
+    README.txt              - This file
+    @HDF5_PACKAGE_NAME at -@HDF5_PACKAGE_VERSION at -@BINARY_SYSTEM_NAME at .@BINARY_INSTALL_ENDING@    - HDF5 Install Package
+
+Installation
+===========================================================================
+1. Execute @HDF5_PACKAGE_NAME at -@HDF5_PACKAGE_VERSION at -@BINARY_SYSTEM_NAME at .@BINARY_INSTALL_ENDING@
+2. Follow prompts
+===========================================================================
+
+After Installation
+===========================================================================
+The compressed examples file HDF5Examples-0.1.1-Source. at BINARY_EXAMPLE_ENDING@, located in the 
+HDF5 install folder, can be built and tested with CMake and the supplied
+HDF518_Examples.cmake file. The HDF518_Examples.cmake expects HDF5 to have
+been installed in the default location with above compilers.
+
+To test the installation with the examples;
+    Create a directory to run the examples.
+    Copy HDF5Examples-0.1.1-Source. at BINARY_EXAMPLE_ENDING@ to this directory, do NOT unzip.
+    Copy HDF518_Examples.cmake to this directory.
+    Edit HDF518_Examples.cmake line 8 to set INSTALLDIR to where HDF5 is installed.
+    Execute from this directory: 
+        ctest -S HDF518_Examples.cmake,HDF5Examples-0.1.1-Source -C Release -O test.log
+
+When executed, the ctest script will save the results to the log file, test.log, as
+indicated by the ctest command. If you wish the to see more build and test information, 
+add "-VV" to the ctest command.
+
+For more information see USING_CMake_Examples.txt in the install folder. 
+===========================================================================
+
+Documentation for this release can be found at the following URL:
+    http://www.hdfgroup.org/HDF5/doc/.
+
+See the HDF5 home page for further details:
+    http://hdfgroup.org/HDF5/
+
+Bugs should be reported to help at hdfgroup.org.
diff --git a/config/cmake/UserMacros/Windows_MT.cmake b/config/cmake/UserMacros/Windows_MT.cmake
index 175c420..a54f22c 100644
--- a/config/cmake/UserMacros/Windows_MT.cmake
+++ b/config/cmake/UserMacros/Windows_MT.cmake
@@ -11,31 +11,31 @@
 # Option to Build with Static CRT libraries on Windows
 #-------------------------------------------------------------------------------
 MACRO (TARGET_STATIC_CRT_FLAGS)
-  IF (MSVC AND NOT BUILD_SHARED_LIBS)
-    FOREACH (flag_var
+  if (MSVC AND NOT BUILD_SHARED_LIBS)
+    foreach (flag_var
         CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
         CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
         CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
         CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
-      IF (${flag_var} MATCHES "/MD")
-        STRING (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
-      ENDIF (${flag_var} MATCHES "/MD")
-    ENDFOREACH (flag_var)
-    FOREACH (flag_var
+      if (${flag_var} MATCHES "/MD")
+        string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+      endif (${flag_var} MATCHES "/MD")
+    endforeach (flag_var)
+    foreach (flag_var
         CMAKE_Fortran_FLAGS CMAKE_Fortran_FLAGS_DEBUG CMAKE_Fortran_FLAGS_RELEASE
         CMAKE_Fortran_FLAGS_MINSIZEREL CMAKE_Fortran_FLAGS_RELWITHDEBINFO)
-      IF (${flag_var} MATCHES "/libs:dll")
-        STRING (REGEX REPLACE "/libs:dll" "/libs:static" ${flag_var} "${${flag_var}}")
-      ENDIF (${flag_var} MATCHES "/libs:dll")
-    ENDFOREACH (flag_var)
-    SET (WIN_COMPILE_FLAGS "")
-    SET (WIN_LINK_FLAGS "/NODEFAULTLIB:MSVCRT")
-  ENDIF (MSVC AND NOT BUILD_SHARED_LIBS)
+      if (${flag_var} MATCHES "/libs:dll")
+        string (REGEX REPLACE "/libs:dll" "/libs:static" ${flag_var} "${${flag_var}}")
+      endif (${flag_var} MATCHES "/libs:dll")
+    endforeach (flag_var)
+    set (WIN_COMPILE_FLAGS "")
+    set (WIN_LINK_FLAGS "/NODEFAULTLIB:MSVCRT")
+  endif (MSVC AND NOT BUILD_SHARED_LIBS)
 ENDMACRO (TARGET_STATIC_CRT_FLAGS)
 
 #-----------------------------------------------------------------------------
-OPTION (BUILD_STATIC_CRT_LIBS "Build With Static CRT Libraries" OFF)
-IF (BUILD_STATIC_CRT_LIBS)
+option (BUILD_STATIC_CRT_LIBS "Build With Static CRT Libraries" OFF)
+if (BUILD_STATIC_CRT_LIBS)
   TARGET_STATIC_CRT_FLAGS ()
-ENDIF (BUILD_STATIC_CRT_LIBS)
+endif (BUILD_STATIC_CRT_LIBS)
  
\ No newline at end of file
diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake
index f76d908..eb99f5d 100644
--- a/config/cmake/cacheinit.cmake
+++ b/config/cmake/cacheinit.cmake
@@ -4,73 +4,73 @@
 # EXTERNAL cache entries
 ########################
 
-SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" FORCE)
+set (BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" FORCE)
 
-SET (BUILD_TESTING ON CACHE BOOL "Build HDF5 Unit Testing" 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 (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_CPP_LIB ON CACHE BOOL "Build HDF5 C++ Library" FORCE)
 
-SET (HDF5_BUILD_EXAMPLES ON CACHE BOOL "Build HDF5 Library Examples" FORCE)
+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_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE)
 
-SET (HDF5_ENABLE_F2003 OFF CACHE BOOL "Enable FORTRAN 2003 Standard" 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_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_TOOLS ON CACHE BOOL "Build HDF5 Tools" FORCE)
 
-SET (HDF5_BUILD_GENERATORS OFF CACHE BOOL "Build Test Generators" 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_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE)
 
-SET (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE)
+set (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE)
 
-SET (HDF5_ENABLE_SZIP_ENCODING ON CACHE BOOL "Use SZip Encoding" FORCE)
+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_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_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_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_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 (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 (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_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_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)
+set (HDF5_ENABLE_USING_MEMCHECKER OFF CACHE BOOL "Indicate that a memory checker is used" FORCE)
 
-SET (HDF5_DISABLE_COMPILER_WARNINGS OFF CACHE BOOL "Disable compiler warnings" 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_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_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_ENABLE_THREADSAFE OFF CACHE BOOL "(WINDOWS)Enable Threadsafety" FORCE)
 
-SET (HDF5_PACKAGE_EXTLIBS OFF CACHE BOOL "(WINDOWS)CPACK - include external libraries" 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_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE)
 
-SET (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO SVN TGZ)" FORCE)
+set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO SVN TGZ)" FORCE)
 SET_PROPERTY(CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO SVN TGZ)
 
-SET (ZLIB_SVN_URL "http://svn.hdfgroup.uiuc.edu/zlib/trunk" CACHE STRING "Use ZLib from HDF repository" FORCE)
+set (ZLIB_SVN_URL "http://svn.hdfgroup.uiuc.edu/zlib/trunk" CACHE STRING "Use ZLib from HDF repository" FORCE)
 
-SET (SZIP_SVN_URL "http://svn.hdfgroup.uiuc.edu/szip/trunk" CACHE STRING "Use SZip from HDF repository" FORCE)
+set (SZIP_SVN_URL "http://svn.hdfgroup.uiuc.edu/szip/trunk" CACHE STRING "Use SZip from HDF repository" FORCE)
 
-SET (ZLIB_TGZ_NAME "ZLib.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE)
+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 (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 (ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of ZLIB package" FORCE)
 
-SET (SZIP_PACKAGE_NAME "szip" CACHE STRING "Name of SZIP 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 74ac912..579d855 100644
--- a/config/cmake/grepTest.cmake
+++ b/config/cmake/grepTest.cmake
@@ -2,29 +2,29 @@
 # against a reference file. Exit status of command can also be compared.
 
 # arguments checking
-IF (NOT TEST_PROGRAM)
-  MESSAGE (FATAL_ERROR "Require TEST_PROGRAM to be defined")
-ENDIF (NOT TEST_PROGRAM)
-#IF (NOT TEST_ARGS)
-#  MESSAGE (STATUS "Require TEST_ARGS to be defined")
-#ENDIF (NOT TEST_ARGS)
-IF (NOT TEST_FOLDER)
-  MESSAGE ( FATAL_ERROR "Require TEST_FOLDER to be defined")
-ENDIF (NOT TEST_FOLDER)
-IF (NOT TEST_OUTPUT)
-  MESSAGE (FATAL_ERROR "Require TEST_OUTPUT to be defined")
-ENDIF (NOT TEST_OUTPUT)
-#IF (NOT TEST_EXPECT)
-#  MESSAGE (STATUS "Require TEST_EXPECT to be defined")
-#ENDIF (NOT TEST_EXPECT)
-IF (NOT TEST_FILTER)
-  MESSAGE (STATUS "Require TEST_FILTER to be defined")
-ENDIF (NOT TEST_FILTER)
-IF (NOT TEST_REFERENCE)
-  MESSAGE (FATAL_ERROR "Require TEST_REFERENCE to be defined")
-ENDIF (NOT TEST_REFERENCE)
+if (NOT TEST_PROGRAM)
+  message (FATAL_ERROR "Require TEST_PROGRAM to be defined")
+endif (NOT TEST_PROGRAM)
+#if (NOT TEST_ARGS)
+#  message (STATUS "Require TEST_ARGS to be defined")
+#endif (NOT TEST_ARGS)
+if (NOT TEST_FOLDER)
+  message ( FATAL_ERROR "Require TEST_FOLDER to be defined")
+endif (NOT TEST_FOLDER)
+if (NOT TEST_OUTPUT)
+  message (FATAL_ERROR "Require TEST_OUTPUT to be defined")
+endif (NOT TEST_OUTPUT)
+#if (NOT TEST_EXPECT)
+#  message (STATUS "Require TEST_EXPECT to be defined")
+#endif (NOT TEST_EXPECT)
+if (NOT TEST_FILTER)
+  message (STATUS "Require TEST_FILTER to be defined")
+endif (NOT TEST_FILTER)
+if (NOT TEST_REFERENCE)
+  message (FATAL_ERROR "Require TEST_REFERENCE to be defined")
+endif (NOT TEST_REFERENCE)
 
-MESSAGE (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
+message (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
 
 # run the test program, capture the stdout/stderr and the result var
 EXECUTE_PROCESS (
@@ -37,28 +37,28 @@ EXECUTE_PROCESS (
     ERROR_VARIABLE TEST_ERROR
 )
 
-MESSAGE (STATUS "COMMAND Result: ${TEST_RESULT}")
-MESSAGE (STATUS "COMMAND Error: ${TEST_ERROR}")
+message (STATUS "COMMAND Result: ${TEST_RESULT}")
+message (STATUS "COMMAND Error: ${TEST_ERROR}")
 
 # now grep the output with the reference
-FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+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")
+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} STREQUAL "1")
+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_FILTER}")
-  ENDIF (NOT ${TEST_RESULT} STREQUAL "0")
-ENDIF (${TEST_EXPECT} STREQUAL "1")
+  if (NOT ${TEST_RESULT} STREQUAL "0")
+    message (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did contain ${TEST_FILTER}")
+  endif (NOT ${TEST_RESULT} STREQUAL "0")
+endif (${TEST_EXPECT} STREQUAL "1")
 
 # everything went fine...
-MESSAGE ("Passed: The output of ${TEST_PROGRAM} matched")
+message ("Passed: The output of ${TEST_PROGRAM} matched")
 
diff --git a/config/cmake/hdf.bmp b/config/cmake/hdf.bmp
new file mode 100644
index 0000000..9e9e4aa
Binary files /dev/null and b/config/cmake/hdf.bmp differ
diff --git a/config/cmake/hdf.gif b/config/cmake/hdf.gif
deleted file mode 100644
index 656617b..0000000
Binary files a/config/cmake/hdf.gif and /dev/null differ
diff --git a/config/cmake/hdf.icns b/config/cmake/hdf.icns
new file mode 100755
index 0000000..22afa2e
Binary files /dev/null and b/config/cmake/hdf.icns differ
diff --git a/config/cmake/hdf.ico b/config/cmake/hdf.ico
new file mode 100644
index 0000000..26abc96
Binary files /dev/null and b/config/cmake/hdf.ico differ
diff --git a/config/cmake/hdf5-config-version.cmake.in b/config/cmake/hdf5-config-version.cmake.in
index c1201cc..c3d0811 100644
--- a/config/cmake/hdf5-config-version.cmake.in
+++ b/config/cmake/hdf5-config-version.cmake.in
@@ -2,26 +2,26 @@
 # HDF5 Version file for install directory
 #-----------------------------------------------------------------------------
 
-SET (PACKAGE_VERSION @HDF5_VERSION_STRING@)
+set (PACKAGE_VERSION @HDF5_VERSION_STRING@)
 
-IF ("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL @H5_VERS_MAJOR@)
+if ("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL @H5_VERS_MAJOR@)
 
   # exact match for version @H5_VERS_MAJOR at .@H5_VERS_MINOR@
-  IF ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL @H5_VERS_MINOR@)
+  if ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL @H5_VERS_MINOR@)
 
     # compatible with any version @H5_VERS_MAJOR at .@H5_VERS_MINOR at .x
-    SET (PACKAGE_VERSION_COMPATIBLE 1) 
+    set (PACKAGE_VERSION_COMPATIBLE 1) 
     
-    IF ("${PACKAGE_FIND_VERSION_PATCH}" EQUAL @H5_VERS_RELEASE@)
-      SET (PACKAGE_VERSION_EXACT 1)    
+    if ("${PACKAGE_FIND_VERSION_PATCH}" EQUAL @H5_VERS_RELEASE@)
+      set (PACKAGE_VERSION_EXACT 1)    
 
-      IF ("${PACKAGE_FIND_VERSION_TWEAK}" EQUAL @H5_VERS_SUBRELEASE@)
+      if ("${PACKAGE_FIND_VERSION_TWEAK}" EQUAL @H5_VERS_SUBRELEASE@)
         # not using this yet
-      ENDIF ("${PACKAGE_FIND_VERSION_TWEAK}" EQUAL @H5_VERS_SUBRELEASE@)
+      endif ("${PACKAGE_FIND_VERSION_TWEAK}" EQUAL @H5_VERS_SUBRELEASE@)
       
-    ENDIF ("${PACKAGE_FIND_VERSION_PATCH}" EQUAL @H5_VERS_RELEASE@)
+    endif ("${PACKAGE_FIND_VERSION_PATCH}" EQUAL @H5_VERS_RELEASE@)
     
-  ENDIF ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL @H5_VERS_MINOR@)
-ENDIF ("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL @H5_VERS_MAJOR@)
+  endif ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL @H5_VERS_MINOR@)
+endif ("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL @H5_VERS_MAJOR@)
 
 
diff --git a/config/cmake/hdf5-config.cmake.build.in b/config/cmake/hdf5-config.cmake.build.in
index fbe97ac..60888c8 100644
--- a/config/cmake/hdf5-config.cmake.build.in
+++ b/config/cmake/hdf5-config.cmake.build.in
@@ -6,16 +6,16 @@ GET_FILENAME_COMPONENT (SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
 #-----------------------------------------------------------------------------
 # User Options
 #-----------------------------------------------------------------------------
-SET (HDF5_ENABLE_PARALLEL @HDF5_ENABLE_PARALLEL@)
-SET (HDF5_BUILD_FORTRAN   @HDF5_BUILD_FORTRAN@)
-SET (HDF5_ENABLE_F2003    @HDF5_ENABLE_F2003@)
-SET (HDF5_BUILD_CPP_LIB   @HDF5_BUILD_CPP_LIB@)
-SET (HDF5_BUILD_TOOLS     @HDF5_BUILD_TOOLS@)
-SET (HDF5_BUILD_HL_LIB    @HDF5_BUILD_HL_LIB@)
-SET (HDF5_ENABLE_Z_LIB_SUPPORT @HDF5_ENABLE_Z_LIB_SUPPORT@)
-SET (HDF5_ENABLE_SZIP_SUPPORT  @HDF5_ENABLE_SZIP_SUPPORT@)
-SET (HDF5_ENABLE_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@)
-SET (HDF5_BUILD_SHARED_LIBS    @BUILD_SHARED_LIBS@)
+set (HDF5_ENABLE_PARALLEL @HDF5_ENABLE_PARALLEL@)
+set (HDF5_BUILD_FORTRAN   @HDF5_BUILD_FORTRAN@)
+set (HDF5_ENABLE_F2003    @HDF5_ENABLE_F2003@)
+set (HDF5_BUILD_CPP_LIB   @HDF5_BUILD_CPP_LIB@)
+set (HDF5_BUILD_TOOLS     @HDF5_BUILD_TOOLS@)
+set (HDF5_BUILD_HL_LIB    @HDF5_BUILD_HL_LIB@)
+set (HDF5_ENABLE_Z_LIB_SUPPORT @HDF5_ENABLE_Z_LIB_SUPPORT@)
+set (HDF5_ENABLE_SZIP_SUPPORT  @HDF5_ENABLE_SZIP_SUPPORT@)
+set (HDF5_ENABLE_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@)
+set (HDF5_BUILD_SHARED_LIBS    @BUILD_SHARED_LIBS@)
 
 #-----------------------------------------------------------------------------
 # Dependencies
@@ -28,46 +28,46 @@ ENDIF(HDF5_ENABLE_PARALLEL)
 #-----------------------------------------------------------------------------
 # Directories
 #-----------------------------------------------------------------------------
-SET (HDF5_INCLUDE_DIR "@HDF5_INCLUDES_BUILD_TIME@" "${HDF5_MPI_C_INCLUDE_PATH}" )
+set (HDF5_INCLUDE_DIR "@HDF5_INCLUDES_BUILD_TIME@" "${HDF5_MPI_C_INCLUDE_PATH}" )
 
-IF (HDF5_BUILD_FORTRAN)
-  SET (HDF5_INCLUDE_DIR_FORTRAN "@CMAKE_Fortran_MODULE_DIRECTORY@" )
-ENDIF (HDF5_BUILD_FORTRAN)
+if (HDF5_BUILD_FORTRAN)
+  set (HDF5_INCLUDE_DIR_FORTRAN "@CMAKE_Fortran_MODULE_DIRECTORY@" )
+endif (HDF5_BUILD_FORTRAN)
   
-IF (HDF5_BUILD_CPP_LIB)
-  SET (HDF5_INCLUDE_DIR_CPP ${HDF5_INCLUDE_DIR} )
-ENDIF (HDF5_BUILD_CPP_LIB)
+if (HDF5_BUILD_CPP_LIB)
+  set (HDF5_INCLUDE_DIR_CPP ${HDF5_INCLUDE_DIR} )
+endif (HDF5_BUILD_CPP_LIB)
 
-IF (HDF5_BUILD_HL_LIB)
-  SET (HDF5_INCLUDE_DIR_HL ${HDF5_INCLUDE_DIR} )
-ENDIF (HDF5_BUILD_HL_LIB)
+if (HDF5_BUILD_HL_LIB)
+  set (HDF5_INCLUDE_DIR_HL ${HDF5_INCLUDE_DIR} )
+endif (HDF5_BUILD_HL_LIB)
 
-IF (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
-  SET (HDF5_INCLUDE_DIR_HL_CPP ${HDF5_INCLUDE_DIR} )
-ENDIF (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
+if (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
+  set (HDF5_INCLUDE_DIR_HL_CPP ${HDF5_INCLUDE_DIR} )
+endif (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
 
-IF (HDF5_BUILD_TOOLS)
-  SET (HDF5_INCLUDE_DIR_TOOLS ${HDF5_INCLUDE_DIR} )
-ENDIF (HDF5_BUILD_TOOLS)
+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)
+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
 #-----------------------------------------------------------------------------
-SET (HDF5_VERSION_STRING @HDF5_VERSION_STRING@)
-SET (HDF5_VERSION_MAJOR  @HDF5_VERSION_MAJOR@)
-SET (HDF5_VERSION_MINOR  @HDF5_VERSION_MINOR@)
+set (HDF5_VERSION_STRING @HDF5_VERSION_STRING@)
+set (HDF5_VERSION_MAJOR  @HDF5_VERSION_MAJOR@)
+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_PACKAGE@")
-  INCLUDE (${SELF_DIR}/@HDF5_PACKAGE@@HDF_PACKAGE_EXT at -targets.cmake)
-  SET (HDF5_LIBRARIES "@HDF5_LIBRARIES_TO_EXPORT@")
-ENDIF (NOT TARGET "@HDF5_PACKAGE@")
+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_PACKAGE@")
diff --git a/config/cmake/hdf5-config.cmake.install.in b/config/cmake/hdf5-config.cmake.install.in
index 9c5a5a1..799ff9d 100644
--- a/config/cmake/hdf5-config.cmake.install.in
+++ b/config/cmake/hdf5-config.cmake.install.in
@@ -4,24 +4,24 @@
 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)
-IF (NOT WIN32)
+if (NOT WIN32)
   GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
-ENDIF (NOT WIN32)
+endif (NOT WIN32)
 
 #-----------------------------------------------------------------------------
 # User Options
 #-----------------------------------------------------------------------------
-SET (HDF5_ENABLE_PARALLEL @HDF5_ENABLE_PARALLEL@)
-SET (HDF5_BUILD_FORTRAN   @HDF5_BUILD_FORTRAN@)
-SET (HDF5_ENABLE_F2003    @HDF5_ENABLE_F2003@)
-SET (HDF5_BUILD_CPP_LIB   @HDF5_BUILD_CPP_LIB@)
-SET (HDF5_BUILD_TOOLS     @HDF5_BUILD_TOOLS@)
-SET (HDF5_BUILD_HL_LIB    @HDF5_BUILD_HL_LIB@)
-SET (HDF5_ENABLE_Z_LIB_SUPPORT @HDF5_ENABLE_Z_LIB_SUPPORT@)
-SET (HDF5_ENABLE_SZIP_SUPPORT  @HDF5_ENABLE_SZIP_SUPPORT@)
-SET (HDF5_ENABLE_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@)
-SET (HDF5_BUILD_SHARED_LIBS    @BUILD_SHARED_LIBS@)
-SET (HDF5_PACKAGE_EXTLIBS      @HDF5_PACKAGE_EXTLIBS@)
+set (HDF5_ENABLE_PARALLEL @HDF5_ENABLE_PARALLEL@)
+set (HDF5_BUILD_FORTRAN   @HDF5_BUILD_FORTRAN@)
+set (HDF5_ENABLE_F2003    @HDF5_ENABLE_F2003@)
+set (HDF5_BUILD_CPP_LIB   @HDF5_BUILD_CPP_LIB@)
+set (HDF5_BUILD_TOOLS     @HDF5_BUILD_TOOLS@)
+set (HDF5_BUILD_HL_LIB    @HDF5_BUILD_HL_LIB@)
+set (HDF5_ENABLE_Z_LIB_SUPPORT @HDF5_ENABLE_Z_LIB_SUPPORT@)
+set (HDF5_ENABLE_SZIP_SUPPORT  @HDF5_ENABLE_SZIP_SUPPORT@)
+set (HDF5_ENABLE_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@)
+set (HDF5_BUILD_SHARED_LIBS    @BUILD_SHARED_LIBS@)
+set (HDF5_PACKAGE_EXTLIBS      @HDF5_PACKAGE_EXTLIBS@)
 
 #-----------------------------------------------------------------------------
 # Dependencies
@@ -34,48 +34,48 @@ ENDIF(HDF5_ENABLE_PARALLEL)
 #-----------------------------------------------------------------------------
 # Directories
 #-----------------------------------------------------------------------------
-SET (HDF5_INCLUDE_DIR "${_IMPORT_PREFIX}/include" "${HDF5_MPI_C_INCLUDE_PATH}" )
+set (HDF5_INCLUDE_DIR "${_IMPORT_PREFIX}/include" "${HDF5_MPI_C_INCLUDE_PATH}" )
 
-IF (HDF5_BUILD_FORTRAN)
-  SET (HDF5_INCLUDE_DIR_FORTRAN "${_IMPORT_PREFIX}/include/fortran" )
-ENDIF (HDF5_BUILD_FORTRAN)
+if (HDF5_BUILD_FORTRAN)
+  set (HDF5_INCLUDE_DIR_FORTRAN "${_IMPORT_PREFIX}/include/fortran" )
+endif (HDF5_BUILD_FORTRAN)
   
-IF (HDF5_BUILD_CPP_LIB)
-  SET (HDF5_INCLUDE_DIR_CPP "${_IMPORT_PREFIX}/include/cpp" )
-ENDIF (HDF5_BUILD_CPP_LIB)
+if (HDF5_BUILD_CPP_LIB)
+  set (HDF5_INCLUDE_DIR_CPP "${_IMPORT_PREFIX}/include/cpp" )
+endif (HDF5_BUILD_CPP_LIB)
 
-IF (HDF5_BUILD_HL_LIB)
-  SET (HDF5_INCLUDE_DIR_HL "${_IMPORT_PREFIX}/include/hl" )
-ENDIF (HDF5_BUILD_HL_LIB)
+if (HDF5_BUILD_HL_LIB)
+  set (HDF5_INCLUDE_DIR_HL "${_IMPORT_PREFIX}/include/hl" )
+endif (HDF5_BUILD_HL_LIB)
 
-IF (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
-  SET (HDF5_INCLUDE_DIR_HL_CPP "${_IMPORT_PREFIX}/include/hl/cpp" )
-ENDIF (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
+if (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
+  set (HDF5_INCLUDE_DIR_HL_CPP "${_IMPORT_PREFIX}/include/hl/cpp" )
+endif (HDF5_BUILD_HL_LIB AND HDF5_BUILD_CPP_LIB)
 
-IF (HDF5_BUILD_TOOLS)
-  SET (HDF5_INCLUDE_DIR_TOOLS "${_IMPORT_PREFIX}/include" )
-  SET (HDF5_TOOLS_DIR "${_IMPORT_PREFIX}/bin" )
-ENDIF (HDF5_BUILD_TOOLS)
+if (HDF5_BUILD_TOOLS)
+  set (HDF5_INCLUDE_DIR_TOOLS "${_IMPORT_PREFIX}/include" )
+  set (HDF5_TOOLS_DIR "${_IMPORT_PREFIX}/bin" )
+endif (HDF5_BUILD_TOOLS)
 
 #-----------------------------------------------------------------------------
 # Version Strings
 #-----------------------------------------------------------------------------
-SET (HDF5_VERSION_STRING @HDF5_VERSION_STRING@)
-SET (HDF5_VERSION_MAJOR  @HDF5_VERSION_MAJOR@)
-SET (HDF5_VERSION_MINOR  @HDF5_VERSION_MINOR@)
+set (HDF5_VERSION_STRING @HDF5_VERSION_STRING@)
+set (HDF5_VERSION_MAJOR  @HDF5_VERSION_MAJOR@)
+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_PACKAGE@")
-  IF (HDF5_ENABLE_Z_LIB_SUPPORT AND HDF5_PACKAGE_EXTLIBS AND NOT TARGET "zlib")
-    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_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_PACKAGE@@HDF_PACKAGE_EXT at -targets.cmake)
-  SET (HDF5_LIBRARIES "@HDF5_LIBRARIES_TO_EXPORT@")
-ENDIF (NOT TARGET "@HDF5_PACKAGE@")
+if (NOT TARGET "@HDF5_PACKAGE@")
+  if (HDF5_ENABLE_Z_LIB_SUPPORT AND HDF5_PACKAGE_EXTLIBS AND NOT TARGET "zlib")
+    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_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_PACKAGE@@HDF_PACKAGE_EXT at -targets.cmake)
+  set (HDF5_LIBRARIES "@HDF5_LIBRARIES_TO_EXPORT@")
+endif (NOT TARGET "@HDF5_PACKAGE@")
 
diff --git a/config/cmake/libhdf5.settings.cmake.in b/config/cmake/libhdf5.settings.cmake.in
index 4027c55..418a6cf 100644
--- a/config/cmake/libhdf5.settings.cmake.in
+++ b/config/cmake/libhdf5.settings.cmake.in
@@ -3,7 +3,7 @@
 
 General Information:
 -------------------
-                   HDF5 Version: @HDF5_PACKAGE_VERSION@
+                   HDF5 Version: @HDF5_PACKAGE_VERSION_STRING@
                   Configured on: @CONFIG_DATE@
                   Configured by: @CMAKE_GENERATOR@
                  Configure mode: CMAKE @CMAKE_VERSION@
@@ -63,7 +63,6 @@ Features:
 Clear file buffers before write: @HDF5_Enable_Clear_File_Buffers@
            Using memory checker: @HDF5_ENABLE_USING_MEMCHECKER@
          Function Stack Tracing: @HDF5_ENABLE_CODESTACK@
-                           GPFS: @HDF5_ENABLE_GPFS@
       Strict File Format Checks: @HDF5_STRICT_FORMAT_CHECKS@
    Optimization Instrumentation: @HDF5_Enable_Instrument@
        Large File Support (LFS): @HDF5_ENABLE_LARGE_FILE@
diff --git a/config/cmake/mccacheinit.cmake b/config/cmake/mccacheinit.cmake
index 03896fb..c30d70d 100644
--- a/config/cmake/mccacheinit.cmake
+++ b/config/cmake/mccacheinit.cmake
@@ -4,76 +4,76 @@
 # EXTERNAL cache entries
 ########################
 
-SET (BUILD_SHARED_LIBS OFF CACHE BOOL "Build Shared Libraries" FORCE)
+set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build Shared Libraries" FORCE)
 
-SET (BUILD_TESTING ON CACHE BOOL "Build HDF5 Unit Testing" 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 (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_CPP_LIB ON CACHE BOOL "Build HDF5 C++ Library" FORCE)
 
-SET (HDF5_BUILD_EXAMPLES ON CACHE BOOL "Build HDF5 Library Examples" FORCE)
+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_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE)
 
-SET (HDF5_ENABLE_F2003 OFF CACHE BOOL "Enable FORTRAN 2003 Standard" 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_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_TOOLS ON CACHE BOOL "Build HDF5 Tools" FORCE)
 
-SET (HDF5_BUILD_GENERATORS OFF CACHE BOOL "Build Test Generators" 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_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE)
 
-SET (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE)
+set (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE)
 
-SET (HDF5_ENABLE_SZIP_ENCODING ON CACHE BOOL "Use SZip Encoding" FORCE)
+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_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_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_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_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 (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 (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_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_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_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_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_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_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_ENABLE_THREADSAFE OFF CACHE BOOL "(WINDOWS)Enable Threadsafety" FORCE)
 
-SET (HDF5_PACKAGE_EXTLIBS OFF CACHE BOOL "(WINDOWS)CPACK - include external libraries" FORCE)
+set (HDF5_PACKAGE_EXTLIBS OFF CACHE BOOL "(WINDOWS)CPACK - include external libraries" FORCE)
 
-SET (HDF5_NO_PACKAGES ON CACHE BOOL "CPACK - Disable packaging" FORCE)
+set (HDF5_NO_PACKAGES ON CACHE BOOL "CPACK - Disable packaging" FORCE)
 
-SET (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building" 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)
+set (ZLIB_SVN_URL "http://svn.hdfgroup.uiuc.edu/zlib/trunk" CACHE STRING "Use ZLib from HDF repository" FORCE)
 
-SET (SZIP_SVN_URL "http://svn.hdfgroup.uiuc.edu/szip/trunk" CACHE STRING "Use SZip from HDF repository" FORCE)
+set (SZIP_SVN_URL "http://svn.hdfgroup.uiuc.edu/szip/trunk" CACHE STRING "Use SZip from HDF repository" FORCE)
 
-SET (ZLIB_TGZ_NAME "ZLib.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE)
+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 (SZIP_TGZ_NAME "SZip.tar.gz" CACHE STRING "Use SZip from compressed file" FORCE)
 
-SET (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Debug" FORCE)
+set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Debug" FORCE)
 
-SET (CTEST_BUILD_CONFIGURATION "Debug" CACHE STRING "Build Debug" FORCE)
+set (CTEST_BUILD_CONFIGURATION "Debug" CACHE STRING "Build Debug" FORCE)
 
-SET (ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of ZLIB package" 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)
+set (SZIP_PACKAGE_NAME "szip" CACHE STRING "Name of SZIP package" FORCE)
diff --git a/config/cmake/prunTest.cmake b/config/cmake/prunTest.cmake
index b9ead6f..3d5ec31 100644
--- a/config/cmake/prunTest.cmake
+++ b/config/cmake/prunTest.cmake
@@ -3,35 +3,35 @@
 cmake_policy(SET CMP0007 NEW)
 
 # arguments checking
-IF (NOT TEST_PROGRAM)
-  MESSAGE (FATAL_ERROR "Require TEST_PROGRAM to be defined")
-ENDIF (NOT TEST_PROGRAM)
-#IF (NOT TEST_ARGS)
-#  MESSAGE (STATUS "Require TEST_ARGS to be defined")
-#ENDIF (NOT TEST_ARGS)
-IF (NOT TEST_FOLDER)
-  MESSAGE ( FATAL_ERROR "Require TEST_FOLDER to be defined")
-ENDIF (NOT TEST_FOLDER)
-IF (NOT TEST_OUTPUT)
-  MESSAGE (FATAL_ERROR "Require TEST_OUTPUT to be defined")
-ENDIF (NOT TEST_OUTPUT)
-#IF (NOT TEST_EXPECT)
-#  MESSAGE (STATUS "Require TEST_EXPECT to be defined")
-#ENDIF (NOT TEST_EXPECT)
-#IF (NOT TEST_FILTER)
-#  MESSAGE (STATUS "Require TEST_FILTER to be defined")
-#ENDIF (NOT TEST_FILTER)
-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)
-
-MESSAGE (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
-
-IF (TEST_ENV_VAR)
-  SET (ENV{${TEST_ENV_VAR}} "${TEST_ENV_VALUE}") 
-ENDIF (TEST_ENV_VAR)
+if (NOT TEST_PROGRAM)
+  message (FATAL_ERROR "Require TEST_PROGRAM to be defined")
+endif (NOT TEST_PROGRAM)
+#if (NOT TEST_ARGS)
+#  message (STATUS "Require TEST_ARGS to be defined")
+#endif (NOT TEST_ARGS)
+if (NOT TEST_FOLDER)
+  message ( FATAL_ERROR "Require TEST_FOLDER to be defined")
+endif (NOT TEST_FOLDER)
+if (NOT TEST_OUTPUT)
+  message (FATAL_ERROR "Require TEST_OUTPUT to be defined")
+endif (NOT TEST_OUTPUT)
+#if (NOT TEST_EXPECT)
+#  message (STATUS "Require TEST_EXPECT to be defined")
+#endif (NOT TEST_EXPECT)
+#if (NOT TEST_FILTER)
+#  message (STATUS "Require TEST_FILTER to be defined")
+#endif (NOT TEST_FILTER)
+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)
+
+message (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
+
+if (TEST_ENV_VAR)
+  set (ENV{${TEST_ENV_VAR}} "${TEST_ENV_VALUE}") 
+endif (TEST_ENV_VAR)
 
 # run the test program, capture the stdout/stderr and the result var
 EXECUTE_PROCESS (
@@ -44,36 +44,36 @@ EXECUTE_PROCESS (
     ERROR_VARIABLE TEST_ERROR
 )
 
-MESSAGE (STATUS "COMMAND Result: ${TEST_RESULT}")
+message (STATUS "COMMAND Result: ${TEST_RESULT}")
 
-FILE (READ ${TEST_FOLDER}/${TEST_REFERENCE} TEST_STREAM)
-FILE (WRITE ${TEST_FOLDER}/P_${TEST_REFERENCE} "${TEST_STREAM}")
+file (READ ${TEST_FOLDER}/${TEST_REFERENCE} TEST_STREAM)
+file (WRITE ${TEST_FOLDER}/P_${TEST_REFERENCE} "${TEST_STREAM}")
 
-IF (ERROR_APPEND)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT}.err TEST_STREAM)
-  FILE (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") 
-ENDIF (ERROR_APPEND)
+if (ERROR_APPEND)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT}.err TEST_STREAM)
+  file (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") 
+endif (ERROR_APPEND)
 
-IF (TEST_APPEND)
-  FILE (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_APPEND} ${TEST_ERROR}\n") 
-ENDIF (TEST_APPEND)
+if (TEST_APPEND)
+  file (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_APPEND} ${TEST_ERROR}\n") 
+endif (TEST_APPEND)
 
-MESSAGE (STATUS "COMMAND Error: ${TEST_ERROR}")
+message (STATUS "COMMAND Error: ${TEST_ERROR}")
 
-IF (TEST_MASK)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+if (TEST_MASK)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
   STRING(REGEX REPLACE "Storage:[^\n]+\n" "Storage:   <details removed for portability>\n" TEST_STREAM "${TEST_STREAM}") 
-  FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
-ENDIF (TEST_MASK)
+  file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif (TEST_MASK)
 
-IF (TEST_MASK_MOD)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+if (TEST_MASK_MOD)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
   STRING(REGEX REPLACE "Modified:[^\n]+\n" "Modified:  XXXX-XX-XX XX:XX:XX XXX\n" TEST_STREAM "${TEST_STREAM}") 
-  FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
-ENDIF (TEST_MASK_MOD)
+  file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif (TEST_MASK_MOD)
 
-IF (TEST_MASK_ERROR)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+if (TEST_MASK_ERROR)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
   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}") 
@@ -81,65 +81,65 @@ 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}")
-ENDIF (TEST_MASK_ERROR)
+  file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif (TEST_MASK_ERROR)
 
-IF (TEST_FILTER)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+if (TEST_FILTER)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
   STRING(REGEX REPLACE "${TEST_FILTER}" "" TEST_STREAM "${TEST_STREAM}") 
-  FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
-ENDIF (TEST_FILTER)
+  file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif (TEST_FILTER)
 
-#IF (TEST_REF_FILTER)
-#  MESSAGE (STATUS "TEST_REF_FILTER: ${TEST_APPEND}${TEST_REF_FILTER}")
-#  FILE (READ ${TEST_FOLDER}/P_${TEST_REFERENCE} TEST_STREAM)
+#if (TEST_REF_FILTER)
+#  message (STATUS "TEST_REF_FILTER: ${TEST_APPEND}${TEST_REF_FILTER}")
+#  file (READ ${TEST_FOLDER}/P_${TEST_REFERENCE} TEST_STREAM)
 #  STRING(REGEX REPLACE "${TEST_APPEND}" "${TEST_REF_FILTER}" TEST_STREAM "${TEST_STREAM}") 
-#  FILE (WRITE ${TEST_FOLDER}/P_${TEST_REFERENCE} "${TEST_STREAM}")
-#ENDIF (TEST_REF_FILTER)
+#  file (WRITE ${TEST_FOLDER}/P_${TEST_REFERENCE} "${TEST_STREAM}")
+#endif (TEST_REF_FILTER)
 
-IF (NOT TEST_SKIP_COMPARE)
-  IF (WIN32 AND NOT MINGW)
-    FILE (READ ${TEST_FOLDER}/P_${TEST_REFERENCE} TEST_STREAM)
-    FILE (WRITE ${TEST_FOLDER}/P_${TEST_REFERENCE} "${TEST_STREAM}")
-  ENDIF (WIN32 AND NOT MINGW)
+if (NOT TEST_SKIP_COMPARE)
+  if (WIN32 AND NOT MINGW)
+    file (READ ${TEST_FOLDER}/P_${TEST_REFERENCE} TEST_STREAM)
+    file (WRITE ${TEST_FOLDER}/P_${TEST_REFERENCE} "${TEST_STREAM}")
+  endif (WIN32 AND NOT MINGW)
 
   # now compare the output with the reference
   EXECUTE_PROCESS (
       COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_FOLDER}/${TEST_OUTPUT} ${TEST_FOLDER}/P_${TEST_REFERENCE}
       RESULT_VARIABLE TEST_RESULT
   )
-  IF (NOT ${TEST_RESULT} STREQUAL 0)
-  SET (TEST_RESULT 0)
-  FILE (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act)
+  if (NOT ${TEST_RESULT} STREQUAL 0)
+  set (TEST_RESULT 0)
+  file (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act)
   LIST (LENGTH test_act len_act)
-  FILE (STRINGS ${TEST_FOLDER}/P_${TEST_REFERENCE} test_ref)
+  file (STRINGS ${TEST_FOLDER}/P_${TEST_REFERENCE} test_ref)
   LIST (LENGTH test_ref len_ref)
-  IF (NOT ${len_act} STREQUAL "0")
+  if (NOT ${len_act} STREQUAL "0")
     MATH (EXPR _FP_LEN "${len_ref} - 1")
-    FOREACH (line RANGE 0 ${_FP_LEN})
+    foreach (line RANGE 0 ${_FP_LEN})
       LIST (GET test_act ${line} str_act)
       LIST (GET test_ref ${line} str_ref)
-      IF (NOT "${str_act}" STREQUAL "${str_ref}")
-        IF (NOT "${str_act}" STREQUAL "")
-          SET (TEST_RESULT 1)
-          MESSAGE ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n")
-         ENDIF (NOT "${str_act}" STREQUAL "")
-      ENDIF (NOT "${str_act}" STREQUAL "${str_ref}")
-    ENDFOREACH (line RANGE 0 ${_FP_LEN})
-  ENDIF (NOT ${len_act} STREQUAL "0")
-  IF (NOT ${len_act} STREQUAL ${len_ref})
-    SET (TEST_RESULT 1)
-  ENDIF (NOT ${len_act} STREQUAL ${len_ref})
-  ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
-
-  MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}")
+      if (NOT "${str_act}" STREQUAL "${str_ref}")
+        if (NOT "${str_act}" STREQUAL "")
+          set (TEST_RESULT 1)
+          message ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n")
+         endif (NOT "${str_act}" STREQUAL "")
+      endif (NOT "${str_act}" STREQUAL "${str_ref}")
+    endforeach (line RANGE 0 ${_FP_LEN})
+  endif (NOT ${len_act} STREQUAL "0")
+  if (NOT ${len_act} STREQUAL ${len_ref})
+    set (TEST_RESULT 1)
+  endif (NOT ${len_act} STREQUAL ${len_ref})
+  endif (NOT ${TEST_RESULT} STREQUAL 0)
+
+  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 output of ${TEST_OUTPUT} did not match P_${TEST_REFERENCE}")
-  ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
-ENDIF (NOT TEST_SKIP_COMPARE)
+  if (NOT ${TEST_RESULT} STREQUAL 0)
+    message (FATAL_ERROR "Failed: The output of ${TEST_OUTPUT} did not match P_${TEST_REFERENCE}")
+  endif (NOT ${TEST_RESULT} STREQUAL 0)
+endif (NOT TEST_SKIP_COMPARE)
 
 # everything went fine...
-MESSAGE ("Passed: The output of ${TEST_PROGRAM} matches P_${TEST_REFERENCE}")
+message ("Passed: The output of ${TEST_PROGRAM} matches P_${TEST_REFERENCE}")
 
diff --git a/config/cmake/runTest.cmake b/config/cmake/runTest.cmake
index 0a80873..879426c 100644
--- a/config/cmake/runTest.cmake
+++ b/config/cmake/runTest.cmake
@@ -3,37 +3,37 @@
 cmake_policy(SET CMP0007 NEW)
 
 # arguments checking
-IF (NOT TEST_PROGRAM)
-  MESSAGE (FATAL_ERROR "Require TEST_PROGRAM to be defined")
-ENDIF (NOT TEST_PROGRAM)
-#IF (NOT TEST_ARGS)
-#  MESSAGE (STATUS "Require TEST_ARGS to be defined")
-#ENDIF (NOT TEST_ARGS)
-IF (NOT TEST_FOLDER)
-  MESSAGE ( FATAL_ERROR "Require TEST_FOLDER to be defined")
-ENDIF (NOT TEST_FOLDER)
-IF (NOT TEST_OUTPUT)
-  MESSAGE (FATAL_ERROR "Require TEST_OUTPUT to be defined")
-ENDIF (NOT TEST_OUTPUT)
-IF (NOT TEST_EXPECT)
-  MESSAGE (STATUS "Require TEST_EXPECT to be defined")
-ENDIF (NOT TEST_EXPECT)
-#IF (NOT TEST_FILTER)
-#  MESSAGE (STATUS "Require TEST_FILTER to be defined")
-#ENDIF (NOT TEST_FILTER)
-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)
-
-IF (NOT TEST_ERRREF)
-  SET (ERROR_APPEND 1)
-ENDIF (NOT TEST_ERRREF)
-
-MESSAGE (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
-
-IF (TEST_ENV_VAR)
-  SET (ENV{${TEST_ENV_VAR}} "${TEST_ENV_VALUE}") 
-ENDIF (TEST_ENV_VAR)
+if (NOT TEST_PROGRAM)
+  message (FATAL_ERROR "Require TEST_PROGRAM to be defined")
+endif (NOT TEST_PROGRAM)
+#if (NOT TEST_ARGS)
+#  message (STATUS "Require TEST_ARGS to be defined")
+#endif (NOT TEST_ARGS)
+if (NOT TEST_FOLDER)
+  message ( FATAL_ERROR "Require TEST_FOLDER to be defined")
+endif (NOT TEST_FOLDER)
+if (NOT TEST_OUTPUT)
+  message (FATAL_ERROR "Require TEST_OUTPUT to be defined")
+endif (NOT TEST_OUTPUT)
+if (NOT TEST_EXPECT)
+  message (STATUS "Require TEST_EXPECT to be defined")
+endif (NOT TEST_EXPECT)
+#if (NOT TEST_FILTER)
+#  message (STATUS "Require TEST_FILTER to be defined")
+#endif (NOT TEST_FILTER)
+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)
+
+if (NOT TEST_ERRREF)
+  set (ERROR_APPEND 1)
+endif (NOT TEST_ERRREF)
+
+message (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
+
+if (TEST_ENV_VAR)
+  set (ENV{${TEST_ENV_VAR}} "${TEST_ENV_VALUE}") 
+endif (TEST_ENV_VAR)
 
 # run the test program, capture the stdout/stderr and the result var
 EXECUTE_PROCESS (
@@ -46,42 +46,42 @@ EXECUTE_PROCESS (
     ERROR_VARIABLE TEST_ERROR
 )
 
-MESSAGE (STATUS "COMMAND Result: ${TEST_RESULT}")
+message (STATUS "COMMAND Result: ${TEST_RESULT}")
 
-IF (ERROR_APPEND)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT}.err TEST_STREAM)
-  FILE (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") 
-ENDIF (ERROR_APPEND)
+if (ERROR_APPEND)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT}.err TEST_STREAM)
+  file (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") 
+endif (ERROR_APPEND)
 
-IF (TEST_APPEND)
-  FILE (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_APPEND} ${TEST_RESULT}\n") 
-ENDIF (TEST_APPEND)
+if (TEST_APPEND)
+  file (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_APPEND} ${TEST_RESULT}\n") 
+endif (TEST_APPEND)
 
 # if the return value is !=${TEST_EXPECT} bail out
-IF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
-  MESSAGE ( FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != ${TEST_EXPECT}.\n${TEST_ERROR}")
-ENDIF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
+if (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
+  message ( FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != ${TEST_EXPECT}.\n${TEST_ERROR}")
+endif (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
 
-MESSAGE (STATUS "COMMAND Error: ${TEST_ERROR}")
+message (STATUS "COMMAND Error: ${TEST_ERROR}")
 
-IF (TEST_MASK)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+if (TEST_MASK)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
   STRING(REGEX REPLACE "Storage:[^\n]+\n" "Storage:   <details removed for portability>\n" TEST_STREAM "${TEST_STREAM}") 
-  FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
-ENDIF (TEST_MASK)
+  file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif (TEST_MASK)
 
-IF (TEST_MASK_MOD)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+if (TEST_MASK_MOD)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
   STRING(REGEX REPLACE "Modified:[^\n]+\n" "Modified:  XXXX-XX-XX XX:XX:XX XXX\n" TEST_STREAM "${TEST_STREAM}") 
-  FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
-ENDIF (TEST_MASK_MOD)
-
-IF (TEST_MASK_ERROR)
-  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)
+  file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif (TEST_MASK_MOD)
+
+if (TEST_MASK_ERROR)
+  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}") 
@@ -89,105 +89,105 @@ 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}") 
-  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)
-  FILE (READ ${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)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
   STRING(REGEX REPLACE "${TEST_FILTER}" "" TEST_STREAM "${TEST_STREAM}") 
-  FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
-ENDIF (TEST_FILTER)
+  file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif (TEST_FILTER)
 
-IF (NOT TEST_SKIP_COMPARE)
-  IF (WIN32 AND NOT MINGW)
-    FILE (READ ${TEST_FOLDER}/${TEST_REFERENCE} TEST_STREAM)
-    FILE (WRITE ${TEST_FOLDER}/${TEST_REFERENCE} "${TEST_STREAM}")
-  ENDIF (WIN32 AND NOT MINGW)
+if (NOT TEST_SKIP_COMPARE)
+  if (WIN32 AND NOT MINGW)
+    file (READ ${TEST_FOLDER}/${TEST_REFERENCE} TEST_STREAM)
+    file (WRITE ${TEST_FOLDER}/${TEST_REFERENCE} "${TEST_STREAM}")
+  endif (WIN32 AND NOT MINGW)
 
   # now compare the output with the reference
   EXECUTE_PROCESS (
       COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_FOLDER}/${TEST_OUTPUT} ${TEST_FOLDER}/${TEST_REFERENCE}
       RESULT_VARIABLE TEST_RESULT
   )
-  IF (NOT ${TEST_RESULT} STREQUAL 0)
-  SET (TEST_RESULT 0)
-  FILE (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act)
+  if (NOT ${TEST_RESULT} STREQUAL 0)
+  set (TEST_RESULT 0)
+  file (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act)
   LIST (LENGTH test_act len_act)
-  FILE (STRINGS ${TEST_FOLDER}/${TEST_REFERENCE} test_ref)
+  file (STRINGS ${TEST_FOLDER}/${TEST_REFERENCE} test_ref)
   LIST (LENGTH test_ref len_ref)
-  IF (NOT ${len_act} STREQUAL "0")
+  if (NOT ${len_act} STREQUAL "0")
     MATH (EXPR _FP_LEN "${len_ref} - 1")
-    FOREACH (line RANGE 0 ${_FP_LEN})
+    foreach (line RANGE 0 ${_FP_LEN})
       LIST (GET test_act ${line} str_act)
       LIST (GET test_ref ${line} str_ref)
-      IF (NOT "${str_act}" STREQUAL "${str_ref}")
-        IF (NOT "${str_act}" STREQUAL "")
-          SET (TEST_RESULT 1)
-          MESSAGE ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n")
-         ENDIF (NOT "${str_act}" STREQUAL "")
-      ENDIF (NOT "${str_act}" STREQUAL "${str_ref}")
-    ENDFOREACH (line RANGE 0 ${_FP_LEN})
-  ENDIF (NOT ${len_act} STREQUAL "0")
-  IF (NOT ${len_act} STREQUAL ${len_ref})
-    SET (TEST_RESULT 1)
-  ENDIF (NOT ${len_act} STREQUAL ${len_ref})
-  ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
-
-  MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}")
+      if (NOT "${str_act}" STREQUAL "${str_ref}")
+        if (NOT "${str_act}" STREQUAL "")
+          set (TEST_RESULT 1)
+          message ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n")
+         endif (NOT "${str_act}" STREQUAL "")
+      endif (NOT "${str_act}" STREQUAL "${str_ref}")
+    endforeach (line RANGE 0 ${_FP_LEN})
+  endif (NOT ${len_act} STREQUAL "0")
+  if (NOT ${len_act} STREQUAL ${len_ref})
+    set (TEST_RESULT 1)
+  endif (NOT ${len_act} STREQUAL ${len_ref})
+  endif (NOT ${TEST_RESULT} STREQUAL 0)
+
+  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 output of ${TEST_OUTPUT} did not match ${TEST_REFERENCE}")
-  ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
+  if (NOT ${TEST_RESULT} STREQUAL 0)
+    message (FATAL_ERROR "Failed: The output of ${TEST_OUTPUT} 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)
+  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
     )
-    IF (NOT ${TEST_RESULT} STREQUAL 0)
-    SET (TEST_RESULT 0)
-    FILE (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT}.err test_act)
+    if (NOT ${TEST_RESULT} STREQUAL 0)
+    set (TEST_RESULT 0)
+    file (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT}.err test_act)
     LIST (LENGTH test_act len_act)
-    FILE (STRINGS ${TEST_FOLDER}/${TEST_ERRREF} test_ref)
+    file (STRINGS ${TEST_FOLDER}/${TEST_ERRREF} test_ref)
     LIST (LENGTH test_ref len_ref)
     MATH (EXPR _FP_LEN "${len_ref} - 1")
-    IF (NOT ${len_act} STREQUAL "0")
+    if (NOT ${len_act} STREQUAL "0")
       MATH (EXPR _FP_LEN "${len_ref} - 1")
-      FOREACH (line RANGE 0 ${_FP_LEN})
+      foreach (line RANGE 0 ${_FP_LEN})
         LIST (GET test_act ${line} str_act)
         LIST (GET test_ref ${line} str_ref)
-        IF (NOT "${str_act}" STREQUAL "${str_ref}")
-          IF (NOT "${str_act}" STREQUAL "")
-            SET (TEST_RESULT 1)
-            MESSAGE ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n")
-           ENDIF (NOT "${str_act}" STREQUAL "")
-        ENDIF (NOT "${str_act}" STREQUAL "${str_ref}")
-      ENDFOREACH (line RANGE 0 ${_FP_LEN})
-    ENDIF (NOT ${len_act} STREQUAL "0")
-    IF (NOT ${len_act} STREQUAL ${len_ref})
-      SET (TEST_RESULT 1)
-    ENDIF (NOT ${len_act} STREQUAL ${len_ref})
-    ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
-
-    MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}")
+        if (NOT "${str_act}" STREQUAL "${str_ref}")
+          if (NOT "${str_act}" STREQUAL "")
+            set (TEST_RESULT 1)
+            message ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n")
+           endif (NOT "${str_act}" STREQUAL "")
+        endif (NOT "${str_act}" STREQUAL "${str_ref}")
+      endforeach (line RANGE 0 ${_FP_LEN})
+    endif (NOT ${len_act} STREQUAL "0")
+    if (NOT ${len_act} STREQUAL ${len_ref})
+      set (TEST_RESULT 1)
+    endif (NOT ${len_act} STREQUAL ${len_ref})
+    endif (NOT ${TEST_RESULT} STREQUAL 0)
+
+    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_OUTPUT}.err did not match ${TEST_ERRREF}")
-    ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
-  ENDIF (TEST_ERRREF)
-ENDIF (NOT TEST_SKIP_COMPARE)
+    if (NOT ${TEST_RESULT} STREQUAL 0)
+      message (FATAL_ERROR "Failed: The error output of ${TEST_OUTPUT}.err did not match ${TEST_ERRREF}")
+    endif (NOT ${TEST_RESULT} STREQUAL 0)
+  endif (TEST_ERRREF)
+endif (NOT TEST_SKIP_COMPARE)
 
 # everything went fine...
-MESSAGE ("Passed: The output of ${TEST_PROGRAM} matches ${TEST_REFERENCE}")
+message ("Passed: The output of ${TEST_PROGRAM} matches ${TEST_REFERENCE}")
diff --git a/config/cmake/userblockTest.cmake b/config/cmake/userblockTest.cmake
index 8910bb2..2e0740b 100644
--- a/config/cmake/userblockTest.cmake
+++ b/config/cmake/userblockTest.cmake
@@ -2,44 +2,44 @@
 # against a reference file. Exit status of command can also be compared.
 
 # arguments checking
-IF (NOT TEST_PROGRAM)
-  MESSAGE (FATAL_ERROR "Require TEST_PROGRAM tellub to be defined")
-ENDIF (NOT TEST_PROGRAM)
-IF (NOT TEST_GET_PROGRAM)
-  MESSAGE (FATAL_ERROR "Require TEST_GET_PROGRAM getub to be defined")
-ENDIF (NOT TEST_GET_PROGRAM)
-IF (NOT TEST_FOLDER)
-  MESSAGE ( FATAL_ERROR "Require TEST_FOLDER to be defined")
-ENDIF (NOT TEST_FOLDER)
-IF (NOT TEST_HFILE)
-  MESSAGE (FATAL_ERROR "Require TEST_HFILE the hdf file to be defined")
-ENDIF (NOT TEST_HFILE)
-IF (NOT TEST_UFILE)
-  MESSAGE (FATAL_ERROR "Require TEST_UFILE the ub file to be defined")
-ENDIF (NOT TEST_UFILE)
-IF (NOT TEST_CHECKUB)
-  MESSAGE (STATUS "Require TEST_CHECKUB - YES or NO - to be defined")
-ENDIF (NOT TEST_CHECKUB)
-#IF (NOT TEST_EXPECT)
-#  MESSAGE (STATUS "Require TEST_EXPECT to be defined")
-#ENDIF (NOT TEST_EXPECT)
-#IF (NOT TEST_OFILE)
-#  MESSAGE (FATAL_ERROR "Require TEST_OFILE the original hdf file to be defined")
-#ENDIF (NOT TEST_OFILE)
+if (NOT TEST_PROGRAM)
+  message (FATAL_ERROR "Require TEST_PROGRAM tellub to be defined")
+endif (NOT TEST_PROGRAM)
+if (NOT TEST_GET_PROGRAM)
+  message (FATAL_ERROR "Require TEST_GET_PROGRAM getub to be defined")
+endif (NOT TEST_GET_PROGRAM)
+if (NOT TEST_FOLDER)
+  message ( FATAL_ERROR "Require TEST_FOLDER to be defined")
+endif (NOT TEST_FOLDER)
+if (NOT TEST_HFILE)
+  message (FATAL_ERROR "Require TEST_HFILE the hdf file to be defined")
+endif (NOT TEST_HFILE)
+if (NOT TEST_UFILE)
+  message (FATAL_ERROR "Require TEST_UFILE the ub file to be defined")
+endif (NOT TEST_UFILE)
+if (NOT TEST_CHECKUB)
+  message (STATUS "Require TEST_CHECKUB - YES or NO - to be defined")
+endif (NOT TEST_CHECKUB)
+#if (NOT TEST_EXPECT)
+#  message (STATUS "Require TEST_EXPECT to be defined")
+#endif (NOT TEST_EXPECT)
+#if (NOT TEST_OFILE)
+#  message (FATAL_ERROR "Require TEST_OFILE the original hdf file to be defined")
+#endif (NOT TEST_OFILE)
 
-SET (TEST_U_STRING_LEN 0)
-SET (TEST_O_STRING_LEN 0)
-SET (TEST_H_STRING_LEN 0)
-SET (TEST_STRING_SIZE 0)
+set (TEST_U_STRING_LEN 0)
+set (TEST_O_STRING_LEN 0)
+set (TEST_H_STRING_LEN 0)
+set (TEST_STRING_SIZE 0)
 
-IF (TEST_CHECKUB STREQUAL "YES")
+if (TEST_CHECKUB STREQUAL "YES")
   # find the length of the user block to check
   #s1=`cat $ufile | wc -c | sed -e 's/ //g'`
-  FILE (STRINGS ${TEST_FOLDER}/${TEST_UFILE} TEST_U_STRING)
-  STRING (LENGTH ${TEST_U_STRING} TEST_U_STRING_LEN)
+  file (STRINGS ${TEST_FOLDER}/${TEST_UFILE} TEST_U_STRING)
+  string (LENGTH ${TEST_U_STRING} TEST_U_STRING_LEN)
 
   # Get the size of the original user block, if any.
-  IF (TEST_OFILE)
+  if (TEST_OFILE)
     # 'tellub' calls H5Fget_user_block to get the size
     #  of the user block
     #s2=`$JAM_BIN/tellub $origfile`
@@ -51,15 +51,15 @@ IF (TEST_CHECKUB STREQUAL "YES")
         OUTPUT_VARIABLE TEST_ERROR
         ERROR_VARIABLE TEST_ERROR
     )
-    IF (NOT ${TEST_RESULT} STREQUAL "0")
-      MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} ${TEST_OFILE} is: ${TEST_ERROR}")
-    ENDIF (NOT ${TEST_RESULT} STREQUAL "0")
-    FILE (READ ${TEST_HFILE}.len.txt TEST_O_STRING_LEN)
-  ENDIF (TEST_OFILE)
+    if (NOT ${TEST_RESULT} STREQUAL "0")
+      message (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} ${TEST_OFILE} is: ${TEST_ERROR}")
+    endif (NOT ${TEST_RESULT} STREQUAL "0")
+    file (READ ${TEST_HFILE}.len.txt TEST_O_STRING_LEN)
+  endif (TEST_OFILE)
    
   MATH( EXPR TEST_STRING_SIZE "${TEST_U_STRING_LEN} + ${TEST_O_STRING_LEN}" )
  
-  IF (NOT TEST_O_STRING_LEN STREQUAL "0")
+  if (NOT TEST_O_STRING_LEN STREQUAL "0")
     #$JAM_BIN/getub -c $s2 $origfile > $cmpfile
     EXECUTE_PROCESS (
         COMMAND ${TEST_GET_PROGRAM} -c ${TEST_O_STRING_LEN} ${TEST_OFILE}
@@ -71,12 +71,12 @@ IF (TEST_CHECKUB STREQUAL "YES")
         OUTPUT_STRIP_TRAILING_WHITESPACE
     )
     #cat $ufile >> $cmpfile
-    FILE (STRINGS ${TEST_UFILE} TEST_STREAM NEWLINE_CONSUME)
-    FILE (APPEND ${TEST_HFILE}-ub.cmp "${TEST_STREAM}") 
-  ELSE (NOT TEST_O_STRING_LEN STREQUAL "0")
-    FILE (STRINGS ${TEST_UFILE} TEST_STREAM NEWLINE_CONSUME)
-    FILE (WRITE ${TEST_HFILE}-ub.cmp ${TEST_STREAM})
-  ENDIF (NOT TEST_O_STRING_LEN STREQUAL "0")
+    file (STRINGS ${TEST_UFILE} TEST_STREAM NEWLINE_CONSUME)
+    file (APPEND ${TEST_HFILE}-ub.cmp "${TEST_STREAM}") 
+  else (NOT TEST_O_STRING_LEN STREQUAL "0")
+    file (STRINGS ${TEST_UFILE} TEST_STREAM NEWLINE_CONSUME)
+    file (WRITE ${TEST_HFILE}-ub.cmp ${TEST_STREAM})
+  endif (NOT TEST_O_STRING_LEN STREQUAL "0")
 
   #$JAM_BIN/getub -c $size $hfile > $tfile
   EXECUTE_PROCESS (
@@ -95,12 +95,12 @@ IF (TEST_CHECKUB STREQUAL "YES")
       RESULT_VARIABLE TEST_RESULT
   )
 
-  MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}: ${TEST_STRING_SIZE}=${TEST_U_STRING_LEN}+${TEST_O_STRING_LEN}")
+  message (STATUS "COMPARE Result: ${TEST_RESULT}: ${TEST_STRING_SIZE}=${TEST_U_STRING_LEN}+${TEST_O_STRING_LEN}")
   # if the return value is !=${TEST_EXPECT} bail out
-  IF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
-    MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_HFILE}-ub did not match ${TEST_HFILE}.\n${TEST_ERROR}")
-  ENDIF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
-ELSE (TEST_CHECKUB STREQUAL "YES")
+  if (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
+    message (FATAL_ERROR "Failed: The output of ${TEST_HFILE}-ub did not match ${TEST_HFILE}.\n${TEST_ERROR}")
+  endif (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
+else (TEST_CHECKUB STREQUAL "YES")
     # call 'ubsize' to get the size of the user block
     #ubsize=`$JAM_BIN/tellub $hfile`
     EXECUTE_PROCESS (
@@ -110,11 +110,11 @@ ELSE (TEST_CHECKUB STREQUAL "YES")
         OUTPUT_VARIABLE TEST_ERROR
         ERROR_VARIABLE TEST_ERROR
     )
-  IF (NOT TEST_H_STRING_LEN STREQUAL "0")
-    MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_HFILE} was NOT empty")
-  ENDIF (NOT TEST_H_STRING_LEN STREQUAL "0")
-ENDIF (TEST_CHECKUB STREQUAL "YES")
+  if (NOT TEST_H_STRING_LEN STREQUAL "0")
+    message (FATAL_ERROR "Failed: The output of ${TEST_HFILE} was NOT empty")
+  endif (NOT TEST_H_STRING_LEN STREQUAL "0")
+endif (TEST_CHECKUB STREQUAL "YES")
 
 # everything went fine...
-MESSAGE ("Passed: The output of CHECK matched expectation")
+message ("Passed: The output of CHECK matched expectation")
 
diff --git a/config/cmake/version.plist.in b/config/cmake/version.plist.in
new file mode 100644
index 0000000..817d89e
--- /dev/null
+++ b/config/cmake/version.plist.in
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<plist version="1.0">
+<dict>
+    <key>BuildVersion</key>
+    <string>@CPACK_PACKAGE_VERSION_MAJOR@</string>
+    <key>CFBundleShortVersionString</key>
+    <string>@CPACK_APPLE_GUI_SHORT_VERSION_STRING@</string>
+    <key>CFBundleVersion</key>
+    <string>@CPACK_APPLE_GUI_SHORT_VERSION_STRING@</string>
+    <key>ProjectName</key>
+    <string>@CPACK_APPLE_GUI_BUNDLE_NAME@</string>
+    <key>SourceVersion</key>
+    <string>@CPACK_PACKAGE_VERSION_MINOR@</string>
+</dict>
+</plist>
diff --git a/config/cmake/vfdTest.cmake b/config/cmake/vfdTest.cmake
index 2e854fb..d3cb87e 100644
--- a/config/cmake/vfdTest.cmake
+++ b/config/cmake/vfdTest.cmake
@@ -2,27 +2,27 @@
 # Exit status of command can also be compared.
 
 # arguments checking
-IF (NOT TEST_PROGRAM)
-  MESSAGE (FATAL_ERROR "Require TEST_PROGRAM to be defined")
-ENDIF (NOT TEST_PROGRAM)
-#IF (NOT TEST_ARGS)
-#  MESSAGE (STATUS "Require TEST_ARGS to be defined")
-#ENDIF (NOT TEST_ARGS)
-#IF (NOT TEST_EXPECT)
-#  MESSAGE (STATUS "Require TEST_EXPECT to be defined")
-#ENDIF (NOT TEST_EXPECT)
-IF (NOT TEST_FOLDER)
-  MESSAGE ( FATAL_ERROR "Require TEST_FOLDER to be defined")
-ENDIF (NOT TEST_FOLDER)
-IF (NOT TEST_VFD)
-  MESSAGE (FATAL_ERROR "Require TEST_VFD to be defined")
-ENDIF (NOT TEST_VFD)
-
-SET (ERROR_APPEND 1)
-
-MESSAGE (STATUS "USING ${TEST_VFD} ON COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
-
-SET (ENV{HDF5_DRIVER} "${TEST_VFD}")
+if (NOT TEST_PROGRAM)
+  message (FATAL_ERROR "Require TEST_PROGRAM to be defined")
+endif (NOT TEST_PROGRAM)
+#if (NOT TEST_ARGS)
+#  message (STATUS "Require TEST_ARGS to be defined")
+#endif (NOT TEST_ARGS)
+#if (NOT TEST_EXPECT)
+#  message (STATUS "Require TEST_EXPECT to be defined")
+#endif (NOT TEST_EXPECT)
+if (NOT TEST_FOLDER)
+  message ( FATAL_ERROR "Require TEST_FOLDER to be defined")
+endif (NOT TEST_FOLDER)
+if (NOT TEST_VFD)
+  message (FATAL_ERROR "Require TEST_VFD to be defined")
+endif (NOT TEST_VFD)
+
+set (ERROR_APPEND 1)
+
+message (STATUS "USING ${TEST_VFD} ON COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
+
+set (ENV{HDF5_DRIVER} "${TEST_VFD}")
 # run the test program, capture the stdout/stderr and the result var
 EXECUTE_PROCESS (
     COMMAND ${TEST_PROGRAM} ${TEST_ARGS}
@@ -33,18 +33,18 @@ EXECUTE_PROCESS (
     ERROR_VARIABLE TEST_ERROR
 )
 
-MESSAGE (STATUS "COMMAND Result: ${TEST_RESULT}")
+message (STATUS "COMMAND Result: ${TEST_RESULT}")
 
-IF (ERROR_APPEND)
-  FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT}_${TEST_VFD}.err TEST_STREAM)
-  FILE (APPEND ${TEST_FOLDER}/${TEST_OUTPUT}_${TEST_VFD}.out "${TEST_STREAM}") 
-ENDIF (ERROR_APPEND)
+if (ERROR_APPEND)
+  file (READ ${TEST_FOLDER}/${TEST_OUTPUT}_${TEST_VFD}.err TEST_STREAM)
+  file (APPEND ${TEST_FOLDER}/${TEST_OUTPUT}_${TEST_VFD}.out "${TEST_STREAM}") 
+endif (ERROR_APPEND)
 
 # if the return value is !=${TEST_EXPECT} bail out
-IF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
-  MESSAGE ( FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != ${TEST_EXPECT}.\n${TEST_ERROR}")
-ENDIF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
+if (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
+  message ( FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != ${TEST_EXPECT}.\n${TEST_ERROR}")
+endif (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
 
 # everything went fine...
-MESSAGE ("Passed: The ${TEST_PROGRAM} program used vfd ${TEST_VFD}")
+message ("Passed: The ${TEST_PROGRAM} program used vfd ${TEST_VFD}")
 
diff --git a/config/cmake/xlatefile.c b/config/cmake/xlatefile.c
deleted file mode 100644
index e220289..0000000
--- a/config/cmake/xlatefile.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define BUFFERSIZE 1024
-
-int main(int argc, char *argv[]) {
-    FILE *infile = NULL;
-    FILE *outfile = NULL;
-    char *buffer = NULL;
-    char argbuf[8];
-    size_t bytes = 0;
-    size_t idx = 0;
-    unsigned int lineidx = 0;
-    unsigned int stripXlines = 3;
-   
-    if(argc < 3)
-        exit(1);
-    if(NULL == (infile = fopen(argv[1], "rb")))
-        exit(2);
-    if(NULL == (outfile = fopen(argv[2], "wb+")))
-        exit(3);
-    if(argc > 3)
-        if(argv[3][0] == '-')
-            if(argv[3][1] == 'l') {
-                strcpy(argbuf, &argv[3][2]);
-                stripXlines = atoi(argbuf);
-            }
-    buffer = (char*)malloc(BUFFERSIZE);
-    if(buffer) {
-        while(!feof(infile)) {
-            /* read the file into the buffer. */
-            bytes = fread(buffer, 1, BUFFERSIZE, infile);  
-            if(lineidx < stripXlines) {
-                for(idx = 0; idx < bytes; idx++) {
-                    if(buffer[idx] == '\n') {
-                        lineidx++;
-                        if(buffer[idx+1] == '\r')
-                            idx++;
-                    }
-                    if(lineidx >= stripXlines) {
-                        fwrite(&buffer[idx+1], 1, bytes-idx-1, outfile);
-                        idx = bytes;
-                    }
-                }
-            }
-            else
-                fwrite(buffer, 1, bytes, outfile);
-        }
-        free(buffer);
-    }
-    fclose(outfile);
-    fclose(infile);
-    
-    return 0;
-}
diff --git a/config/examples.am b/config/examples.am
index bf0708c..8597a16 100644
--- a/config/examples.am
+++ b/config/examples.am
@@ -91,27 +91,32 @@ install-examples: $(EXAMPLEDIR) $(INSTALL_FILES)
 uninstall-examples:
 	@if test -n "$(INSTALL_FILES)" -a -d $(EXAMPLEDIR); then             \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_FILES);                \
-        fi
+	fi
 	@if test -n "$(INSTALL_SCRIPT_FILES)" -a -d $(EXAMPLEDIR); then           \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_SCRIPT_FILES);              \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_FILES);       \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_SCRIPT_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_SCRIPT_FILES);       \
-        fi
+	fi
 
 installcheck-local:
 	@if test "$(STATIC_SHARED)" = "static, shared"; then               \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
 	  $(MAKE) $(AM_MAKEFLAGS) clean;                                   \
 	  H5CCFLAGS="" $(MAKE) $(AM_MAKEFLAGS) check;                      \
-	 elif test "$(STATIC_SHARED)" = "shared"; then                     \
+	elif test "$(STATIC_SHARED)" = "shared"; then                     \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
-	 else                                                              \
+	else                                                              \
 	  $(MAKE) $(AM_MAKEFLAGS) check;                                   \
-	 fi
-
-
+	fi 
+	@if test "$(INSTALL_FILES)" -a $(TEST_EXAMPLES_SCRIPT) -a -d $(EXAMPLEDIR); then \
+	    echo "============================";                                         \
+	    echo "Testing $(TEST_EXAMPLES_SCRIPT)";                                      \
+	    echo "============================";                                         \
+	    (cd $(EXAMPLEDIR);                                                           \
+	     /bin/sh ./$(TEST_EXAMPLES_SCRIPT);)                                                   \
+	fi
 
diff --git a/config/intel-flags b/config/intel-flags
index 1d01d7f..3187daf 100644
--- a/config/intel-flags
+++ b/config/intel-flags
@@ -92,12 +92,8 @@ fi
 #
 # Please follow the pattern below by adding new versions at the top, copying
 # the information from the previous version and adding modifications to that.
+# The default at the bottom will apply if no earlier version matches.
 case "$cc_vendor-$cc_version" in
-    icc-11* | icc-12*)
-        # -s became obsolete; we also fixed bugs that allow us to enable higher level
-        # of optimization starting with 1.8.7
-        PROD_CFLAGS="-O3"
-        ;;
     icc-10*)
         PROD_CFLAGS="-O1 -Wl,-s"
         ;;
@@ -105,6 +101,11 @@ case "$cc_vendor-$cc_version" in
 	# v8.0 -O3 infinite loops when compiling test/tselect.c. Use -O2.
 	PROD_CFLAGS="-O2 -Wl,-s"
 	;;
+    icc-*)
+        # -s became obsolete; we also fixed bugs that allow us to enable higher level
+        # of optimization starting with 1.8.7
+        PROD_CFLAGS="-O3"
+        ;;
 esac
 
 # Clear cc info if no flags set
diff --git a/config/irix6.x b/config/irix6.x
index 8179b86..8907a66 100644
--- a/config/irix6.x
+++ b/config/irix6.x
@@ -171,7 +171,7 @@ hdf5_cv_ulong_to_fp_bottom_bit_accurate=${hdf5_cv_ulong_to_fp_bottom_bit_accurat
 hdf5_cv_ldouble_to_integer_accurate=${hdf5_cv_ldouble_to_integer_accurate='no'}
 hdf5_cv_integer_to_ldouble_accurate=${hdf5_cv_integer_to_ldouble_accurate='no'}
 
-# Set flag to generate alternate code for H5V_log2_gen, to avoid
+# Set flag to generate alternate code for H5VM_log2_gen, to avoid
 # problems with the MIPSpro compiler 7.30 and IRIX64 6.5 (ie. other
 # combinations might work, but haven't been tested)
 # (9/15/06 - QAK)
diff --git a/config/linux-gnulibc1 b/config/linux-gnulibc1
index 9dcc411..c18c02d 100644
--- a/config/linux-gnulibc1
+++ b/config/linux-gnulibc1
@@ -41,7 +41,6 @@ fi
 # Figure out Intel C compiler flags
 . $srcdir/config/intel-flags
 
-echo "CC_BASENAME is $CC_BASENAME."
 # Use default Fortran 90 compiler according to what C compiler is used.
 if test "X-" = "X-$FC"; then
     case $CC_BASENAME in
@@ -136,6 +135,13 @@ case $CC in
         cc_version_info=`$CC $CFLAGS $H5_CFLAGS --version 2>&1 | grep -v 'PathScale' |\
             grep 'GCC' | sed 's/\(.*(GCC) [-a-z0-9\. ]*\).*/\1/'`
         ;;
+    # this must come before *icc* for the same reason
+    *mpicc*)
+        cc_version_info=`$CC $CCFLAGS $H5_CCFLAGS -v 2>&1 | grep 'version' |\
+            sed 's/^[a-z0-9]* for //' |\
+            sed 's/^\([a-z]* \)/ built with \1/1'`
+        cc_version_info=`echo $cc_version_info`
+        ;; 
 
     *icc*)
         cc_version_info=`$CC $CCFLAGS $H5_CCFLAGS -V 2>&1 | grep 'Version' |\
@@ -154,6 +160,13 @@ case $FC in
             grep 'GCC' | sed 's/\(.*(GCC) [-a-z0-9\. ]*\).*/\1/'`
         ;;
 
+    *mpif90*)
+        fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -v 2>&1 | grep 'version' |\
+            sed 's/^[a-z0-9]* for //' |\
+            sed 's/^\([a-z]* \)/ built with \1/1'`
+        fc_version_info=`echo $fc_version_info`
+        ;;
+
     *ifc*|*ifort*)
         fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'Version' |\
             sed 's/\(Intel.* Compiler\).*\( Version [a-z0-9\.]*\).*\( Build [0-9]*\)/\1\2\3/'`
@@ -202,6 +215,12 @@ case $CXX in
         cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -V 2>&1 | grep 'pgCC'`
         ;;
 
+    *mpicxx*)
+        cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -v 2>&1 | grep 'version' |\
+            sed 's/^[a-z0-9]* for //' |\
+            sed 's/^\([a-z]* \)/ built with \1/1'`
+        cxx_version_info=`echo $cxx_version_info`
+        ;; 
 
     *)
         echo "No match to get cxx_version_info for $CXX"
diff --git a/config/lt_vers.am b/config/lt_vers.am
index d58e661..d7d5848 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 = 8
-LT_VERS_REVISION = 1
+LT_VERS_REVISION = 2 
 LT_VERS_AGE = 0
 
 ## If the API changes *at all*, increment LT_VERS_INTERFACE and
diff --git a/config/solaris2.x b/config/solaris2.x
index edf8d59..310c373 100644
--- a/config/solaris2.x
+++ b/config/solaris2.x
@@ -122,7 +122,7 @@ fi
 case $CC in
     *cc*)
         cc_version_info=`$CC $CFLAGS $H5_CFLAGS -V 2>&1 | grep 'Sun' |\
-            sed 's/.*\(Sun.*\)/\1 /'`
+            sed 's/.*\(Sun .*\)/\1 /'`
         ;;
 
     *)
@@ -135,7 +135,7 @@ case $FC in
     # The PGI and Intel compilers are automatically detected below
     *f90*)
         fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'Sun' |\
-            sed 's/.*\(Sun.*\)/\1 /'`
+            sed 's/.*\(Sun .*\)/\1 /'`
         ;;
 
      *)
@@ -148,7 +148,7 @@ echo "Fortran compiler '$FC' is $fc_version_info"
 case $CXX in
     *CC*)
         cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -V 2>&1 | grep 'Sun' |\
-            sed 's/.*\(Sun.*\)/\1 /'`
+            sed 's/.*\(Sun .*\)/\1 /'`
         ;;
 
     *)
diff --git a/configure b/configure
index fc45a45..f1b9ed1 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
-# From configure.ac Id: configure.ac 24276 2013-10-09 22:00:11Z epourmal .
+# From configure.ac Id: configure.ac 25134 2014-04-29 01:57:33Z epourmal .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for HDF5 1.8.12.
+# Generated by GNU Autoconf 2.69 for HDF5 1.8.13.
 #
 # Report bugs to <help at hdfgroup.org>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='HDF5'
 PACKAGE_TARNAME='hdf5'
-PACKAGE_VERSION='1.8.12'
-PACKAGE_STRING='HDF5 1.8.12'
+PACKAGE_VERSION='1.8.13'
+PACKAGE_STRING='HDF5 1.8.13'
 PACKAGE_BUGREPORT='help at hdfgroup.org'
 PACKAGE_URL=''
 
@@ -785,7 +785,6 @@ HAVE_DMALLOC
 CODESTACK
 INSTRUMENT
 LARGEFILE
-GPFS
 HDF5_HL
 CXX
 HDF_CXX
@@ -909,9 +908,8 @@ with_fnord
 with_dmalloc
 with_zlib
 with_szlib
-with_pthread
 enable_threadsafe
-enable_gpfs
+with_pthread
 enable_debug
 enable_codestack
 enable_metadata_trace_file
@@ -1490,7 +1488,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.12 to adapt to many kinds of systems.
+\`configure' configures HDF5 1.8.13 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1560,7 +1558,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of HDF5 1.8.12:";;
+     short | recursive ) echo "Configuration of HDF5 1.8.13:";;
    esac
   cat <<\_ACEOF
 
@@ -1596,9 +1594,7 @@ Optional Features:
   --disable-linux-lfs     Disable support for large (64-bit) files on Linux.
                           This option is deprecated in favor of
                           --disable-largefile.
-  --enable-threadsafe     Enable thread safe capability
-  --enable-gpfs           Enable GPFS hints for the MPI/POSIX file driver.
-                          [default=no]
+  --enable-threadsafe     Enable thread-safe capability
   --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
@@ -1670,14 +1666,15 @@ Optional Packages:
                           [default=yes]
   --with-szlib=DIR        Use szlib library for external szlib I/O filter
                           [default=no]
-  --with-pthread=DIR      Use the Pthreads library [default=no]
+  --with-pthread=DIR      Specify alternative path to Pthreads library when
+                          thread-safe capability is built
   --with-mpe=DIR          Use MPE instrumentation [default=no]
   --with-default-vfd=driver
                           Specify default file driver [default=sec2]
   --with-default-plugindir=location
                           Specify default location for plugins
                           [default="/usr/local/hdf5/lib/plugin"]
-  --with-default-api-version=(v16|v18)
+  --with-default-api-version=(v16|v18|v110)
                           Specify default release version of public symbols
                           [default=v18]
 
@@ -1762,7 +1759,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-HDF5 configure 1.8.12
+HDF5 configure 1.8.13
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2856,7 +2853,7 @@ 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.12, which was
+It was created by HDF5 $as_me 1.8.13, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3241,7 +3238,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 ## 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'
+am__api_version='1.14'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -3425,8 +3422,8 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
@@ -3666,6 +3663,45 @@ else
 fi
 rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+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=1;;
+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='\'
+
 if test "`cd $srcdir && pwd`" != "`pwd`"; then
   # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
   # is not polluted with repeated "-I."
@@ -3688,7 +3724,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='hdf5'
- VERSION='1.8.12'
+ VERSION='1.8.13'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3728,12 +3764,58 @@ mkdir_p='$(MKDIR_P)'
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
 
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
 
 
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
 # Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
@@ -3975,7 +4057,6 @@ $as_echo "done" >&6; }
 ## 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.
@@ -3997,7 +4078,6 @@ $as_echo "done" >&6; }
  HDF_CXX=no
  HDF_CXX=no
  HDF5_HL=yes
- GPFS=no
  LARGEFILE=yes
 
  CODESTACK=no
@@ -4963,6 +5043,65 @@ 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
+
+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'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+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'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -22089,6 +22228,7 @@ $as_echo "no" >&6; }
     runpath_var=
     hardcode_libdir_flag_spec=
     hardcode_libdir_flag_spec_ld=
+    hardcode_into_libs=no
     ;;
   X-|X-yes)
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -22101,9 +22241,6 @@ $as_echo "error" >&6; }
     ;;
 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
@@ -26211,25 +26348,79 @@ 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.
+## Enable thread-safe version of library.  It requires Pthreads support
+## on POSIX systems.
 ##
- HAVE_PTHREAD=yes
+{ $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.
+if test "${enable_threadsafe+set}" = set; then :
+  enableval=$enable_threadsafe; THREADSAFE=$enableval
+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
+  fi
+fi
+
+case "X-$THREADSAFE" in
+  X-|X-no)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  X-yes)
+    THREADSAFE=yes
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5
+$as_echo "error" >&6; }
+    as_fn_error $? "\'$enableval\' is not a valid threadsafe type" "$LINENO" 5
+    ;;
+esac
+
+if test "X$THREADSAFE" = "Xyes"; then
+
+$as_echo "#define HAVE_THREADSAFE 1" >>confdefs.h
+
+
+    ## ----------------------------------------------------------------------
+    ## 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.
+    ##
+    ## Thread-safety in HDF5 only uses Pthreads via configure, so the
+    ## default is "yes", though this only has an effect when
+    ## --enable-threadsafe is specified.
+     HAVE_PTHREAD=yes
 
 # Check whether --with-pthread was given.
 if test "${with_pthread+set}" = set; then :
   withval=$with_pthread;
 else
-  withval=no
+  withval=yes
 fi
 
 
-case "$withval" in
-  yes)
-    for ac_header in pthread.h
+    case "$withval" in
+      yes)
+        for ac_header in pthread.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
 if test "x$ac_cv_header_pthread_h" = xyes; then :
@@ -26243,8 +26434,8 @@ fi
 
 done
 
-    if test "x$HAVE_PTHREAD" = "xyes"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
+        if test "x$HAVE_PTHREAD" = "xyes"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
 $as_echo_n "checking for pthread_self in -lpthread... " >&6; }
 if ${ac_cv_lib_pthread_pthread_self+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -26299,44 +26490,44 @@ else
   unset HAVE_PTHREAD
 fi
 
-    fi
-    ;;
-  no)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread" >&5
+        fi
+        ;;
+      no)
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread" >&5
 $as_echo_n "checking for pthread... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
 $as_echo "suppressed" >&6; }
-    unset HAVE_PTHREAD
-    ;;
-  *)
-    case "$withval" in
-      *,*)
-        pthread_inc="`echo $withval | cut -f1 -d,`"
-        pthread_lib="`echo $withval | cut -f2 -d, -s`"
+        unset HAVE_PTHREAD
         ;;
       *)
-        if test -n "$withval"; then
-          pthread_inc="$withval/include"
-          pthread_lib="$withval/lib"
-        fi
-        ;;
-    esac
+        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
+        ## 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"
-      for ac_header in pthread.h
+        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"
+          for ac_header in pthread.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
 if test "x$ac_cv_header_pthread_h" = xyes; then :
@@ -26350,8 +26541,8 @@ fi
 
 done
 
-    else
-      for ac_header in pthread.h
+        else
+          for ac_header in pthread.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
 if test "x$ac_cv_header_pthread_h" = xyes; then :
@@ -26365,15 +26556,15 @@ fi
 
 done
 
-    fi
+        fi
 
-    if test "x$HAVE_PTHREAD" = "xyes"; then
-      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"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
+        if test "x$HAVE_PTHREAD" = "xyes"; then
+          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"
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
 $as_echo_n "checking for pthread_self in -lpthread... " >&6; }
 if ${ac_cv_lib_pthread_pthread_self+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -26428,8 +26619,8 @@ else
   LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_PTHREAD
 fi
 
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
+          else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
 $as_echo_n "checking for pthread_self in -lpthread... " >&6; }
 if ${ac_cv_lib_pthread_pthread_self+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -26484,85 +26675,10 @@ else
   unset HAVE_PTHREAD
 fi
 
-      fi
-    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.
-if test "${enable_threadsafe+set}" = set; then :
-  enableval=$enable_threadsafe; THREADSAFE=$enableval
-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
-  fi
-fi
-
-case "X-$THREADSAFE" in
-  X-|X-no)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  X-yes)
-    ## Check that we can link a simple Pthread program.
-    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 ()
-{
-pthread_self()
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; THREADSAFE=yes
-else
-  as_fn_error $? "needed pthread library not available" "$LINENO" 5
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5
-$as_echo "error" >&6; }
-    as_fn_error $? "\'$enableval\' is not a valid threadsafe type" "$LINENO" 5
-    ;;
-esac
-
-if test "X$THREADSAFE" = "Xyes"; then
-
-$as_echo "#define HAVE_THREADSAFE 1" >>confdefs.h
-
+          fi
+        fi
+        ;;
+    esac
 fi
 
 ## ----------------------------------------------------------------------
@@ -27599,9 +27715,6 @@ 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; }
@@ -27609,8 +27722,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'`"
-export LD_LIBRARY_PATH
 
 for hdf5_cv_printf_ll in l ll L q unknown; do
    if test "$cross_compiling" = yes; then :
@@ -27709,74 +27820,6 @@ $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;
-else
-  enableval=no
-fi
-
-
-case "X-$enableval" in
-  X-yes)
-    for ac_header in gpfs.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "gpfs.h" "ac_cv_header_gpfs_h" "$ac_includes_default"
-if test "x$ac_cv_header_gpfs_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GPFS_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GPFS support" >&5
-$as_echo_n "checking for GPFS support... " >&6; }
-                     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <gpfs.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 ()
-{
-int fd = 0; gpfs_fcntl(fd, (void *)0);
-  ;
-  return 0;
-}
-_ACEOF
-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 "yes" >&6; }
-                                       LIBS="$LIBS -lgpfs"
-                                       GPFS="yes"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                                       GPFS="no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-done
-
-    ;;
-  X-no|*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gpfs" >&5
-$as_echo_n "checking for gpfs... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
-$as_echo "suppressed" >&6; }
-    ;;
-esac
-
-## ----------------------------------------------------------------------
 ## Turn on debugging by setting compiler flags
 ## This must come after the enable-production since it depends on production.
 ##
@@ -28775,9 +28818,9 @@ else
   unset MPE
 fi
 
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CLOG_Init in -llmpe" >&5
-$as_echo_n "checking for CLOG_Init in -llmpe... " >&6; }
-if ${ac_cv_lib_lmpe_CLOG_Init+:} false; then :
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPE_Init_mpi_io in -llmpe" >&5
+$as_echo_n "checking for MPE_Init_mpi_io in -llmpe... " >&6; }
+if ${ac_cv_lib_lmpe_MPE_Init_mpi_io+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -28791,7 +28834,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char CLOG_Init ();
+char MPE_Init_mpi_io ();
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -28803,23 +28846,23 @@ char CLOG_Init ();
 int
 main ()
 {
-return CLOG_Init ();
+return MPE_Init_mpi_io ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lmpe_CLOG_Init=yes
+  ac_cv_lib_lmpe_MPE_Init_mpi_io=yes
 else
-  ac_cv_lib_lmpe_CLOG_Init=no
+  ac_cv_lib_lmpe_MPE_Init_mpi_io=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_lmpe_CLOG_Init" >&5
-$as_echo "$ac_cv_lib_lmpe_CLOG_Init" >&6; }
-if test "x$ac_cv_lib_lmpe_CLOG_Init" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lmpe_MPE_Init_mpi_io" >&5
+$as_echo "$ac_cv_lib_lmpe_MPE_Init_mpi_io" >&6; }
+if test "x$ac_cv_lib_lmpe_MPE_Init_mpi_io" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBLMPE 1
 _ACEOF
@@ -28950,9 +28993,9 @@ else
   LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset MPE
 fi
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CLOG_Init in -llmpe" >&5
-$as_echo_n "checking for CLOG_Init in -llmpe... " >&6; }
-if ${ac_cv_lib_lmpe_CLOG_Init+:} false; then :
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPE_Init_mpi_io in -llmpe" >&5
+$as_echo_n "checking for MPE_Init_mpi_io in -llmpe... " >&6; }
+if ${ac_cv_lib_lmpe_MPE_Init_mpi_io+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -28966,7 +29009,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char CLOG_Init ();
+char MPE_Init_mpi_io ();
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -28978,23 +29021,23 @@ char CLOG_Init ();
 int
 main ()
 {
-return CLOG_Init ();
+return MPE_Init_mpi_io ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lmpe_CLOG_Init=yes
+  ac_cv_lib_lmpe_MPE_Init_mpi_io=yes
 else
-  ac_cv_lib_lmpe_CLOG_Init=no
+  ac_cv_lib_lmpe_MPE_Init_mpi_io=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_lmpe_CLOG_Init" >&5
-$as_echo "$ac_cv_lib_lmpe_CLOG_Init" >&6; }
-if test "x$ac_cv_lib_lmpe_CLOG_Init" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lmpe_MPE_Init_mpi_io" >&5
+$as_echo "$ac_cv_lib_lmpe_MPE_Init_mpi_io" >&6; }
+if test "x$ac_cv_lib_lmpe_MPE_Init_mpi_io" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBLMPE 1
 _ACEOF
@@ -29062,9 +29105,9 @@ else
   unset MPE
 fi
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CLOG_Init in -llmpe" >&5
-$as_echo_n "checking for CLOG_Init in -llmpe... " >&6; }
-if ${ac_cv_lib_lmpe_CLOG_Init+:} false; then :
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPE_Init_mpi_io in -llmpe" >&5
+$as_echo_n "checking for MPE_Init_mpi_io in -llmpe... " >&6; }
+if ${ac_cv_lib_lmpe_MPE_Init_mpi_io+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -29078,7 +29121,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char CLOG_Init ();
+char MPE_Init_mpi_io ();
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -29090,23 +29133,23 @@ char CLOG_Init ();
 int
 main ()
 {
-return CLOG_Init ();
+return MPE_Init_mpi_io ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lmpe_CLOG_Init=yes
+  ac_cv_lib_lmpe_MPE_Init_mpi_io=yes
 else
-  ac_cv_lib_lmpe_CLOG_Init=no
+  ac_cv_lib_lmpe_MPE_Init_mpi_io=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_lmpe_CLOG_Init" >&5
-$as_echo "$ac_cv_lib_lmpe_CLOG_Init" >&6; }
-if test "x$ac_cv_lib_lmpe_CLOG_Init" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lmpe_MPE_Init_mpi_io" >&5
+$as_echo "$ac_cv_lib_lmpe_MPE_Init_mpi_io" >&6; }
+if test "x$ac_cv_lib_lmpe_MPE_Init_mpi_io" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBLMPE 1
 _ACEOF
@@ -30725,7 +30768,7 @@ fi
 
 ## ----------------------------------------------------------------------
 ## Set the flag to indicate that the machine generates bad code
-## for the H5V_log2_gen() routine in src/H5Vprivate.h
+## for the H5VM_log2_gen() routine in src/H5VMprivate.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)
 ##
@@ -30811,7 +30854,7 @@ if test -n "$cc_version_info"; then
 fi
 
 
-## Strip anything that looks like a flag off of $CC
+## Strip anything that looks like a flag off of $FC
 FC_NOFLAGS=`echo $FC | sed 's/ -.*//'`
 
 if `echo $FC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
@@ -30830,7 +30873,7 @@ if test -n "$fc_version_info"; then
 fi
 
 
-## Strip anything that looks like a flag off of $CC
+## Strip anything that looks like a flag off of $CXX
 CXX_NOFLAGS=`echo $CXX | sed 's/ -.*//'`
 
 if `echo $CXX_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
@@ -31266,7 +31309,7 @@ PARALLEL_MAKE=""
 FORTRAN_PARALLEL_MAKE=""
 
 if test -n "$TESTPARALLEL"; then
-  PARALLEL_MAKE="$TESTPARALLEL/Makefile $TESTPARALLEL/testph5.sh"
+  PARALLEL_MAKE="$TESTPARALLEL/Makefile"
 
   if test "X$HDF_FORTRAN" = "Xyes"; then
     FORTRAN_PARALLEL_MAKE=fortran/$TESTPARALLEL/Makefile
@@ -31678,7 +31721,7 @@ Usage: $0 [OPTIONS]
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-HDF5 config.lt 1.8.12
+HDF5 config.lt 1.8.13
 configured by $0, generated by GNU Autoconf 2.69.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -33214,7 +33257,7 @@ else
 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 test/test_plugin.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/M [...]
+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 test/test_plugin.sh testpar/Makefile 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/h5dif [...]
 
 
 cat >confcache <<\_ACEOF
@@ -33812,7 +33855,7 @@ 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.12, which was
+This file was extended by HDF5 $as_me 1.8.13, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -33878,7 +33921,7 @@ _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.12
+HDF5 config.status 1.8.13
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -34486,7 +34529,6 @@ do
     "test/testlinks_env.sh") CONFIG_FILES="$CONFIG_FILES test/testlinks_env.sh" ;;
     "test/test_plugin.sh") CONFIG_FILES="$CONFIG_FILES test/test_plugin.sh" ;;
     "testpar/Makefile") CONFIG_FILES="$CONFIG_FILES testpar/Makefile" ;;
-    "testpar/testph5.sh") CONFIG_FILES="$CONFIG_FILES testpar/testph5.sh" ;;
     "perform/Makefile") CONFIG_FILES="$CONFIG_FILES perform/Makefile" ;;
     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
     "tools/h5dump/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5dump/Makefile" ;;
@@ -35165,7 +35207,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
   rm -f libhdf5.settings.TMP
  ;;
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -35216,7 +35258,7 @@ $as_echo X"$mf" |
     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
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
diff --git a/configure.ac b/configure.ac
index 8baa56a..d8a67b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@
 ## ----------------------------------------------------------------------
 ## Initialize configure.
 ##
-AC_REVISION($Id: configure.ac 24404 2013-11-04 22:57:14Z epourmal $)
+AC_REVISION($Id: configure.ac 25134 2014-04-29 01:57:33Z epourmal $)
 AC_PREREQ([2.69])
 
 ## AC_INIT takes the name of the package, the version number, and an
@@ -26,7 +26,7 @@ AC_PREREQ([2.69])
 ## NOTE: Do not forget to change the version number here when we do a
 ## release!!!
 ##
-AC_INIT([HDF5], [1.8.12], [help at hdfgroup.org])
+AC_INIT([HDF5], [1.8.13], [help at hdfgroup.org])
 AC_CONFIG_SRCDIR([src/H5.c])
 AC_CONFIG_HEADER([src/H5config.h])
 
@@ -160,7 +160,6 @@ AC_MSG_RESULT([done])
 ## 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.
@@ -182,7 +181,6 @@ 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
@@ -1083,6 +1081,7 @@ case "X-$RPATH" in
     runpath_var=
     hardcode_libdir_flag_spec=
     hardcode_libdir_flag_spec_ld=
+    hardcode_into_libs=no
     ;;
   X-|X-yes)
     AC_MSG_RESULT([yes])
@@ -1093,8 +1092,6 @@ case "X-$RPATH" in
     ;;
 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
@@ -1945,85 +1942,13 @@ AM_CONDITIONAL([BUILD_SHARED_SZIP_CONDITIONAL], [test "X$USE_FILTER_SZIP" = "Xye
 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([HAVE_PTHREAD]) HAVE_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],, [unset HAVE_PTHREAD])
-    if test "x$HAVE_PTHREAD" = "xyes"; then
-      AC_CHECK_LIB([pthread], [pthread_self],, [unset HAVE_PTHREAD])
-    fi
-    ;;
-  no)
-    AC_MSG_CHECKING([for pthread])
-    AC_MSG_RESULT([suppressed])
-    unset HAVE_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 HAVE_PTHREAD])
-    else
-      AC_CHECK_HEADERS([pthread.h],, [unset HAVE_PTHREAD])
-    fi
-
-    if test "x$HAVE_PTHREAD" = "xyes"; then
-      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 HAVE_PTHREAD])
-      else
-        AC_CHECK_LIB([pthread], [pthread_self],, [unset HAVE_PTHREAD])
-      fi
-    fi
-    ;;
-esac
-
-## ----------------------------------------------------------------------
-## Enable thread-safe version of library.  It requires Pthreads support.
+## Enable thread-safe version of library.  It requires Pthreads support
+## on POSIX systems.
 ##
 AC_MSG_CHECKING([for thread safe support])
 AC_ARG_ENABLE([threadsafe],
               [AS_HELP_STRING([--enable-threadsafe],
-                              [Enable thread safe capability])],
+                              [Enable thread-safe capability])],
               [THREADSAFE=$enableval])
 
 ## The --enable-threadsafe flag is not compatible with --enable-cxx.
@@ -2048,10 +1973,8 @@ case "X-$THREADSAFE" in
     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])])
+    THREADSAFE=yes 
+    AC_MSG_RESULT([yes])
     ;;
   *)
     AC_MSG_RESULT([error])
@@ -2060,7 +1983,83 @@ case "X-$THREADSAFE" in
 esac
 
 if test "X$THREADSAFE" = "Xyes"; then
-  AC_DEFINE([HAVE_THREADSAFE], [1], [Define if we have thread safe support])
+    AC_DEFINE([HAVE_THREADSAFE], [1], [Define if we have thread safe support])
+
+    ## ----------------------------------------------------------------------
+    ## 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.
+    ##
+    ## Thread-safety in HDF5 only uses Pthreads via configure, so the
+    ## default is "yes", though this only has an effect when
+    ## --enable-threadsafe is specified.
+    AC_SUBST([HAVE_PTHREAD]) HAVE_PTHREAD=yes
+    AC_ARG_WITH([pthread],
+                [AS_HELP_STRING([--with-pthread=DIR],
+                                [Specify alternative path to Pthreads library when thread-safe capability is built])],,
+                [withval=yes])
+
+    case "$withval" in
+      yes)
+        AC_CHECK_HEADERS([pthread.h],, [unset HAVE_PTHREAD])
+        if test "x$HAVE_PTHREAD" = "xyes"; then
+          AC_CHECK_LIB([pthread], [pthread_self],, [unset HAVE_PTHREAD])
+        fi
+        ;;
+      no)
+        AC_MSG_CHECKING([for pthread])
+        AC_MSG_RESULT([suppressed])
+        unset HAVE_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 HAVE_PTHREAD])
+        else
+          AC_CHECK_HEADERS([pthread.h],, [unset HAVE_PTHREAD])
+        fi
+
+        if test "x$HAVE_PTHREAD" = "xyes"; then
+          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 HAVE_PTHREAD])
+          else
+            AC_CHECK_LIB([pthread], [pthread_self],, [unset HAVE_PTHREAD])
+          fi
+        fi
+        ;;
+    esac
 fi
 
 ## ----------------------------------------------------------------------
@@ -2342,14 +2341,9 @@ AC_TRY_COMPILE(,[
 ## 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([
@@ -2403,35 +2397,6 @@ else
 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.
 ##
@@ -2864,7 +2829,7 @@ if test -n "$PARALLEL"; then
     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])
+      AC_CHECK_LIB([lmpe], [MPE_Init_mpi_io],, [unset MPE])
       ;;
     *)
       case "$withval" in
@@ -2906,12 +2871,12 @@ if test -n "$PARALLEL"; then
         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],,
+        AC_CHECK_LIB([lmpe], [MPE_Init_mpi_io],,
                      [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])
+        AC_CHECK_LIB([lmpe], [MPE_Init_mpi_io],, [unset MPE])
       fi
       ;;
   esac
@@ -4033,7 +3998,7 @@ fi
 
 ## ----------------------------------------------------------------------
 ## Set the flag to indicate that the machine generates bad code
-## for the H5V_log2_gen() routine in src/H5Vprivate.h
+## for the H5VM_log2_gen() routine in src/H5VMprivate.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)
 ##
@@ -4110,7 +4075,7 @@ if test -n "$cc_version_info"; then
 fi
 
 AC_SUBST([FC_VERSION])
-## Strip anything that looks like a flag off of $CC
+## Strip anything that looks like a flag off of $FC
 FC_NOFLAGS=`echo $FC | sed 's/ -.*//'`
 
 if `echo $FC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
@@ -4129,7 +4094,7 @@ if test -n "$fc_version_info"; then
 fi
 
 AC_SUBST([CXX_VERSION])
-## Strip anything that looks like a flag off of $CC
+## Strip anything that looks like a flag off of $CXX
 CXX_NOFLAGS=`echo $CXX | sed 's/ -.*//'`
 
 if `echo $CXX_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
@@ -4279,7 +4244,7 @@ esac
 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)],
+            [AS_HELP_STRING([--with-default-api-version=(v16|v18|v110)],
                             [Specify default release version of public symbols
                              [default=v18]])],,
             withval=v18)
@@ -4464,7 +4429,7 @@ PARALLEL_MAKE=""
 FORTRAN_PARALLEL_MAKE=""
 
 if test -n "$TESTPARALLEL"; then
-  PARALLEL_MAKE="$TESTPARALLEL/Makefile $TESTPARALLEL/testph5.sh"
+  PARALLEL_MAKE="$TESTPARALLEL/Makefile"
 
   if test "X$HDF_FORTRAN" = "Xyes"; then
     FORTRAN_PARALLEL_MAKE=fortran/$TESTPARALLEL/Makefile
@@ -4540,7 +4505,6 @@ AC_CONFIG_FILES([src/libhdf5.settings
                  test/testlinks_env.sh
                  test/test_plugin.sh
                  testpar/Makefile
-                 testpar/testph5.sh
                  perform/Makefile
                  tools/Makefile
                  tools/h5dump/Makefile
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index e7a1326..fe8216d 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,15 +1,15 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_EXAMPLES)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
-SET (examples
+set (examples
     h5_crtdat
     h5_rdwt
     h5_crtatt
@@ -36,22 +36,22 @@ SET (examples
     h5_shared_mesg
 )
 
-FOREACH (example ${examples})
-  ADD_EXECUTABLE (${example} ${HDF5_EXAMPLES_SOURCE_DIR}/${example}.c)
+foreach (example ${examples})
+  add_executable (${example} ${HDF5_EXAMPLES_SOURCE_DIR}/${example}.c)
   TARGET_NAMING (${example} ${LIB_TYPE})
   TARGET_C_PROPERTIES (${example} " " " ")
-  TARGET_LINK_LIBRARIES (${example} ${HDF5_LIB_TARGET})
-  SET_TARGET_PROPERTIES (${example} PROPERTIES FOLDER examples)
-ENDFOREACH (example ${examples})
+  target_link_libraries (${example} ${HDF5_LIB_TARGET})
+  set_target_properties (${example} PROPERTIES FOLDER examples)
+endforeach (example ${examples})
 
-IF (H5_HAVE_PARALLEL)
-  ADD_EXECUTABLE (ph5example ${HDF5_EXAMPLES_SOURCE_DIR}/ph5example.c)
+if (H5_HAVE_PARALLEL)
+  add_executable (ph5example ${HDF5_EXAMPLES_SOURCE_DIR}/ph5example.c)
   TARGET_NAMING (ph5example ${LIB_TYPE})
   TARGET_C_PROPERTIES (ph5example " " " ")
-  TARGET_LINK_LIBRARIES (ph5example ${HDF5_LIB_TARGET})
-  SET_TARGET_PROPERTIES (ph5example PROPERTIES FOLDER examples)
-ENDIF (H5_HAVE_PARALLEL)
+  target_link_libraries (ph5example ${HDF5_LIB_TARGET})
+  set_target_properties (ph5example PROPERTIES FOLDER examples)
+endif (H5_HAVE_PARALLEL)
 
-IF (BUILD_TESTING)
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
diff --git a/examples/CMakeTests.cmake b/examples/CMakeTests.cmake
index 58a2858..5a756c8 100644
--- a/examples/CMakeTests.cmake
+++ b/examples/CMakeTests.cmake
@@ -4,10 +4,10 @@
 ###           T E S T I N G                                                ###
 ##############################################################################
 ##############################################################################
-  FILE (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/red ${PROJECT_BINARY_DIR}/blue ${PROJECT_BINARY_DIR}/u2w)
+  file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/red ${PROJECT_BINARY_DIR}/blue ${PROJECT_BINARY_DIR}/u2w)
 
   # Remove any output file left over from previous test run
-  ADD_TEST (
+  add_test (
       NAME EXAMPLES-clear-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -43,23 +43,24 @@
           red/prefix_target.h5
           u2w/u2w_target.h5
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (EXAMPLES-clear-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "EXAMPLES-clear-objects")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (EXAMPLES-clear-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "EXAMPLES-clear-objects")
 
-  FOREACH (example ${examples})
-    ADD_TEST (NAME EXAMPLES-${example} COMMAND $<TARGET_FILE:${example}>)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (EXAMPLES-${example} PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "EXAMPLES-${example}")
-  ENDFOREACH (example ${examples})
+  foreach (example ${examples})
+    add_test (NAME EXAMPLES-${example} COMMAND $<TARGET_FILE:${example}>)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (EXAMPLES-${example} PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "EXAMPLES-${example}")
+  endforeach (example ${examples})
 
-  IF (H5_HAVE_PARALLEL)
-    ADD_TEST (NAME EXAMPLES-ph5example COMMAND $<TARGET_FILE:ph5example>)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (EXAMPLES-ph5example PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "EXAMPLES-ph5example")
-  ENDIF (H5_HAVE_PARALLEL)
+### Windows pops up a modal permission dialog on this test
+  if (H5_HAVE_PARALLEL AND NOT WIN32)
+    add_test (NAME EXAMPLES-ph5example COMMAND $<TARGET_FILE:ph5example>)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (EXAMPLES-ph5example PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "EXAMPLES-ph5example")
+  endif (H5_HAVE_PARALLEL AND NOT WIN32)
diff --git a/examples/Makefile.am b/examples/Makefile.am
index d8eac95..5d0da93 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -25,6 +25,10 @@ if BUILD_PARALLEL_CONDITIONAL
   EXAMPLE_PROG_PARA = ph5example
 endif
 
+INSTALL_SCRIPT_FILES = run-c-ex.sh
+INSTALL_TOP_SCRIPT_FILES = run-all-ex.sh
+INSTALL_TOP_FILES = README
+
 # 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.
@@ -34,7 +38,8 @@ EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound \
            h5_crtatt h5_crtgrp h5_crtdat \
            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
+TEST_SCRIPT=testh5cc.sh 
+TEST_EXAMPLES_SCRIPT=$(INSTALL_SCRIPT_FILES)
 
 # Install files
 # List all file that should be installed in examples directory
@@ -45,10 +50,7 @@ INSTALL_FILES = h5_write.c h5_read.c h5_extend_write.c h5_chunk_read.c   \
           h5_reference.c h5_drivers.c h5_extlink.c h5_elink_unix2win.c   \
           h5_ref2reg.c h5_shared_mesg.c ph5example.c
 
-INSTALL_SCRIPT_FILES = run-c-ex.sh
 
-INSTALL_TOP_SCRIPT_FILES = run-all-ex.sh
-INSTALL_TOP_FILES = README
 
 # How to build examples, using installed version of h5cc
 if BUILD_PARALLEL_CONDITIONAL
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 064cb84..02db80c 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 # 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; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,12 +98,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/examples.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(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
+	$(top_srcdir)/bin/test-driver README
 TESTS = $(TEST_SCRIPT)
 subdir = examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -105,10 +133,207 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -180,7 +405,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -389,6 +613,9 @@ TRACE = perl $(top_srcdir)/bin/trace
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog $(EXTLINK_DIRS) *.h5
 @BUILD_PARALLEL_CONDITIONAL_TRUE at EXAMPLE_PROG_PARA = ph5example
+INSTALL_SCRIPT_FILES = run-c-ex.sh
+INSTALL_TOP_SCRIPT_FILES = run-all-ex.sh
+INSTALL_TOP_FILES = README
 
 # Example programs.
 # Don't tell automake about them, because if it knew they were programs,
@@ -400,7 +627,8 @@ 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
+TEST_SCRIPT = testh5cc.sh 
+TEST_EXAMPLES_SCRIPT = $(INSTALL_SCRIPT_FILES)
 
 # Install files
 # List all file that should be installed in examples directory
@@ -411,9 +639,6 @@ INSTALL_FILES = h5_write.c h5_read.c h5_extend_write.c h5_chunk_read.c   \
           h5_reference.c h5_drivers.c h5_extlink.c h5_elink_unix2win.c   \
           h5_ref2reg.c h5_shared_mesg.c ph5example.c
 
-INSTALL_SCRIPT_FILES = run-c-ex.sh
-INSTALL_TOP_SCRIPT_FILES = run-all-ex.sh
-INSTALL_TOP_FILES = README
 
 # The external link examples demonstrate how to use paths; they need
 # directories to be created to do this.
@@ -455,6 +680,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -496,15 +722,158 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -561,6 +930,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -642,17 +1014,18 @@ uninstall-am: uninstall-local
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local 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 \
+	clean-generic clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local 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 \
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-local
+	pdf-am ps ps-am recheck tags-am uninstall uninstall-am \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -758,27 +1131,34 @@ install-examples: $(EXAMPLEDIR) $(INSTALL_FILES)
 uninstall-examples:
 	@if test -n "$(INSTALL_FILES)" -a -d $(EXAMPLEDIR); then             \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_FILES);                \
-        fi
+	fi
 	@if test -n "$(INSTALL_SCRIPT_FILES)" -a -d $(EXAMPLEDIR); then           \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_SCRIPT_FILES);              \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_FILES);       \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_SCRIPT_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_SCRIPT_FILES);       \
-        fi
+	fi
 
 installcheck-local:
 	@if test "$(STATIC_SHARED)" = "static, shared"; then               \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
 	  $(MAKE) $(AM_MAKEFLAGS) clean;                                   \
 	  H5CCFLAGS="" $(MAKE) $(AM_MAKEFLAGS) check;                      \
-	 elif test "$(STATIC_SHARED)" = "shared"; then                     \
+	elif test "$(STATIC_SHARED)" = "shared"; then                     \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
-	 else                                                              \
+	else                                                              \
 	  $(MAKE) $(AM_MAKEFLAGS) check;                                   \
-	 fi
+	fi 
+	@if test "$(INSTALL_FILES)" -a $(TEST_EXAMPLES_SCRIPT) -a -d $(EXAMPLEDIR); then \
+	    echo "============================";                                         \
+	    echo "Testing $(TEST_EXAMPLES_SCRIPT)";                                      \
+	    echo "============================";                                         \
+	    (cd $(EXAMPLEDIR);                                                           \
+	     /bin/sh ./$(TEST_EXAMPLES_SCRIPT);)                                                   \
+	fi
 
 # lib/progs/tests targets recurse into subdirectories. build-* targets
 # build files in this directory.
diff --git a/fortran/CMakeLists.txt b/fortran/CMakeLists.txt
index 9dbe8ca..3fe9e7d 100644
--- a/fortran/CMakeLists.txt
+++ b/fortran/CMakeLists.txt
@@ -1,28 +1,32 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_F90 C CXX Fortran)
 
-IF (H5_HAVE_PARALLEL)
-  FIND_PACKAGE (MPI)
-ENDIF (H5_HAVE_PARALLEL)
+if (H5_HAVE_PARALLEL)
+  INCLUDE (FindMPI)
+  set (LINK_LIBS ${LINK_LIBS} ${MPI_Fortran_LIBRARIES})
+  if (MPI_Fortran_LINK_FLAGS)
+    set (CMAKE_EXE_LINKER_FLAGS "${MPI_Fortran_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
+  endif (MPI_Fortran_LINK_FLAGS)
+endif (H5_HAVE_PARALLEL)
 
 #-----------------------------------------------------------------------------
 # Traverse source subdirectory
 #-----------------------------------------------------------------------------
-ADD_SUBDIRECTORY (${HDF5_F90_SOURCE_DIR}/src ${HDF5_F90_BINARY_DIR}/src)
+add_subdirectory (${HDF5_F90_SOURCE_DIR}/src ${HDF5_F90_BINARY_DIR}/src)
 
 #-----------------------------------------------------------------------------
 # Build the Fortran Examples
 #-----------------------------------------------------------------------------
-IF (HDF5_BUILD_EXAMPLES)
-  ADD_SUBDIRECTORY (${HDF5_F90_SOURCE_DIR}/examples ${HDF5_F90_BINARY_DIR}/examples)
-ENDIF (HDF5_BUILD_EXAMPLES)
+if (HDF5_BUILD_EXAMPLES)
+  add_subdirectory (${HDF5_F90_SOURCE_DIR}/examples ${HDF5_F90_BINARY_DIR}/examples)
+endif (HDF5_BUILD_EXAMPLES)
 
 #-----------------------------------------------------------------------------
 # Testing
 #-----------------------------------------------------------------------------
-IF (BUILD_TESTING)
-  ADD_SUBDIRECTORY (${HDF5_F90_SOURCE_DIR}/test ${HDF5_F90_BINARY_DIR}/test)
-  IF (MPI_Fortran_FOUND)
-    ADD_SUBDIRECTORY (${HDF5_F90_SOURCE_DIR}/testpar ${HDF5_F90_BINARY_DIR}/testpar)
-  ENDIF (MPI_Fortran_FOUND)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  add_subdirectory (${HDF5_F90_SOURCE_DIR}/test ${HDF5_F90_BINARY_DIR}/test)
+  if (MPI_Fortran_FOUND)
+    add_subdirectory (${HDF5_F90_SOURCE_DIR}/testpar ${HDF5_F90_BINARY_DIR}/testpar)
+  endif (MPI_Fortran_FOUND)
+endif (BUILD_TESTING)
diff --git a/fortran/Makefile.in b/fortran/Makefile.in
index acab031..b1c7f6a 100644
--- a/fortran/Makefile.in
+++ b/fortran/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 # Top-level HDF5-Fortran Makefile(.in)
 #
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,10 +98,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = fortran
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -98,13 +126,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -112,15 +141,230 @@ am__can_run_installinfo = \
   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
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -217,7 +461,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -455,6 +698,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -499,14 +743,13 @@ clean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -527,31 +770,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -567,12 +792,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -584,15 +804,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -601,9 +817,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -619,6 +836,151 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -700,6 +1062,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -777,14 +1142,11 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool cscopelist cscopelist-recursive \
-	ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 \
@@ -794,7 +1156,7 @@ uninstall-am:
 	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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/fortran/examples/CMakeLists.txt b/fortran/examples/CMakeLists.txt
index f57df63..322ae35 100644
--- a/fortran/examples/CMakeLists.txt
+++ b/fortran/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_F90_EXAMPLES C CXX Fortran)
 # --------------------------------------------------------------------
 # Notes: When creating examples they should be prefixed
@@ -13,7 +13,7 @@ INCLUDE_DIRECTORIES (${CMAKE_Fortran_MODULE_DIRECTORY} ${HDF5_F90_BINARY_DIR} ${
 #-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
-SET (examples
+set (examples
     h5_cmprss
     h5_crtdat
     h5_rdwt
@@ -31,69 +31,69 @@ SET (examples
     compound
 )
 
-SET (F2003_examples
+set (F2003_examples
     rwdset_fortran2003
     nested_derived_type
     compound_fortran2003
     compound_complex_fortran2003
 )
 
-FOREACH (example ${examples})
-  ADD_EXECUTABLE (f90_ex_${example} ${HDF5_F90_EXAMPLES_SOURCE_DIR}/${example}.f90)
+foreach (example ${examples})
+  add_executable (f90_ex_${example} ${HDF5_F90_EXAMPLES_SOURCE_DIR}/${example}.f90)
   TARGET_NAMING (f90_ex_${example} ${LIB_TYPE})
   TARGET_FORTRAN_PROPERTIES (f90_ex_${example} " " " ")
-  IF (WIN32 AND NOT CYGWIN)
-    SET_PROPERTY (TARGET f90_ex_${example} 
+  if (WIN32)
+    set_property (TARGET f90_ex_${example} 
         APPEND PROPERTY COMPILE_DEFINITIONS 
           HDF5F90_WINDOWS
     )
-  ENDIF (WIN32 AND NOT CYGWIN)
-  TARGET_LINK_LIBRARIES (f90_ex_${example}
+  endif (WIN32)
+  target_link_libraries (f90_ex_${example}
       ${HDF5_F90_LIB_TARGET}
       ${HDF5_LIB_TARGET}
   )
-  SET_TARGET_PROPERTIES (f90_ex_${example} PROPERTIES LINKER_LANGUAGE Fortran)
-  SET_TARGET_PROPERTIES (f90_ex_${example} PROPERTIES FOLDER examples/fortran)
-ENDFOREACH (example ${examples})
+  set_target_properties (f90_ex_${example} PROPERTIES LINKER_LANGUAGE Fortran)
+  set_target_properties (f90_ex_${example} PROPERTIES FOLDER examples/fortran)
+endforeach (example ${examples})
 
-IF (HDF5_ENABLE_F2003)
-  FOREACH (example ${F2003_examples})
-    ADD_EXECUTABLE (f03_ex_${example} ${HDF5_F90_EXAMPLES_SOURCE_DIR}/${example}.f90)
+if (HDF5_ENABLE_F2003)
+  foreach (example ${F2003_examples})
+    add_executable (f03_ex_${example} ${HDF5_F90_EXAMPLES_SOURCE_DIR}/${example}.f90)
     TARGET_NAMING (f03_ex_${example} ${LIB_TYPE})
     TARGET_FORTRAN_PROPERTIES (f03_ex_${example} " " " ")
-    IF (WIN32 AND NOT CYGWIN)
-      SET_PROPERTY (TARGET f03_ex_${example} 
+    if (WIN32)
+      set_property (TARGET f03_ex_${example} 
           APPEND PROPERTY COMPILE_DEFINITIONS HDF5F90_WINDOWS
       )
-    ENDIF (WIN32 AND NOT CYGWIN)
-    TARGET_LINK_LIBRARIES (f03_ex_${example}
+    endif (WIN32)
+    target_link_libraries (f03_ex_${example}
         ${HDF5_F90_LIB_TARGET}
         ${HDF5_LIB_TARGET}
     )
-    SET_TARGET_PROPERTIES (f03_ex_${example} PROPERTIES LINKER_LANGUAGE Fortran)
-    SET_TARGET_PROPERTIES (f03_ex_${example} PROPERTIES FOLDER examples/fortran03)
-  ENDFOREACH (example ${F2003_examples})
-ENDIF (HDF5_ENABLE_F2003)
+    set_target_properties (f03_ex_${example} PROPERTIES LINKER_LANGUAGE Fortran)
+    set_target_properties (f03_ex_${example} PROPERTIES FOLDER examples/fortran03)
+  endforeach (example ${F2003_examples})
+endif (HDF5_ENABLE_F2003)
 
-IF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
-  ADD_EXECUTABLE (f90_ex_ph5example ${HDF5_F90_EXAMPLES_SOURCE_DIR}/ph5example.f90)
+if (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+  add_executable (f90_ex_ph5example ${HDF5_F90_EXAMPLES_SOURCE_DIR}/ph5example.f90)
   TARGET_NAMING (f90_ex_ph5example ${LIB_TYPE})
   TARGET_FORTRAN_PROPERTIES (f90_ex_ph5example " " " ")
-  IF (WIN32 AND NOT CYGWIN)
-    SET_PROPERTY (TARGET f90_ex_ph5example 
+  if (WIN32)
+    set_property (TARGET f90_ex_ph5example 
         APPEND PROPERTY COMPILE_DEFINITIONS 
           HDF5F90_WINDOWS
     )
-  ENDIF (WIN32 AND NOT CYGWIN)
-  TARGET_LINK_LIBRARIES (f90_ex_ph5example
+  endif (WIN32)
+  target_link_libraries (f90_ex_ph5example
       ${HDF5_F90_LIB_TARGET}
       ${HDF5_LIB_TARGET}
       ${MPI_Fortran_LIBRARIES}
   )
-  SET_TARGET_PROPERTIES (f90_ex_ph5example PROPERTIES LINKER_LANGUAGE Fortran)
-  SET_TARGET_PROPERTIES (f90_ex_ph5example PROPERTIES FOLDER examples/fortran)
-ENDIF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+  set_target_properties (f90_ex_ph5example PROPERTIES LINKER_LANGUAGE Fortran)
+  set_target_properties (f90_ex_ph5example PROPERTIES FOLDER examples/fortran)
+endif (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
 
-IF (BUILD_TESTING)
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
diff --git a/fortran/examples/CMakeTests.cmake b/fortran/examples/CMakeTests.cmake
index aebd39b..57aec53 100644
--- a/fortran/examples/CMakeTests.cmake
+++ b/fortran/examples/CMakeTests.cmake
@@ -6,7 +6,7 @@
 ##############################################################################
 
   # Remove any output file left over from previous test run
-  ADD_TEST (
+  add_test (
       NAME f90_ex-clear-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -24,29 +24,29 @@
           sdsf.h5
           subset.h5
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (f90_ex-clear-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "f90_ex-clear-objects")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (f90_ex-clear-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "f90_ex-clear-objects")
 
-FOREACH (example ${examples})
-  ADD_TEST (NAME f90_ex_${example} COMMAND $<TARGET_FILE:f90_ex_${example}>)
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (f90_ex_${example} PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "f90_ex_${example}")
-ENDFOREACH (example ${examples})
+foreach (example ${examples})
+  add_test (NAME f90_ex_${example} COMMAND $<TARGET_FILE:f90_ex_${example}>)
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (f90_ex_${example} PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "f90_ex_${example}")
+endforeach (example ${examples})
 
-IF (HDF5_ENABLE_F2003)
-  FOREACH (example ${F2003_examples})
-    ADD_TEST (NAME f03_ex_${example} COMMAND $<TARGET_FILE:f03_ex_${example}>)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (f03_ex_${example} PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "f03_ex_${example}")
-  ENDFOREACH (example ${F2003_examples})
-ENDIF (HDF5_ENABLE_F2003)
+if (HDF5_ENABLE_F2003)
+  foreach (example ${F2003_examples})
+    add_test (NAME f03_ex_${example} COMMAND $<TARGET_FILE:f03_ex_${example}>)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (f03_ex_${example} PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "f03_ex_${example}")
+  endforeach (example ${F2003_examples})
+endif (HDF5_ENABLE_F2003)
 
-IF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
-  ADD_TEST (NAME f90_ex_ph5example COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:f90_ex_ph5example>)
-ENDIF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+if (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+  add_test (NAME f90_ex_ph5example COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:f90_ex_ph5example>)
+endif (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
diff --git a/fortran/examples/Makefile.am b/fortran/examples/Makefile.am
index e994d4e..feed32c 100644
--- a/fortran/examples/Makefile.am
+++ b/fortran/examples/Makefile.am
@@ -26,6 +26,8 @@ if BUILD_PARALLEL_CONDITIONAL
    EXAMPLE_PROG_PARA=ph5example
 endif
 
+INSTALL_SCRIPT_FILES = run-fortran-ex.sh
+
 # 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.
@@ -41,7 +43,6 @@ INSTALL_FILES=h5_crtdat.f90 h5_rdwt.f90 \
      h5_crtatt.f90 h5_crtgrp.f90 h5_crtgrpar.f90 h5_crtgrpd.f90  \
      h5_extend.f90 h5_subset.f90 h5_cmprss.f90 hyperslab.f90 selectele.f90 refobjexample.f90 \
      refregexample.f90 mountexample.f90 compound.f90 ph5example.f90
-INSTALL_SCRIPT_FILES = run-fortran-ex.sh
 
 
 # Add attention tests for Fortran 2003 features
@@ -52,6 +53,7 @@ if FORTRAN_2003_CONDITIONAL_F
       compound_fortran2003.f90 compound_complex_fortran2003.f90
 endif
 TEST_SCRIPT=testh5fc.sh
+TEST_EXAMPLES_SCRIPT=$(INSTALL_SCRIPT_FILES)
 
 # Mark this directory as part of the Fortran API
 FORTRAN_API=yes
diff --git a/fortran/examples/Makefile.in b/fortran/examples/Makefile.in
index 93a2af1..890d52a 100644
--- a/fortran/examples/Makefile.in
+++ b/fortran/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 # 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; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,12 +98,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/examples.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(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
+	$(top_srcdir)/bin/test-driver
 
 # Add attention tests for Fortran 2003 features
 @FORTRAN_2003_CONDITIONAL_F_TRUE at am__append_1 = rwdset_fortran2003 nested_derived_type \
@@ -113,10 +141,207 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -188,7 +413,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -399,6 +623,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 
 # Compile parallel fortran examples only if parallel is enabled
 @BUILD_PARALLEL_CONDITIONAL_TRUE at EXAMPLE_PROG_PARA = ph5example
+INSTALL_SCRIPT_FILES = run-fortran-ex.sh
 
 # 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
@@ -416,8 +641,8 @@ INSTALL_FILES = h5_crtdat.f90 h5_rdwt.f90 h5_crtatt.f90 h5_crtgrp.f90 \
 	h5_cmprss.f90 hyperslab.f90 selectele.f90 refobjexample.f90 \
 	refregexample.f90 mountexample.f90 compound.f90 ph5example.f90 \
 	$(am__append_2)
-INSTALL_SCRIPT_FILES = run-fortran-ex.sh
 TEST_SCRIPT = testh5fc.sh
+TEST_EXAMPLES_SCRIPT = $(INSTALL_SCRIPT_FILES)
 
 # Mark this directory as part of the Fortran API
 FORTRAN_API = yes
@@ -456,6 +681,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -497,15 +723,158 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -562,6 +931,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -643,17 +1015,18 @@ uninstall-am: uninstall-local
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local 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 \
+	clean-generic clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local 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 \
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-local
+	pdf-am ps ps-am recheck tags-am uninstall uninstall-am \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -749,27 +1122,34 @@ install-examples: $(EXAMPLEDIR) $(INSTALL_FILES)
 uninstall-examples:
 	@if test -n "$(INSTALL_FILES)" -a -d $(EXAMPLEDIR); then             \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_FILES);                \
-        fi
+	fi
 	@if test -n "$(INSTALL_SCRIPT_FILES)" -a -d $(EXAMPLEDIR); then           \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_SCRIPT_FILES);              \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_FILES);       \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_SCRIPT_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_SCRIPT_FILES);       \
-        fi
+	fi
 
 installcheck-local:
 	@if test "$(STATIC_SHARED)" = "static, shared"; then               \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
 	  $(MAKE) $(AM_MAKEFLAGS) clean;                                   \
 	  H5CCFLAGS="" $(MAKE) $(AM_MAKEFLAGS) check;                      \
-	 elif test "$(STATIC_SHARED)" = "shared"; then                     \
+	elif test "$(STATIC_SHARED)" = "shared"; then                     \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
-	 else                                                              \
+	else                                                              \
 	  $(MAKE) $(AM_MAKEFLAGS) check;                                   \
-	 fi
+	fi 
+	@if test "$(INSTALL_FILES)" -a $(TEST_EXAMPLES_SCRIPT) -a -d $(EXAMPLEDIR); then \
+	    echo "============================";                                         \
+	    echo "Testing $(TEST_EXAMPLES_SCRIPT)";                                      \
+	    echo "============================";                                         \
+	    (cd $(EXAMPLEDIR);                                                           \
+	     /bin/sh ./$(TEST_EXAMPLES_SCRIPT);)                                                   \
+	fi
 
 # lib/progs/tests targets recurse into subdirectories. build-* targets
 # build files in this directory.
diff --git a/fortran/examples/h5_extend.f90 b/fortran/examples/h5_extend.f90
index 1316281..315d84f 100644
--- a/fortran/examples/h5_extend.f90
+++ b/fortran/examples/h5_extend.f90
@@ -73,7 +73,7 @@ PROGRAM H5_EXTEND
   !
   !general purpose integer 
   !
-  INTEGER :: i, j
+  INTEGER(HSIZE_T) :: i, j
 
   !
   !flag to check operation success 
diff --git a/fortran/examples/hyperslab.f90 b/fortran/examples/hyperslab.f90
index ca27f35..7823ff6 100644
--- a/fortran/examples/hyperslab.f90
+++ b/fortran/examples/hyperslab.f90
@@ -33,8 +33,6 @@
 
      INTEGER(HSIZE_T), DIMENSION(3) :: dimsm = (/7,7,3/) ! Dataset dimensions
                                                          ! in memory
-     INTEGER(HSIZE_T), DIMENSION(2) :: dims_out ! Buffer to read in dataset
-                                                ! dimesions
      INTEGER(HSIZE_T), DIMENSION(2) :: dimsf = (/5,6/) ! Dataset dimensions.
 
      INTEGER(HSIZE_T), DIMENSION(2) :: count = (/3,4/)
@@ -49,16 +47,15 @@
      INTEGER, DIMENSION(7,7,3) :: data_out ! Output buffer
      INTEGER :: dsetrank = 2 ! Dataset rank ( in file )
      INTEGER :: memrank = 3  ! Dataset rank ( in memory )
-     INTEGER :: rank
      INTEGER :: i, j, k
 
-     INTEGER :: error, error_n  ! Error flags
+     INTEGER :: error  ! Error flag
      INTEGER(HSIZE_T), DIMENSION(3) :: data_dims
 
 
-   !
-   ! Write data to the HDF5 file.
-   !
+     !
+     ! Write data to the HDF5 file.
+     !
 
      !
      ! Data initialization.
diff --git a/fortran/examples/run-fortran-ex.sh.in b/fortran/examples/run-fortran-ex.sh.in
index c5c379e..ead7361 100644
--- a/fortran/examples/run-fortran-ex.sh.in
+++ b/fortran/examples/run-fortran-ex.sh.in
@@ -63,19 +63,15 @@ RunTest()
     ./$TEST_EXEC
 }
 
-
+F2003_ENABLED=@HAVE_FORTRAN_2003@
 
 ##################  MAIN  ##################
 
 # Run tests
 if [ $? -eq 0 ]
 then
-    if (RunTest h5_cmprss &&\
-        rm h5_cmprss &&\
-        RunTest h5_crtdat &&\
+    if (RunTest h5_crtdat &&\
         rm h5_crtdat &&\
-        RunTest h5_extend &&\
-        rm h5_extend &&\
         RunTest h5_rdwt &&\
         rm h5_rdwt &&\
         RunTest h5_crtatt &&\
@@ -86,14 +82,16 @@ then
         rm h5_crtgrpar &&\
         RunTest h5_crtgrpd &&\
         rm h5_crtgrpd &&\
+        RunTest h5_extend &&\
+        rm h5_extend &&\
         RunTest h5_subset &&\
         rm h5_subset &&\
+        RunTest h5_cmprss &&\
+        rm h5_cmprss &&\
         RunTest hyperslab &&\
         rm hyperslab &&\
         RunTest selectele &&\
         rm selectele &&\
-        RunTest grpit &&\
-        rm grpit &&\
         RunTest refobjexample &&\
         rm refobjexample &&\
         RunTest refregexample &&\
@@ -108,6 +106,24 @@ then
     fi
 fi
 
+if [ $EXIT_VALUE -eq ${EXIT_SUCCESS} -a "$F2003_ENABLED" = "yes" ]
+then
+# Add attention tests for Fortran 2003 features
+    if (RunTest rwdset_fortran2003 &&\
+        rm rwdset_fortran2003 &&\
+        RunTest nested_derived_type &&\
+        rm nested_derived_type &&\
+        RunTest compound_fortran2003 &&\
+        rm compound_fortran2003 &&\
+        RunTest compound_complex_fortran2003 &&\
+        rm compound_complex_fortran2003); then
+        EXIT_VALUE=${EXIT_SUCCESS}
+    else
+        EXIT_VALUE=${EXIT_FAILURE}
+    fi
+fi
+  
+
 # Cleanup
 rm *.o
 rm *.h5
diff --git a/fortran/examples/rwdset_fortran2003.f90 b/fortran/examples/rwdset_fortran2003.f90
index 74bda85..d65db9e 100644
--- a/fortran/examples/rwdset_fortran2003.f90
+++ b/fortran/examples/rwdset_fortran2003.f90
@@ -53,13 +53,11 @@ PROGRAM RWDSET_FORTRAN2003
   INTEGER(HID_T) :: dset_idr8      ! Dataset identifier 
 
   INTEGER :: error ! Error flag
-  INTEGER :: i, j
+  INTEGER :: i
 
 ! Data buffers:
 
-  INTEGER, DIMENSION(1:4) :: dset_data
-
-  INTEGER(int_kind_1), DIMENSION(1:4), TARGET :: dset_data_i1, data_out_i1
+  INTEGER(int_kind_1), DIMENSION(1:4), TARGET :: dset_data_i1
   INTEGER(int_kind_4), DIMENSION(1:4), TARGET :: dset_data_i4, data_out_i4
   INTEGER(int_kind_8), DIMENSION(1:4), TARGET :: dset_data_i8, data_out_i8
   INTEGER(int_kind_16), DIMENSION(1:4), TARGET :: dset_data_i16, data_out_i16
@@ -73,7 +71,6 @@ PROGRAM RWDSET_FORTRAN2003
   INTEGER(HID_T) :: dspace_id     ! Dataspace identifier
   
   TYPE(C_PTR) :: f_ptr
-  INTEGER(hid_t) :: datatype         !/* Common datatype ID */
 
   !
   ! Initialize FORTRAN interface.
diff --git a/fortran/examples/selectele.f90 b/fortran/examples/selectele.f90
index 3ab7ebc..dcd2379 100644
--- a/fortran/examples/selectele.f90
+++ b/fortran/examples/selectele.f90
@@ -64,14 +64,13 @@
      INTEGER :: i, j
 
      INTEGER :: error  ! Error flag
-     LOGICAL :: status
      INTEGER(HSIZE_T), DIMENSION(2) :: data_dims
 
 
-   !
-   ! Create two files containing identical datasets. Write 0's to one
-   ! and 1's to the other.
-   !
+     !
+     ! Create two files containing identical datasets. Write 0's to one
+     ! and 1's to the other.
+     !
 
      !
      ! Data initialization.
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
index 5d8c2d5..723e930 100644
--- a/fortran/src/CMakeLists.txt
+++ b/fortran/src/CMakeLists.txt
@@ -1,21 +1,21 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_F90_SRC C CXX Fortran)
 
 #-----------------------------------------------------------------------------
 # configure def file for shared libs on windows
-IF (WIN32 AND NOT CYGWIN)
-  IF (BUILD_SHARED_LIBS)
-    IF (MSVC)
-      IF (NOT H5_HAVE_PARALLEL)
-        SET (H5_NOPAREXP ";")
-      ENDIF (NOT H5_HAVE_PARALLEL)
-      IF (NOT HDF5_ENABLE_F2003)
-        SET (H5_NOF03EXP ";")
-      ENDIF (NOT HDF5_ENABLE_F2003)
-      CONFIGURE_FILE (${HDF5_F90_SRC_SOURCE_DIR}/hdf5_fortrandll.def.in ${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def @ONLY)
-    ENDIF (MSVC)
-  ENDIF (BUILD_SHARED_LIBS)
-ENDIF (WIN32 AND NOT CYGWIN)
+if (WIN32)
+  if (BUILD_SHARED_LIBS)
+    if (MSVC)
+      if (NOT H5_HAVE_PARALLEL)
+        set (H5_NOPAREXP ";")
+      endif (NOT H5_HAVE_PARALLEL)
+      if (NOT HDF5_ENABLE_F2003)
+        set (H5_NOF03EXP ";")
+      endif (NOT HDF5_ENABLE_F2003)
+      configure_file (${HDF5_F90_SRC_SOURCE_DIR}/hdf5_fortrandll.def.in ${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def @ONLY)
+    endif (MSVC)
+  endif (BUILD_SHARED_LIBS)
+endif (WIN32)
 
 #-----------------------------------------------------------------------------
 # Setup the Fortran auto-detection utilities
@@ -23,31 +23,31 @@ ENDIF (WIN32 AND NOT CYGWIN)
 # H5fortran_detect.f90     used to generate H5fort_type_defines.h
 # H5fort_type_defines.h    used to generate H5f90i_gen.h + H5fortran_types.f90
 #-----------------------------------------------------------------------------
-IF (FORTRAN_HAVE_SIZEOF)
-  ADD_EXECUTABLE (H5test_FortranHavekind
+if (FORTRAN_HAVE_SIZEOF)
+  add_executable (H5test_FortranHavekind
       ${HDF5_F90_SRC_SOURCE_DIR}/H5test_kind_SIZEOF.f90
   )
-ELSE (FORTRAN_HAVE_SIZEOF)
-  ADD_EXECUTABLE (H5test_FortranHavekind
+else (FORTRAN_HAVE_SIZEOF)
+  add_executable (H5test_FortranHavekind
       ${HDF5_F90_SRC_SOURCE_DIR}/H5test_kind.f90
   )
-ENDIF (FORTRAN_HAVE_SIZEOF)
-IF (WIN32 AND MSVC)
-  IF (BUILD_SHARED_LIBS)
-    SET_TARGET_PROPERTIES (H5test_FortranHavekind
+endif (FORTRAN_HAVE_SIZEOF)
+if (WIN32 AND MSVC)
+  if (BUILD_SHARED_LIBS)
+    set_target_properties (H5test_FortranHavekind
         PROPERTIES
             COMPILE_FLAGS "/MT"
     )
-  ENDIF (BUILD_SHARED_LIBS)
-  SET_TARGET_PROPERTIES (H5test_FortranHavekind
+  endif (BUILD_SHARED_LIBS)
+  set_target_properties (H5test_FortranHavekind
       PROPERTIES
           LINK_FLAGS "/SUBSYSTEM:CONSOLE"
   )
-ENDIF (WIN32 AND MSVC)
-SET_TARGET_PROPERTIES (H5test_FortranHavekind PROPERTIES LINKER_LANGUAGE Fortran)
+endif (WIN32 AND MSVC)
+set_target_properties (H5test_FortranHavekind PROPERTIES LINKER_LANGUAGE Fortran)
 
-SET (CMD $<TARGET_FILE:H5test_FortranHavekind>)
-ADD_CUSTOM_COMMAND (
+set (CMD $<TARGET_FILE:H5test_FortranHavekind>)
+add_custom_command (
     OUTPUT ${HDF5_F90_BINARY_DIR}/H5fortran_detect.f90
     COMMAND ${CMD}
     ARGS > ${HDF5_F90_BINARY_DIR}/H5fortran_detect.f90
@@ -55,25 +55,25 @@ ADD_CUSTOM_COMMAND (
     DEPENDS H5test_FortranHavekind
 )
 #-----------------------------------------------------------------------------
-ADD_EXECUTABLE (H5fortran_detect
+add_executable (H5fortran_detect
     ${HDF5_F90_BINARY_DIR}/H5fortran_detect.f90
 )
-IF (WIN32 AND MSVC)
-  IF (BUILD_SHARED_LIBS)
-    SET_TARGET_PROPERTIES (H5fortran_detect
+if (WIN32 AND MSVC)
+  if (BUILD_SHARED_LIBS)
+    set_target_properties (H5fortran_detect
         PROPERTIES
             COMPILE_FLAGS "/MT"
     )
-  ENDIF (BUILD_SHARED_LIBS)
-  SET_TARGET_PROPERTIES (H5fortran_detect
+  endif (BUILD_SHARED_LIBS)
+  set_target_properties (H5fortran_detect
       PROPERTIES
           LINK_FLAGS "/SUBSYSTEM:CONSOLE"
   )
-ENDIF (WIN32 AND MSVC)
-SET_TARGET_PROPERTIES (H5fortran_detect PROPERTIES LINKER_LANGUAGE Fortran)
+endif (WIN32 AND MSVC)
+set_target_properties (H5fortran_detect PROPERTIES LINKER_LANGUAGE Fortran)
 
-SET (CMD $<TARGET_FILE:H5fortran_detect>)
-ADD_CUSTOM_COMMAND (
+set (CMD $<TARGET_FILE:H5fortran_detect>)
+add_custom_command (
     OUTPUT ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h
     COMMAND ${CMD}
     ARGS > ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h
@@ -83,12 +83,12 @@ ADD_CUSTOM_COMMAND (
 
 INCLUDE_DIRECTORIES (${HDF5_F90_BINARY_DIR} ${CMAKE_Fortran_MODULE_DIRECTORY})
 #-----------------------------------------------------------------------------
-ADD_EXECUTABLE (H5match_types
+add_executable (H5match_types
     ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h
     ${HDF5_F90_SRC_SOURCE_DIR}/H5match_types.c
 )
-SET (CMD $<TARGET_FILE:H5match_types>)
-ADD_CUSTOM_COMMAND (
+set (CMD $<TARGET_FILE:H5match_types>)
+add_custom_command (
     OUTPUT ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
            ${HDF5_F90_BINARY_DIR}/H5fortran_types.f90
     COMMAND ${CMD}
@@ -99,7 +99,7 @@ ADD_CUSTOM_COMMAND (
 #-----------------------------------------------------------------------------
 # f90CStub lib
 #-----------------------------------------------------------------------------
-SET (f90CStub_C_SRCS
+set (f90CStub_C_SRCS
     # normal distribution
     ${HDF5_F90_SRC_SOURCE_DIR}/H5f90kit.c
     ${HDF5_F90_SRC_SOURCE_DIR}/H5_f.c
@@ -118,54 +118,57 @@ SET (f90CStub_C_SRCS
     ${HDF5_F90_SRC_SOURCE_DIR}/H5Zf.c
 )
 
-IF (H5_HAVE_PARALLEL)
-  SET (f90CStub_C_SRCS
+if (H5_HAVE_PARALLEL)
+  set (f90CStub_C_SRCS
       ${f90CStub_C_SRCS}
       ${HDF5_F90_SRC_SOURCE_DIR}/H5FDmpiof.c
   )
-ENDIF (H5_HAVE_PARALLEL)
+endif (H5_HAVE_PARALLEL)
 
-SET_SOURCE_FILES_PROPERTIES (${f90CStub_C_SRCS} PROPERTIES LANGUAGE C)
+set_source_files_properties (${f90CStub_C_SRCS} PROPERTIES LANGUAGE C)
 
-SET (f90CStub_C_HDRS
+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})
+add_library (${HDF5_F90_C_LIB_TARGET} ${LIB_TYPE} ${f90CStub_C_SRCS} ${f90CStub_C_HDRS})
 TARGET_C_PROPERTIES (${HDF5_F90_C_LIB_TARGET} " " " ")
-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}")
+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)
+set_target_properties (${HDF5_F90_C_LIB_TARGET} PROPERTIES
+    FOLDER libraries/fortran
+    LINKER_LANGUAGE C
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # Fortran 2003 standard
 #-----------------------------------------------------------------------------
-IF (HDF5_ENABLE_F2003)
+if (HDF5_ENABLE_F2003)
   # default real is 4 bytes, so include double signatures
-  SET (F_STATUS "_F03")
-ELSE (HDF5_ENABLE_F2003)
+  set (F_STATUS "_F03")
+else (HDF5_ENABLE_F2003)
   # default real is 8 bytes, so exclude double signatures
-  SET (F_STATUS "_F90")
-ENDIF (HDF5_ENABLE_F2003)
+  set (F_STATUS "_F90")
+endif (HDF5_ENABLE_F2003)
 
 #-----------------------------------------------------------------------------
 # Fortran Real Size
 #-----------------------------------------------------------------------------
-IF (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
+if (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
   # default real is 4 bytes, so include double signatures
-  SET (F_DBLE "Include")
-ELSE (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
+  set (F_DBLE "Include")
+else (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
   # default real is 8 bytes, so exclude double signatures
-  SET (F_DBLE "Exclude")
-ENDIF (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
+  set (F_DBLE "Exclude")
+endif (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
 
 #-----------------------------------------------------------------------------
 # Fortran Modules
 #-----------------------------------------------------------------------------
-SET (f90_F_SRCS
+set (f90_F_SRCS
     # generated files
     ${HDF5_F90_BINARY_DIR}/H5fortran_types.f90
 
@@ -201,53 +204,56 @@ SET (f90_F_SRCS
 #-----------------------------------------------------------------------------
 # Add H5FDMPIO if parallel
 #-----------------------------------------------------------------------------
-IF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
-  SET (f90_F_SRCS
+if (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+  set (f90_F_SRCS
     ${f90_F_SRCS}
     ${HDF5_F90_SRC_SOURCE_DIR}/HDF5mpio.f90
     ${HDF5_F90_SRC_SOURCE_DIR}/H5FDmpioff.f90
   )
-ELSE (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
-  SET (f90_F_SRCS
+else (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+  set (f90_F_SRCS
     ${f90_F_SRCS}
     ${HDF5_F90_SRC_SOURCE_DIR}/HDF5.f90
   )
-ENDIF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+endif (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
 
 #-----------------------------------------------------------------------------
 # Add Main fortran library
 #-----------------------------------------------------------------------------
-ADD_LIBRARY (${HDF5_F90_LIB_TARGET} ${LIB_TYPE} ${f90_F_SRCS})
-SET (SHARED_LINK_FLAGS " ")
-IF (WIN32 AND NOT CYGWIN)
-  IF (BUILD_SHARED_LIBS)
-    SET_PROPERTY (TARGET ${HDF5_F90_LIB_TARGET}
+add_library (${HDF5_F90_LIB_TARGET} ${LIB_TYPE} ${f90_F_SRCS})
+set (SHARED_LINK_FLAGS " ")
+if (WIN32)
+  if (BUILD_SHARED_LIBS)
+    set_property (TARGET ${HDF5_F90_LIB_TARGET}
       APPEND PROPERTY COMPILE_DEFINITIONS
         BUILD_HDF5_DLL
     )
-    IF (MSVC)
-      SET (SHARED_LINK_FLAGS "/DLL /DEF:${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def")
-    ENDIF (MSVC)
-  ENDIF (BUILD_SHARED_LIBS)
-  SET_PROPERTY (TARGET ${HDF5_F90_LIB_TARGET}
+    if (MSVC)
+      set (SHARED_LINK_FLAGS "/DLL /DEF:${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def")
+    endif (MSVC)
+  endif (BUILD_SHARED_LIBS)
+  set_property (TARGET ${HDF5_F90_LIB_TARGET}
       APPEND PROPERTY COMPILE_DEFINITIONS
         HDF5F90_WINDOWS
   )
-ENDIF (WIN32 AND NOT CYGWIN)
+endif (WIN32)
 TARGET_FORTRAN_PROPERTIES (${HDF5_F90_LIB_TARGET} " " ${SHARED_LINK_FLAGS})
-SET_TARGET_PROPERTIES (${HDF5_F90_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran)
-TARGET_LINK_LIBRARIES (${HDF5_F90_LIB_TARGET} ${HDF5_F90_C_LIB_TARGET} ${HDF5_LIB_TARGET})
-IF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
-  TARGET_LINK_LIBRARIES (${HDF5_F90_LIB_TARGET} ${MPI_Fortran_LIBRARIES})
-ENDIF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_F90_LIB_TARGET}")
+set_target_properties (${HDF5_F90_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran)
+target_link_libraries (${HDF5_F90_LIB_TARGET} ${HDF5_F90_C_LIB_TARGET} ${HDF5_LIB_TARGET})
+if (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+  target_link_libraries (${HDF5_F90_LIB_TARGET} ${MPI_Fortran_LIBRARIES})
+endif (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_F90_LIB_TARGET}")
 H5_SET_LIB_OPTIONS (${HDF5_F90_LIB_TARGET} ${HDF5_F90_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_F90_LIB_TARGET} PROPERTIES FOLDER libraries/fortran)
+set_target_properties (${HDF5_F90_LIB_TARGET} PROPERTIES
+    FOLDER libraries/fortran
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install
 #-----------------------------------------------------------------------------
-INSTALL (
+install (
     FILES 
         ${HDF5_F90_SRC_SOURCE_DIR}/H5f90.h 
         ${HDF5_F90_SRC_SOURCE_DIR}/H5f90i.h 
@@ -260,35 +266,92 @@ INSTALL (
         fortheaders
 )
 
-IF (WIN32 AND NOT CYGWIN)
-  INSTALL (
-      DIRECTORY
-          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/
+if (WIN32)
+  install (
+      FILES
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5fortran_types.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5test_kind_sizeof_mod.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/hdf5.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5global.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5a.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5d.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5e.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5f.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5g.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5i.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5l.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5lib.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5o.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5p.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5r.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5s.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5t.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5z.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5a_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5d_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5e_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5f_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5l_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5lib_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5o_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5p_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5r_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5t_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5_dble_interface.mod
       DESTINATION
           ${HDF5_INSTALL_INCLUDE_DIR}
       COMPONENT
           fortheaders
   )
-ELSE (WIN32 AND NOT CYGWIN)
-  INSTALL (
-      DIRECTORY
-          ${CMAKE_Fortran_MODULE_DIRECTORY}/
+else (WIN32)
+  install (
+      FILES
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5fortran_types.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/hdf5.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5global.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5f.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5a.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5d.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5e.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5f.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5g.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5i.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5l.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5lib.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5o.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5p.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5r.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5s.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5t.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5z.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5a_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5d_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5e_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5e_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5l_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5lib_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5o_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5p_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5r_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5t_provisional.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5_dble_interface.mod
       DESTINATION
           ${HDF5_INSTALL_INCLUDE_DIR}
       COMPONENT
           fortheaders
   )
-ENDIF (WIN32 AND NOT CYGWIN)
+endif (WIN32)
 
 #-----------------------------------------------------------------------------
 # 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)
+if (HDF5_EXPORTED_TARGETS)
+  if (BUILD_SHARED_LIBS)
+    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)
+  endif (BUILD_SHARED_LIBS)
 
-  INSTALL (
+  install (
       TARGETS
           ${HDF5_F90_C_LIB_TARGET}
           ${HDF5_F90_LIB_TARGET}
@@ -298,4 +361,4 @@ IF (HDF5_EXPORTED_TARGETS)
       ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT fortlibraries
       RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT fortlibraries
   )
-ENDIF (HDF5_EXPORTED_TARGETS)
+endif (HDF5_EXPORTED_TARGETS)
diff --git a/fortran/src/H5Aff_F03.f90 b/fortran/src/H5Aff_F03.f90
index 26c911a..807f6fa 100644
--- a/fortran/src/H5Aff_F03.f90
+++ b/fortran/src/H5Aff_F03.f90
@@ -1065,17 +1065,16 @@ CONTAINS
     CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Attribute data
     INTEGER, INTENT(OUT) :: hdferr         ! Error code
 
-    CALL h5aread_char_scalar_fix(attr_id, memtype_id, buf, LEN(buf), dims, hdferr)
+    CALL h5aread_char_scalar_fix(attr_id, memtype_id, buf, LEN(buf), hdferr)
 
   END SUBROUTINE h5aread_char_scalar
 
-  SUBROUTINE h5aread_char_scalar_fix(attr_id, memtype_id, buf, buf_len, dims, hdferr)
+  SUBROUTINE h5aread_char_scalar_fix(attr_id, memtype_id, buf, buf_len, hdferr)
     USE, INTRINSIC :: ISO_C_BINDING
     IMPLICIT NONE
     INTEGER(HID_T), INTENT(IN) :: attr_id    ! Attribute identifier
     INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
                                              ! identifier  (in memory)
-    INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
     INTEGER, INTENT(IN)  :: buf_len
     CHARACTER(LEN=buf_len), INTENT(INOUT), TARGET :: buf ! Attribute data
     INTEGER, INTENT(OUT) :: hdferr         ! Error code
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index ab7adf7..799f40a 100644
--- a/fortran/src/H5Df.c
+++ b/fortran/src/H5Df.c
@@ -1582,7 +1582,7 @@ nh5dvlen_get_max_len_c ( hid_t_f *dset_id ,  hid_t_f *type_id, hid_t_f *space_id
   num_elem = H5Sget_select_npoints(c_space_id);
   if( num_elem < 0) return ret_value;
 
-  c_buf = (hvl_t *)malloc(sizeof(hvl_t)*(size_t)num_elem);
+  c_buf = (hvl_t *)HDmalloc(sizeof(hvl_t)*(size_t)num_elem);
   if (c_buf == NULL) return ret_value;
   status = H5Dread(c_dset_id, c_type_id, H5S_ALL, c_space_id, H5P_DEFAULT, c_buf);
   if(status < 0) goto DONE;
@@ -1595,7 +1595,7 @@ nh5dvlen_get_max_len_c ( hid_t_f *dset_id ,  hid_t_f *type_id, hid_t_f *space_id
 
 DONE:
 
-  free(c_buf);
+  HDfree(c_buf);
   return ret_value;
 }
 /****if* H5Df/nh5dwrite_vl_integer_c
@@ -1651,7 +1651,7 @@ nh5dwrite_vl_integer_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_
   c_file_space_id = (hid_t)*file_space_id;
   c_xfer_prp      = (hid_t)*xfer_prp;
 
-  c_buf = (hvl_t *)malloc((size_t)num_elem * sizeof(hvl_t));
+  c_buf = (hvl_t *)HDmalloc((size_t)num_elem * sizeof(hvl_t));
   if (c_buf == NULL) return ret_value;
   tmp = (int_f *)buf;
   for (i=0; i < num_elem; i++) {
@@ -1667,7 +1667,7 @@ nh5dwrite_vl_integer_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_
   if( status < 0) goto DONE;
   ret_value = 0;
 DONE:
-  free(c_buf);
+  HDfree(c_buf);
   return ret_value;
 }
 
@@ -1712,7 +1712,7 @@ nh5dread_vl_integer_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_s
   size_t max_len;
 
   hvl_t *c_buf;
-  size_t i;
+  hssize_t i;
   hssize_t num_elem;
 
   c_dset_id       = (hid_t)*dset_id;
@@ -1725,7 +1725,7 @@ nh5dread_vl_integer_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_s
   num_elem = H5Sget_select_npoints(c_mem_space_id);
   if(num_elem != dims[1]) return ret_value;
 
-  c_buf = (hvl_t *)malloc((size_t)num_elem * sizeof(hvl_t));
+  c_buf = (hvl_t *)HDmalloc((size_t)num_elem * sizeof(hvl_t));
   if (c_buf == NULL) return ret_value;
   /*
    * Call H5Dread function.
@@ -1739,7 +1739,7 @@ nh5dread_vl_integer_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_s
   H5Dvlen_reclaim(c_mem_type_id, c_mem_space_id, H5P_DEFAULT, c_buf);
   ret_value = 0;
 DONE:
-  free(c_buf);
+  HDfree(c_buf);
   return ret_value;
 }
 
@@ -1798,12 +1798,12 @@ nh5dwrite_vl_string_c( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_sp
   /*
    * Allocate arra of character pointers
    */
-  c_buf = (char **)malloc((size_t)num_elem * sizeof(char *));
+  c_buf = (char **)HDmalloc((size_t)num_elem * sizeof(char *));
   if (c_buf == NULL) return ret_value;
 
   /* Copy data to long C string */
   tmp = (char *)HD5f2cstring(buf, (size_t)(max_len*num_elem));
-  if (tmp == NULL) { free(c_buf);
+  if (tmp == NULL) { HDfree(c_buf);
                      return ret_value;
                    }
   /*
@@ -1811,7 +1811,7 @@ nh5dwrite_vl_string_c( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_sp
    */
    tmp_p = tmp;
    for (i=0; i < num_elem; i++) {
-        c_buf[i] = (char *) malloc((size_t)len[i]+1);
+        c_buf[i] = (char *) HDmalloc((size_t)len[i]+1);
         memcpy(c_buf[i], tmp_p, (size_t)len[i]);
         c_buf[i][len[i]] = '\0';
         tmp_p = tmp_p + max_len;
@@ -1826,8 +1826,8 @@ nh5dwrite_vl_string_c( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_sp
   ret_value = 0;
 DONE:
   H5Dvlen_reclaim(c_mem_type_id, c_mem_space_id, H5P_DEFAULT, c_buf);
-  free(c_buf);
-  free(tmp);
+  HDfree(c_buf);
+  HDfree(tmp);
   return ret_value;
 }
 /****if* H5Df/nh5dread_vl_string_c
@@ -1885,18 +1885,18 @@ nh5dread_vl_string_c( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_spa
   /*
    * Allocate array of character pointers
    */
-  c_buf = (char **)malloc((size_t)num_elem * sizeof(char *));
+  c_buf = (char **)HDmalloc((size_t)num_elem * sizeof(char *));
   if (c_buf == NULL) return ret_value;
 
   /*
    * Call H5Dread function.
    */
    status = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, c_buf);
-   if (status < 0) { free(c_buf);
+   if (status < 0) { HDfree(c_buf);
                      return ret_value;
                    }
   /* Copy data to long C string */
-  tmp = (char *)malloc((size_t)(max_len*num_elem) +1);
+  tmp = (char *)HDmalloc((size_t)(max_len*num_elem) +1);
   tmp_p = tmp;
   for (i=0; i<max_len*num_elem; i++) tmp[i] = ' ';
   tmp[max_len*num_elem] = '\0';
@@ -1908,8 +1908,8 @@ nh5dread_vl_string_c( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_spa
   HD5packFstring(tmp, _fcdtocp(buf), (size_t)(max_len*num_elem));
   ret_value = 0;
   H5Dvlen_reclaim(c_mem_type_id, c_mem_space_id, H5P_DEFAULT, c_buf);
-  free(c_buf);
-  free(tmp);
+  HDfree(c_buf);
+  HDfree(tmp);
   return ret_value;
 }
 
@@ -1966,7 +1966,7 @@ nh5dwrite_vl_real_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_spa
   c_file_space_id = (hid_t)*file_space_id;
   c_xfer_prp      = (hid_t)*xfer_prp;
 
-  c_buf = (hvl_t *)malloc((size_t)num_elem * sizeof(hvl_t));
+  c_buf = (hvl_t *)HDmalloc((size_t)num_elem * sizeof(hvl_t));
   if (c_buf == NULL) return ret_value;
   tmp = (real_f *)buf;
   for (i=0; i < num_elem; i++) {
@@ -1982,7 +1982,7 @@ nh5dwrite_vl_real_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_spa
   if( status < 0) goto DONE;
   ret_value = 0;
 DONE:
-  free(c_buf);
+  HDfree(c_buf);
   return ret_value;
 }
 
@@ -2027,7 +2027,7 @@ nh5dread_vl_real_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_spac
   size_t max_len;
 
   hvl_t *c_buf;
-  size_t i;
+  hssize_t i;
   hssize_t num_elem;
 
   c_dset_id       = (hid_t)*dset_id;
@@ -2040,7 +2040,7 @@ nh5dread_vl_real_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_spac
   num_elem = H5Sget_select_npoints(c_mem_space_id);
   if(num_elem != dims[1]) return ret_value;
 
-  c_buf = (hvl_t *)malloc((size_t)num_elem * sizeof(hvl_t));
+  c_buf = (hvl_t *)HDmalloc((size_t)num_elem * sizeof(hvl_t));
   if (c_buf == NULL) return ret_value;
   /*
    * Call H5Dread function.
@@ -2055,7 +2055,7 @@ nh5dread_vl_real_c ( hid_t_f *dset_id ,  hid_t_f *mem_type_id, hid_t_f *mem_spac
   H5Dvlen_reclaim(c_mem_type_id, c_mem_space_id, H5P_DEFAULT, c_buf);
   ret_value = 0;
 DONE:
-  free(c_buf);
+  HDfree(c_buf);
   return ret_value;
 }
 
diff --git a/fortran/src/H5Dff_F03.f90 b/fortran/src/H5Dff_F03.f90
index be4bd69..d39c200 100644
--- a/fortran/src/H5Dff_F03.f90
+++ b/fortran/src/H5Dff_F03.f90
@@ -273,7 +273,8 @@ CONTAINS
     INTEGER(HID_T) :: mem_space_id_default
     INTEGER(HID_T) :: file_space_id_default
     INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf
-    INTEGER :: i,j
+    INTEGER :: i
+    INTEGER(HSIZE_T) :: j
     TYPE(C_PTR) :: f_ptr
     INTERFACE
        INTEGER FUNCTION h5dwrite_ref_reg_c(dset_id, mem_type_id,&
@@ -1214,10 +1215,10 @@ CONTAINS
     INTEGER(HID_T) :: xfer_prp_default
     INTEGER(HID_T) :: mem_space_id_default
     INTEGER(HID_T) :: file_space_id_default
-    TYPE(C_PTR) :: f_ptr
 
     INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf
-    INTEGER :: i,j
+    INTEGER :: i
+    INTEGER(HSIZE_T) :: j
     INTERFACE
        INTEGER FUNCTION h5dread_ref_reg_c(dset_id, mem_type_id,&
             mem_space_id_default, &
@@ -1538,18 +1539,25 @@ CONTAINS
     INTEGER(HID_T) :: mem_space_id_default
     INTEGER(HID_T) :: file_space_id_default
 
-    CALL h5dread_char_scalar_fix(dset_id, mem_type_id, buf, LEN(buf), dims, hdferr, &
-         mem_space_id, file_space_id, xfer_prp)
+    xfer_prp_default = H5P_DEFAULT_F
+    mem_space_id_default = H5S_ALL_F
+    file_space_id_default = H5S_ALL_F
+
+    IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp
+    IF(PRESENT(mem_space_id))  mem_space_id_default = mem_space_id
+    IF(PRESENT(file_space_id)) file_space_id_default = file_space_id
+
+    CALL h5dread_char_scalar_fix(dset_id, mem_type_id, buf, LEN(buf), hdferr, &
+         mem_space_id_default, file_space_id_default, xfer_prp_default)
 
   END SUBROUTINE h5dread_char_scalar
 
-  SUBROUTINE h5dread_char_scalar_fix(dset_id, mem_type_id, buf, buf_len, dims, hdferr, &
+  SUBROUTINE h5dread_char_scalar_fix(dset_id, mem_type_id, buf, buf_len, hdferr, &
        mem_space_id, file_space_id, xfer_prp)
     USE, INTRINSIC :: ISO_C_BINDING
     IMPLICIT NONE
     INTEGER(HID_T), INTENT(IN) :: dset_id     ! Dataset identifier
     INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier
-    INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims
     INTEGER, INTENT(IN)  :: buf_len
     CHARACTER(LEN=buf_len), INTENT(INOUT), TARGET :: buf ! Data buffer
     INTEGER, INTENT(OUT) :: hdferr      ! Error code
@@ -1557,23 +1565,12 @@ CONTAINS
     INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id ! File dataspace identfier
     INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp      ! Transfer property list identifier
 
-    INTEGER(HID_T) :: xfer_prp_default
-    INTEGER(HID_T) :: mem_space_id_default
-    INTEGER(HID_T) :: file_space_id_default
     TYPE(C_PTR) :: f_ptr
 
-    xfer_prp_default = H5P_DEFAULT_F
-    mem_space_id_default = H5S_ALL_F
-    file_space_id_default = H5S_ALL_F
-
-    IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp
-    IF(PRESENT(mem_space_id))  mem_space_id_default = mem_space_id
-    IF(PRESENT(file_space_id)) file_space_id_default = file_space_id
-
     f_ptr = C_LOC(buf(1:1))
 
-    hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, &
-         file_space_id_default, xfer_prp_default, f_ptr)
+    hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id, &
+         file_space_id, xfer_prp, f_ptr)
 
   END SUBROUTINE h5dread_char_scalar_fix
 
diff --git a/fortran/src/H5Dff_F90.f90 b/fortran/src/H5Dff_F90.f90
index 46ea3ad..66cfe62 100644
--- a/fortran/src/H5Dff_F90.f90
+++ b/fortran/src/H5Dff_F90.f90
@@ -181,7 +181,7 @@ CONTAINS
     INTEGER(HID_T)  :: mem_space_id_default
     INTEGER(HID_T) :: file_space_id_default
     INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf
-    INTEGER :: j
+    INTEGER(HSIZE_T) :: j
 
     INTERFACE
        INTEGER FUNCTION h5dread_ref_obj_c(dset_id, mem_type_id,&
@@ -240,7 +240,8 @@ CONTAINS
     INTEGER(HID_T)  :: mem_space_id_default
     INTEGER(HID_T) :: file_space_id_default
     INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf
-    INTEGER :: i,j
+    INTEGER :: i
+    INTEGER(HSIZE_T) :: j
 
     INTERFACE
        INTEGER FUNCTION h5dread_ref_reg_c(dset_id, mem_type_id,&
@@ -1508,7 +1509,7 @@ CONTAINS
     INTEGER(HID_T)  :: mem_space_id_default
     INTEGER(HID_T) :: file_space_id_default
     INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf
-    INTEGER :: j
+    INTEGER(HSIZE_T) :: j
 
     INTERFACE
        INTEGER FUNCTION h5dwrite_ref_obj_c(dset_id, mem_type_id,&
@@ -1567,7 +1568,8 @@ CONTAINS
     INTEGER(HID_T)  :: mem_space_id_default
     INTEGER(HID_T) :: file_space_id_default
     INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf
-    INTEGER :: i,j
+    INTEGER :: i
+    INTEGER(HSIZE_T) :: j
 
     INTERFACE
        INTEGER FUNCTION h5dwrite_ref_reg_c(dset_id, mem_type_id,&
diff --git a/fortran/src/H5Ef.c b/fortran/src/H5Ef.c
index 8c00ab7..4848d9e 100644
--- a/fortran/src/H5Ef.c
+++ b/fortran/src/H5Ef.c
@@ -143,8 +143,8 @@ done:
  * NAME
  *  h5eget_major_c
  * PURPOSE
- *  Call H5Eget_major to get a character string
- *  describing an error specified by a major error number.
+ *  Get a character string describing an error specified by a
+ *  major error number.
  * INPUTS
  *  error_no - Major error number
  * OUTPUTS
@@ -173,7 +173,7 @@ nh5eget_major_c(int_f* error_no, _fcd name, size_t_f* namelen)
         HGOTO_DONE(FAIL)
 
     /*
-     * Call H5Eget_major function.
+     * Call H5Eget_msg function.
      */
     H5Eget_msg((hid_t)*error_no, NULL, c_name, c_namelen);
     HD5packFstring((char*)c_name, _fcdtocp(name), c_namelen);
@@ -191,8 +191,8 @@ done:
  * NAME
  *  h5eget_minor_c
  * PURPOSE
- *  Call H5Eget_minor to get a character string
- *  describing an error specified by a minor error number.
+ *  Get a character string describing an error specified by a
+ *  minor error number.
  * INPUTS
  *  error_no - Major error number
  * OUTPUTS
@@ -221,7 +221,7 @@ nh5eget_minor_c(int_f* error_no, _fcd name, size_t_f* namelen)
         HGOTO_DONE(FAIL)
 
     /*
-     * Call H5Eget_minor function.
+     * Call H5Eget_msg function.
      */
     H5Eget_msg((hid_t)*error_no, NULL, c_name, c_namelen);
     HD5packFstring((char *)c_name, _fcdtocp(name), c_namelen);
diff --git a/fortran/src/H5FDmpiof.c b/fortran/src/H5FDmpiof.c
index 993b5ac..bbdb170 100644
--- a/fortran/src/H5FDmpiof.c
+++ b/fortran/src/H5FDmpiof.c
@@ -220,87 +220,6 @@ nh5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode)
      return ret_value;
 }
 
-/****if* H5FDmpiof/h5pset_fapl_mpiposix_c
- * NAME
- *        h5pset_fapl_mpiposix_c
- * PURPOSE
- *     Call H5Pset_fapl_mpiposix to set mode for parallel I/O and the user
- *              supplied communicator
- * INPUTS
- *      prp_id - property list identifier
- *              comm   - MPI communicator
- *              flag   - flag to use GPFS hints
- * RETURNS
- *     0 on success, -1 on failure
- * AUTHOR
- *  Elena Pourmal
- *              Tuesday, May 6, 2003
- * HISTORY
- *
- * SOURCE
-*/
-int_f
-nh5pset_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag)
-/******/
-{
-     int ret_value = -1;
-     hid_t c_prp_id;
-     herr_t ret;
-     hbool_t c_flag;
-     MPI_Comm c_comm;
-     c_comm = MPI_Comm_f2c(*comm);
-     c_flag  = (hbool_t)*flag;
-     /*
-      * Call H5Pset_fapl_mpiposix function.
-      */
-     c_prp_id = (hid_t) *prp_id;
-     ret = H5Pset_fapl_mpiposix(c_prp_id, c_comm, c_flag);
-     if (ret < 0) return ret_value;
-     ret_value = 0;
-     return ret_value;
-}
-
-/****if* H5FDmpiof/h5pget_fapl_mpiposix_c
- * NAME
- *        h5pget_fapl_mpiposix_c
- * PURPOSE
- *     Call H5Pget_fapl_mpiposix to retrieve communicator and info object
- * INPUTS
- *      prp_id - property list identifier
- * OUTPUTS
- *     comm   - buffer to return MPI communicator
- *              flag - flag to use GPFS hints
- * RETURNS
- *     0 on success, -1 on failure
- * AUTHOR
- *  Elena Pourmal
- *              Tuesday, May 6, 2003
- * HISTORY
- *
- * SOURCE
-*/
-int_f
-nh5pget_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag)
-/******/
-{
-     int ret_value = -1;
-     hid_t c_prp_id;
-     herr_t ret;
-     hbool_t c_flag;
-     MPI_Comm c_comm;
-
-     /*
-      * Call H5Pget_fapl_mpiposix function.
-      */
-     c_prp_id = (hid_t) *prp_id;
-     ret = H5Pget_fapl_mpiposix(c_prp_id, &c_comm, &c_flag);
-     if (ret < 0) return ret_value;
-     *comm = (int_f) MPI_Comm_c2f(c_comm);
-     *flag = (int_f) c_flag;
-     ret_value = 0;
-     return ret_value;
-}
-
 /****if* H5Pf/h5pget_mpio_actual_io_mode_c
  * NAME
  *  h5pget_mpio_actual_io_mode_c
diff --git a/fortran/src/H5FDmpioff.f90 b/fortran/src/H5FDmpioff.f90
index 5c81bc8..50a77d9 100644
--- a/fortran/src/H5FDmpioff.f90
+++ b/fortran/src/H5FDmpioff.f90
@@ -131,6 +131,7 @@ CONTAINS
     INTEGER, EXTERNAL :: h5pset_dxpl_mpio_c
     hdferr = h5pset_dxpl_mpio_c(prp_id, data_xfer_mode)
   END SUBROUTINE h5pset_dxpl_mpio_f
+
 !****s* H5FDMPIO/h5pget_dxpl_mpio_f
 !
 ! NAME
@@ -164,76 +165,6 @@ CONTAINS
     hdferr = h5pget_dxpl_mpio_c(prp_id, data_xfer_mode)
   END SUBROUTINE h5pget_dxpl_mpio_f
 
-!****s* H5FDMPIO/h5pset_fapl_mpiposix_f
-!
-! NAME
-!  h5pset_fapl_mpiposix_f
-!
-! PURPOSE
-!  Stores MPI IO communicator information to the file
-!  access property list.
-!
-! INPUTS
-!  prp_id    - File access property list identifier.
-!  comm      - MPI-2 communicator.
-!  use_gpfs  - Logical flag to use the GPFS hints.
-! OUTPUTS
-!  hdferr    - Returns 0 if successful and -1 if fails.
-!
-! AUTHOR
-!  Elena Pourmal
-!  May 6, 2003
-!
-! Fortran90 Interface:
-  SUBROUTINE h5pset_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
-    IMPLICIT NONE
-    INTEGER(HID_T), INTENT(IN)  :: prp_id
-    INTEGER,        INTENT(IN)  :: comm
-    LOGICAL,        INTENT(IN)  :: use_gpfs
-    INTEGER,        INTENT(OUT) :: hdferr
-!*****
-    INTEGER :: flag
-    INTEGER, EXTERNAL :: h5pset_fapl_mpiposix_c
-    flag = 0
-    IF(use_gpfs) flag = 1
-    hdferr = h5pset_fapl_mpiposix_c(prp_id, comm, flag)
-  END SUBROUTINE h5pset_fapl_mpiposix_f
-
-!****s* H5FDMPIO/h5pget_fapl_mpiposix_f
-!
-! NAME
-!  h5pget_fapl_mpiposix_f
-!
-! PURPOSE
-!  Returns MPI communicator information.
-!
-! INPUTS
-!  prp_id    - File access property list identifier.
-! OUTPUTS
-!  comm      - MPI-2 communicator.
-!  use_gpfs  - Flag to use GPFS hints.
-!  hdferr    - Returns 0 if successful and -1 if fails.
-! AUTHOR
-!  Elena Pourmal
-!  May 6, 2003
-!
-! Fortran90 Interface:
-  SUBROUTINE h5pget_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
-    IMPLICIT NONE
-    INTEGER(HID_T), INTENT(IN)  :: prp_id
-    INTEGER,        INTENT(OUT) :: comm
-    LOGICAL,        INTENT(OUT) :: use_gpfs
-    INTEGER,        INTENT(OUT) :: hdferr
-!*****
-    INTEGER :: flag
-
-    INTEGER, EXTERNAL :: h5pget_fapl_mpiposix_c
-    hdferr = h5pget_fapl_mpiposix_c(prp_id, comm, flag)
-    use_gpfs = .FALSE.
-    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
diff --git a/fortran/src/H5Fff_F03.f90 b/fortran/src/H5Fff_F03.f90
index 1ccd39a..d819c34 100644
--- a/fortran/src/H5Fff_F03.f90
+++ b/fortran/src/H5Fff_F03.f90
@@ -30,13 +30,11 @@
 !
 !*****
 
-
 MODULE H5F_PROVISIONAL
 
   USE H5GLOBAL
   USE, INTRINSIC :: ISO_C_BINDING
 
-
 CONTAINS
 !****s* H5F (F03)/h5fget_file_image_f_F03
 !
@@ -46,16 +44,17 @@ CONTAINS
 ! PURPOSE
 !  Retrieves a copy of the image of an existing, open file. 
 !
-! Inputs:
+! INPUTS
 !  file_id    - Target file identifier.
 !  buf_ptr    - Pointer to the buffer into which the image of the HDF5 file is to be copied.
 !  buf_len    - Size of the supplied buffer.
 !
-! Outputs:
+! OUTPUTS
 !  hdferr     - error code:
 !                 0 on success and -1 on failure
-! Optional:  
-!  buf_size   - The size in bytes of the buffer required to store the file image.
+! OPTIONAL PARAMETERS  
+!  buf_size   - Returns the size in bytes of the buffer required to store the file image,
+!               no data will be copied.
 !
 ! AUTHOR
 !  M. Scot Breitenfeld
@@ -65,11 +64,11 @@ CONTAINS
   SUBROUTINE h5fget_file_image_f(file_id, buf_ptr, buf_len, hdferr, buf_size)
     USE, INTRINSIC :: ISO_C_BINDING
     IMPLICIT NONE
-    INTEGER(HID_T)  , INTENT(IN)    :: file_id
-    TYPE(C_PTR)     , INTENT(INOUT) :: buf_ptr
-    INTEGER(SIZE_T) , INTENT(IN)    :: buf_len
-    INTEGER(SIZE_T) , INTENT(OUT), OPTIONAL :: buf_size
-    INTEGER         , INTENT(OUT)   :: hdferr
+    INTEGER(HID_T) , INTENT(IN)              :: file_id
+    TYPE(C_PTR)    , INTENT(INOUT)           :: buf_ptr
+    INTEGER(SIZE_T), INTENT(IN)              :: buf_len
+    INTEGER        , INTENT(OUT)             :: hdferr
+    INTEGER(SIZE_T), INTENT(OUT)  , OPTIONAL :: buf_size
 !*****
 
     INTEGER(SIZE_T) :: buf_size_default
@@ -81,14 +80,13 @@ CONTAINS
          !DEC$IF DEFINED(HDF5F90_WINDOWS)
          !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FILE_IMAGE_C'::h5fget_file_image_c
          !DEC$ENDIF
-         INTEGER(HID_T)  , INTENT(IN)    :: file_id
-         TYPE(C_PTR)     , VALUE         :: buf_ptr
-         INTEGER(SIZE_T) , INTENT(IN)    :: buf_len
-         INTEGER(SIZE_T), INTENT(IN)     :: buf_size
+         INTEGER(HID_T) , INTENT(IN) :: file_id
+         TYPE(C_PTR)    , VALUE      :: buf_ptr
+         INTEGER(SIZE_T), INTENT(IN) :: buf_len
+         INTEGER(SIZE_T), INTENT(IN) :: buf_size
        END FUNCTION h5fget_file_image_c
     END INTERFACE
 
-
     IF(PRESENT(buf_size))THEN
        buf_ptr = C_NULL_PTR
     ENDIF
diff --git a/fortran/src/H5Off.f90 b/fortran/src/H5Off.f90
index 1437e9f..8a40079 100644
--- a/fortran/src/H5Off.f90
+++ b/fortran/src/H5Off.f90
@@ -191,7 +191,7 @@ CONTAINS
   SUBROUTINE h5oclose_f(object_id, hdferr)
     IMPLICIT NONE
     INTEGER(HID_T), INTENT(IN)   :: object_id
-    INTEGER       ,  INTENT(OUT) :: hdferr
+    INTEGER       , INTENT(OUT) :: hdferr
 !*****
     INTERFACE
        INTEGER FUNCTION h5oclose_c(object_id)
@@ -565,7 +565,7 @@ CONTAINS
 !  obj_id  - Object identifier.
 !
 ! Outputs: 
-!  hdferr     - Returns 0 if successful and -1 if fails.
+!  hdferr  - Returns 0 if successful and -1 if fails.
 !
 ! AUTHOR	
 !  M. Scot Breitenfeld
@@ -717,16 +717,16 @@ CONTAINS
 !  Sets comment for specified object. 
 !
 ! Inputs:  
-!  loc_id - Identifier of a file, group, dataset, or named datatype.
-!  name      - Name of the object whose comment is to be set or reset, 
+!  loc_id   - Identifier of a file, group, dataset, or named datatype.
+!  name     - Name of the object whose comment is to be set or reset, 
 !              specified as a path relative to loc_id. 
-!  comment   - The new comment.
+!  comment  - The new comment.
 !
 ! Outputs: 
-!  hdferr    - Returns 0 if successful and -1 if fails.
+!  hdferr   - Returns 0 if successful and -1 if fails.
 !
 ! Optional parameters:
-!  lapl_id   - Link access property list identifier.
+!  lapl_id  - Link access property list identifier.
 !
 ! AUTHOR	
 !  M. Scot Breitenfeld
diff --git a/fortran/src/H5Off_F03.f90 b/fortran/src/H5Off_F03.f90
index 0cf4d46..cfb7d56 100644
--- a/fortran/src/H5Off_F03.f90
+++ b/fortran/src/H5Off_F03.f90
@@ -205,7 +205,6 @@ CONTAINS
     INTEGER         , INTENT(OUT)           :: hdferr
     INTEGER(HID_T)  , INTENT(IN) , OPTIONAL :: lapl_id
 !*****
-    INTEGER         :: corder_valid
     INTEGER(SIZE_T) :: namelen
     INTEGER(HID_T)  :: lapl_id_default
     TYPE(C_PTR)     :: ptr
@@ -329,7 +328,6 @@ CONTAINS
     INTEGER         , INTENT(OUT)           :: hdferr
     INTEGER(HID_T)  , INTENT(IN) , OPTIONAL :: lapl_id
 !*****
-    INTEGER         :: corder_valid
     INTEGER(SIZE_T) :: namelen
     INTEGER(HID_T)  :: lapl_id_default
     TYPE(C_PTR)     :: ptr
@@ -418,7 +416,6 @@ CONTAINS
 
     INTEGER(SIZE_T) :: namelen
     INTEGER(HID_T)  :: lapl_id_default
-    TYPE(C_PTR)     :: ptr
 
     INTERFACE
        INTEGER FUNCTION h5ovisit_by_name_c(loc_id, object_name, namelen, index_type, order, &
diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c
index 262ce55..98e5ff6 100644
--- a/fortran/src/H5Pf.c
+++ b/fortran/src/H5Pf.c
@@ -324,30 +324,23 @@ nh5pset_chunk_c ( hid_t_f *prp_id, int_f *rank, hsize_t_f *dims )
 /******/
 {
   int ret_value = -1;
-  hid_t c_prp_id;
-  int c_rank;
-  hsize_t *c_dims;
+  hid_t c_prp_id = (hid_t)*prp_id;
+  int c_rank = (int)*rank;
+  hsize_t c_dims[H5S_MAX_RANK];
   herr_t status;
   int i;
 
-  c_dims =  (hsize_t *)HDmalloc(sizeof(hsize_t) * (*rank ));
-  if (!c_dims) return ret_value;
-
   /*
    * Transpose dimension arrays because of C-FORTRAN storage order
    */
-  for (i = 0; i < *rank ; i++) {
-       c_dims[i] =  dims[*rank - i - 1];
-  }
+  for (i = 0; i < c_rank ; i++)
+       c_dims[i] =  (hsize_t)dims[c_rank - i - 1];
 
-  c_prp_id = (hid_t)*prp_id;
-  c_rank = (int)*rank;
   status = H5Pset_chunk(c_prp_id, c_rank, c_dims);
   if (status < 0) goto DONE;
   ret_value = 0;
 
 DONE:
-  HDfree (c_dims);
   return ret_value;
 }
 
@@ -375,26 +368,19 @@ nh5pget_chunk_c ( hid_t_f *prp_id, int_f *max_rank, hsize_t_f *dims )
 /******/
 {
   int ret_value = -1;
-  hid_t c_prp_id;
-  hsize_t *c_dims;
+  hid_t c_prp_id = (hid_t)*prp_id;
+  hsize_t c_dims[H5S_MAX_RANK];
   int rank;
-  int c_max_rank;
+  int c_max_rank = (int)*max_rank;
   int i;
 
-  c_dims =  (hsize_t *)HDmalloc(sizeof(hsize_t) * (*max_rank ));
-  if (!c_dims) return ret_value;
-
-  c_prp_id = (hid_t)*prp_id;
-  c_max_rank = (int)*max_rank;
   rank = H5Pget_chunk(c_prp_id, c_max_rank, c_dims);
 
   /*
    * Transpose dimension arrays because of C-FORTRAN storage order
    */
-  for (i = 0; i < *max_rank ; i++) {
-       dims[*max_rank - i - 1] = (hsize_t_f)c_dims[i];
-  }
-  HDfree (c_dims);
+  for (i = 0; i < c_max_rank ; i++)
+       dims[c_max_rank - i - 1] = (hsize_t_f)c_dims[i];
   if (rank < 0) return ret_value;
   ret_value = (int_f)rank;
   return ret_value;
@@ -1801,18 +1787,15 @@ nh5pset_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nel
 /******/
 {
      int ret_value = -1;
-     hid_t c_prp_id;
+     hid_t c_prp_id = (hid_t)*prp_id;
      herr_t ret;
-     size_t c_cd_nelmts;
-     unsigned int c_flags;
-     H5Z_filter_t c_filter;
+     size_t c_cd_nelmts = (size_t)*cd_nelmts;
+     unsigned int c_flags = (unsigned)*flags;
+     H5Z_filter_t c_filter = (H5Z_filter_t)*filter;
      unsigned int * c_cd_values;
      unsigned i;
 
-     c_filter = (H5Z_filter_t)*filter;
-     c_flags = (unsigned)*flags;
-     c_cd_nelmts = (size_t)*cd_nelmts;
-     c_cd_values = (unsigned int*)HDmalloc(sizeof(unsigned int) * ((int)c_cd_nelmts));
+     c_cd_values = (unsigned int*)HDmalloc(sizeof(unsigned int) * c_cd_nelmts);
      if (!c_cd_values) return ret_value;
      for (i = 0; i < c_cd_nelmts; i++)
           c_cd_values[i] = (unsigned int)cd_values[i];
@@ -1820,7 +1803,6 @@ nh5pset_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nel
      /*
       * Call H5Pset_filter function.
       */
-     c_prp_id = (hid_t)*prp_id;
      ret = H5Pset_filter(c_prp_id, c_filter, c_flags, c_cd_nelmts,c_cd_values );
 
      if (ret < 0) goto DONE;
@@ -1967,13 +1949,12 @@ nh5pset_external_c (hid_t_f *prp_id, _fcd name, int_f* namelen, off_t_f* offset,
      herr_t ret;
      hsize_t c_bytes;
      char* c_name;
-     size_t c_namelen;
+     size_t c_namelen = (size_t)*namelen;
      off_t c_offset;
      c_bytes = (hsize_t) *bytes;
      c_offset = (off_t) *offset;
 
 
-     c_namelen = (int)*namelen;
      c_name = (char *)HD5f2cstring(name, c_namelen);
      if (c_name == NULL) return ret_value;
 
@@ -3407,7 +3388,7 @@ nh5pget_class_name_c(hid_t_f *cls, _fcd name, int_f *name_len)
 
      HD5packFstring(c_name, _fcdtocp(name), (size_t)*name_len);
      ret_value = (int_f)HDstrlen(c_name);
-     HDfree(c_name);
+     H5free_memory(c_name);
 
 DONE:
      return ret_value;
@@ -3819,7 +3800,7 @@ nh5pset_fapl_multi_c ( hid_t_f *prp_id , int_f *memb_map, hid_t_f *memb_fapl, _f
  * Check that we got correct values from Fortran for memb_addr array
  */
   for (i=0; i < H5FD_MEM_NTYPES; i++) {
-       if(memb_addr[i] >= 1.) return ret_value;
+       if(memb_addr[i] >= 1.0f) return ret_value;
   }
 /*
  * Take care of names array
@@ -3971,7 +3952,7 @@ HD5packFstring(tmp, _fcdtocp(memb_name), (size_t)(c_lenmax*H5FD_MEM_NTYPES));
        memb_map[i] = (int_f)c_memb_map[i];
        memb_fapl[i] = (hid_t_f)c_memb_fapl[i];
        if(c_memb_addr[i] == HADDR_UNDEF) memb_addr[i] = -1;
-       else memb_addr[i] = (real_f) ((long)c_memb_addr[i]/HADDR_MAX);
+       else memb_addr[i] = (real_f) (c_memb_addr[i]/HADDR_MAX);
   }
   *flag = (int_f)relax;
   *maxlen_out = (int_f)length;
@@ -4104,7 +4085,7 @@ nh5pget_filter_by_id_c(hid_t_f *prp_id, int_f* filter_id, int_f* flags, size_t_f
      if(NULL == (c_name = (char *)HDmalloc((size_t)*namelen + 1)))
          goto DONE;
 
-     if(NULL == (c_cd_values = (unsigned int *)HDmalloc(sizeof(unsigned int) * ((int)c_cd_nelmts_in))))
+     if(NULL == (c_cd_values = (unsigned int *)HDmalloc(sizeof(unsigned int) * c_cd_nelmts_in)))
          goto DONE;
 
      /*
@@ -4157,18 +4138,15 @@ nh5pmodify_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_
 /******/
 {
      int_f ret_value = -1;
-     hid_t c_prp_id;
+     hid_t c_prp_id = (hid_t)*prp_id;
      herr_t ret;
-     size_t c_cd_nelmts;
-     unsigned int c_flags;
-     H5Z_filter_t c_filter;
+     size_t c_cd_nelmts = (size_t)*cd_nelmts;
+     unsigned int c_flags = (unsigned)*flags;
+     H5Z_filter_t c_filter = (H5Z_filter_t)*filter;
      unsigned int * c_cd_values;
      unsigned i;
 
-     c_filter = (H5Z_filter_t)*filter;
-     c_flags = (unsigned)*flags;
-     c_cd_nelmts = (size_t)*cd_nelmts;
-     c_cd_values = (unsigned int *)HDmalloc(sizeof(unsigned int) * ((int)c_cd_nelmts));
+     c_cd_values = (unsigned int *)HDmalloc(sizeof(unsigned int) * c_cd_nelmts);
      if (!c_cd_values) return ret_value;
      for (i = 0; i < c_cd_nelmts; i++)
           c_cd_values[i] = (unsigned int)cd_values[i];
@@ -4176,7 +4154,6 @@ nh5pmodify_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_
      /*
       * Call H5Pmodify_filter function.
       */
-     c_prp_id = (hid_t)*prp_id;
      ret = H5Pmodify_filter(c_prp_id, c_filter, c_flags, c_cd_nelmts,c_cd_values );
 
      if (ret < 0) goto DONE;
@@ -4905,12 +4882,10 @@ nh5pget_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_l
 /******/
 {
     char *c_expression = NULL;          /* Buffer to hold C string */
-    size_t c_expression_len;
+    size_t c_expression_len = (size_t)*expression_len + 1;
     ssize_t ret;
     int_f ret_value = 0;
 
-    c_expression_len = (size_t)*expression_len + 1;
-
     /*
      * Allocate memory to store the expression.
      */
@@ -4928,7 +4903,7 @@ nh5pget_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_l
        HGOTO_DONE(FAIL)
 
     /* or strlen ? */
-    HD5packFstring(c_expression, _fcdtocp(expression), c_expression_len - 1);
+    HD5packFstring(c_expression, _fcdtocp(expression), (size_t)*expression_len);
 
     *size = (size_t_f)ret;
 
@@ -5571,3 +5546,73 @@ nh5pget_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, size_t_f *rdcc_nb
   ret_value = 0;
   return ret_value;
 }
+
+/*----------------------------------------------------------------------------
+ * Name:        h5pset_file_image_c
+ * Purpose:     Calls H5Pset_file_image
+ *
+ * Inputs:
+ *  fapl_id - File access property list identifier
+ *  buf_ptr - Pointer to the initial file image, 
+ *            or NULL if no initial file image is desired
+ *  buf_len - Size of the supplied buffer, or 0 (zero) if no initial image is desired
+ *
+ * Returns:     0 on success, -1 on failure
+ * Programmer:  M. Scot Breitenfeld
+ *              February 19, 2012
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_file_image_c(hid_t_f *fapl_id, void *buf_ptr, size_t_f *buf_len)
+{
+  int ret_value = -1;
+  /*
+   * Call H5Pset_file_image function.
+   */
+  if( (H5Pset_file_image((hid_t)*fapl_id, buf_ptr, (size_t)*buf_len)) <0 )
+    return ret_value; /* error occurred */
+
+  ret_value = 0;
+  return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name:        h5pget_file_image_c
+ * Purpose:     Calls H5Pget_file_image
+ *
+ * Inputs:
+ *  fapl_id - File access property list identifier
+ * Outputs:
+ *  buf_ptr - Pointer to the initial file image, 
+ *            or NULL if no initial file image is desired
+ *  buf_len - Size of the supplied buffer, or 0 (zero) if no initial image is desired
+ *
+ * Returns:     0 on success, -1 on failure
+ * Programmer:  M. Scot Breitenfeld
+ *              February 19, 2012
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pget_file_image_c(hid_t_f *fapl_id, void **buf_ptr, size_t_f *buf_len_ptr)
+{
+  int ret_value = -1;
+  size_t c_buf_len_ptr;
+  void *c_buf_ptr = NULL;
+
+  c_buf_len_ptr = (size_t)*buf_len_ptr;
+
+  /*
+   * Call H5Pget_file_image function.
+   */
+  if( (H5Pget_file_image((hid_t)*fapl_id, (void **)&c_buf_ptr, &c_buf_len_ptr)) <0 )
+    return ret_value; /* error occurred */
+
+  HDmemcpy((void *)*buf_ptr, (void *)c_buf_ptr, c_buf_len_ptr);
+
+  *buf_len_ptr=(size_t_f)c_buf_len_ptr;
+
+  ret_value = 0;
+  if(c_buf_ptr) HDfree(c_buf_ptr);
+
+  return ret_value;
+}
diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90
index a3c9a60..0d85252 100644
--- a/fortran/src/H5Pff.f90
+++ b/fortran/src/H5Pff.f90
@@ -246,7 +246,7 @@ CONTAINS
 !		   H5P_ROOT_F
 !		   H5P_FILE_CREATE_F
 !		   H5P_FILE_ACCESS_F
-!		   H5PE_DATASET_CREATE_F
+!		   H5P_DATASET_CREATE_F
 !		   H5P_DATASET_XFER_F
 !		   H5P_FILE_MOUNT_F
 !  hdferr:	- error code		
@@ -271,7 +271,7 @@ CONTAINS
                                          !  H5P_ROOT_F
                                          !  H5P_FILE_CREATE_F
                                          !  H5P_FILE_ACCESS_F
-                                         !  H5PE_DATASET_CREATE_F 
+                                         !  H5P_DATASET_CREATE_F 
                                          !  H5P_DATASET_XFER_F
                                          !  H5P_FILE_MOUNT_F
     INTEGER, INTENT(OUT) :: hdferr       ! Error code
@@ -5977,7 +5977,7 @@ SUBROUTINE h5pset_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdfer
     INTEGER(HID_T), INTENT(IN) :: fapl_id       ! File access property list identifier
     INTEGER(SIZE_T), INTENT(OUT) :: alignment   ! Required memory alignment boundary!
     INTEGER(SIZE_T), INTENT(OUT) :: block_size  ! File system block size
-    INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size 	! Copy buffer size
+    INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size   ! Copy buffer size
     INTEGER, INTENT(OUT) :: hdferr              ! Error code
                                                 ! 0 on success and -1 on failure
 !***** 
diff --git a/fortran/src/H5Pff_F03.f90 b/fortran/src/H5Pff_F03.f90
index 7fb6ff9..806c308 100644
--- a/fortran/src/H5Pff_F03.f90
+++ b/fortran/src/H5Pff_F03.f90
@@ -1181,5 +1181,111 @@ CONTAINS
 
   END SUBROUTINE h5pcreate_class_f
 
+!
+!****s* H5P (F03)/h5pset_file_image_f_F03
+!
+! NAME
+!  h5pset_file_image_f
+!
+! PURPOSE
+!  Sets an initial file image in a memory buffer.
+!
+! Inputs:
+!  fapl_id - File access property list identifier
+!  buf_ptr - Pointer to the initial file image, 
+!            or C_NULL_PTR if no initial file image is desired
+!  buf_len - Size of the supplied buffer, or 0 (zero) if no initial image is desired
+!
+! Outputs:
+!  hdferr  - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+!  M. Scot Breitenfeld
+!  February 19, 2012
+!
+! Fortran2003 Interface:
+  SUBROUTINE h5pset_file_image_f(fapl_id, buf_ptr, buf_len, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T) , INTENT(IN)  :: fapl_id
+    TYPE(C_PTR)    , INTENT(IN)  :: buf_ptr
+    INTEGER(SIZE_T), INTENT(IN)  :: buf_len
+    INTEGER        , INTENT(OUT) :: hdferr
+!*****
+    INTERFACE
+       INTEGER FUNCTION h5pset_file_image_c(fapl_id, buf_ptr, buf_len)
+         USE iso_c_binding
+         USE H5GLOBAL
+         !DEC$IF DEFINED(HDCLOSEF90_WINDOWS)
+         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PSET_FILE_IMAGE_C'::h5pset_file_image_c
+         !DEC$ENDIF
+         INTEGER(HID_T), INTENT(IN) :: fapl_id
+         TYPE(C_PTR), VALUE :: buf_ptr
+         INTEGER(SIZE_T), INTENT(IN)  :: buf_len
+       END FUNCTION h5pset_file_image_c
+    END INTERFACE
+
+    hdferr = h5pset_file_image_c(fapl_id, buf_ptr, buf_len)
+
+  END SUBROUTINE h5pset_file_image_f
+!
+!****s* H5P (F03)/h5pget_file_image_f_F03
+!
+! NAME
+!  h5pget_file_image_f
+!
+! PURPOSE
+!  Retrieves a copy of the file image designated as the initial content and structure of a file. 
+!
+! Inputs:
+!  fapl_id     - File access property list identifier.
+!
+! Outputs:
+!  buf_ptr     - Will hold either a C_NULL_PTR or a scalar of type
+!                c_loc. If buf_ptr is not C_NULL_PTR, on successful
+!                return, buf_ptr shall contain a C pointer to a copy
+!                of the initial image provided in the last call to
+!                H5Pset_file_image_f for the supplied fapl_id, or
+!                buf_ptr shall contain a C_NULL_PTR if there is no
+!                initial image set.
+!
+!  buf_len_ptr - Contains the value of the buffer parameter for
+!                the initial image in the supplied fapl_id. The value
+!                will be 0 if no initial image is set.
+!
+!
+!  hdferr      - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+!  M. Scot Breitenfeld
+!  February 19, 2012
+!
+! Fortran2003 Interface:
+  SUBROUTINE h5pget_file_image_f(fapl_id, buf_ptr, buf_len_ptr, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T) , INTENT(IN)                :: fapl_id
+    TYPE(C_PTR)    , INTENT(OUT), DIMENSION(*) :: buf_ptr
+    INTEGER(SIZE_T), INTENT(OUT)               :: buf_len_ptr
+    INTEGER        , INTENT(OUT)               :: hdferr
+    
+!*****
+    INTERFACE
+       INTEGER FUNCTION h5pget_file_image_c(fapl_id, buf_ptr, buf_len_ptr)
+         USE iso_c_binding
+         USE H5GLOBAL
+         !DEC$IF DEFINED(HDCLOSEF90_WINDOWS)
+         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5PGET_FILE_IMAGE_C'::h5pget_file_image_c
+         !DEC$ENDIF
+         INTEGER(HID_T), INTENT(IN) :: fapl_id
+         TYPE(C_PTR), DIMENSION(*), INTENT(OUT)  :: buf_ptr
+         INTEGER(SIZE_T), INTENT(OUT)  :: buf_len_ptr
+       END FUNCTION h5pget_file_image_c
+    END INTERFACE
+
+    hdferr = h5pget_file_image_c(fapl_id, buf_ptr, buf_len_ptr)
+
+  END SUBROUTINE h5pget_file_image_f
+
 END MODULE H5P_PROVISIONAL
 
diff --git a/fortran/src/H5Rff_F03.f90 b/fortran/src/H5Rff_F03.f90
index 7a9b080..e0ffa0a 100644
--- a/fortran/src/H5Rff_F03.f90
+++ b/fortran/src/H5Rff_F03.f90
@@ -238,7 +238,6 @@ CONTAINS
     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 )
 
@@ -441,7 +440,6 @@ CONTAINS
     INTEGER(HID_T), INTENT(OUT) :: ref_obj_id     ! Object identifier
     INTEGER, INTENT(OUT) :: hdferr                ! Error code
 !*****
-    INTEGER(HADDR_T) :: ref_f          ! Local buffer to pass reference
     TYPE(C_PTR) :: f_ptr
 
     f_ptr = C_LOC(ref)
@@ -567,7 +565,6 @@ CONTAINS
     CHARACTER(LEN=*), INTENT(OUT) :: name
     INTEGER, INTENT(OUT) :: hdferr
 !*****
-    INTEGER(HADDR_T) :: ref_f  ! Local buffer to pass reference
 
     INTEGER(SIZE_T) :: size_default
     INTEGER(SIZE_T) :: name_len
@@ -615,7 +612,6 @@ CONTAINS
     CHARACTER(LEN=*), INTENT(OUT) :: name
     INTEGER, INTENT(OUT) :: hdferr
 !*****
-    INTEGER :: ref_f(REF_REG_BUF_LEN)      ! Local buffer to pass reference
     INTEGER(SIZE_T) :: size_default
     INTEGER(SIZE_T) :: name_len
     TYPE(C_PTR) :: f_ptr
diff --git a/fortran/src/H5Sf.c b/fortran/src/H5Sf.c
index 2cfb1eb..8e17026 100644
--- a/fortran/src/H5Sf.c
+++ b/fortran/src/H5Sf.c
@@ -298,7 +298,7 @@ nh5sget_select_hyper_blocklist_c( hid_t_f *space_id ,hsize_t_f * startblock,
   if (rank < 0 ) return ret_value;
   c_startblock = (hsize_t)*startblock;
 
-  c_buf = (hsize_t*)malloc(sizeof(hsize_t)*(size_t)(c_num_blocks*2*rank));
+  c_buf = (hsize_t*)HDmalloc(sizeof(hsize_t)*(size_t)(c_num_blocks*2*rank));
   if (!c_buf) return ret_value;
 
   ret_value = H5Sget_select_hyper_blocklist(c_space_id, c_startblock,
@@ -425,7 +425,7 @@ nh5sget_select_elem_pointlist_c( hid_t_f *space_id ,hsize_t_f * startpoint,
   if (rank < 0 ) return ret_value;
 
   c_startpoint = (hsize_t)*startpoint;
-  c_buf = (hsize_t*)malloc(sizeof(hsize_t)*(size_t)(c_num_points*rank));
+  c_buf = (hsize_t*)HDmalloc(sizeof(hsize_t)*(size_t)(c_num_points*rank));
   if (!c_buf) return ret_value;
   ret_value = H5Sget_select_elem_pointlist(c_space_id, c_startpoint,
                                             c_num_points, c_buf);
@@ -575,7 +575,7 @@ nh5sget_simple_extent_npoints_c ( hid_t_f *space_id , hsize_t_f *npoints )
 {
   int ret_value = 0;
   hid_t c_space_id;
-  hsize_t c_npoints;
+  hssize_t c_npoints;
 
   c_space_id = *space_id;
   c_npoints = H5Sget_simple_extent_npoints(c_space_id);
diff --git a/fortran/src/H5Sff.f90 b/fortran/src/H5Sff.f90
index 1bae584..c493d46 100644
--- a/fortran/src/H5Sff.f90
+++ b/fortran/src/H5Sff.f90
@@ -1323,8 +1323,8 @@ CONTAINS
               INTEGER, INTENT(IN) :: operator
               INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start
               INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count
-              INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: stride
-              INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: block
+              INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: stride
+              INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: block
               END FUNCTION h5sselect_hyperslab_c
             END INTERFACE
 
diff --git a/fortran/src/H5Tf.c b/fortran/src/H5Tf.c
index c8ff6e0..df581ee 100644
--- a/fortran/src/H5Tf.c
+++ b/fortran/src/H5Tf.c
@@ -1280,7 +1280,7 @@ nh5tget_member_name_c ( hid_t_f *type_id ,int_f* idx, _fcd member_name, int_f *n
 
   HD5packFstring(c_name, _fcdtocp(member_name), strlen(c_name));
   *namelen = (int_f)strlen(c_name);
-  HDfree(c_name);
+  H5free_memory(c_name);
   ret_value = 0;
   return ret_value;
 }
@@ -1986,7 +1986,7 @@ nh5tget_tag_c(hid_t_f* type_id, _fcd tag, size_t_f* tag_size, int_f* taglen)
 
   HD5packFstring(c_tag, _fcdtocp(tag), (size_t)*tag_size);
   *taglen = (int_f)HDstrlen(c_tag);
-  HDfree(c_tag);
+  H5free_memory(c_tag);
   ret_value = 0;
   return ret_value;
 }
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index 4c85df2..dcfcfc4 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -330,9 +330,10 @@ 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
+ *  h5d_flags       - H5D interface flags
+ *  h5d_size_flags  - H5D interface flags of type size_t
+ *  h5e_flags       - H5E interface flags
+ *  h5e_hid_flags   - H5E interface 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
@@ -360,12 +361,15 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
  *  Added Generic flags introduced in version 1.8
  *           MSB, January, 2008
  *  Added types in lines h5*_flags = ( )variable to match input
- *  Added E flags. 
+ *  Added E flags
  *           MSB, July 9, 2009
+ *  Added type h5d_flags of type size_t
+ *           MSB, Feb. 28, 2014
  * SOURCE
  */
 int_f
-nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags,
+nh5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, 
+		 int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags,
                  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,
@@ -376,6 +380,9 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int
 /*
  *  H5D flags
  */
+    h5d_size_flags[0] = (size_t_f)H5D_CHUNK_CACHE_NSLOTS_DEFAULT;
+    h5d_size_flags[1] = (size_t_f)H5D_CHUNK_CACHE_NBYTES_DEFAULT;
+
     h5d_flags[0] = (int_f)H5D_COMPACT;
     h5d_flags[1] = (int_f)H5D_CONTIGUOUS;
     h5d_flags[2] = (int_f)H5D_CHUNKED;
@@ -395,18 +402,18 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int
     h5d_flags[16] = (int_f)H5D_FILL_VALUE_UNDEFINED;
     h5d_flags[17] = (int_f)H5D_FILL_VALUE_DEFAULT;
     h5d_flags[18] = (int_f)H5D_FILL_VALUE_USER_DEFINED;
-    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;
+    h5d_flags[19] = (int_f)H5D_CHUNK_CACHE_W0_DEFAULT;
+    h5d_flags[20] = (int_f)H5D_MPIO_NO_COLLECTIVE;
+    h5d_flags[21] = (int_f)H5D_MPIO_CHUNK_INDEPENDENT;
+    h5d_flags[22] = (int_f)H5D_MPIO_CHUNK_COLLECTIVE;
+    h5d_flags[23] = (int_f)H5D_MPIO_CHUNK_MIXED;
+    h5d_flags[24] = (int_f)H5D_MPIO_CONTIGUOUS_COLLECTIVE;
+
 /*
  *  H5E flags
  */
     h5e_hid_flags[0] = (hid_t_f)H5E_DEFAULT;
+
     h5e_flags[0] = (int_f)H5E_MAJOR;
     h5e_flags[1] = (int_f)H5E_MINOR;
     h5e_flags[2] = (int_f)H5E_WALK_UPWARD;
diff --git a/fortran/src/H5_ff.f90 b/fortran/src/H5_ff.f90
index 510beaa..1aa883e 100644
--- a/fortran/src/H5_ff.f90
+++ b/fortran/src/H5_ff.f90
@@ -87,6 +87,7 @@ CONTAINS
     END INTERFACE
     INTERFACE
        INTEGER FUNCTION h5init_flags_c(i_H5D_flags, &
+            i_H5D_size_flags,&
             i_H5E_flags, &
             i_H5E_hid_flags, &
             i_H5F_flags, &
@@ -106,6 +107,7 @@ CONTAINS
             i_H5generic_flags)
          USE H5GLOBAL
          INTEGER i_H5D_flags(H5D_FLAGS_LEN)
+         INTEGER(SIZE_T) i_H5D_size_flags(H5D_SIZE_FLAGS_LEN)
          INTEGER i_H5E_flags(H5E_FLAGS_LEN)
          INTEGER(HID_T) i_H5E_hid_flags(H5E_HID_FLAGS_LEN)
          INTEGER i_H5F_flags(H5F_FLAGS_LEN)
@@ -139,6 +141,7 @@ CONTAINS
     END INTERFACE
     error_1 = h5init_types_c(predef_types, floating_types, integer_types)
     error_2 = h5init_flags_c(H5D_flags, &
+         H5D_size_flags, &
          H5E_flags, &
          H5E_hid_flags, &
          H5F_flags, &
diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90
index a6168d5..da1837a 100644
--- a/fortran/src/H5f90global.f90
+++ b/fortran/src/H5f90global.f90
@@ -76,7 +76,7 @@ MODULE H5GLOBAL
   ! integer data types are added
   INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 27
 
-  INTEGER(HID_T) H5T_NATIVE_INTEGER_1, &
+  INTEGER(HID_T) :: H5T_NATIVE_INTEGER_1, &
        H5T_NATIVE_INTEGER_2, &
        H5T_NATIVE_INTEGER_4, &
        H5T_NATIVE_INTEGER_8, &
@@ -111,7 +111,7 @@ MODULE H5GLOBAL
 !       continuation lines to 39; the F03/F08 standard limits the number 
 !       to 255 lines.
 
-  INTEGER(HID_T) H5T_STD_U32LE,   &
+  INTEGER(HID_T) :: H5T_STD_U32LE,   &
        H5T_STD_U64BE,   &
        H5T_STD_U64LE,   &
        H5T_STRING,      &
@@ -235,7 +235,7 @@ MODULE H5GLOBAL
   ! H5F flags declaration
   !
   INTEGER, PARAMETER :: H5F_FLAGS_LEN = 19
-  INTEGER H5F_flags(H5F_FLAGS_LEN)
+  INTEGER :: H5F_flags(H5F_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5F_FLAGS/
   !DEC$endif
@@ -284,7 +284,7 @@ MODULE H5GLOBAL
   ! H5generic flags declaration
   !
   INTEGER, PARAMETER :: H5generic_FLAGS_LEN = 9
-  INTEGER H5generic_flags(H5generic_FLAGS_LEN)
+  INTEGER :: H5generic_flags(H5generic_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5generic_FLAGS/
   !DEC$endif
@@ -315,7 +315,7 @@ MODULE H5GLOBAL
   ! H5G flags declaration
   !
   INTEGER, PARAMETER :: H5G_FLAGS_LEN = 12
-  INTEGER H5G_flags(H5G_FLAGS_LEN)
+  INTEGER :: H5G_flags(H5G_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5G_FLAGS/
   !DEC$endif
@@ -354,12 +354,16 @@ MODULE H5GLOBAL
   ! H5D flags declaration
   !
 
-  INTEGER, PARAMETER :: H5D_FLAGS_LEN = 27
-  INTEGER H5D_flags(H5D_FLAGS_LEN)
+  INTEGER, PARAMETER :: H5D_FLAGS_LEN = 25
+  INTEGER :: H5D_flags(H5D_FLAGS_LEN)
+  INTEGER, PARAMETER :: H5D_SIZE_FLAGS_LEN = 2
+  INTEGER(SIZE_T) :: H5D_size_flags(H5D_SIZE_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5D_FLAGS/
+  !DEC$ATTRIBUTES DLLEXPORT :: /H5D_SIZE_FLAGS/
   !DEC$endif
   COMMON /H5D_FLAGS/ H5D_flags
+  COMMON /H5D_SIZE_FLAGS/ H5D_size_flags
 
   INTEGER :: H5D_COMPACT_F
   INTEGER :: H5D_CONTIGUOUS_F
@@ -390,8 +394,8 @@ MODULE H5GLOBAL
 ! 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(SIZE_T) :: H5D_CHUNK_CACHE_NSLOTS_DFLT_F
+  INTEGER(SIZE_T) :: 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
@@ -423,22 +427,23 @@ MODULE H5GLOBAL
   EQUIVALENCE(H5D_flags(18), H5D_FILL_VALUE_DEFAULT_F)
   EQUIVALENCE(H5D_flags(19), H5D_FILL_VALUE_USER_DEFINED_F)
 
-  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)
+  EQUIVALENCE(H5D_flags(20), H5D_CHUNK_CACHE_W0_DFLT_F)
+  EQUIVALENCE(H5D_flags(21), H5D_MPIO_NO_COLLECTIVE_F)
+  EQUIVALENCE(H5D_flags(22), H5D_MPIO_CHUNK_INDEPENDENT_F)
+  EQUIVALENCE(H5D_flags(23), H5D_MPIO_CHUNK_COLLECTIVE_F)
+  EQUIVALENCE(H5D_flags(24), H5D_MPIO_CHUNK_MIXED_F)
+  EQUIVALENCE(H5D_flags(25), H5D_MPIO_CONTIG_COLLECTIVE_F)
+
+  EQUIVALENCE(H5D_size_flags(1), H5D_CHUNK_CACHE_NSLOTS_DFLT_F)
+  EQUIVALENCE(H5D_size_flags(2), H5D_CHUNK_CACHE_NBYTES_DFLT_F)
 
   !
   ! H5E flags declaration
   !
   INTEGER, PARAMETER :: H5E_FLAGS_LEN = 4
-  INTEGER H5E_flags(H5E_FLAGS_LEN)
+  INTEGER :: H5E_flags(H5E_FLAGS_LEN)
   INTEGER, PARAMETER :: H5E_HID_FLAGS_LEN = 1
-  INTEGER(HID_T) H5E_hid_flags(H5E_HID_FLAGS_LEN)
+  INTEGER(HID_T) :: H5E_hid_flags(H5E_HID_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5E_FLAGS/
   !DEC$ATTRIBUTES DLLEXPORT :: /H5E_HID_FLAGS/
@@ -462,7 +467,7 @@ MODULE H5GLOBAL
   ! H5FD flags declaration
   !
   INTEGER, PARAMETER :: H5FD_FLAGS_LEN = 11
-  INTEGER H5FD_flags(H5FD_FLAGS_LEN)
+  INTEGER :: H5FD_flags(H5FD_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5FD_FLAGS/
   !DEC$endif
@@ -495,7 +500,7 @@ MODULE H5GLOBAL
   ! H5FD file drivers flags declaration
   !
   INTEGER, PARAMETER :: H5FD_HID_FLAGS_LEN = 7
-  INTEGER(HID_T) H5FD_hid_flags(H5FD_HID_FLAGS_LEN)
+  INTEGER(HID_T) :: H5FD_hid_flags(H5FD_HID_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5FD_HID_FLAGS/
   !DEC$endif
@@ -521,7 +526,7 @@ MODULE H5GLOBAL
   ! H5I flags declaration
   !
   INTEGER, PARAMETER :: H5I_FLAGS_LEN = 7
-  INTEGER H5I_flags(H5I_FLAGS_LEN)
+  INTEGER :: H5I_flags(H5I_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5I_FLAGS/
   !DEC$endif
@@ -671,10 +676,10 @@ MODULE H5GLOBAL
   EQUIVALENCE(H5P_flags(18), H5P_LINK_ACCESS_F)
 
   !
-  ! H5P intgere flags declaration
+  ! H5P integers flags declaration
   !
   INTEGER, PARAMETER :: H5P_FLAGS_INT_LEN = 2
-  INTEGER  H5P_flags_int(H5P_FLAGS_INT_LEN)
+  INTEGER :: H5P_flags_int(H5P_FLAGS_INT_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5P_FLAGS_INT/
   !DEC$endif
@@ -687,7 +692,7 @@ MODULE H5GLOBAL
   ! H5R flags declaration
   !
   INTEGER, PARAMETER :: H5R_FLAGS_LEN = 2
-  INTEGER H5R_flags(H5R_FLAGS_LEN)
+  INTEGER :: H5R_flags(H5R_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5R_FLAGS/
   !DEC$endif
@@ -703,7 +708,7 @@ MODULE H5GLOBAL
   ! H5S flags declaration
   !
   INTEGER, PARAMETER :: H5S_FLAGS_LEN = 19
-  INTEGER H5S_flags(H5S_FLAGS_LEN)
+  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)
@@ -766,7 +771,7 @@ MODULE H5GLOBAL
   ! H5T flags declaration
   !
   INTEGER, PARAMETER :: H5T_FLAGS_LEN = 35
-  INTEGER H5T_flags(H5T_FLAGS_LEN)
+  INTEGER :: H5T_flags(H5T_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5T_FLAGS/
   !DEC$endif
@@ -847,7 +852,7 @@ MODULE H5GLOBAL
   ! H5Z flags declaration
   !
   INTEGER, PARAMETER :: H5Z_FLAGS_LEN = 20
-  INTEGER H5Z_flags(H5Z_FLAGS_LEN)
+  INTEGER :: H5Z_flags(H5Z_FLAGS_LEN)
   !DEC$if defined(BUILD_HDF5_DLL)
   !DEC$ATTRIBUTES DLLEXPORT :: /H5Z_FLAGS/
   !DEC$endif
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index 4b02b6c..a0a4f64 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -863,11 +863,13 @@ H5_FCDLL int_f nh5oget_comment_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *
 #define nh5pget_preserve_c  H5_FC_FUNC_(h5pget_preserve_c, H5PGET_PRESERVE_C)
 #define nh5pset_chunk_c    H5_FC_FUNC_(h5pset_chunk_c, H5PSET_CHUNK_C)
 #define nh5pget_chunk_c    H5_FC_FUNC_(h5pget_chunk_c, H5PGET_CHUNK_C)
+#define nh5pset_file_image_c H5_FC_FUNC_(h5pset_file_image_c,H5PSET_FILE_IMAGE_C)
 #define nh5pset_fill_valuec_c        H5_FC_FUNC_(h5pset_fill_valuec_c, H5PSET_FILL_VALUEC_C)
 #define nh5pset_fill_value_c         H5_FC_FUNC_(h5pset_fill_value_c, H5PSET_FILL_VALUE_C)
 #define nh5pset_fill_value_integer_c H5_FC_FUNC_(h5pset_fill_value_integer_c, H5PSET_FILL_VALUE_INTEGER_C)
 #define nh5pset_fill_value_real_c    H5_FC_FUNC_(h5pset_fill_value_real_c, H5PSET_FILL_VALUE_REAL_C)
 #define nh5pset_fill_value_double_c  H5_FC_FUNC_(h5pset_fill_value_double_c, H5PSET_FILL_VALUE_DOUBLE_C)
+#define nh5pget_file_image_c H5_FC_FUNC_(h5pget_file_image_c,H5PGET_FILE_IMAGE_C)
 #define nh5pget_fill_valuec_c        H5_FC_FUNC_(h5pget_fill_valuec_c, H5PGET_FILL_VALUEC_C)
 #define nh5pget_fill_value_c         H5_FC_FUNC_(h5pget_fill_value_c, H5PGET_FILL_VALUE_C)
 #define nh5pget_fill_value_integer_c H5_FC_FUNC_(h5pget_fill_value_integer_c, H5PGET_FILL_VALUE_INTEGER_C)
@@ -914,8 +916,6 @@ H5_FCDLL int_f nh5oget_comment_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *
 #define nh5pset_btree_ratios_c         H5_FC_FUNC_(h5pset_btree_ratios_c, H5PSET_BTREE_RATIOS_C)
 #define nh5pset_fapl_mpio_c         H5_FC_FUNC_(h5pset_fapl_mpio_c, H5PSET_FAPL_MPIO_C)
 #define nh5pget_fapl_mpio_c         H5_FC_FUNC_(h5pget_fapl_mpio_c, H5PGET_FAPL_MPIO_C)
-#define nh5pset_fapl_mpiposix_c     H5_FC_FUNC_(h5pset_fapl_mpiposix_c, H5PSET_FAPL_MPIPOSIX_C)
-#define nh5pget_fapl_mpiposix_c     H5_FC_FUNC_(h5pget_fapl_mpiposix_c, H5PGET_FAPL_MPIPOSIX_C)
 #define nh5pset_dxpl_mpio_c        H5_FC_FUNC_(h5pset_dxpl_mpio_c, H5PSET_DXPL_MPIO_C)
 #define nh5pget_dxpl_mpio_c        H5_FC_FUNC_(h5pget_dxpl_mpio_c, H5PGET_DXPL_MPIO_C)
 #define nh5pget_fclose_degree_c    H5_FC_FUNC_(h5pget_fclose_degree_c, H5PGET_FCLOSE_DEGREE_C)
@@ -1019,11 +1019,13 @@ H5_FCDLL int_f nh5pget_class_c ( hid_t_f *prp_id , int_f *classtype);
 H5_FCDLL int_f nh5pset_deflate_c ( hid_t_f *prp_id , int_f *level);
 H5_FCDLL int_f nh5pset_chunk_c ( hid_t_f *prp_id, int_f *rank, hsize_t_f *dims );
 H5_FCDLL int_f nh5pget_chunk_c ( hid_t_f *prp_id, int_f *max_rank, hsize_t_f *dims );
+H5_FCDLL int_f nh5pset_file_image_c (hid_t_f *fapl_id, void *buf_ptr, size_t_f *buf_len);
 H5_FCDLL int_f nh5pset_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue);
 H5_FCDLL int_f nh5pset_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue);
 H5_FCDLL int_f nh5pset_fill_value_integer_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue);
 H5_FCDLL int_f nh5pset_fill_value_real_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue);
 H5_FCDLL int_f nh5pset_fill_value_double_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue);
+H5_FCDLL int_f nh5pget_file_image_c (hid_t_f *fapl_id, void **buf_ptr, size_t_f *buf_len);
 H5_FCDLL int_f nh5pget_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue);
 H5_FCDLL int_f nh5pget_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue);
 H5_FCDLL int_f nh5pget_fill_value_integer_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue);
@@ -1072,8 +1074,6 @@ H5_FCDLL int_f nh5pget_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* mid
 H5_FCDLL int_f nh5pset_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right);
 H5_FCDLL int_f nh5pget_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info);
 H5_FCDLL int_f nh5pset_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info);
-H5_FCDLL int_f nh5pget_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag);
-H5_FCDLL int_f nh5pset_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag);
 H5_FCDLL int_f nh5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode);
 H5_FCDLL int_f nh5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode);
 H5_FCDLL int_f nh5pset_fclose_degree_c(hid_t_f *fapl, int_f *degree);
@@ -1260,9 +1260,9 @@ H5_FCDLL int_f nprocess_buffer(hid_t_f *estack_id,void **buffer);
 
 H5_FCDLL int_f nh5open_c(void);
 H5_FCDLL int_f nh5close_c(void);
-H5_FCDLL int_f nh5init_types_c(hid_t_f *types, hid_t_f * floatingtypes, hid_t_f * integertypes);
-H5_FCDLL int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f * floatingtypes, int_f * floatinglen, hid_t_f * integertypes,  int_f * integerlen);
-H5_FCDLL int_f nh5init_flags_c(int_f *h5d_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags,
+H5_FCDLL int_f nh5init_types_c(hid_t_f *types, hid_t_f *floatingtypes, hid_t_f *integertypes);
+H5_FCDLL int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f *floatingtypes, int_f *floatinglen, hid_t_f *integertypes, int_f *integerlen);
+H5_FCDLL int_f nh5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags,
 			       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,
diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c
index eb30775..3fa0efc 100644
--- a/fortran/src/H5match_types.c
+++ b/fortran/src/H5match_types.c
@@ -51,8 +51,8 @@ FILE * fort_header;
 void writeTypedef(const char* c_type, unsigned int size);
 void writeFloatTypedef(const char* c_type, unsigned int size);
 void writeTypedefDefault(unsigned int size);
-void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind);
-void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind);
+void writeToFiles(const char* fortran_type, const char* c_type, int size, unsigned int kind);
+void writeFloatToFiles(const char* fortran_type, const char* c_type, int size, unsigned int kind);
 
 static void
 initCfile(void)
@@ -141,26 +141,26 @@ void writeTypedefDefault(unsigned int size)
 }
 
 /* Create matching Fortran and C types by writing to both files */
-void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind)
+void writeToFiles(const char* fortran_type, const char* c_type, int size, unsigned int kind)
 {
   fprintf(fort_header, "        INTEGER, PARAMETER :: %s = %u\n", fortran_type, kind);
-  fprintf(c_header, "typedef c_int_%u %s;\n", size, c_type);
+  fprintf(c_header, "typedef c_int_%d %s;\n", size, c_type);
 }
 
 /* Create matching Fortran and C floating types by writing to both files */
-void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind)
+void writeFloatToFiles(const char* fortran_type, const char* c_type, int size, unsigned int kind)
 {
   fprintf(fort_header, "        INTEGER, PARAMETER :: %s = %u\n", fortran_type, kind);
 
-  fprintf(c_header, "typedef c_float_%u %s;\n", size, c_type);
+  fprintf(c_header, "typedef c_float_%d %s;\n", size, c_type);
 }
 
 int main(void)
 {
   int FoundIntSize[4];
-  int FoundIntSizeKind[4];
+  unsigned FoundIntSizeKind[4];
   int FoundRealSize[3];
-  int FoundRealSizeKind[3];
+  unsigned FoundRealSizeKind[3];
   int i,j,flag;
   char chrA[20],chrB[20];
   int H5_C_HAS_REAL_NATIVE_16;
@@ -428,9 +428,7 @@ int main(void)
 		}
 	    }
 	  if(flag == 0) /* No higher or lower one found, indicating an error */
-	    {
 	     return -1;
-	    }
 	}
     }
 
@@ -496,9 +494,8 @@ int main(void)
 		    {
 		      sprintf(chrA, "Fortran_REAL_%d", (-1)*FoundRealSize[i]);
 		      sprintf(chrB, "real_%d_f", (-1)*FoundRealSize[i]);
-		      if(FoundRealSize[j]>4) {
+		      if(FoundRealSize[j]>4)
 			writeFloatToFiles(chrA, chrB,  FoundRealSize[j], FoundRealSizeKind[j]);
-		      }
 		     /*  else { */
 /* 			writeFloatToFiles(chrA, chrB, FoundRealSize[j]); */
 /* 		      } */
@@ -508,9 +505,7 @@ int main(void)
 		}
 	    }
 	  if(flag == 0) /* No higher or lower one found, indicating an error */
-	    {
 	     return -1;
-	    }
 	}
     }
 
diff --git a/fortran/src/H5test_kind_SIZEOF.f90 b/fortran/src/H5test_kind_SIZEOF.f90
index 867ec1e..7a58b0e 100644
--- a/fortran/src/H5test_kind_SIZEOF.f90
+++ b/fortran/src/H5test_kind_SIZEOF.f90
@@ -49,6 +49,10 @@ PROGRAM test_kind
   INTEGER :: ji, jr, jd
   last = -1
   ii = 0
+
+  ikind_numbers = 0
+  rkind_numbers = 0
+
   DO i = 1,100
      j = SELECTED_INT_KIND(i)
      IF(j .NE. last) THEN
@@ -114,30 +118,20 @@ WRITE(*,'(40(A,/))') &
 '!',&
 '!*****'
 
-!  Generate a program
-  WRITE(*,*) "PROGRAM int_kind"
-  WRITE(*,*) "WRITE(*,*) "" /*generating header file*/ """
-  ji = 0
-  WRITE(*, "("" CALL i"", i2.2,""()"")") ji
-  jr = 0
-  WRITE(*, "("" CALL r"", i2.2,""()"")") jr
-  jd = 0
-  WRITE(*, "("" CALL d"", i2.2,""()"")") jd
-  DO i = 1, ii
-     j = ikind_numbers(i)
-     WRITE(*, "("" CALL i"", i2.2,""()"")") j
-  ENDDO
-  DO i = 1, ir
-     j = rkind_numbers(i)
-     WRITE(*, "("" CALL r"", i2.2,""()"")") j
-  ENDDO
-  WRITE(*,*) "END PROGRAM int_kind"
+! GENERATE A PROGRAM
+!
+! (a) Generate the module
+
+  WRITE(*,*) "MODULE H5test_kind_SIZEOF_mod"
+  WRITE(*,*) "USE ISO_C_BINDING"
+  WRITE(*,*) "IMPLICIT NONE"
+  WRITE(*,*) "CONTAINS"
   j = 0
   ji = KIND(1)
   WRITE(*, "("" SUBROUTINE i"", i2.2,""()"")") j
   WRITE(*,*)"   IMPLICIT NONE"
   WRITE(*,*)"   INTEGER :: a"
-  WRITE(*,*)"   INTEGER :: a_size"
+  WRITE(*,*)"   INTEGER(C_SIZE_T) :: a_size"
   WRITE(*,*)"   CHARACTER(LEN=2) :: ichr2, jchr2"
   WRITE(*,*)"   a_size = SIZEOF(a)"
   WRITE(*,*)"   WRITE(ichr2,'(I2)') a_size"
@@ -151,7 +145,7 @@ WRITE(*,'(40(A,/))') &
   WRITE(*, "("" SUBROUTINE r"", i2.2,""()"")") jr
   WRITE(*,*)"   IMPLICIT NONE"
   WRITE(*,*)"   REAL :: a"
-  WRITE(*,*)"   INTEGER :: a_size"
+  WRITE(*,*)"   INTEGER(C_SIZE_T) :: a_size"
   WRITE(*,*)"   CHARACTER(LEN=2) :: ichr2, jchr2"
   WRITE(*,*)"   a_size = SIZEOF(a)"
   WRITE(*,*)"   WRITE(ichr2,'(I2)') a_size"
@@ -165,7 +159,7 @@ WRITE(*,'(40(A,/))') &
   WRITE(*, "("" SUBROUTINE d"", i2.2,""()"")") jd
   WRITE(*,*)"   IMPLICIT NONE"
   WRITE(*,*)"   DOUBLE PRECISION :: a"
-  WRITE(*,*)"   INTEGER :: a_size"
+  WRITE(*,*)"   INTEGER(C_SIZE_T) :: a_size"
   WRITE(*,*)"   CHARACTER(LEN=2) :: ichr2, jchr2"
   WRITE(*,*)"   a_size = SIZEOF(a)"
   WRITE(*,*)"   WRITE(ichr2,'(I2)') a_size"
@@ -179,7 +173,7 @@ WRITE(*,'(40(A,/))') &
      WRITE(*, "("" SUBROUTINE i"", i2.2,""()"")") j
      WRITE(*,*)"   IMPLICIT NONE"
      WRITE(*,'(A,I0,A)')"   INTEGER(KIND=",j,") :: a"
-     WRITE(*,*)"   INTEGER :: a_size"
+     WRITE(*,*)"   INTEGER(C_SIZE_T) :: a_size"
      WRITE(*,*)"   CHARACTER(LEN=2) :: ichr2, jchr2"
      WRITE(*,*)"   a_size = SIZEOF(a)"
      WRITE(*,*)"   WRITE(ichr2,'(I2)') a_size"
@@ -193,8 +187,8 @@ WRITE(*,'(40(A,/))') &
      j = rkind_numbers(i)
      WRITE(*, "("" SUBROUTINE r"", i2.2,""()"")") j
      WRITE(*,*)"   IMPLICIT NONE"
-     WRITE(*,'(A,I0,A)')"   REAL(KIND= ",j,") :: a"
-     WRITE(*,*)"   INTEGER :: a_size"
+     WRITE(*,'(A,I0,A)')"    REAL(KIND= ",j,") :: a"
+     WRITE(*,*)"   INTEGER(C_SIZE_T) :: a_size"
      WRITE(*,*)"   CHARACTER(LEN=2) :: ichr2, jchr2"
      WRITE(*,*)"   a_size = SIZEOF(a)"
      WRITE(*,*)"   WRITE(ichr2,'(I2)') a_size"
@@ -204,6 +198,30 @@ WRITE(*,'(40(A,/))') &
      WRITE(*,*)"   RETURN"
      WRITE(*,*)"END SUBROUTINE"
   ENDDO
+  WRITE(*,*) "END MODULE H5test_kind_SIZEOF_mod"
+  WRITE(*,*) ""
+
+  ! (b) generate the main program
+
+  WRITE(*,*) "PROGRAM H5test_kind_SIZEOF"
+  WRITE(*,*) "USE H5test_kind_SIZEOF_mod"
+  WRITE(*,*) "WRITE(*,*) "" /*generating header file*/ """
+  ji = 0
+  WRITE(*, "("" CALL i"", i2.2,""()"")") ji
+  jr = 0
+  WRITE(*, "("" CALL r"", i2.2,""()"")") jr
+  jd = 0
+  WRITE(*, "("" CALL d"", i2.2,""()"")") jd
+  DO i = 1, ii
+     j = ikind_numbers(i)
+     WRITE(*, "("" CALL i"", i2.2,""()"")") j
+  ENDDO
+  DO i = 1, ir
+     j = rkind_numbers(i)
+     WRITE(*, "("" CALL r"", i2.2,""()"")") j
+  ENDDO
+  WRITE(*,*) "END PROGRAM H5test_kind_SIZEOF"
+
 END PROGRAM test_kind
 
 
diff --git a/fortran/src/HDF5mpio.f90 b/fortran/src/HDF5mpio.f90
index ac4d2b1..b8fb645 100644
--- a/fortran/src/HDF5mpio.f90
+++ b/fortran/src/HDF5mpio.f90
@@ -28,6 +28,7 @@
 MODULE HDF5
   USE H5GLOBAL
   USE H5F
+  USE H5F_PROVISIONAL
   USE H5G
   USE H5E
   USE H5E_PROVISIONAL
diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am
index 12c38e2..4c7c1d9 100644
--- a/fortran/src/Makefile.am
+++ b/fortran/src/Makefile.am
@@ -23,7 +23,7 @@ include $(top_srcdir)/config/lt_vers.am
 
 # Include src directory in both Fortran and C flags (C compiler is used
 # for linking).
-INCLUDES=-I$(top_srcdir)/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src
 AM_FCFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/fortran/src
 
 AM_FCLIBS=$(LIBHDF5)
@@ -177,9 +177,9 @@ H5fortran_detect.f90: H5test_kind$(EXEEXT)
 # how to compile a fortran program given its sources.
 
 if FORTRAN_HAVE_SIZEOF
-  H5test_kind_SOURCES = $(srcdir)/H5test_kind_SIZEOF.f90
+  H5test_kind_SOURCES = H5test_kind_SIZEOF.f90
 else
-  H5test_kind_SOURCES = $(srcdir)/H5test_kind.f90
+  H5test_kind_SOURCES = H5test_kind.f90
 endif
 
 # Mark this directory as part of the Fortran API
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index aa666cd..c34bb1c 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,23 +33,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -68,12 +96,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/lt_vers.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(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
+	$(top_srcdir)/bin/test-driver README
 
 # Some Fortran compilers can't build shared libraries, so sometimes we
 # want to build a shared C library and a static Fortran library.  If so,
@@ -161,8 +189,7 @@ H5fortran_detect_LDADD = $(LDADD)
 H5match_types_SOURCES = H5match_types.c
 H5match_types_OBJECTS = H5match_types.$(OBJEXT)
 H5match_types_LDADD = $(LDADD)
-am__H5test_kind_SOURCES_DIST = $(srcdir)/H5test_kind.f90 \
-	$(srcdir)/H5test_kind_SIZEOF.f90
+am__H5test_kind_SOURCES_DIST = H5test_kind.f90 H5test_kind_SIZEOF.f90
 @FORTRAN_HAVE_SIZEOF_FALSE at am_H5test_kind_OBJECTS =  \
 @FORTRAN_HAVE_SIZEOF_FALSE@	H5test_kind.$(OBJEXT)
 @FORTRAN_HAVE_SIZEOF_TRUE at am_H5test_kind_OBJECTS =  \
@@ -228,12 +255,198 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -245,7 +458,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src directory in both Fortran and C flags (C compiler is used
+# for linking).
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ -I$(top_srcdir)/src \
@@ -306,7 +522,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -518,12 +733,8 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 8
-LT_VERS_REVISION = 1
+LT_VERS_REVISION = 2 
 LT_VERS_AGE = 0
-
-# Include src directory in both Fortran and C flags (C compiler is used
-# for linking).
-INCLUDES = -I$(top_srcdir)/src
 AM_FCLIBS = $(LIBHDF5)
 
 # This is our main target, the fortran library
@@ -588,11 +799,11 @@ BUILT_SOURCES = H5f90i_gen.h
 # Automake knows how to build fortran programs if we tell it the source
 # files.
 H5fortran_detect_SOURCES = H5fortran_detect.f90
- at FORTRAN_HAVE_SIZEOF_FALSE@H5test_kind_SOURCES = $(srcdir)/H5test_kind.f90
+ at FORTRAN_HAVE_SIZEOF_FALSE@H5test_kind_SOURCES = H5test_kind.f90
 
 # H5test_kind.f90 is included in the distribution, and Automake knows
 # how to compile a fortran program given its sources.
- at FORTRAN_HAVE_SIZEOF_TRUE@H5test_kind_SOURCES = $(srcdir)/H5test_kind_SIZEOF.f90
+ at FORTRAN_HAVE_SIZEOF_TRUE@H5test_kind_SOURCES = H5test_kind_SIZEOF.f90
 
 # Mark this directory as part of the Fortran API
 FORTRAN_API = yes
@@ -620,7 +831,7 @@ all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .f90 .lo .o .obj
+.SUFFIXES: .c .f90 .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -654,6 +865,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 h5fc: $(top_builddir)/config.status $(srcdir)/h5fc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -688,6 +900,7 @@ clean-libLTLIBRARIES:
 	  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)
 
@@ -699,12 +912,15 @@ 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) $(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) $(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) $(EXTRA_H5test_kind_DEPENDENCIES) 
 	@rm -f H5test_kind$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(H5test_kind_OBJECTS) $(H5test_kind_LDADD) $(LIBS)
@@ -738,14 +954,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -763,44 +979,21 @@ distclean-compile:
 .f90.lo:
 	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
-H5test_kind.o: $(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)$(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)$(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)$(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
 
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -812,15 +1005,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -829,9 +1018,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -847,6 +1037,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -908,6 +1243,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -994,22 +1332,23 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local
 
 .MAKE: all check check-am install install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-generic clean-libLTLIBRARIES clean-libtool \
-	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 \
-	install-data-local install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-local install-html \
-	install-html-am install-info install-info-am \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool clean-local clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am 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 install-data-local install-dvi \
+	install-dvi-am install-exec install-exec-am install-exec-local \
+	install-html install-html-am install-info install-info-am \
 	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
 	install-ps install-ps-am install-strip installcheck \
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic maintainer-clean-local mostlyclean \
 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-libLTLIBRARIES uninstall-local
+	mostlyclean-local pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am uninstall-libLTLIBRARIES \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in
index 62030f0..41e93e4 100644
--- a/fortran/src/hdf5_fortrandll.def.in
+++ b/fortran/src/hdf5_fortrandll.def.in
@@ -454,6 +454,8 @@ H5P_mp_H5PGET_CHUNK_CACHE_F
 @H5_NOF03EXP at H5P_PROVISIONAL_mp_H5PGET_PTR
 @H5_NOF03EXP at H5P_PROVISIONAL_mp_H5PREGISTER_PTR
 @H5_NOF03EXP at H5P_PROVISIONAL_mp_H5PINSERT_PTR
+ at H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PGET_FILE_IMAGE_F
+ at H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PSET_FILE_IMAGE_F
 ; H5R
 H5R_PROVISIONAL_mp_H5RCREATE_OBJECT_F
 H5R_PROVISIONAL_mp_H5RCREATE_REGION_F
@@ -567,6 +569,4 @@ H5Z_mp_H5ZGET_FILTER_INFO_F
 @H5_NOPAREXP at H5FDMPIO_mp_H5PGET_FAPL_MPIO_F
 @H5_NOPAREXP at H5FDMPIO_mp_H5PSET_DXPL_MPIO_F
 @H5_NOPAREXP at H5FDMPIO_mp_H5PGET_DXPL_MPIO_F
- at H5_NOPAREXP@H5FDMPIO_mp_H5PSET_FAPL_MPIPOSIX_F
- at H5_NOPAREXP@H5FDMPIO_mp_H5PGET_FAPL_MPIPOSIX_F
 @H5_NOPAREXP at H5FDMPIO_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F
diff --git a/fortran/test/CMakeLists.txt b/fortran/test/CMakeLists.txt
index 643ec94..17c55a5 100644
--- a/fortran/test/CMakeLists.txt
+++ b/fortran/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_FORTRAN_TESTS C CXX Fortran)
 
 #-----------------------------------------------------------------------------
@@ -9,42 +9,48 @@ INCLUDE_DIRECTORIES (${CMAKE_Fortran_MODULE_DIRECTORY} ${HDF5_F90_BINARY_DIR} ${
 #-----------------------------------------------------------------------------
 # Add Test Lib
 #-----------------------------------------------------------------------------
-ADD_LIBRARY (${HDF5_F90_C_TEST_LIB_TARGET} ${LIB_TYPE} t.c)
+add_library (${HDF5_F90_C_TEST_LIB_TARGET} ${LIB_TYPE} t.c)
 TARGET_C_PROPERTIES (${HDF5_F90_C_TEST_LIB_TARGET} " " " ")
-TARGET_LINK_LIBRARIES (${HDF5_F90_C_TEST_LIB_TARGET}
+target_link_libraries (${HDF5_F90_C_TEST_LIB_TARGET}
     ${HDF5_F90_C_LIB_TARGET}
     ${HDF5_TEST_LIB_TARGET}
 )
 H5_SET_LIB_OPTIONS (${HDF5_F90_C_TEST_LIB_TARGET} ${HDF5_F90_C_TEST_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_F90_C_TEST_LIB_TARGET} PROPERTIES FOLDER libraries/test/fortran)
+set_target_properties (${HDF5_F90_C_TEST_LIB_TARGET} PROPERTIES
+    FOLDER libraries/test/fortran
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
-ADD_LIBRARY (${HDF5_F90_TEST_LIB_TARGET} ${LIB_TYPE} tf.f90)
-SET (SHARED_LINK_FLAGS " ")
-IF (WIN32 AND NOT CYGWIN)
-  IF (BUILD_SHARED_LIBS)
-    SET_PROPERTY (TARGET ${HDF5_F90_TEST_LIB_TARGET} APPEND PROPERTY COMPILE_DEFINITIONS BUILD_HDF5_DLL)
-    IF (MSVC)
-      SET (SHARED_LINK_FLAGS "/DLL")
-    ENDIF (MSVC)
-  ENDIF (BUILD_SHARED_LIBS)
-  SET_PROPERTY (TARGET ${HDF5_F90_TEST_LIB_TARGET} APPEND PROPERTY COMPILE_DEFINITIONS HDF5F90_WINDOWS)
-ENDIF (WIN32 AND NOT CYGWIN)
+add_library (${HDF5_F90_TEST_LIB_TARGET} ${LIB_TYPE} tf.f90)
+set (SHARED_LINK_FLAGS " ")
+if (WIN32)
+  if (BUILD_SHARED_LIBS)
+    set_property (TARGET ${HDF5_F90_TEST_LIB_TARGET} APPEND PROPERTY COMPILE_DEFINITIONS BUILD_HDF5_DLL)
+    if (MSVC)
+      set (SHARED_LINK_FLAGS "/DLL")
+    endif (MSVC)
+  endif (BUILD_SHARED_LIBS)
+  set_property (TARGET ${HDF5_F90_TEST_LIB_TARGET} APPEND PROPERTY COMPILE_DEFINITIONS HDF5F90_WINDOWS)
+endif (WIN32)
 TARGET_FORTRAN_PROPERTIES (${HDF5_F90_TEST_LIB_TARGET} " " ${SHARED_LINK_FLAGS})
-SET_TARGET_PROPERTIES (${HDF5_F90_TEST_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran)
-TARGET_LINK_LIBRARIES (${HDF5_F90_TEST_LIB_TARGET}
+set_target_properties (${HDF5_F90_TEST_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran)
+target_link_libraries (${HDF5_F90_TEST_LIB_TARGET}
     ${HDF5_F90_C_TEST_LIB_TARGET}
     ${HDF5_F90_LIB_TARGET}
     ${HDF5_LIB_TARGET}
 )
 H5_SET_LIB_OPTIONS (${HDF5_F90_TEST_LIB_TARGET} ${HDF5_F90_TEST_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_F90_TEST_LIB_TARGET} PROPERTIES FOLDER libraries/test/fortran)
+set_target_properties (${HDF5_F90_TEST_LIB_TARGET} PROPERTIES
+    FOLDER libraries/test/fortran
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # Add Tests
 #-----------------------------------------------------------------------------
 
 #-- Adding test for testhdf5_fortran
-ADD_EXECUTABLE (testhdf5_fortran
+add_executable (testhdf5_fortran
     fortranlib_test.f90
     tH5A.f90
     tH5D.f90
@@ -59,44 +65,47 @@ ADD_EXECUTABLE (testhdf5_fortran
     tH5T.f90
     tH5VL.f90
     tH5Z.f90
+    tHDF5.f90
 )
 TARGET_NAMING (testhdf5_fortran ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (testhdf5_fortran " " " ")
-TARGET_LINK_LIBRARIES (testhdf5_fortran 
+target_link_libraries (testhdf5_fortran 
     ${HDF5_F90_TEST_LIB_TARGET}
     ${HDF5_F90_LIB_TARGET}
     ${HDF5_LIB_TARGET}
 )
-IF (WIN32 AND MSVC)
-  TARGET_LINK_LIBRARIES (testhdf5_fortran "ws2_32.lib")
-ENDIF (WIN32 AND MSVC)
-SET_TARGET_PROPERTIES (testhdf5_fortran PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (testhdf5_fortran PROPERTIES FOLDER test/fortran)
+if (WIN32 AND MSVC)
+  target_link_libraries (testhdf5_fortran "ws2_32.lib")
+endif (WIN32 AND MSVC)
+set_target_properties (testhdf5_fortran PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (testhdf5_fortran PROPERTIES FOLDER test/fortran)
 
 #-- Adding test for testhdf5_fortran_1_8
-ADD_EXECUTABLE (testhdf5_fortran_1_8
+add_executable (testhdf5_fortran_1_8
     fortranlib_test_1_8.f90
     tH5F.f90
     tH5O.f90
     tH5A_1_8.f90
     tH5G_1_8.f90
+    tH5MISC_1_8.f90
+    tHDF5_1_8.f90
 )
 TARGET_NAMING (testhdf5_fortran_1_8 ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (testhdf5_fortran_1_8 " " " ")
-TARGET_LINK_LIBRARIES (testhdf5_fortran_1_8 
+target_link_libraries (testhdf5_fortran_1_8 
     ${HDF5_F90_TEST_LIB_TARGET}
     ${HDF5_F90_LIB_TARGET}
     ${HDF5_LIB_TARGET}
 )
-IF (WIN32 AND MSVC)
-  TARGET_LINK_LIBRARIES (testhdf5_fortran_1_8 "ws2_32.lib")
-ENDIF (WIN32 AND MSVC)
-SET_TARGET_PROPERTIES (testhdf5_fortran_1_8 PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (testhdf5_fortran_1_8 PROPERTIES FOLDER test/fortran)
+if (WIN32 AND MSVC)
+  target_link_libraries (testhdf5_fortran_1_8 "ws2_32.lib")
+endif (WIN32 AND MSVC)
+set_target_properties (testhdf5_fortran_1_8 PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (testhdf5_fortran_1_8 PROPERTIES FOLDER test/fortran)
 
 #-- Adding test for fortranlib_test_F03
-IF (HDF5_ENABLE_F2003)
-  ADD_EXECUTABLE (fortranlib_test_F03
+if (HDF5_ENABLE_F2003)
+  add_executable (fortranlib_test_F03
       fortranlib_test_F03.f90
       tH5F.f90
       tH5E_F03.f90
@@ -105,49 +114,50 @@ IF (HDF5_ENABLE_F2003)
       tH5O_F03.f90
       tH5P_F03.f90
       tH5T_F03.f90
+      tHDF5_F03.f90
   )
   TARGET_NAMING (fortranlib_test_F03 ${LIB_TYPE})
   TARGET_FORTRAN_PROPERTIES (fortranlib_test_F03 " " " ")
-  TARGET_LINK_LIBRARIES (fortranlib_test_F03 
+  target_link_libraries (fortranlib_test_F03 
       ${HDF5_F90_TEST_LIB_TARGET}
       ${HDF5_F90_LIB_TARGET}
       ${HDF5_LIB_TARGET}
   )
-  IF (WIN32 AND MSVC)
-    TARGET_LINK_LIBRARIES (fortranlib_test_F03 "ws2_32.lib")
-  ENDIF (WIN32 AND MSVC)
-  SET_TARGET_PROPERTIES (fortranlib_test_F03 PROPERTIES LINKER_LANGUAGE Fortran)
-  SET_TARGET_PROPERTIES (fortranlib_test_F03 PROPERTIES FOLDER test/fortran)
-ENDIF (HDF5_ENABLE_F2003)
+  if (WIN32 AND MSVC)
+    target_link_libraries (fortranlib_test_F03 "ws2_32.lib")
+  endif (WIN32 AND MSVC)
+  set_target_properties (fortranlib_test_F03 PROPERTIES LINKER_LANGUAGE Fortran)
+  set_target_properties (fortranlib_test_F03 PROPERTIES FOLDER test/fortran)
+endif (HDF5_ENABLE_F2003)
 
 #-- Adding test for fflush1
-ADD_EXECUTABLE (fflush1 fflush1.f90)
+add_executable (fflush1 fflush1.f90)
 TARGET_NAMING (fflush1 ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (fflush1 " " " ")
-TARGET_LINK_LIBRARIES (fflush1 
+target_link_libraries (fflush1 
     ${HDF5_F90_LIB_TARGET}
     ${HDF5_F90_TEST_LIB_TARGET}
     ${HDF5_LIB_TARGET}
 )
-IF (WIN32 AND MSVC)
-  TARGET_LINK_LIBRARIES (fflush1 "ws2_32.lib")
-ENDIF (WIN32 AND MSVC)
-SET_TARGET_PROPERTIES (fflush1 PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (fflush1 PROPERTIES FOLDER test/fortran)
+if (WIN32 AND MSVC)
+  target_link_libraries (fflush1 "ws2_32.lib")
+endif (WIN32 AND MSVC)
+set_target_properties (fflush1 PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (fflush1 PROPERTIES FOLDER test/fortran)
 
 #-- Adding test for fflush2
-ADD_EXECUTABLE (fflush2 fflush2.f90)
+add_executable (fflush2 fflush2.f90)
 TARGET_NAMING (fflush2 ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (fflush2 " " " ")
-TARGET_LINK_LIBRARIES (fflush2 
+target_link_libraries (fflush2 
     ${HDF5_F90_TEST_LIB_TARGET}
     ${HDF5_F90_LIB_TARGET}
     ${HDF5_LIB_TARGET}
 )
-IF (WIN32 AND MSVC)
-  TARGET_LINK_LIBRARIES (fflush2 "ws2_32.lib")
-ENDIF (WIN32 AND MSVC)
-SET_TARGET_PROPERTIES (fflush2 PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (fflush2 PROPERTIES FOLDER test/fortran)
+if (WIN32 AND MSVC)
+  target_link_libraries (fflush2 "ws2_32.lib")
+endif (WIN32 AND MSVC)
+set_target_properties (fflush2 PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (fflush2 PROPERTIES FOLDER test/fortran)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/fortran/test/CMakeTests.cmake b/fortran/test/CMakeTests.cmake
index d381b62..6a9c535 100644
--- a/fortran/test/CMakeTests.cmake
+++ b/fortran/test/CMakeTests.cmake
@@ -5,22 +5,22 @@
 ##############################################################################
 ##############################################################################
 
-ADD_TEST (NAME testhdf5_fortran COMMAND $<TARGET_FILE:testhdf5_fortran>)
-SET_TESTS_PROPERTIES(testhdf5_fortran PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
+add_test (NAME FORTRAN_testhdf5_fortran COMMAND $<TARGET_FILE:testhdf5_fortran>)
+set_tests_properties (FORTRAN_testhdf5_fortran PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
 
 #-- Adding test for testhdf5_fortran_1_8
-ADD_TEST (NAME testhdf5_fortran_1_8 COMMAND $<TARGET_FILE:testhdf5_fortran_1_8>)
-SET_TESTS_PROPERTIES(testhdf5_fortran_1_8 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
+add_test (NAME FORTRAN_testhdf5_fortran_1_8 COMMAND $<TARGET_FILE:testhdf5_fortran_1_8>)
+set_tests_properties (FORTRAN_testhdf5_fortran_1_8 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
 
 #-- Adding test for fortranlib_test_F03
-IF (HDF5_ENABLE_F2003)
-  ADD_TEST (NAME fortranlib_test_F03 COMMAND $<TARGET_FILE:fortranlib_test_F03>)
-  SET_TESTS_PROPERTIES(fortranlib_test_F03 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
-ENDIF (HDF5_ENABLE_F2003)
+if (HDF5_ENABLE_F2003)
+  add_test (NAME FORTRAN_fortranlib_test_F03 COMMAND $<TARGET_FILE:fortranlib_test_F03>)
+  set_tests_properties (FORTRAN_fortranlib_test_F03 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
+endif (HDF5_ENABLE_F2003)
 
 #-- Adding test for fflush1
-ADD_TEST (NAME fflush1 COMMAND $<TARGET_FILE:fflush1>)
+add_test (NAME FORTRAN_fflush1 COMMAND $<TARGET_FILE:fflush1>)
 
 #-- Adding test for fflush2
-ADD_TEST (NAME fflush2 COMMAND $<TARGET_FILE:fflush2>)
-SET_TESTS_PROPERTIES(fflush2 PROPERTIES DEPENDS fflush1)
+add_test (NAME FORTRAN_fflush2 COMMAND $<TARGET_FILE:fflush2>)
+set_tests_properties (FORTRAN_fflush2 PROPERTIES DEPENDS FORTRAN_fflush1)
diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am
index 84f55e5..9c6b906 100644
--- a/fortran/test/Makefile.am
+++ b/fortran/test/Makefile.am
@@ -17,12 +17,13 @@
 #
 # HDF5-Fortran test/Makefile(.in)
 #
-
+# Autoconf cannot figure out dependencies between modules; disable parallel make
+.NOTPARALLEL:
 include $(top_srcdir)/config/commence.am
 
 # Include files
 AM_FCFLAGS+=-I$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src
-INCLUDES=-I$(top_srcdir)/src -I$(top_builddir)/fortran/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_builddir)/fortran/src
 
 # The Fortran test library
 noinst_LTLIBRARIES=libh5test_fortran.la
@@ -59,16 +60,15 @@ libh5test_fortran_la_SOURCES= tf.f90 t.c
 fortranlib_test_FCFLAGS=$(AM_FCFLAGS)
 fortranlib_test_CFLAGS=$(AM_CFLAGS)
 
-fortranlib_test_SOURCES = fortranlib_test.f90 \
-        tH5F.f90 tH5D.f90 tH5R.f90 tH5S.f90 tH5T.f90 tH5VL.f90 tH5Z.f90 \
-        tH5Sselect.f90 tH5P.f90 tH5A.f90 tH5I.f90 tH5G.f90 tH5E.f90
+fortranlib_test_SOURCES = tH5F.f90 tH5D.f90 tH5R.f90 tH5S.f90 tH5T.f90 tH5VL.f90 tH5Z.f90 \
+        tH5Sselect.f90 tH5P.f90 tH5A.f90 tH5I.f90 tH5G.f90 tH5E.f90 tHDF5.f90 fortranlib_test.f90
 
-fortranlib_test_1_8_SOURCES = fortranlib_test_1_8.f90 \
-        tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90
+fortranlib_test_1_8_SOURCES = tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90 tH5MISC_1_8.f90 tHDF5_1_8.f90\
+        fortranlib_test_1_8.f90
 
 if FORTRAN_2003_CONDITIONAL_F
-   fortranlib_test_F03_SOURCES = fortranlib_test_F03.f90 \
-	tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90
+   fortranlib_test_F03_SOURCES = tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 \
+        tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90 tHDF5_F03.f90 fortranlib_test_F03.f90
 endif
 
 
@@ -79,9 +79,20 @@ fflush2_SOURCES=fflush2.f90
 LDADD=libh5test_fortran.la $(LIBH5TEST) $(LIBH5F) $(LIBHDF5)
 
 # Temporary files
-CHECK_CLEANFILES+=*.h5
+CHECK_CLEANFILES+=*.h5 *.raw
 MOSTLYCLEANFILES=*.tmp
 
+# Fortran module files can have different extensions and different names
+# (e.g., different capitalizations) on different platforms.  Write rules
+# for them explicitly rather than trying to teach automake about them.
+# They should be installed as headers and removed during clean.
+maintainer-clean-local: clean-local
+distclean-local: clean-local
+clean-local:
+	@if test -n "$(F9XMODEXT)" && test "X$(F9XMODEXT)" != "Xo"; then \
+	  $(RM) *.$(F9XMODEXT);                                         \
+	fi
+
 # Mark this directory as part of the Fortran API (this affects output
 # from tests in conclude.am)
 FORTRAN_API=yes
diff --git a/fortran/test/Makefile.in b/fortran/test/Makefile.in
index 6c226bc..bd1d01d 100644
--- a/fortran/test/Makefile.in
+++ b/fortran/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,41 +14,52 @@
 
 @SET_MAKE@
 
-#
-# 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.
-#
-# HDF5-Fortran test/Makefile(.in)
-#
-
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,10 +78,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver
 
 # Some Fortran compilers can't build shared libraries, so sometimes we
 # want to build a shared C library and a static Fortran library.  If so,
@@ -110,16 +121,15 @@ fflush2_OBJECTS = $(am_fflush2_OBJECTS)
 fflush2_LDADD = $(LDADD)
 fflush2_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) $(LIBH5F) \
 	$(LIBHDF5)
-am_fortranlib_test_OBJECTS =  \
-	fortranlib_test-fortranlib_test.$(OBJEXT) \
-	fortranlib_test-tH5F.$(OBJEXT) fortranlib_test-tH5D.$(OBJEXT) \
-	fortranlib_test-tH5R.$(OBJEXT) fortranlib_test-tH5S.$(OBJEXT) \
-	fortranlib_test-tH5T.$(OBJEXT) fortranlib_test-tH5VL.$(OBJEXT) \
-	fortranlib_test-tH5Z.$(OBJEXT) \
+am_fortranlib_test_OBJECTS = fortranlib_test-tH5F.$(OBJEXT) \
+	fortranlib_test-tH5D.$(OBJEXT) fortranlib_test-tH5R.$(OBJEXT) \
+	fortranlib_test-tH5S.$(OBJEXT) fortranlib_test-tH5T.$(OBJEXT) \
+	fortranlib_test-tH5VL.$(OBJEXT) fortranlib_test-tH5Z.$(OBJEXT) \
 	fortranlib_test-tH5Sselect.$(OBJEXT) \
 	fortranlib_test-tH5P.$(OBJEXT) fortranlib_test-tH5A.$(OBJEXT) \
 	fortranlib_test-tH5I.$(OBJEXT) fortranlib_test-tH5G.$(OBJEXT) \
-	fortranlib_test-tH5E.$(OBJEXT)
+	fortranlib_test-tH5E.$(OBJEXT) fortranlib_test-tHDF5.$(OBJEXT) \
+	fortranlib_test-fortranlib_test.$(OBJEXT)
 fortranlib_test_OBJECTS = $(am_fortranlib_test_OBJECTS)
 fortranlib_test_LDADD = $(LDADD)
 fortranlib_test_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) \
@@ -128,24 +138,26 @@ fortranlib_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
 	$(fortranlib_test_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
-am_fortranlib_test_1_8_OBJECTS = fortranlib_test_1_8.$(OBJEXT) \
-	tH5F.$(OBJEXT) tH5O.$(OBJEXT) tH5A_1_8.$(OBJEXT) \
-	tH5G_1_8.$(OBJEXT)
+am_fortranlib_test_1_8_OBJECTS = tH5F.$(OBJEXT) tH5O.$(OBJEXT) \
+	tH5A_1_8.$(OBJEXT) tH5G_1_8.$(OBJEXT) tH5MISC_1_8.$(OBJEXT) \
+	tHDF5_1_8.$(OBJEXT) fortranlib_test_1_8.$(OBJEXT)
 fortranlib_test_1_8_OBJECTS = $(am_fortranlib_test_1_8_OBJECTS)
 fortranlib_test_1_8_LDADD = $(LDADD)
 fortranlib_test_1_8_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) \
 	$(LIBH5F) $(LIBHDF5)
-am__fortranlib_test_F03_SOURCES_DIST = fortranlib_test_F03.f90 \
-	tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 tH5O_F03.f90 \
-	tH5P_F03.f90 tH5T_F03.f90
- at FORTRAN_2003_CONDITIONAL_F_TRUE@am_fortranlib_test_F03_OBJECTS = fortranlib_test_F03.$(OBJEXT) \
+am__fortranlib_test_F03_SOURCES_DIST = tH5F.f90 tH5E_F03.f90 \
+	tH5F_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 \
+	tH5T_F03.f90 tHDF5_F03.f90 fortranlib_test_F03.f90
+ at FORTRAN_2003_CONDITIONAL_F_TRUE@am_fortranlib_test_F03_OBJECTS =  \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5F.$(OBJEXT) \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5E_F03.$(OBJEXT) \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5F_F03.$(OBJEXT) \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5L_F03.$(OBJEXT) \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5O_F03.$(OBJEXT) \
 @FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5P_F03.$(OBJEXT) \
- at FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5T_F03.$(OBJEXT)
+ at FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5T_F03.$(OBJEXT) \
+ at FORTRAN_2003_CONDITIONAL_F_TRUE@	tHDF5_F03.$(OBJEXT) \
+ at FORTRAN_2003_CONDITIONAL_F_TRUE@	fortranlib_test_F03.$(OBJEXT)
 fortranlib_test_F03_OBJECTS = $(am_fortranlib_test_F03_OBJECTS)
 fortranlib_test_F03_LDADD = $(LDADD)
 fortranlib_test_F03_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) \
@@ -211,12 +223,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -228,7 +455,8 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_builddir)/fortran/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 
@@ -291,7 +519,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -500,8 +727,7 @@ TRACE = perl $(top_srcdir)/bin/trace
 # *.clog are from the MPE option.
 
 # Temporary files
-CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
-INCLUDES = -I$(top_srcdir)/src -I$(top_builddir)/fortran/src
+CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 *.raw
 
 # The Fortran test library
 noinst_LTLIBRARIES = libh5test_fortran.la
@@ -520,15 +746,14 @@ libh5test_fortran_la_SOURCES = tf.f90 t.c
 # Automake will complain about this without the following workaround.
 fortranlib_test_FCFLAGS = $(AM_FCFLAGS)
 fortranlib_test_CFLAGS = $(AM_CFLAGS)
-fortranlib_test_SOURCES = fortranlib_test.f90 \
-        tH5F.f90 tH5D.f90 tH5R.f90 tH5S.f90 tH5T.f90 tH5VL.f90 tH5Z.f90 \
-        tH5Sselect.f90 tH5P.f90 tH5A.f90 tH5I.f90 tH5G.f90 tH5E.f90
+fortranlib_test_SOURCES = tH5F.f90 tH5D.f90 tH5R.f90 tH5S.f90 tH5T.f90 tH5VL.f90 tH5Z.f90 \
+        tH5Sselect.f90 tH5P.f90 tH5A.f90 tH5I.f90 tH5G.f90 tH5E.f90 tHDF5.f90 fortranlib_test.f90
 
-fortranlib_test_1_8_SOURCES = fortranlib_test_1_8.f90 \
-        tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90
+fortranlib_test_1_8_SOURCES = tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90 tH5MISC_1_8.f90 tHDF5_1_8.f90\
+        fortranlib_test_1_8.f90
 
- at FORTRAN_2003_CONDITIONAL_F_TRUE@fortranlib_test_F03_SOURCES = fortranlib_test_F03.f90 \
- at FORTRAN_2003_CONDITIONAL_F_TRUE@	tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90
+ at FORTRAN_2003_CONDITIONAL_F_TRUE@fortranlib_test_F03_SOURCES = tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 \
+ at FORTRAN_2003_CONDITIONAL_F_TRUE@        tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90 tHDF5_F03.f90 fortranlib_test_F03.f90
 
 fflush1_SOURCES = fflush1.f90
 fflush2_SOURCES = fflush2.f90
@@ -563,7 +788,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .f90 .lo .o .obj
+.SUFFIXES: .c .f90 .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -606,6 +831,7 @@ clean-noinstLTLIBRARIES:
 	  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)
 
@@ -617,18 +843,23 @@ 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) $(EXTRA_fflush1_DEPENDENCIES) 
 	@rm -f fflush1$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(fflush1_OBJECTS) $(fflush1_LDADD) $(LIBS)
+
 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) $(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) $(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) $(EXTRA_fortranlib_test_F03_DEPENDENCIES) 
 	@rm -f fortranlib_test_F03$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(fortranlib_test_F03_OBJECTS) $(fortranlib_test_F03_LDADD) $(LIBS)
@@ -646,14 +877,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -671,12 +902,6 @@ distclean-compile:
 .f90.lo:
 	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
 
-fortranlib_test-fortranlib_test.o: 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)$(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)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tH5F.o $(FCFLAGS_f90) `test -f 'tH5F.f90' || echo '$(srcdir)/'`tH5F.f90
 
@@ -755,32 +980,33 @@ fortranlib_test-tH5E.o: tH5E.f90
 fortranlib_test-tH5E.obj: tH5E.f90
 	$(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`
 
+fortranlib_test-tHDF5.o: tHDF5.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tHDF5.o $(FCFLAGS_f90) `test -f 'tHDF5.f90' || echo '$(srcdir)/'`tHDF5.f90
+
+fortranlib_test-tHDF5.obj: tHDF5.f90
+	$(AM_V_FC)$(FC) $(fortranlib_test_FCFLAGS) $(FCFLAGS) -c -o fortranlib_test-tHDF5.obj $(FCFLAGS_f90) `if test -f 'tHDF5.f90'; then $(CYGPATH_W) 'tHDF5.f90'; else $(CYGPATH_W) '$(srcdir)/tHDF5.f90'; fi`
+
+fortranlib_test-fortranlib_test.o: 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)$(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`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -792,15 +1018,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -809,9 +1031,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -827,6 +1050,186 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+fortranlib_test.log: fortranlib_test$(EXEEXT)
+	@p='fortranlib_test$(EXEEXT)'; \
+	b='fortranlib_test'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fflush1.log: fflush1$(EXEEXT)
+	@p='fflush1$(EXEEXT)'; \
+	b='fflush1'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fflush2.log: fflush2$(EXEEXT)
+	@p='fflush2$(EXEEXT)'; \
+	b='fflush2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fortranlib_test_1_8.log: fortranlib_test_1_8$(EXEEXT)
+	@p='fortranlib_test_1_8$(EXEEXT)'; \
+	b='fortranlib_test_1_8'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fortranlib_test_F03.log: fortranlib_test_F03$(EXEEXT)
+	@p='fortranlib_test_F03$(EXEEXT)'; \
+	b='fortranlib_test_F03'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -884,6 +1287,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -896,14 +1302,14 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \
 	clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
+	distclean-local distclean-tags
 
 dvi: dvi-am
 
@@ -948,7 +1354,8 @@ installcheck-am:
 maintainer-clean: maintainer-clean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+	maintainer-clean-local
 
 mostlyclean: mostlyclean-am
 
@@ -967,21 +1374,41 @@ 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 \
-	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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	clean-local clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am 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 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 maintainer-clean-local mostlyclean \
 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am
+	mostlyclean-local pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
 
+#
+# 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.
+#
+# HDF5-Fortran test/Makefile(.in)
+#
+# Autoconf cannot figure out dependencies between modules; disable parallel make
+.NOTPARALLEL:
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
 # This tells the Makefiles that these targets are not files to be built but
@@ -994,6 +1421,17 @@ uninstall-am:
 help:
 	@$(top_srcdir)/bin/makehelp
 
+# Fortran module files can have different extensions and different names
+# (e.g., different capitalizations) on different platforms.  Write rules
+# for them explicitly rather than trying to teach automake about them.
+# They should be installed as headers and removed during clean.
+maintainer-clean-local: clean-local
+distclean-local: clean-local
+clean-local:
+	@if test -n "$(F9XMODEXT)" && test "X$(F9XMODEXT)" != "Xo"; then \
+	  $(RM) *.$(F9XMODEXT);                                         \
+	fi
+
 # fflush2 depends on files created by fflush1
 fflush2.chkexe_: fflush1.chkexe_
 
diff --git a/fortran/test/fflush1.f90 b/fortran/test/fflush1.f90
index d35bfff..ca2550f 100644
--- a/fortran/test/fflush1.f90
+++ b/fortran/test/fflush1.f90
@@ -30,6 +30,7 @@
      PROGRAM FFLUSH1EXAMPLE
 
      USE HDF5 ! This module contains all necessary modules
+     USE TH5_MISC
 
      IMPLICIT NONE
 
@@ -149,7 +150,7 @@
      IF (total_error .ne. 0) CALL h5_exit_f (1)
 
 
-     001 STOP
+     STOP
 
 
      END PROGRAM FFLUSH1EXAMPLE
diff --git a/fortran/test/fflush2.f90 b/fortran/test/fflush2.f90
index d699150..04ce439 100644
--- a/fortran/test/fflush2.f90
+++ b/fortran/test/fflush2.f90
@@ -30,6 +30,7 @@
      PROGRAM FFLUSH2EXAMPLE
 
      USE HDF5 ! This module contains all necessary modules
+     USE TH5_MISC
 
      IMPLICIT NONE
 
@@ -39,7 +40,6 @@
      !
      !data space rank and dimensions
      !
-     INTEGER, PARAMETER :: RANK = 2
      INTEGER, PARAMETER :: NX = 4
      INTEGER, PARAMETER :: NY = 5
 
diff --git a/fortran/test/fortranlib_test.f90 b/fortran/test/fortranlib_test.f90
index 6268d15..79ff161 100644
--- a/fortran/test/fortranlib_test.f90
+++ b/fortran/test/fortranlib_test.f90
@@ -27,6 +27,7 @@
 PROGRAM fortranlibtest
 
   USE HDF5
+  USE THDF5
 
   IMPLICIT NONE
   INTEGER :: total_error = 0
@@ -72,14 +73,9 @@ PROGRAM fortranlibtest
   CALL reopentest(cleanup, ret_total_error)
   CALL write_test_status(ret_total_error, ' Reopen test', total_error)
 
-!DEC$ if defined(H5_VMS)
-  GOTO 8
-!DEC$ else
   ret_total_error = 0
   CALL file_close(cleanup, ret_total_error)
   CALL write_test_status(ret_total_error, ' File open/close test', total_error)
-!DEC$ endif
-8 CONTINUE
 
   ret_total_error = 0
   CALL file_space("file_space",cleanup, ret_total_error)
@@ -143,11 +139,11 @@ PROGRAM fortranlibtest
   CALL write_test_status(ret_total_error, ' Element selection functions test ', total_error)
 
   ret_total_error = 0
-  CALL test_select_combine(cleanup, ret_total_error)
+  CALL test_select_combine(ret_total_error)
   CALL write_test_status(ret_total_error, ' Selection combinations test ', total_error)
 
   ret_total_error = 0
-  CALL test_select_bounds(cleanup, ret_total_error)
+  CALL test_select_bounds(ret_total_error)
   CALL write_test_status(ret_total_error, ' Selection bounds test ', total_error)
   
 !     write(*,*)
@@ -155,7 +151,7 @@ PROGRAM fortranlibtest
 !     write(*,*) 'Testing DATATYPE interface               '
 !     write(*,*) '========================================='
   ret_total_error = 0
-  CALL basic_data_type_test(cleanup, ret_total_error)
+  CALL basic_data_type_test(ret_total_error)
   CALL write_test_status(ret_total_error, ' Basic datatype test', total_error)
 
   ret_total_error = 0
@@ -179,14 +175,9 @@ PROGRAM fortranlibtest
   CALL external_test(cleanup, ret_total_error)
   CALL write_test_status(ret_total_error, ' External dataset test', total_error)
 
-!DEC$ if defined(H5_VMS)
-  GOTO 9
-!DEC$ else
   ret_total_error = 0
   CALL multi_file_test(cleanup, ret_total_error)
   CALL write_test_status(ret_total_error, ' Multi file driver test', total_error)
-!DEC$ endif
-9 CONTINUE
 
   ret_total_error = 0
   CALL test_chunk_cache (cleanup, ret_total_error)
@@ -211,7 +202,7 @@ PROGRAM fortranlibtest
   CALL write_test_status(ret_total_error, ' Identifier test', total_error)
 
   ret_total_error = 0
-  CALL filters_test(cleanup, ret_total_error)
+  CALL filters_test(ret_total_error)
   CALL write_test_status(ret_total_error, ' Filters test', total_error)
 
   ret_total_error = 0
diff --git a/fortran/test/fortranlib_test_1_8.f90 b/fortran/test/fortranlib_test_1_8.f90
index dc45560..66f799b 100644
--- a/fortran/test/fortranlib_test_1_8.f90
+++ b/fortran/test/fortranlib_test_1_8.f90
@@ -27,7 +27,8 @@
 PROGRAM fortranlibtest
 
   USE HDF5
-
+  USE THDF5_1_8
+  USE TH5_MISC
   IMPLICIT NONE
   INTEGER :: total_error = 0
   INTEGER :: error
@@ -113,445 +114,3 @@ PROGRAM fortranlibtest
   IF (total_error .NE. 0) CALL h5_exit_f (1)
 
 END PROGRAM fortranlibtest
-
-SUBROUTINE dtransform(cleanup, total_error)
-  USE HDF5 ! This module contains all necessary modules
-
-  IMPLICIT NONE
-  LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(INOUT) :: total_error
-
-  INTEGER(HID_T) :: dxpl_id_c_to_f
-  INTEGER(HID_T) :: file_id
-
-  CHARACTER(LEN=15), PARAMETER :: c_to_f = "(9/5.0)*x + 123"
-  INTEGER :: error
-  CHARACTER(LEN=15) :: ptrgetTest
-  CHARACTER(LEN=7) :: ptrgetTest_small
-  CHARACTER(LEN=30) :: ptrgetTest_big
-
-  INTEGER(SIZE_T) :: size
-
-  CALL H5Fcreate_f("dtransform.h5", H5F_ACC_TRUNC_F, file_id, error)
-  CALL check("dtransform.H5Fcreate_f", error, total_error)
-
-  CALL H5Pcreate_f(H5P_DATASET_XFER_F, dxpl_id_c_to_f, error)
-  CALL check("dtransform.H5Pcreate_f", error, total_error)
-
-  CALL H5Pset_data_transform_f(dxpl_id_c_to_f, c_to_f, error)
-  CALL check("dtransform.H5Pset_data_transform_f", error, total_error)
-
-  CALL H5Pget_data_transform_f(dxpl_id_c_to_f, ptrgetTest, error, size=size)
-  CALL check("dtransform.H5Pget_data_transform_f",  error, total_error)
-  CALL VerifyString("dtransform.H5Pget_data_transform_f", c_to_f, ptrgetTest, total_error)
-  CALL VERIFY("dtransform.H5Pget_data_transform_f", INT(size),15, total_error)
-
-! check case when receiving buffer to small
-
-  CALL H5Pget_data_transform_f(dxpl_id_c_to_f, ptrgetTest_small, error, size=size)
-  CALL check("dtransform.H5Pget_data_transform_f",  error, total_error)
-  CALL VerifyString("dtransform.H5Pget_data_transform_f", c_to_f(1:7), ptrgetTest_small, total_error)
-  CALL VERIFY("dtransform.H5Pget_data_transform_f", INT(size),15, total_error)
-
-! check case when receiving buffer to big
-
-  CALL H5Pget_data_transform_f(dxpl_id_c_to_f, ptrgetTest_big, error, size=size)
-  CALL check("dtransform.H5Pget_data_transform_f",  error, total_error)
-  CALL VerifyString("dtransform.H5Pget_data_transform_f", c_to_f(1:15), ptrgetTest_big(1:15), total_error)
-  CALL VERIFY("dtransform.H5Pget_data_transform_f", INT(size), 15, total_error)
-
-  CALL H5Fclose_f(file_id, error)
-  CALL check("H5Fclose_f", error, total_error)
-
-  IF(cleanup) CALL h5_cleanup_f("dtransform", H5P_DEFAULT_F, error)
-  CALL check("h5_cleanup_f", error, total_error)
-
-
-END SUBROUTINE dtransform
-
-
-!/****************************************************************
-!**
-!**  test_genprop_basic_class(): Test basic generic property list code.
-!**      Tests creating new generic classes.
-!**
-!****************************************************************/
-
-SUBROUTINE test_genprop_basic_class(cleanup, total_error)
-
-  USE HDF5 ! This module contains all necessary modules
-
-  IMPLICIT NONE
-  LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(INOUT) :: total_error
-
-  INTEGER(HID_T) :: cid1		!/* Generic Property class ID */
-  INTEGER(HID_T) :: cid2		!/* Generic Property class ID */
-
-  CHARACTER(LEN=7) :: CLASS1_NAME = "Class 1"
-  CHARACTER(LEN=7)  :: name              ! /* Name of class */
-  CHARACTER(LEN=10) :: name_big          ! /* Name of class bigger buffer */
-  CHARACTER(LEN=4)  :: name_small        ! /* Name of class smaller buffer*/
-  INTEGER :: error
-  INTEGER :: size
-  LOGICAL :: flag
-
-  !/* Output message about test being performed */
-
-  !WRITE(*,*) "Testing Basic Generic Property List Class Creation Functionality"
-
-  ! Try some bogus value for class identifier; function should fail gracefully
-
-  cid1 = 456
-  CALL H5Pget_class_name_f(cid1, name, size, error)
-  CALL VERIFY("H5Pget_class_name", error, -1, error)
-
-  ! /* Create a new generic class, derived from the root of the class hierarchy */
-  CALL H5Pcreate_class_f(H5P_ROOT_F, CLASS1_NAME, cid1, error)
-  CALL check("H5Pcreate_class", error, total_error)
-
-  ! /* Check class name */
-  CALL H5Pget_class_name_f(cid1, name, size, error)
-  CALL check("H5Pget_class_name", error, total_error)
-  CALL VERIFY("H5Pget_class_name", size,7,error)
-  CALL verifystring("H5Pget_class_name", name, CLASS1_NAME, error)
-  IF(error.NE.0)THEN
-     WRITE(*,*) 'Class names do not match! name=',name, 'CLASS1_NAME=',CLASS1_NAME
-     total_error = total_error + 1
-  ENDIF
-
-  ! /* Check class name smaller buffer*/
-  CALL H5Pget_class_name_f(cid1, name_small, size, error)
-  CALL check("H5Pget_class_name", error, total_error)
-  CALL VERIFY("H5Pget_class_name", size,7,error)
-  CALL verifystring("H5Pget_class_name", name_small(1:4), CLASS1_NAME(1:4), error)
-  IF(error.NE.0)THEN
-     WRITE(*,*) 'Class names do not match! name=',name_small(1:4), 'CLASS1_NAME=',CLASS1_NAME(1:4)
-     total_error = total_error + 1
-  ENDIF
-
-  ! /* Check class name bigger buffer*/
-  CALL H5Pget_class_name_f(cid1, name_big, size, error)
-  CALL check("H5Pget_class_name", error, total_error)
-  CALL VERIFY("H5Pget_class_name", size,7,error)
-  CALL verifystring("H5Pget_class_name", TRIM(name_big), TRIM(CLASS1_NAME), error)
-  IF(error.NE.0)THEN
-     WRITE(*,*) 'Class names do not match! name=',TRIM(name_small), 'CLASS1_NAME=',TRIM(CLASS1_NAME)
-     total_error = total_error + 1
-  ENDIF
-
-  ! /* Check class parent */
-  CALL H5Pget_class_parent_f(cid1, cid2, error)
-  CALL check("H5Pget_class_parent_f", error, total_error)
-
-  ! /* Verify class parent correct */
-  CALL H5Pequal_f(cid2, H5P_ROOT_F, flag, error)
-  CALL check("H5Pequal_f", error, total_error)
-  CALL verifylogical("H5Pequal_f", flag, .TRUE., total_error)
-
-
-  ! /* Make certain false postives aren't being returned */
-  CALL H5Pequal_f(cid2, H5P_FILE_CREATE_F, flag, error)
-  CALL check("H5Pequal_f", error, total_error)
-  CALL verifylogical("H5Pequal_f", flag, .FALSE., total_error)
-
-  !/* Close parent class */
-  CALL H5Pclose_class_f(cid2, error)
-  CALL check("H5Pclose_class_f", error, total_error)
-
-
-  !/* Close class */
-  CALL H5Pclose_class_f(cid1, error)
-  CALL check("H5Pclose_class_f", error, total_error)
-
-END SUBROUTINE test_genprop_basic_class
-
-SUBROUTINE test_h5s_encode(cleanup, total_error)
-
-!/****************************************************************
-!**
-!**  test_h5s_encode(): Test H5S (dataspace) encoding and decoding.
-!**
-!****************************************************************/
-
-  USE HDF5 ! This module contains all necessary modules
-
-  IMPLICIT NONE
-  LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(INOUT) :: total_error
-
-  INTEGER(hid_t) :: sid1, sid3!	/* Dataspace ID		*/
-  INTEGER(hid_t) :: decoded_sid1, decoded_sid3
-  INTEGER :: rank	!/* LOGICAL rank of dataspace	*/
-  INTEGER(size_t) :: sbuf_size=0, scalar_size=0
-
-! Make sure the size is large
-  CHARACTER(LEN=288) :: sbuf
-  CHARACTER(LEN=288) :: scalar_buf
-
-  INTEGER(hsize_t) :: n ! /* Number of dataspace elements */
-
-  INTEGER(hsize_t), DIMENSION(1:3) :: start = (/0, 0, 0/)
-  INTEGER(hsize_t), DIMENSION(1:3) :: stride = (/2, 5, 3/)
-  INTEGER(hsize_t), DIMENSION(1:3) :: count = (/2, 2, 2/)
-  INTEGER(hsize_t), DIMENSION(1:3) :: BLOCK = (/1, 3, 1/)
-
-  INTEGER :: space_type
-  !
-  ! Dataset dimensions
-  !
-  INTEGER, PARAMETER :: SPACE1_DIM1= 3,  SPACE1_DIM2=15, SPACE1_DIM3=13
-
-  INTEGER(HSIZE_T), DIMENSION(1:3) :: dims1 = (/SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3/)
-  INTEGER :: SPACE1_RANK = 3
-  INTEGER :: error
-
-  !/*-------------------------------------------------------------------------
-  ! * Test encoding and decoding of simple dataspace and hyperslab selection.
-  ! *-------------------------------------------------------------------------
-  ! */
-
-  CALL H5Screate_simple_f(SPACE1_RANK, dims1, sid1, error)
-  CALL check("H5Screate_simple", error, total_error)
-
-  CALL h5sselect_hyperslab_f(sid1, H5S_SELECT_SET_F, &
-       start, count, error, stride=stride, BLOCK=BLOCK)
-  CALL check("h5sselect_hyperslab_f", error, total_error)
-
-
-  !/* Encode simple data space in a buffer */
-
-  !         First find the buffer size
-  CALL H5Sencode_f(sid1, sbuf, sbuf_size, error)
-  CALL check("H5Sencode", error, total_error)
-
-
-  ! /* Try decoding bogus buffer */
-
-  CALL H5Sdecode_f(sbuf, decoded_sid1, error)
-  CALL VERIFY("H5Sdecode", error, -1, total_error)
-
-  CALL H5Sencode_f(sid1, sbuf, sbuf_size, error)
-  CALL check("H5Sencode", error, total_error)
-
-  ! /* Decode from the dataspace buffer and return an object handle */
-  CALL H5Sdecode_f(sbuf, decoded_sid1, error)
-  CALL check("H5Sdecode", error, total_error)
-
-
-  ! /* Verify the decoded dataspace */
-  CALL h5sget_simple_extent_npoints_f(decoded_sid1, n, error)
-  CALL check("h5sget_simple_extent_npoints_f", error, total_error)
-  CALL VERIFY("h5sget_simple_extent_npoints_f", INT(n), SPACE1_DIM1 * SPACE1_DIM2 * SPACE1_DIM3, &
-       total_error)
-
-  !
-  !Close the dataspace for the dataset.
-  !
-  CALL h5sclose_f(sid1, error)
-  CALL check("h5sclose_f", error, total_error)
-
-  CALL h5sclose_f(decoded_sid1, error)
-  CALL check("h5sclose_f", error, total_error)
-
-  ! /*-------------------------------------------------------------------------
-  !  * Test encoding and decoding of scalar dataspace.
-  !  *-------------------------------------------------------------------------
-  !  */
-  ! /* Create scalar dataspace */
-
-  CALL H5Screate_f(H5S_SCALAR_F, sid3, error)
-  CALL check("H5Screate_f",error, total_error)
-
-  ! /* Encode scalar data space in a buffer */
-
-  !        First find the buffer size
-  CALL H5Sencode_f(sid3, scalar_buf, scalar_size, error)
-  CALL check("H5Sencode_f", error, total_error)
-
-  ! encode
-
-  CALL H5Sencode_f(sid3, scalar_buf, scalar_size, error)
-  CALL check("H5Sencode_f", error, total_error)
-
-
-  ! /* Decode from the dataspace buffer and return an object handle */
-
-  CALL H5Sdecode_f(scalar_buf, decoded_sid3, error)
-  CALL check("H5Sdecode_f", error, total_error)
-
-
-  ! /* Verify extent type */
-
-  CALL H5Sget_simple_extent_type_f(decoded_sid3, space_type, error)
-  CALL check("H5Sget_simple_extent_type_f", error, total_error)
-  CALL VERIFY("H5Sget_simple_extent_type_f", space_type, H5S_SCALAR_F, total_error)
-
-  ! /* Verify decoded dataspace */
-  CALL h5sget_simple_extent_npoints_f(decoded_sid3, n, error)
-  CALL check("h5sget_simple_extent_npoints_f", error, total_error)
-  CALL VERIFY("h5sget_simple_extent_npoints_f", INT(n), 1, total_error)
-
-  CALL H5Sget_simple_extent_ndims_f(decoded_sid3, rank, error)
-  CALL CHECK("H5Sget_simple_extent_ndims_f", error, total_error)
-  CALL VERIFY("H5Sget_simple_extent_ndims_f", rank, 0, total_error )
-
-  CALL h5sclose_f(sid3, error)
-  CALL check("h5sclose_f", error, total_error)
-
-  CALL h5sclose_f(decoded_sid3, error)
-  CALL check("h5sclose_f", error, total_error)
-
-END SUBROUTINE test_h5s_encode
-
-!-------------------------------------------------------------------------
-! Function:    test_scaleoffset
-!
-! Purpose:     Tests the integer datatype for scaleoffset filter
-!              with fill value set
-!
-! Return:      Success:        0
-!              Failure:        >0
-!
-! Programmer:  M. Scot Breitenfeld
-!              Decemeber 11, 2010
-!
-! Modifications:
-!
-!-------------------------------------------------------------------------
-!
-
-SUBROUTINE test_scaleoffset(cleanup, total_error )
-
-  USE HDF5
-
-  IMPLICIT NONE
-  LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(INOUT) :: total_error
-  INTEGER(hid_t) :: file
-
-  INTEGER(hid_t)   :: dataset, datatype, space, mspace, dc
-  INTEGER(hsize_t), DIMENSION(1:2) :: dims = (/2, 5/)
-  INTEGER(hsize_t), DIMENSION(1:2) :: chunk_dim = (/2, 5/)
-  INTEGER, DIMENSION(1:2,1:5) :: orig_data
-  INTEGER, DIMENSION(1:2,1:5) :: new_data
-  INTEGER(hsize_t), DIMENSION(1:2) :: start  ! Start of hyperslab 
-  INTEGER(hsize_t), DIMENSION(1:2) :: stride ! Stride of hyperslab
-  INTEGER(hsize_t), DIMENSION(1:2) :: count  ! BLOCK count
-  INTEGER(hsize_t), DIMENSION(1:2) :: BLOCK  ! BLOCK sizes
-  INTEGER :: fillval
-  INTEGER(size_t) :: j
-  REAL :: x
-  INTEGER :: error
-  LOGICAL :: status
-
-  ! check to see if filter is available
-  CALL H5Zfilter_avail_f(H5Z_FILTER_SCALEOFFSET_F, status, error)
-  IF(.NOT.status)THEN ! We don't have H5Z_FILTER_SCALEOFFSET_F filter
-     total_error = -1       ! so return
-     RETURN
-  ENDIF
-
-  CALL H5Fcreate_f("h5scaleoffset.h5", H5F_ACC_TRUNC_F, file, error)
-  CALL check("H5Fcreate_f", error, total_error)
-
-  CALL H5Tcopy_f(H5T_NATIVE_INTEGER, datatype, error)
-  CALL CHECK(" H5Tcopy_f", error, total_error)
-
-  ! Set order of dataset datatype
-  CALL H5Tset_order_f(datatype, H5T_ORDER_BE_F, error)
-  CALL CHECK(" H5Tset_order_f", error, total_error)
-
-  ! Create the data space for the dataset
-  CALL H5Screate_simple_f(2, dims, space, error)
-  CALL CHECK(" H5Screate_simple_f", error, total_error)
-
-  ! Create the dataset property list  
-  CALL H5Pcreate_f(H5P_DATASET_CREATE_F, dc, error)
-  CALL CHECK(" H5Pcreate_f", error, total_error)
-
-  ! Set fill value 
-  fillval = 10000
-  CALL H5Pset_fill_value_f(dc, H5T_NATIVE_INTEGER, fillval, error)
-  CALL CHECK(" H5Pset_fill_value_f", error, total_error)
-
-  ! Set up to use scaleoffset filter, let library calculate minbits
-  CALL H5Pset_chunk_f(dc, 2, chunk_dim, error)
-  CALL CHECK(" H5Pset_chunk_f", error, total_error)
-  
-  CALL H5Pset_scaleoffset_f(dc, H5Z_SO_INT_F, H5Z_SO_INT_MINBITS_DEFAULT_F, error)
-  CALL CHECK(" H5Pset_scaleoffset_f", error, total_error)
-  
-  ! Create the dataset
-  CALL H5Dcreate_f(file, "scaleoffset_int", datatype, &
-       space, dataset, error, dc)
-  CALL CHECK(" H5Dcreate_f", error, total_error)
-
-  ! Create the memory data space
-  CALL H5Screate_simple_f(2, dims, mspace, error)
-  CALL CHECK(" H5Screate_simple_f", error, total_error)
-
-  ! Select hyperslab for data to write, using 1x5 blocks,
-  ! (1,1) stride and (1,1) count starting at the position (0,0)
-     
-  start(1:2) = (/0,0/)
-  stride(1:2) = (/1,1/)
-  COUNT(1:2) = (/1,1/)
-  BLOCK(1:2) = (/1,5/)
-
-  CALL H5Sselect_hyperslab_f(mspace, H5S_SELECT_SET_F, start, &
-       count, error, stride, BLOCK)
-  CALL CHECK(" H5Sselect_hyperslab_f", error, total_error)
-
-  CALL RANDOM_SEED()
-  ! Initialize data of hyperslab
-  DO j = 1, dims(2)
-     CALL RANDOM_NUMBER(x)
-     orig_data(1,j) = INT(x*10000.)
-     IF(MOD(j,2_size_t).EQ.0)THEN
-        orig_data(1,j) = - orig_data(1,j)
-     ENDIF
-  ENDDO
-
-  !----------------------------------------------------------------------
-  ! STEP 1: Test scaleoffset by setting up a chunked dataset and writing
-  ! to it.
-  !----------------------------------------------------------------------
-  
-  ! Only data in the hyperslab will be written, other value should be fill value 
-  CALL H5Dwrite_f(dataset, H5T_NATIVE_INTEGER, orig_data, dims, error, mspace, mspace, H5P_DEFAULT_F)
-  CALL CHECK(" H5Dwrite_f", error, total_error)
-
-  !----------------------------------------------------------------------
-  ! STEP 2: Try to read the data we just wrote.
-  !----------------------------------------------------------------------
-     
-  ! Read the dataset back
-  
-  CALL H5Dread_f(dataset, H5T_NATIVE_INTEGER, new_data, dims, error, mspace, mspace, H5P_DEFAULT_F)
-  CALL CHECK(" H5Dread_f", error, total_error)
-
-  ! Check that the values read are the same as the values written 
-  DO j = 1, dims(2)
-     IF(new_data(1,j) .NE. orig_data(1,j))THEN
-        total_error = total_error + 1
-        WRITE(*,'("    Read different values than written.")')
-        WRITE(*,'("    At index ", 2(1X,I0))') 1, j
-        EXIT
-     ENDIF
-  ENDDO
-  !----------------------------------------------------------------------
-  ! 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_scaleoffset
diff --git a/fortran/test/fortranlib_test_F03.f90 b/fortran/test/fortranlib_test_F03.f90
index 939435b..1b8cf97 100644
--- a/fortran/test/fortranlib_test_F03.f90
+++ b/fortran/test/fortranlib_test_F03.f90
@@ -28,12 +28,12 @@
 PROGRAM fortranlibtest_F03
   
   USE HDF5
-  
+  USE THDF5_F03
+
   IMPLICIT NONE
   INTEGER :: total_error = 0
   INTEGER :: error
   INTEGER :: majnum, minnum, relnum
-  LOGICAL :: szip_flag
   INTEGER :: ret_total_error
   LOGICAL :: cleanup, status
 
@@ -144,6 +144,10 @@ PROGRAM fortranlibtest_F03
   CALL external_test_offset(cleanup, ret_total_error)
   CALL write_test_status(ret_total_error, ' Testing external dataset with offset', total_error)
 
+  ret_total_error = 0
+  CALL test_h5p_file_image(ret_total_error)
+  CALL write_test_status(ret_total_error, ' Testing h5pset/get file image', total_error)
+  
 !     write(*,*)
 !     write(*,*) '========================================='
 !     write(*,*) 'Testing GROUP interface             '
diff --git a/fortran/test/t.c b/fortran/test/t.c
index 01d4cdd..fe69143 100644
--- a/fortran/test/t.c
+++ b/fortran/test/t.c
@@ -146,7 +146,7 @@ nh5_exit_c(int_f *status)
  *                       0 - HDF5_NOCLEANUP is not set
  * Returns:     none
  * Programmer:  M.S. Breitenfeld
- *              September 30, 3008
+ *              September 30, 2008
  * Modifications:
  *---------------------------------------------------------------------------*/
 void
diff --git a/fortran/test/tH5A.f90 b/fortran/test/tH5A.f90
index cecaded..07ca6da 100644
--- a/fortran/test/tH5A.f90
+++ b/fortran/test/tH5A.f90
@@ -27,7 +27,9 @@
 !
 !
 !*****
+MODULE TH5A
 
+CONTAINS
     SUBROUTINE attribute_test(cleanup, total_error)
 
 !   This subroutine tests following functionalities:
@@ -36,10 +38,10 @@
 !
 
      USE HDF5 ! This module contains all necessary modules
-
+     USE TH5_MISC
      IMPLICIT NONE
      LOGICAL, INTENT(IN)  :: cleanup
-     INTEGER, INTENT(OUT) :: total_error
+     INTEGER, INTENT(INOUT) :: total_error
 
      CHARACTER(LEN=5), PARAMETER :: filename = "atest"    !File name
      CHARACTER(LEN=80) :: fix_filename
@@ -100,7 +102,7 @@
      CHARACTER(LEN=35), DIMENSION(2) ::  aread_data ! Buffer to put read back
                                                ! string attr data
      CHARACTER ::  attr_character_data = 'A'
-     REAL(KIND=Fortran_DOUBLE),  DIMENSION(1) ::  attr_double_data = 3.459
+     REAL(KIND=Fortran_DOUBLE),  DIMENSION(1) ::  attr_double_data = 3.459D0
      REAL,         DIMENSION(1) ::  attr_real_data = 4.0
      INTEGER,      DIMENSION(1) ::  attr_integer_data = 5
      INTEGER(HSIZE_T), DIMENSION(7) :: data_dims
@@ -127,6 +129,7 @@
      !data buffers
      !
      INTEGER, DIMENSION(NX,NY) :: data_in
+     LOGICAL :: differ
 
 
      !
@@ -516,20 +519,21 @@
      data_dims(1) = 1
      CALL h5aread_f(attr3_id, H5T_NATIVE_DOUBLE, aread_double_data, data_dims, error)
      CALL check("h5aread_f",error,total_error)
-     IF (aread_double_data(1) .NE. 3.459 ) THEN
-         WRITE(*,*) "Read back double attrbute is wrong", aread_double_data(1)
-         total_error = total_error + 1
-     END IF
+
+     IF( .NOT.dreal_eq( REAL(aread_double_data(1),dp), 3.459_dp) )THEN
+        WRITE(*,*) "Read back double attrbute is wrong", aread_double_data(1)
+        total_error = total_error + 1
+     ENDIF
      !
      !read the real attribute data back to memory
      !
      data_dims(1) = 1
      CALL h5aread_f(attr4_id, H5T_NATIVE_REAL, aread_real_data, data_dims, error)
      CALL check("h5aread_f",error,total_error)
-     IF (aread_real_data(1) .NE. 4.0 ) THEN
-         WRITE(*,*) "Read back real attrbute is wrong ", aread_real_data
-         total_error = total_error + 1
-     END IF
+     IF( .NOT.dreal_eq( REAL(aread_real_data(1),dp), 4.0_dp) )THEN
+        WRITE(*,*) "Read back real attrbute is wrong", aread_real_data(1)
+        total_error = total_error + 1
+     ENDIF
      !
      !read the Integer attribute data back to memory
      !
@@ -624,3 +628,4 @@
 
      RETURN
      END SUBROUTINE attribute_test
+END MODULE TH5A
diff --git a/fortran/test/tH5A_1_8.f90 b/fortran/test/tH5A_1_8.f90
index 32cb228..02bef53 100644
--- a/fortran/test/tH5A_1_8.f90
+++ b/fortran/test/tH5A_1_8.f90
@@ -30,7 +30,9 @@
 !  test_attr_basic_write, test_attr_many, attr_open_check, 
 !
 !*****
+MODULE TH5A_1_8
 
+CONTAINS
 SUBROUTINE attribute_test_1_8(cleanup, total_error)
 
 !   This subroutine tests following 1.8 functionalities:
@@ -40,27 +42,12 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error)
 !
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
   INTEGER, INTENT(INOUT) :: total_error
 
-  CHARACTER(LEN=5), PARAMETER :: filename = "atest"    !File name
-  CHARACTER(LEN=9), PARAMETER :: dsetname = "atestdset"        !Dataset name
-  CHARACTER(LEN=11), PARAMETER :: aname = "attr_string"   !String Attribute name
-  CHARACTER(LEN=14), PARAMETER :: aname2 = "attr_character"!Character Attribute name
-  CHARACTER(LEN=11), PARAMETER :: aname3 = "attr_double"   !DOuble Attribute name
-  CHARACTER(LEN=9), PARAMETER :: aname4 = "attr_real"      !Real Attribute name
-  CHARACTER(LEN=12), PARAMETER :: aname5 = "attr_integer"  !Integer Attribute name
-  CHARACTER(LEN=9), PARAMETER :: aname6 = "attr_null"     !Null Attribute name
-
-  !
-  !data space rank and dimensions
-  !
-  INTEGER, PARAMETER :: RANK = 2
-  INTEGER, PARAMETER :: NX = 4
-  INTEGER, PARAMETER :: NY = 5
-
   !
   !general purpose integer
   !
@@ -213,8 +200,10 @@ SUBROUTINE test_attr_corder_create_compact(fcpl,fapl, total_error)
 ! Needed for get_info_by_name
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
+
 ! - - - arg types - - -
 
   INTEGER(HID_T), INTENT(IN) :: fcpl
@@ -401,6 +390,8 @@ SUBROUTINE test_attr_null_space(fcpl, fapl, total_error)
 !**
 !****************************************************************/
   USE HDF5
+  USE TH5_MISC
+
   IMPLICIT NONE
 
   INTEGER(HID_T), INTENT(IN) :: fcpl
@@ -413,8 +404,6 @@ SUBROUTINE test_attr_null_space(fcpl, fapl, total_error)
   INTEGER(HID_T) :: dataset
 
   CHARACTER(LEN=8) :: DSET1_NAME = "Dataset1"
-  INTEGER, PARAMETER :: NUM_DSETS = 3
-
 
   INTEGER :: error
 
@@ -532,6 +521,7 @@ SUBROUTINE test_attr_create_by_name(new_format,fcpl,fapl, total_error)
 !****************************************************************/
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -746,6 +736,7 @@ SUBROUTINE test_attr_info_by_idx(new_format, fcpl, fapl, total_error)
 !****************************************************************/
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -951,6 +942,7 @@ END SUBROUTINE test_attr_info_by_idx
 SUBROUTINE attr_info_by_idx_check(obj_id, attrname, n, use_index, total_error )
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -1091,6 +1083,7 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error)
 !****************************************************************/
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -1105,7 +1098,6 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error)
 
   CHARACTER(LEN=8) :: DSET1_NAME = "Dataset1"
   CHARACTER(LEN=8) :: DSET2_NAME = "Dataset2"
-  INTEGER, PARAMETER :: NUM_DSETS = 3
 
 
   INTEGER(HID_T) :: dataset, dataset2
@@ -1127,22 +1119,11 @@ SUBROUTINE test_attr_shared_rename( fcpl, fapl, total_error)
   CHARACTER(LEN=7) :: attrname
   CHARACTER(LEN=11) :: attrname2
 
-  CHARACTER(LEN=1), PARAMETER :: chr1 = '.'
-
   INTEGER :: u
-  INTEGER, PARAMETER :: SPACE1_RANK = 3
-  INTEGER, PARAMETER :: NX = 20
-  INTEGER, PARAMETER :: NY = 5
-  INTEGER, PARAMETER :: NZ = 10
   INTEGER(HID_T) :: my_fcpl
 
   CHARACTER(LEN=5), PARAMETER :: TYPE1_NAME = "/Type"
 
-  INTEGER, PARAMETER :: SPACE1_DIM1 = 4
-  INTEGER, PARAMETER :: SPACE1_DIM2 = 8
-  INTEGER, PARAMETER :: SPACE1_DIM3 = 10
-
-
   INTEGER :: test_shared
   INTEGER(HSIZE_T), DIMENSION(1) :: adims2 = (/1/) ! Attribute dimension
   INTEGER     ::   arank = 1                      ! Attribure rank
@@ -1412,6 +1393,7 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error)
 !****************************************************************/
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -1457,7 +1439,6 @@ SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error)
 
   INTEGER(SIZE_T) :: size
   CHARACTER(LEN=8) :: tmpname
-  CHARACTER(LEN=1), PARAMETER :: chr1 = '.'
 
   INTEGER :: idx_type
   INTEGER :: order
@@ -1773,6 +1754,7 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error)
 !****************************************************************/
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -1786,7 +1768,6 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error)
 
   CHARACTER(LEN=8) :: DSET1_NAME = "Dataset1"
   CHARACTER(LEN=8) :: DSET2_NAME = "Dataset2"
-  INTEGER, PARAMETER :: NUM_DSETS = 3
 
 
   INTEGER(HID_T) :: dataset, dataset2
@@ -1806,13 +1787,7 @@ SUBROUTINE test_attr_shared_delete(fcpl, fapl, total_error)
   INTEGER, DIMENSION(1) ::  attr_integer_data
   CHARACTER(LEN=7) :: attrname
 
-  CHARACTER(LEN=1), PARAMETER :: chr1 = '.'
-
   INTEGER :: u
-  INTEGER, PARAMETER :: SPACE1_RANK = 3
-  INTEGER, PARAMETER :: NX = 20
-  INTEGER, PARAMETER :: NY = 5
-  INTEGER, PARAMETER :: NZ = 10
   INTEGER(HID_T) :: my_fcpl
 
   CHARACTER(LEN=5), PARAMETER :: TYPE1_NAME = "/Type"
@@ -2056,6 +2031,7 @@ SUBROUTINE test_attr_dense_open( fcpl, fapl, total_error)
 !****************************************************************/
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -2207,6 +2183,7 @@ END SUBROUTINE test_attr_dense_open
 SUBROUTINE test_attr_dense_verify(loc_id, max_attr, total_error)
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -2302,6 +2279,7 @@ END SUBROUTINE test_attr_dense_verify
 SUBROUTINE test_attr_corder_create_basic( fcpl, fapl, total_error )
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -2424,6 +2402,7 @@ END SUBROUTINE test_attr_corder_create_basic
 SUBROUTINE test_attr_basic_write(fapl, total_error)
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -2445,8 +2424,6 @@ SUBROUTINE test_attr_basic_write(fapl, total_error)
   CHARACTER(LEN=25) :: check_name
   CHARACTER(LEN=18) :: chr_exact_size
 
-  INTEGER, PARAMETER :: SPACE1_RANK = 2
-
   CHARACTER(LEN=5), PARAMETER ::  ATTR1_NAME="Attr1"
   INTEGER, PARAMETER :: ATTR1_RANK = 1
   INTEGER, PARAMETER ::  ATTR1_DIM1 = 3
@@ -2623,6 +2600,7 @@ END SUBROUTINE test_attr_basic_write
 SUBROUTINE test_attr_many(new_format, fcpl, fapl, total_error)
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
 
@@ -2740,6 +2718,7 @@ END SUBROUTINE test_attr_many
 SUBROUTINE attr_open_check(fid, dsetname, obj_id, max_attrs, total_error )
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
   INTEGER(HID_T), INTENT(IN) :: fid
@@ -2750,7 +2729,6 @@ SUBROUTINE attr_open_check(fid, dsetname, obj_id, max_attrs, total_error )
 
   INTEGER :: u
   CHARACTER (LEN=8) :: attrname
-  INTEGER, PARAMETER :: NUM_DSETS = 3
   INTEGER :: error
   LOGICAL :: f_corder_valid ! Indicates whether the the creation order data is valid for this attribute
   INTEGER :: corder ! Is a positive integer containing the creation order of the attribute
@@ -2835,3 +2813,4 @@ SUBROUTINE attr_open_check(fid, dsetname, obj_id, max_attrs, total_error )
   ENDDO
 
 END SUBROUTINE attr_open_check
+END MODULE TH5A_1_8
diff --git a/fortran/test/tH5D.f90 b/fortran/test/tH5D.f90
index 9f7b50c..c0eb8f9 100644
--- a/fortran/test/tH5D.f90
+++ b/fortran/test/tH5D.f90
@@ -34,8 +34,12 @@
 !*****
 
 !
+MODULE TH5D
+
+CONTAINS
         SUBROUTINE datasettest(cleanup, total_error)
         USE HDF5 ! This module contains all necessary modules
+        USE TH5_MISC
 
           IMPLICIT NONE
           LOGICAL, INTENT(IN) :: cleanup
@@ -204,7 +208,7 @@
               do j = 1, 6
                   IF (data_out(i,j) .NE. dset_data(i, j)) THEN
                       write(*, *) "dataset test error occured"
-                      write(*,*) "data read is not the same as the data writen"
+                      write(*,*) "data read is not the same as the data written"
                   END IF
               end do
           end do
@@ -252,8 +256,10 @@
 
         SUBROUTINE extenddsettest(cleanup, total_error)
         USE HDF5 ! This module contains all necessary modules
+        USE TH5_MISC
 
           IMPLICIT NONE
+
           LOGICAL, INTENT(IN)  :: cleanup
           INTEGER, INTENT(OUT) :: total_error
 
@@ -308,6 +314,7 @@
           !general purpose integer
           !
           INTEGER :: i, j
+          INTEGER(HSIZE_T) :: ih, jh
 
           !
           !flag to check operation success
@@ -484,9 +491,9 @@
           !
           !Compare the data.
           !
-          do i = 1, dims1(1)
-              do j = 1, dims1(2)
-                  IF (data_out(i,j) .NE. data_in(i, j)) THEN
+          do ih = 1, dims1(1)
+              do jh = 1, dims1(2)
+                  IF (data_out(ih,jh) .NE. data_in(ih, jh)) THEN
                       write(*, *) "extend dataset test error occured"
                       write(*, *) "read value is not the same as the written values"
                   END IF
@@ -527,5 +534,5 @@
 
           RETURN
         END SUBROUTINE extenddsettest
-
+END MODULE TH5D
 
diff --git a/fortran/test/tH5E.f90 b/fortran/test/tH5E.f90
index 4d431a1..10ecaf6 100644
--- a/fortran/test/tH5E.f90
+++ b/fortran/test/tH5E.f90
@@ -31,15 +31,20 @@
 !
 !*****
 !
+MODULE TH5E
+
+CONTAINS
+
     SUBROUTINE error_report_test(cleanup, total_error)
 
 !   This subroutine tests following functionalities: h5eprint_f
 
    USE HDF5 ! This module contains all necessary modules
+   USE TH5_MISC
 
      IMPLICIT NONE
      LOGICAL, INTENT(IN)  :: cleanup
-     INTEGER, INTENT(OUT) :: total_error
+     INTEGER, INTENT(INOUT) :: total_error
 
      CHARACTER(LEN=6), PARAMETER :: filename = "etestf" ! File name
      CHARACTER(LEN=80) :: fix_filename
@@ -92,3 +97,6 @@
               CALL check("h5_cleanup_f", error, total_error)
      RETURN
      END SUBROUTINE error_report_test
+
+END MODULE TH5E
+
diff --git a/fortran/test/tH5E_F03.f90 b/fortran/test/tH5E_F03.f90
index 04e3190..82ba27c 100644
--- a/fortran/test/tH5E_F03.f90
+++ b/fortran/test/tH5E_F03.f90
@@ -34,10 +34,8 @@
 ! *****************************************
 ! ***        H 5 E   T E S T S
 ! *****************************************
-
 MODULE test_my_hdf5_error_handler
 
-  IMPLICIT NONE
 
 CONTAINS
 
@@ -56,9 +54,8 @@ CONTAINS
     IMPLICIT NONE
 
     ! estack_id is always passed from C as: H5E_DEFAULT
-    INTEGER(HID_T) :: estack_id 
+    INTEGER(HID_T) :: estack_id
     ! data that was registered with H5Eset_auto_f
-!    INTEGER, DIMENSION(1:2) :: data_inout
     INTEGER :: data_inout
 
     PRINT*, " "
@@ -82,10 +79,10 @@ CONTAINS
     IMPLICIT NONE
 
     ! estack_id is always passed from C as: H5E_DEFAULT
-    INTEGER(HID_T) :: estack_id 
+    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-  "
@@ -94,12 +91,19 @@ CONTAINS
     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
 
+
+
+MODULE TH5E_F03
+
+CONTAINS
+
 SUBROUTINE test_error(total_error)
 
   USE HDF5 
+  USE TH5_MISC
   USE ISO_C_BINDING
   USE test_my_hdf5_error_handler
 
@@ -109,27 +113,17 @@ SUBROUTINE test_error(total_error)
   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)
@@ -208,3 +202,5 @@ SUBROUTINE test_error(total_error)
   CALL h5dcreate_f(FAKE_ID,"a_dataset",H5T_NATIVE_INTEGER, space, dataset, error)
 
 END SUBROUTINE test_error
+
+END MODULE TH5E_F03
diff --git a/fortran/test/tH5F.f90 b/fortran/test/tH5F.f90
index d8f683c..931a046 100644
--- a/fortran/test/tH5F.f90
+++ b/fortran/test/tH5F.f90
@@ -1,4 +1,4 @@
-!****h* root/fortran/test/tH5F.f90
+!***rh* root/fortran/test/tH5F.f90
 !
 ! NAME
 !  tH5F.f90
@@ -31,11 +31,19 @@
 !  and another file with a dataset. Mounting is used to
 !  access the dataset from the second file as a member of a group 
 !  in the first file. 
+
+
+
+MODULE TH5F
+
+CONTAINS
+
         SUBROUTINE mountingtest(cleanup, total_error)
         USE HDF5  ! This module contains all necessary modules
+        USE TH5_MISC
           IMPLICIT NONE
           LOGICAL, INTENT(IN)  :: cleanup
-          INTEGER, INTENT(OUT) :: total_error
+          INTEGER, INTENT(INOUT) :: total_error
 
           !
           !the respective filename is "mount1.h5" and "mount2.h5"
@@ -241,7 +249,6 @@
           do i = 1, NX
               do j = 1, NY
                   IF (data_out(i,j) .NE. data_in(i, j)) THEN
-                      write(*, *) "mounting test error occured"
                   END IF
               end do
           end do
@@ -289,9 +296,10 @@
 
         SUBROUTINE reopentest(cleanup, total_error)
         USE HDF5  ! This module contains all necessary modules
+        USE TH5_MISC
           IMPLICIT NONE
           LOGICAL, INTENT(IN) :: cleanup
-          INTEGER, INTENT(OUT) :: total_error
+          INTEGER, INTENT(INOUT) :: total_error
 
           !
           CHARACTER(LEN=6), PARAMETER :: filename = "reopen"
@@ -475,9 +483,10 @@
 
         SUBROUTINE plisttest(cleanup, total_error)
          USE HDF5  ! This module contains all necessary modules
+         USE TH5_MISC
           IMPLICIT NONE
           LOGICAL, INTENT(IN)  :: cleanup
-          INTEGER, INTENT(OUT) :: total_error
+          INTEGER, INTENT(INOUT) :: total_error
 
           !
           !file names are "plist1.h5" and "plist2.h5"
@@ -574,9 +583,10 @@
 
         SUBROUTINE file_close(cleanup, total_error)
         USE HDF5  ! This module contains all necessary modules
+        USE TH5_MISC
           IMPLICIT NONE
           LOGICAL, INTENT(IN) :: cleanup
-          INTEGER, INTENT(OUT) :: total_error
+          INTEGER, INTENT(INOUT) :: total_error
           INTEGER              :: error
 
           !
@@ -702,10 +712,11 @@
 
         SUBROUTINE file_space(filename, cleanup, total_error)
         USE HDF5  ! This module contains all necessary modules
+        USE TH5_MISC
           IMPLICIT NONE
           CHARACTER(*), INTENT(IN) :: filename
           LOGICAL, INTENT(IN) :: cleanup
-          INTEGER, INTENT(OUT) :: total_error
+          INTEGER, INTENT(INOUT) :: total_error
           INTEGER              :: error
           !
           CHARACTER(LEN=3), PARAMETER :: grpname = "grp"
@@ -770,4 +781,4 @@
         END SUBROUTINE file_space
 
 
-
+END MODULE TH5F
diff --git a/fortran/test/tH5F_F03.f90 b/fortran/test/tH5F_F03.f90
index dea9a5d..c878a59 100644
--- a/fortran/test/tH5F_F03.f90
+++ b/fortran/test/tH5F_F03.f90
@@ -36,11 +36,16 @@
 ! ***        H 5 F   T E S T S
 ! *****************************************
 
+MODULE TH5F_F03
+
+CONTAINS
+
 SUBROUTINE test_get_file_image(total_error)
   !
   !  Tests the wrapper for h5fget_file_image
   !
-  USE HDF5 
+  USE HDF5
+  USE TH5_MISC 
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -62,10 +67,6 @@ SUBROUTINE test_get_file_image(total_error)
   INTEGER(hid_t) :: fapl          ! File access property
   INTEGER :: error                ! Error flag
 
-
-  RETURN ! DEBUG, PGI COMPILERS seem to have a bug in the INQUIRE functions,
-         ! waiting for an answer from PGI how to resolve the problem.
-
   ! Create new properties for file access
   CALL h5pcreate_f(H5P_FILE_ACCESS_F, fapl, error)
   CALL check("h5pcreate_f", error, total_error)
@@ -151,9 +152,9 @@ SUBROUTINE test_get_file_image(total_error)
   ALLOCATE(file_image_ptr(1:image_size))
 
   ! Open the test file using standard I/O calls 
-  OPEN(UNIT=10,FILE='tget_file_image.h5', ACCESS='STREAM')
+  OPEN(UNIT=10,FILE='tget_file_image.h5', FORM='UNFORMATTED', ACCESS='STREAM')
 
-  ! Read the test file from disk into the buffer 
+  ! Read the test file from disk into the buffer
   DO i = 1, image_size
      READ(10) file_image_ptr(i)
   ENDDO
@@ -173,3 +174,5 @@ SUBROUTINE test_get_file_image(total_error)
   DEALLOCATE(file_image_ptr,image_ptr)
 
 END SUBROUTINE test_get_file_image
+
+END MODULE TH5F_F03
diff --git a/fortran/test/tH5G.f90 b/fortran/test/tH5G.f90
index 6befa94..2ba174c 100644
--- a/fortran/test/tH5G.f90
+++ b/fortran/test/tH5G.f90
@@ -27,6 +27,10 @@
 !
 !*****
 
+MODULE TH5G
+
+CONTAINS
+
     SUBROUTINE group_test(cleanup, total_error)
 
 !   This subroutine tests following functionalities:
@@ -35,10 +39,11 @@
 !   h5gget_comment_f
 
      USE HDF5 ! This module contains all necessary modules
+     USE TH5_MISC
 
      IMPLICIT NONE
      LOGICAL, INTENT(IN)  :: cleanup
-     INTEGER, INTENT(OUT) :: total_error
+     INTEGER, INTENT(INOUT) :: total_error
 
      CHARACTER(LEN=5), PARAMETER :: filename = "gtest"    !File name
      CHARACTER(LEN=80) :: fix_filename
@@ -254,3 +259,5 @@
           if(cleanup) CALL h5_cleanup_f(filename, H5P_DEFAULT_F, error)
               CALL check("h5_cleanup_f", error, total_error)
   END SUBROUTINE group_test
+
+END MODULE TH5G
diff --git a/fortran/test/tH5G_1_8.f90 b/fortran/test/tH5G_1_8.f90
index fd55ba9..5e6f50a 100644
--- a/fortran/test/tH5G_1_8.f90
+++ b/fortran/test/tH5G_1_8.f90
@@ -28,12 +28,18 @@
 !  lapl_nlinks
 !
 !*****
+
+MODULE TH5G_1_8
+
+CONTAINS
+
 SUBROUTINE group_test(cleanup, total_error)
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
 
   INTEGER(HID_T) :: fapl, fapl2, my_fapl ! /* File access property lists */
 
@@ -134,9 +140,10 @@ END SUBROUTINE group_test
 SUBROUTINE group_info(cleanup, fapl, total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   INTEGER(HID_T), INTENT(IN) :: fapl
 
   INTEGER(HID_T) :: gcpl_id ! /* Group creation property list ID */
@@ -450,9 +457,10 @@ SUBROUTINE group_info(cleanup, fapl, total_error)
    SUBROUTINE timestamps(cleanup, fapl, total_error)
 
      USE HDF5 ! This module contains all necessary modules
+     USE TH5_MISC
 
      IMPLICIT NONE
-     INTEGER, INTENT(OUT) :: total_error
+     INTEGER, INTENT(INOUT) :: total_error
      INTEGER(HID_T), INTENT(IN) :: fapl
 
      INTEGER(HID_T) :: file_id !/* File ID */
@@ -646,9 +654,10 @@ SUBROUTINE group_info(cleanup, fapl, total_error)
    SUBROUTINE mklinks(fapl, total_error)
 
      USE HDF5 ! This module contains all necessary modules
+     USE TH5_MISC
 
      IMPLICIT NONE
-     INTEGER, INTENT(OUT) :: total_error
+     INTEGER, INTENT(INOUT) :: total_error
      INTEGER(HID_T), INTENT(IN) :: fapl
 
      INTEGER(HID_T) :: file, scalar, grp, d1
@@ -661,10 +670,10 @@ SUBROUTINE group_info(cleanup, fapl, total_error)
      INTEGER :: corder ! Specifies the link’s creation order position.
      LOGICAL :: f_corder_valid ! Indicates whether the value in corder is valid.
      INTEGER :: link_type ! Specifies the link class:
-     	                              !  H5L_TYPE_HARD_F      - Hard link
-     	                              !  H5L_TYPE_SOFT_F      - Soft link
-     	                              !  H5L_TYPE_EXTERNAL_F  - External link
-     	                              !  H5L_TYPE_ERROR _F    - Error
+                          !  H5L_TYPE_HARD_F      - Hard link
+                          !  H5L_TYPE_SOFT_F      - Soft link
+                          !  H5L_TYPE_EXTERNAL_F  - External link
+                          !  H5L_TYPE_ERROR _F    - Error
      INTEGER(HADDR_T) :: address  ! If the link is a hard link, address specifies the file address that the link points to
      INTEGER(SIZE_T) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value
 
@@ -741,9 +750,10 @@ SUBROUTINE group_info(cleanup, fapl, total_error)
   SUBROUTINE test_move_preserves(fapl_id, total_error)
 
     USE HDF5 ! This module contains all necessary modules
+    USE TH5_MISC
 
     IMPLICIT NONE
-    INTEGER, INTENT(OUT) :: total_error
+    INTEGER, INTENT(INOUT) :: total_error
     INTEGER(HID_T), INTENT(IN) :: fapl_id
 
     INTEGER(HID_T):: file_id
@@ -768,10 +778,10 @@ SUBROUTINE group_info(cleanup, fapl, total_error)
     INTEGER :: corder ! Specifies the link’s creation order position.
     LOGICAL :: f_corder_valid ! Indicates whether the value in corder is valid.
     INTEGER :: link_type ! Specifies the link class:
-     	                              !  H5L_TYPE_HARD_F      - Hard link
-     	                              !  H5L_TYPE_SOFT_F      - Soft link
-     	                              !  H5L_TYPE_EXTERNAL_F  - External link
-     	                              !  H5L_TYPE_ERROR _F    - Error
+                         !  H5L_TYPE_HARD_F      - Hard link
+                         !  H5L_TYPE_SOFT_F      - Soft link
+                         !  H5L_TYPE_EXTERNAL_F  - External link
+                         !  H5L_TYPE_ERROR _F    - Error
     INTEGER(HADDR_T) :: address  ! If the link is a hard link, address specifies the file address that the link points to
     INTEGER(SIZE_T) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value
 
@@ -948,9 +958,10 @@ SUBROUTINE lifecycle(cleanup, fapl2, total_error)
 
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   INTEGER(HID_T), INTENT(IN) :: fapl2
   INTEGER :: error
 
@@ -962,8 +973,8 @@ SUBROUTINE lifecycle(cleanup, fapl2, total_error)
   INTEGER(size_t) :: lheap_size_hint !/* Local heap size hint */
   INTEGER :: max_compact            !/* Maximum # of links to store in group compactly */
   INTEGER :: min_dense              !/* Minimum # of links to store in group "densely" */
-  INTEGER :: est_num_entries	!/* Estimated # of entries in group */
-  INTEGER :: est_name_len		!/* Estimated length of entry name */
+  INTEGER :: est_num_entries        !/* Estimated # of entries in group */
+  INTEGER :: est_name_len           !/* Estimated length of entry name */
   CHARACTER(LEN=NAME_BUF_SIZE) :: filename = 'fixx.h5'
   INTEGER(SIZE_T) :: LIFECYCLE_LOCAL_HEAP_SIZE_HINT = 256
   INTEGER :: LIFECYCLE_MAX_COMPACT = 4
@@ -1096,9 +1107,10 @@ SUBROUTINE lifecycle(cleanup, fapl2, total_error)
 
 !    USE ISO_C_BINDING
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   INTEGER(HID_T), INTENT(IN) :: fapl
   INTEGER :: error
 
@@ -1165,9 +1177,10 @@ END SUBROUTINE cklinks
 SUBROUTINE delete_by_idx(cleanup, fapl, total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   INTEGER(HID_T), INTENT(IN) :: fapl
 
   INTEGER(HID_T) :: file_id  ! /* File ID */
@@ -1406,6 +1419,7 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, &
     hard_link, use_index, total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   INTEGER, INTENT(INOUT) :: total_error
@@ -1509,6 +1523,7 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, &
   SUBROUTINE test_lcpl(cleanup, fapl, total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   INTEGER, INTENT(INOUT) :: total_error
@@ -1526,10 +1541,10 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, &
   INTEGER :: corder ! Specifies the link’s creation order position.
   LOGICAL :: f_corder_valid ! Indicates whether the value in corder is valid.
   INTEGER :: link_type ! Specifies the link class:
-     	                              !  H5L_TYPE_HARD_F      - Hard link
-     	                              !  H5L_TYPE_SOFT_F      - Soft link
-     	                              !  H5L_TYPE_EXTERNAL_F  - External link
-     	                              !  H5L_TYPE_ERROR _F    - Error
+                       !  H5L_TYPE_HARD_F      - Hard link
+                       !  H5L_TYPE_SOFT_F      - Soft link
+                       !  H5L_TYPE_EXTERNAL_F  - External link
+                       !  H5L_TYPE_ERROR _F    - Error
   INTEGER(HADDR_T) :: address  ! If the link is a hard link, address specifies the file address that the link points to
   INTEGER(SIZE_T) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value
 
@@ -1635,13 +1650,11 @@ SUBROUTINE link_info_by_idx_check(group_id, linkname, n, &
   CALL check("h5sget_simple_extent_dims_f",error, total_error)
 
   DO i = 1, 2
-     tmp1 = dimsout(i)
-     tmp2 = extend_dim(i)
-!EP     CALL VERIFY("H5Sget_simple_extent_dims", dimsout(i), extend_dim(i), total_error)
+     tmp1 = INT(dimsout(i))
+     tmp2 = INT(extend_dim(i))
      CALL VERIFY("H5Sget_simple_extent_dims", tmp1, tmp2, total_error)
-!EP     CALL VERIFY("H5Sget_simple_extent_dims", maxdimsout(i), dims(i), total_error)
-     tmp1 = maxdimsout(i)
-     tmp2 = dims(i)
+     tmp1 = INT(maxdimsout(i))
+     tmp2 = INT(dims(i))
      CALL VERIFY("H5Sget_simple_extent_dims", tmp1, tmp2, total_error)
   ENDDO
 
@@ -1822,6 +1835,7 @@ END SUBROUTINE test_lcpl
 SUBROUTINE objcopy(fapl, total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   INTEGER, INTENT(INOUT) :: total_error
@@ -1885,6 +1899,7 @@ END SUBROUTINE objcopy
 SUBROUTINE lapl_nlinks( fapl, total_error)
 
   USE HDF5
+  USE TH5_MISC
 
   IMPLICIT NONE
   INTEGER(HID_T), INTENT(IN) :: fapl
@@ -2140,3 +2155,5 @@ SUBROUTINE lapl_nlinks( fapl, total_error)
   CALL check("H5Fclose_f", error, total_error)
 
 END SUBROUTINE lapl_nlinks
+
+END MODULE TH5G_1_8
diff --git a/fortran/test/tH5I.f90 b/fortran/test/tH5I.f90
index 184edaf..088b4eb 100644
--- a/fortran/test/tH5I.f90
+++ b/fortran/test/tH5I.f90
@@ -26,16 +26,20 @@
 !  identifier_test
 !
 !*****
+MODULE TH5I
+
+CONTAINS
 
     SUBROUTINE identifier_test(cleanup, total_error)
 
 !   This subroutine tests following functionalities: h5iget_type_f
 
    USE HDF5 ! This module contains all necessary modules
+   USE TH5_MISC
 
      IMPLICIT NONE
      LOGICAL, INTENT(IN)  :: cleanup
-     INTEGER, INTENT(OUT) :: total_error
+     INTEGER, INTENT(INOUT) :: total_error
 
      CHARACTER(LEN=6), PARAMETER :: filename = "itestf" ! File name
      CHARACTER(LEN=80) :: fix_filename
@@ -311,3 +315,5 @@
 
      RETURN
      END SUBROUTINE identifier_test
+
+END MODULE TH5I
diff --git a/fortran/test/tH5L_F03.f90 b/fortran/test/tH5L_F03.f90
index f71f450..8cc17fb 100644
--- a/fortran/test/tH5L_F03.f90
+++ b/fortran/test/tH5L_F03.f90
@@ -30,14 +30,13 @@
 !  test_iter_group
 !
 !*****
-
 MODULE liter_cb_mod
 
   USE HDF5
   USE ISO_C_BINDING
   IMPLICIT NONE
-    
-  TYPE iter_enum 
+
+  TYPE iter_enum
      INTEGER RET_ZERO
      INTEGER RET_TWO
      INTEGER RET_CHANGE
@@ -74,7 +73,7 @@ CONTAINS
     TYPE(iter_info) :: op_data
 
     INTEGER, SAVE :: count
-    INTEGER, SAVE :: count2 
+    INTEGER, SAVE :: count2
 
 !!$    
 !!$    iter_info *info = (iter_info *)op_data;
@@ -108,6 +107,10 @@ CONTAINS
   END FUNCTION liter_cb
 END MODULE liter_cb_mod
 
+MODULE TH5L_F03
+
+CONTAINS
+
 ! *****************************************
 ! ***        H 5 L   T E S T S
 ! *****************************************
@@ -121,34 +124,29 @@ END MODULE liter_cb_mod
 SUBROUTINE test_iter_group(total_error)
 
   USE HDF5 
+  USE TH5_MISC
   USE ISO_C_BINDING
   USE liter_cb_mod
   IMPLICIT NONE
 
   INTEGER, INTENT(INOUT) :: total_error
   INTEGER(HID_T) :: fapl
-  INTEGER(HID_T) :: file !  File ID 
+  INTEGER(HID_T) :: file             !  File ID 
   INTEGER(hid_t) :: dataset          ! Dataset ID 
   INTEGER(hid_t) :: datatype         ! Common datatype ID 
   INTEGER(hid_t) :: filespace        ! Common dataspace ID 
-  INTEGER(hid_t) :: root_group,grp   ! Root group ID 
-  INTEGER i,j                  ! counting variable 
-  INTEGER(hsize_t) idx            ! Index in the group 
+  INTEGER(hid_t) :: grp              ! Group ID 
+  INTEGER i,j                        ! counting variable 
+  INTEGER(hsize_t) idx               ! Index in the group 
   CHARACTER(LEN=11) :: DATAFILE = "titerate.h5"
   INTEGER, PARAMETER :: ndatasets = 50
   CHARACTER(LEN=10) :: name !  temporary name buffer 
   CHARACTER(LEN=10), DIMENSION(1:ndatasets+2) :: lnames !  Names of the links created 
-!!$    char dataset_name[NAMELEN];   dataset name 
 
   TYPE(iter_info), TARGET :: info
 
-!!$    iter_info info;          Custom iteration information 
-!!$    H5G_info_t ginfo;        Buffer for querying object's info 
-!!$    herr_t ret;		     Generic return value 
-
   INTEGER :: error
   INTEGER :: ret_value
-  TYPE(C_PTR) :: f_ptr
   TYPE(C_FUNPTR) :: f1
   TYPE(C_PTR) :: f2
   CHARACTER(LEN=2) :: ichr2
@@ -319,3 +317,5 @@ SUBROUTINE test_iter_group(total_error)
   CALL check("H5Fclose_f", error, total_error)
 
 END SUBROUTINE test_iter_group
+
+END MODULE TH5L_F03
diff --git a/fortran/test/fortranlib_test_1_8.f90 b/fortran/test/tH5MISC_1_8.f90
similarity index 84%
copy from fortran/test/fortranlib_test_1_8.f90
copy to fortran/test/tH5MISC_1_8.f90
index dc45560..bb7d50a 100644
--- a/fortran/test/fortranlib_test_1_8.f90
+++ b/fortran/test/tH5MISC_1_8.f90
@@ -1,7 +1,7 @@
-!****h* root/fortran/test/fortranlib_test_1_8.f90
+!****h* root/fortran/test/tH5MISC_1_8.f90
 !
 ! NAME
-!  fortranlib_test_1_8.f90
+!  tH5MISC_1_8.f90
 !
 ! FUNCTION
 !  Basic testing of Fortran API's introduced in 1.8 release.
@@ -23,99 +23,13 @@
 ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 !
 !*****
+MODULE TH5MISC_1_8
 
-PROGRAM fortranlibtest
-
-  USE HDF5
-
-  IMPLICIT NONE
-  INTEGER :: total_error = 0
-  INTEGER :: error
-  INTEGER :: ret_total_error
-  INTEGER :: majnum, minnum, relnum
-  LOGICAL :: cleanup, status
-
-  CALL h5open_f(error)
-
-  cleanup = .TRUE.
-  CALL h5_env_nocleanup_f(status)
-  IF(status) cleanup=.FALSE.
-
-  WRITE(*,*) '                       ==========================                            '
-  WRITE(*,*) '                              FORTRAN 1.8 tests '
-  WRITE(*,*) '                       ==========================                            '
-  CALL h5get_libversion_f(majnum, minnum, relnum, total_error)
-  IF(total_error .EQ. 0) THEN
-     WRITE(*, '(" FORTRANLIB_TEST is linked with HDF5 Library version ")', advance="NO")
-     WRITE(*, '(I1)', advance="NO") majnum
-     WRITE(*, '(".")', advance="NO")
-     WRITE(*, '(I1)', advance="NO") minnum
-     WRITE(*, '(" release ")', advance="NO")
-     WRITE(*, '(I3)') relnum
-  ELSE
-     total_error = total_error + 1
-  ENDIF
-  WRITE(*,*)
-
-  ret_total_error = 0
-  CALL file_space("file_space_1_8",cleanup, ret_total_error)
-  CALL write_test_status(ret_total_error, &
-       ' Testing file free space', &
-       total_error)
-
-  ret_total_error = 0
-  CALL attribute_test_1_8(cleanup, ret_total_error)
-  CALL write_test_status(ret_total_error, &
-       ' Testing attributes', &
-       total_error)
-
-  ret_total_error = 0
-  CALL group_test(cleanup, ret_total_error)
-  CALL write_test_status(ret_total_error, &
-       ' Testing groups', &
-       total_error)
-
-  ret_total_error = 0
-  CALL test_h5o(cleanup, ret_total_error)
-  CALL write_test_status(ret_total_error, &
-       ' Testing object interface', &
-       total_error)
-
-  ret_total_error = 0
-  CALL dtransform(cleanup, ret_total_error)
-  CALL write_test_status(ret_total_error, &
-       ' Testing data transform', &
-       total_error)
-
-  ret_total_error = 0
-  CALL test_h5s_encode(cleanup, ret_total_error)
-  CALL write_test_status(ret_total_error, &
-       ' Testing dataspace encoding and decoding', &
-       total_error)
-
-  ret_total_error = 0
-  CALL test_scaleoffset(cleanup, ret_total_error )
-  CALL write_test_status(ret_total_error, &
-       ' Testing scaleoffset filter', &
-       total_error)
-
-  WRITE(*,*)
-
-  WRITE(*,*) '                  ============================================  '
-  WRITE(*, fmt = '(19x, 27a)', advance='NO') ' FORTRAN tests completed with '
-  WRITE(*, fmt = '(i4)', advance='NO') total_error
-  WRITE(*, fmt = '(12a)' ) ' error(s) ! '
-  WRITE(*,*) '                  ============================================  '
-
-  CALL h5close_f(error)
-
-  ! if errors detected, exit with non-zero code.
-  IF (total_error .NE. 0) CALL h5_exit_f (1)
-
-END PROGRAM fortranlibtest
+CONTAINS
 
 SUBROUTINE dtransform(cleanup, total_error)
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
@@ -180,13 +94,14 @@ END SUBROUTINE dtransform
 SUBROUTINE test_genprop_basic_class(cleanup, total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
   INTEGER, INTENT(INOUT) :: total_error
 
-  INTEGER(HID_T) :: cid1		!/* Generic Property class ID */
-  INTEGER(HID_T) :: cid2		!/* Generic Property class ID */
+  INTEGER(HID_T) :: cid1    !/* Generic Property class ID */
+  INTEGER(HID_T) :: cid2    !/* Generic Property class ID */
 
   CHARACTER(LEN=7) :: CLASS1_NAME = "Class 1"
   CHARACTER(LEN=7)  :: name              ! /* Name of class */
@@ -275,14 +190,14 @@ SUBROUTINE test_h5s_encode(cleanup, total_error)
 !****************************************************************/
 
   USE HDF5 ! This module contains all necessary modules
-
+  USE TH5_MISC
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
   INTEGER, INTENT(INOUT) :: total_error
 
   INTEGER(hid_t) :: sid1, sid3!	/* Dataspace ID		*/
   INTEGER(hid_t) :: decoded_sid1, decoded_sid3
-  INTEGER :: rank	!/* LOGICAL rank of dataspace	*/
+  INTEGER :: rank    !/* LOGICAL rank of dataspace	*/
   INTEGER(size_t) :: sbuf_size=0, scalar_size=0
 
 ! Make sure the size is large
@@ -424,7 +339,7 @@ END SUBROUTINE test_h5s_encode
 SUBROUTINE test_scaleoffset(cleanup, total_error )
 
   USE HDF5
-
+  USE TH5_MISC
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
   INTEGER, INTENT(INOUT) :: total_error
@@ -505,7 +420,7 @@ SUBROUTINE test_scaleoffset(cleanup, total_error )
 
   CALL RANDOM_SEED()
   ! Initialize data of hyperslab
-  DO j = 1, dims(2)
+  DO j = 1, INT(dims(2))
      CALL RANDOM_NUMBER(x)
      orig_data(1,j) = INT(x*10000.)
      IF(MOD(j,2_size_t).EQ.0)THEN
@@ -532,7 +447,7 @@ SUBROUTINE test_scaleoffset(cleanup, total_error )
   CALL CHECK(" H5Dread_f", error, total_error)
 
   ! Check that the values read are the same as the values written 
-  DO j = 1, dims(2)
+  DO j = 1, INT(dims(2))
      IF(new_data(1,j) .NE. orig_data(1,j))THEN
         total_error = total_error + 1
         WRITE(*,'("    Read different values than written.")')
@@ -555,3 +470,5 @@ SUBROUTINE test_scaleoffset(cleanup, total_error )
   CALL CHECK(" H5Fclose_f", error, total_error)
 
 END SUBROUTINE test_scaleoffset
+
+END MODULE TH5MISC_1_8
diff --git a/fortran/test/tH5O.f90 b/fortran/test/tH5O.f90
index b68e7ca..8672e3c 100644
--- a/fortran/test/tH5O.f90
+++ b/fortran/test/tH5O.f90
@@ -26,13 +26,17 @@
 !  test_h5o, test_h5o_link, test_h5o_plist
 !
 !*****
+MODULE TH5O
+
+CONTAINS
 
 SUBROUTINE test_h5o(cleanup, total_error)
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   INTEGER :: error
 
   CALL test_h5o_plist(total_error) ! Test object creation properties
@@ -54,9 +58,10 @@ END SUBROUTINE test_h5o
 SUBROUTINE test_h5o_link(total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
 
   INTEGER(HID_T) :: file_id
   INTEGER(HID_T) :: group_id
@@ -66,7 +71,6 @@ SUBROUTINE test_h5o_link(total_error)
   INTEGER(HID_T) :: fapl_id
   INTEGER(HID_T) :: lcpl_id
   INTEGER(HID_T) :: ocpypl_id
-  INTEGER(HID_T) :: mem_space_id, file_space_id, xfer_prp
   CHARACTER(LEN=11), PARAMETER :: TEST_FILENAME = 'TestFile.h5'
   INTEGER, PARAMETER :: TEST6_DIM1 = 2, TEST6_DIM2 = 5
 !EP  INTEGER(HSIZE_T), DIMENSION(1:2), PARAMETER :: dims = (/TEST6_DIM1,TEST6_DIM2/)
@@ -74,11 +78,11 @@ SUBROUTINE test_h5o_link(total_error)
 !EP  INTEGER, DIMENSION(1:TEST6_DIM1,1:TEST6_DIM2) :: wdata, rdata
   INTEGER, DIMENSION(TEST6_DIM1,TEST6_DIM2) :: wdata, rdata
 
-  INTEGER, PARAMETER :: TRUE = 1, FALSE = 0
+  INTEGER, PARAMETER :: TRUE = 1
 
   LOGICAL :: committed ! /* Whether the named datatype is committed 
 
-  INTEGER :: i, n, j
+  INTEGER :: i, j
   INTEGER ::  error  ! /* Value returned from API calls 
 
   CHARACTER(LEN=14) :: NAME_DATATYPE_SIMPLE="H5T_NATIVE_INT"
@@ -91,8 +95,7 @@ SUBROUTINE test_h5o_link(total_error)
   INTEGER          , PARAMETER :: dim0     = 4
 
   INTEGER(HSIZE_T), DIMENSION(1:1)    :: dims2 = (/dim0/) ! size read/write buffer
-  INTEGER         , DIMENSION(1:dim0) :: wdata2, &  ! Write buffer 
-                                         rdata2     ! Read buffer
+  INTEGER         , DIMENSION(1:dim0) :: wdata2   ! Write buffer 
   LOGICAL :: link_exists
   CHARACTER(LEN=8)  :: chr_exact
   CHARACTER(LEN=10) :: chr_lg
@@ -535,7 +538,7 @@ SUBROUTINE test_h5o_link(total_error)
 
   ! close the datatype
   CALL h5tclose_f(tid, error)
-  CALL check("h5tclose_f",error)
+  CALL check("h5tclose_f",error, total_error)
 
   CALL h5ocopy_f(file_id, NAME_DATATYPE_SIMPLE, file_id, NAME_DATATYPE_SIMPLE2, error)
   CALL check("h5ocopy_f",error,total_error)
@@ -576,9 +579,10 @@ END SUBROUTINE test_h5o_link
 SUBROUTINE test_h5o_plist(total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
 
   INTEGER(hid_t) :: fid                        ! HDF5 File ID      
   INTEGER(hid_t) :: grp, dset, dtype, dspace   ! Object identifiers 
@@ -789,3 +793,5 @@ SUBROUTINE test_h5o_plist(total_error)
   CALL check("H5Pclose_f", error, total_error)
 
 END SUBROUTINE test_h5o_plist
+
+END MODULE TH5O
diff --git a/fortran/test/tH5O_F03.f90 b/fortran/test/tH5O_F03.f90
index f060a7d..598e83e 100644
--- a/fortran/test/tH5O_F03.f90
+++ b/fortran/test/tH5O_F03.f90
@@ -112,6 +112,10 @@ CONTAINS
 
 END MODULE visit_cb
 
+
+MODULE TH5O_F03
+
+CONTAINS
 !/****************************************************************
 !**
 !**  test_h5o_refcount(): Test H5O refcounting functions.
@@ -121,6 +125,7 @@ END MODULE visit_cb
 SUBROUTINE test_h5o_refcount(total_error)
 
   USE HDF5 
+  USE TH5_MISC
   USE ISO_C_BINDING
   IMPLICIT NONE
 
@@ -259,6 +264,7 @@ END SUBROUTINE test_h5o_refcount
 SUBROUTINE obj_visit(total_error)
 
   USE HDF5
+  USE TH5_MISC
 
   USE visit_cb
   USE ISO_C_BINDING
@@ -268,7 +274,6 @@ SUBROUTINE obj_visit(total_error)
 
   TYPE(ovisit_ud_t), TARGET :: udata ! User-data for visiting
   INTEGER(hid_t) :: fid = -1
-  INTEGER(hid_t) :: gid = -1  ! Group ID
   TYPE(C_PTR) :: f_ptr
   TYPE(C_FUNPTR) :: fun_ptr
   CHARACTER(LEN=180) :: object_name
@@ -344,6 +349,7 @@ END SUBROUTINE obj_visit
 SUBROUTINE obj_info(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
   IMPLICIT NONE
 
@@ -356,7 +362,6 @@ SUBROUTINE obj_info(total_error)
   TYPE(hobj_ref_t_f), TARGET :: wref     ! Reference to write 
   TYPE(hobj_ref_t_f), TARGET :: rref     ! Reference to read
   TYPE(H5O_info_t) :: oinfo              ! Object info struct 
-  INTEGER :: count = 0                   ! Count within iterated group 
   INTEGER :: error
   TYPE(C_PTR) :: f_ptr
 
@@ -477,6 +482,7 @@ END SUBROUTINE obj_info
 SUBROUTINE build_visit_file(fid)
 
   USE HDF5
+  USE TH5_MISC
   IMPLICIT NONE
 
   INTEGER(hid_t) :: fid                  ! File ID 
@@ -545,3 +551,5 @@ SUBROUTINE build_visit_file(fid)
   CALL H5Tclose_f(tid, error)
 
 END SUBROUTINE build_visit_file
+
+END MODULE TH5O_F03
diff --git a/fortran/test/tH5P.f90 b/fortran/test/tH5P.f90
index 4c78334..c94d564 100644
--- a/fortran/test/tH5P.f90
+++ b/fortran/test/tH5P.f90
@@ -26,6 +26,9 @@
 !  external_test, multi_file_test
 !
 !*****
+MODULE TH5P
+
+CONTAINS
 
 SUBROUTINE external_test(cleanup, total_error)
 
@@ -34,10 +37,11 @@ SUBROUTINE external_test(cleanup, total_error)
 !   h5pget_external_f
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
   
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   
   CHARACTER(LEN=8), PARAMETER :: filename = "external"
   CHARACTER(LEN=80) :: fix_filename
@@ -150,10 +154,11 @@ END SUBROUTINE external_test
 
 SUBROUTINE multi_file_test(cleanup, total_error)
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
   
   IMPLICIT NONE
   LOGICAL, INTENT(IN) :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   
   CHARACTER(LEN=9), PARAMETER :: filename = "multidset" ! File name
   CHARACTER(LEN=80) :: fix_filename
@@ -419,15 +424,15 @@ END SUBROUTINE multi_file_test
 SUBROUTINE test_chunk_cache(cleanup, total_error) 
 
   USE HDF5 ! This module contains all necessary modules 
+  USE TH5_MISC
   
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   
   CHARACTER(LEN=14), PARAMETER :: filename="chunk_cache"
   CHARACTER(LEN=80) :: fix_filename
   INTEGER(hid_t) :: fid = -1        ! File ID 
-  INTEGER(hid_t) :: file
   INTEGER(hid_t) :: fapl_local = -1 !  Local fapl 
   INTEGER(hid_t) :: fapl_def = -1  !  Default fapl 
   INTEGER(hid_t) :: dcpl = -1      ! Dataset creation property list ID 
@@ -445,6 +450,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   INTEGER(size_t) rdcc_nelmts
   INTEGER(size_t) rdcc_nbytes
   REAL :: rdcc_w0
+  LOGICAL :: differ
 
 
   CALL h5_fixname_f(filename, fix_filename, H5P_DEFAULT_F, error)
@@ -468,7 +474,8 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("H5Pget_chunk_cache_f", error, total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nslots_1), INT(nslots_4), total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nbytes_1), INT(nbytes_4), total_error)
-  IF(w0_1.NE.w0_4)THEN
+
+  IF( .NOT.dreal_eq( REAL(w0_1,dp), REAL( w0_4, dp)) ) THEN
      CALL VERIFYlogical("H5Pget_chunk_cache_f", .TRUE., .FALSE., total_error)
   ENDIF
 
@@ -526,7 +533,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("H5Pget_chunk_cache_f", error, total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nslots_2), INT(nslots_4), total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nbytes_2), INT(nbytes_4), total_error)
-  IF(w0_2.NE.w0_4)THEN
+  IF( .NOT.dreal_eq( REAL(w0_2,dp), REAL( w0_4, dp)) ) THEN
      CALL VERIFYlogical("H5Pget_chunk_cache_f", .TRUE., .FALSE., total_error)
   ENDIF
   CALL H5Pclose_f(dapl2,error) 
@@ -558,7 +565,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("H5Pget_chunk_cache_f", error, total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nslots_3), INT(nslots_4), total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nbytes_2), INT(nbytes_4), total_error)
-  IF(w0_3.NE.w0_4)THEN
+  IF( .NOT.dreal_eq( REAL(w0_3,dp), REAL( w0_4, dp)) ) THEN
      CALL VERIFYlogical("H5Pget_chunk_cache_f4", .TRUE., .FALSE., total_error)
   ENDIF
   CALL H5Pclose_f(dapl2,error)
@@ -578,7 +585,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("H5Pget_chunk_cache_f", error, total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nslots_2), INT(nslots_4), total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nbytes_2), INT(nbytes_4), total_error)
-  IF(w0_2.NE.w0_4)THEN
+  IF( .NOT.dreal_eq( REAL(w0_2,dp), REAL( w0_4, dp)) ) THEN
      CALL VERIFYlogical("H5Pget_chunk_cache_f", .TRUE., .FALSE., total_error)
   ENDIF
   CALL H5Pclose_f(dapl2,error) 
@@ -598,7 +605,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("H5Pget_chunk_cache_f", error, total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nslots_2), INT(nslots_4), total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nbytes_2), INT(nbytes_4), total_error)
-  IF(w0_2.NE.w0_4)THEN
+  IF( .NOT.dreal_eq( REAL(w0_2,dp), REAL( w0_4, dp)) ) THEN
      CALL VERIFYlogical("H5Pget_chunk_cache_f", .TRUE., .FALSE., total_error)
   ENDIF
   ! Don't close dapl2, we will use it in the next section
@@ -635,7 +642,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("H5Pget_chunk_cache_f", error, total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nslots_2), INT(nslots_4), total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nbytes_2), INT(nbytes_4), total_error)
-  IF(w0_2.NE.w0_4)THEN
+  IF( .NOT.dreal_eq( REAL(w0_2,dp), REAL( w0_4, dp)) ) THEN
      CALL VERIFYlogical("H5Pget_chunk_cache_f", .TRUE., .FALSE., total_error)
   ENDIF
 
@@ -660,7 +667,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("H5Pget_chunk_cache_f", error, total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nslots_3), INT(nslots_4), total_error)
   CALL VERIFY("H5Pget_chunk_cache_f", INT(nbytes_2), INT(nbytes_4), total_error)
-  IF(w0_3.NE.w0_4)THEN
+  IF( .NOT.dreal_eq( REAL(w0_3,dp), REAL( w0_4, dp)) ) THEN
      CALL VERIFYlogical("H5Pget_chunk_cache_f", .TRUE., .FALSE., total_error)
   ENDIF
 
@@ -687,3 +694,5 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
   CALL check("h5_cleanup_f", error, total_error)
 
 END SUBROUTINE test_chunk_cache
+
+END MODULE TH5P
diff --git a/fortran/test/tH5P_F03.f90 b/fortran/test/tH5P_F03.f90
index 02ca9dc..6039a52 100644
--- a/fortran/test/tH5P_F03.f90
+++ b/fortran/test/tH5P_F03.f90
@@ -34,7 +34,6 @@
 ! *****************************************
 ! ***        H 5 P   T E S T S
 ! *****************************************
-
 MODULE test_genprop_cls_cb1_mod
 
   ! Callback subroutine for test_genprop_class_callback
@@ -70,6 +69,10 @@ CONTAINS
 
 END MODULE test_genprop_cls_cb1_mod
 
+MODULE TH5P_F03
+
+CONTAINS
+
 !/*-------------------------------------------------------------------------
 ! * Function:	test_create
 ! *
@@ -90,6 +93,7 @@ END MODULE test_genprop_cls_cb1_mod
 SUBROUTINE test_create(total_error)
 
   USE HDF5 
+  USE TH5_MISC
   USE ISO_C_BINDING
   IMPLICIT NONE
 
@@ -97,8 +101,7 @@ SUBROUTINE test_create(total_error)
   INTEGER(HID_T) :: fapl
 
   INTEGER(hid_t) :: file=-1, space=-1, dcpl=-1, comp_type_id=-1
-  INTEGER(hid_t) :: dset1=-1, dset2=-1, dset3=-1, dset4=-1, dset5=-1, &
-       dset6=-1, dset7=-1, dset8=-1, dset9=-1
+  INTEGER(hid_t) :: dset9=-1
   INTEGER(hsize_t), DIMENSION(1:5), PARAMETER :: cur_size = (/2, 8, 8, 4, 2/)
   INTEGER(hsize_t), DIMENSION(1:5), PARAMETER :: ch_size= (/1, 1, 1, 4, 1/)
   CHARACTER(LEN=14) :: filename ='test_create.h5'
@@ -112,15 +115,10 @@ SUBROUTINE test_create(total_error)
   END TYPE comp_datatype
 
   TYPE(comp_datatype), TARGET :: rd_c, fill_ctype
-
-  INTEGER(SIZE_T) :: type_sizei  ! Size of the integer datatype 
-  INTEGER(SIZE_T) :: type_sizer  ! Size of the real datatype 
-  INTEGER(SIZE_T) :: type_sized  ! Size of the double datatype 
-  INTEGER(SIZE_T) :: type_sizec  ! Size of the double datatype
-  INTEGER(SIZE_T) :: sizeof_compound ! total size of compound
   INTEGER :: error
   INTEGER(SIZE_T) :: h5off
   TYPE(C_PTR) :: f_ptr
+  LOGICAL :: differ1, differ2
   
   !/*
   ! * Create a file.
@@ -166,7 +164,7 @@ SUBROUTINE test_create(total_error)
   CALL H5Pget_fill_value_f(dcpl, comp_type_id, f_ptr, error)
   CALL check("H5Pget_fill_value_f",error, total_error)
 
-  fill_ctype%y = 4444.
+  fill_ctype%y = 4444.D0
   fill_ctype%z = 'S'
   fill_ctype%a = 5555.
   fill_ctype%x = 55
@@ -207,10 +205,10 @@ SUBROUTINE test_create(total_error)
   CALL H5Pget_fill_value_f(dcpl, comp_type_id, f_ptr, error)
   CALL check("H5Pget_fill_value_f", error, total_error)
 
-  IF( rd_c%a .NE. fill_ctype%a .OR. &
-       rd_c%y .NE. fill_ctype%y .OR. &
-       rd_c%x .NE. fill_ctype%x .OR. &
-       rd_c%z .NE. fill_ctype%z )THEN
+  IF( .NOT.dreal_eq( REAL(rd_c%a,dp), REAL(fill_ctype%a, dp)) .OR. &
+      .NOT.dreal_eq( REAL(rd_c%y,dp), REAL(fill_ctype%y, dp)) .OR. &
+      rd_c%x .NE. fill_ctype%x .OR. &
+      rd_c%z .NE. fill_ctype%z )THEN
 
      PRINT*,"***ERROR: Returned wrong fill value"
      total_error = total_error + 1
@@ -231,17 +229,18 @@ END SUBROUTINE test_create
 
 SUBROUTINE test_genprop_class_callback(total_error)
 
-  !/****************************************************************
-  !**
-  !**  test_genprop_class_callback(): Test basic generic property list code.
-  !**      Tests callbacks for property lists in a generic class.
-  !**
-  !**  FORTRAN TESTS:
-  !**      Tests function H5Pcreate_class_f with callback.
-  !**
-  !****************************************************************/
+  !
+  !
+  !  test_genprop_class_callback(): Test basic generic property list code.
+  !      Tests callbacks for property lists in a generic class.
+  !
+  !  FORTRAN TESTS:
+  !      Tests function H5Pcreate_class_f with callback.
+  !
+  !
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
   USE test_genprop_cls_cb1_mod
   IMPLICIT NONE
@@ -261,8 +260,8 @@ SUBROUTINE test_genprop_class_callback(total_error)
   TYPE(cb_struct), TARGET :: crt_cb_struct, cls_cb_struct
 
   CHARACTER(LEN=7) :: CLASS1_NAME = "Class 1"
-  TYPE(C_FUNPTR) :: f1, f3, f5
-  TYPE(C_PTR) :: f2, f4, f6
+  TYPE(C_FUNPTR) :: f1, f5
+  TYPE(C_PTR) :: f2, f6
 
   CHARACTER(LEN=10) :: PROP1_NAME = "Property 1"
   INTEGER(SIZE_T) :: PROP1_SIZE = 10
@@ -364,6 +363,79 @@ SUBROUTINE test_genprop_class_callback(total_error)
 END SUBROUTINE test_genprop_class_callback
 
 !-------------------------------------------------------------------------
+! Function: test_h5p_file_image
+!
+! Purpose: Tests APIs:
+!          h5pget_file_image_f and h5pset_file_image_f
+!
+! Return:      Success: 0
+!              Failure: -1
+!
+! FORTRAN Programmer: M. Scot Breitenfeld
+!                     April 1, 2014
+!-------------------------------------------------------------------------
+
+SUBROUTINE test_h5p_file_image(total_error)
+
+  USE HDF5
+  USE TH5_MISC
+  USE, INTRINSIC :: iso_c_binding
+  IMPLICIT NONE
+  INTEGER, INTENT(INOUT) :: total_error
+  INTEGER(hid_t) ::   fapl_1 = -1
+  INTEGER, PARAMETER :: count = 10
+  INTEGER, DIMENSION(1:count), TARGET :: buffer
+  INTEGER, DIMENSION(1:count), TARGET :: temp
+  INTEGER :: i   
+  INTEGER(size_t) :: size
+  INTEGER(size_t) :: temp_size
+  INTEGER :: error ! error return value
+  TYPE(C_PTR) :: f_ptr
+  TYPE(C_PTR), DIMENSION(1:count) :: f_ptr1
+  TYPE(C_PTR), DIMENSION(1:1) :: f_ptr2
+
+  ! Initialize file image buffer
+  DO i = 1, count
+     buffer(i) = i*10
+  ENDDO
+
+  ! Create fapl
+  CALL h5pcreate_f(H5P_FILE_ACCESS_F, fapl_1, error)
+  CALL check("h5pcreate_f", error, total_error)
+
+  ! Test with NULL ptr
+  f_ptr2(1) = C_NULL_PTR
+  temp_size = 1
+  CALL h5pget_file_image_f(fapl_1, f_ptr2, temp_size, error)
+  CALL check("h5pget_file_image_f", error, total_error)
+  CALL verify("h5pget_file_image_f", INT(temp_size), 0, total_error)
+
+  ! Set file image
+  f_ptr = C_LOC(buffer(1))
+  size = SIZEOF(buffer)
+  CALL h5pset_file_image_f(fapl_1, f_ptr, size, error)
+  CALL check("h5pset_file_image_f", error, total_error)
+  
+  ! Get the same data back
+  DO i = 1, count
+     f_ptr1(i) = C_LOC(temp(i))
+  ENDDO
+
+  temp_size = 0
+  CALL h5pget_file_image_f(fapl_1, f_ptr1, temp_size, error)
+  CALL check("h5pget_file_image_f", error, total_error)
+
+  ! Check that sizes are the same, and that the buffers are identical but separate
+  CALL VERIFY("h5pget_file_image_f", INT(temp_size), INT(size), total_error)
+  
+  ! Verify the image data is correct
+  DO i = 1, count
+     CALL VERIFY("h5pget_file_image_f", temp(i), buffer(i), total_error)
+  ENDDO
+
+END SUBROUTINE test_h5p_file_image
+
+!-------------------------------------------------------------------------
 ! Function: external_test_offset
 !
 ! Purpose: Tests APIs:
@@ -379,10 +451,11 @@ END SUBROUTINE test_genprop_class_callback
 SUBROUTINE external_test_offset(cleanup,total_error)
 
   USE ISO_C_BINDING
+  USE TH5_MISC
   USE HDF5 ! This module contains all necessary modules
 
   IMPLICIT NONE
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   LOGICAL, INTENT(IN)  :: cleanup
 
   INTEGER(hid_t) :: fapl=-1   ! file access property list
@@ -475,7 +548,7 @@ SUBROUTINE external_test_offset(cleanup,total_error)
 
   CALL h5sclose_f(hs_space, error)
   CALL check("h5sclose_f", error, total_error)
-  DO i = hs_start(1)+1, hs_start(1)+hs_count(1)
+  DO i = INT(hs_start(1))+1, INT(hs_start(1)+hs_count(1))
      IF(whole(i) .NE. i-1)THEN
         WRITE(*,*) "Incorrect value(s) read."
         total_error =  total_error + 1
@@ -503,3 +576,4 @@ SUBROUTINE external_test_offset(cleanup,total_error)
   CALL check("h5_cleanup_f", error, total_error)
 
 END SUBROUTINE external_test_offset
+END MODULE TH5P_F03
diff --git a/fortran/test/tH5R.f90 b/fortran/test/tH5R.f90
index ac105fc..bd6264f 100644
--- a/fortran/test/tH5R.f90
+++ b/fortran/test/tH5R.f90
@@ -31,11 +31,16 @@
 !
 !*****
 !
+MODULE TH5R
+
+CONTAINS
+
 SUBROUTINE refobjtest(cleanup, total_error)
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
 
   CHARACTER(LEN=9), PARAMETER :: filename = "reference"
   CHARACTER(LEN=80) :: fix_filename
@@ -66,7 +71,6 @@ SUBROUTINE refobjtest(cleanup, total_error)
 
   CHARACTER(LEN=7) :: buf        ! buffer to hold the region name
   CHARACTER(LEN=16) :: buf_big    ! buffer bigger then needed
-  CHARACTER(LEN=4) :: buf_small  ! buffer smaller then needed
   INTEGER(SIZE_T) :: buf_size     ! returned size of the region buffer name
 
   !
@@ -241,11 +245,12 @@ END SUBROUTINE refobjtest
 !
 SUBROUTINE refregtest(cleanup, total_error)
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 !  use iso_c_binding  ! NOTE: if this is uncommented, then need to move subroutine into another file.
 
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
 
   CHARACTER(LEN=6), PARAMETER :: filename = "Refreg"
   CHARACTER(LEN=80) :: fix_filename
@@ -478,3 +483,4 @@ SUBROUTINE refregtest(cleanup, total_error)
 
 END SUBROUTINE refregtest
 
+END MODULE TH5R
diff --git a/fortran/test/tH5S.f90 b/fortran/test/tH5S.f90
index e3a44ad..eaaf29a 100644
--- a/fortran/test/tH5S.f90
+++ b/fortran/test/tH5S.f90
@@ -33,14 +33,18 @@
 !  dataspace_basic_test
 !
 !*****
+MODULE TH5S
+
+CONTAINS
 
         SUBROUTINE dataspace_basic_test(cleanup, total_error)
 
         USE HDF5 ! This module contains all necessary modules
+        USE TH5_MISC
 
           IMPLICIT NONE
           LOGICAL, INTENT(IN)  :: cleanup
-          INTEGER, INTENT(OUT) :: total_error
+          INTEGER, INTENT(INOUT) :: total_error
 
           CHARACTER(LEN=10), PARAMETER :: filename1 = "basicspace" ! File1 name
           CHARACTER(LEN=9), PARAMETER :: filename2 = "copyspace"  ! File2 name
@@ -289,3 +293,4 @@
           RETURN
         END SUBROUTINE dataspace_basic_test
 
+END MODULE TH5S
diff --git a/fortran/test/tH5Sselect.f90 b/fortran/test/tH5Sselect.f90
index 1cbabe8..ba68d62 100644
--- a/fortran/test/tH5Sselect.f90
+++ b/fortran/test/tH5Sselect.f90
@@ -36,14 +36,18 @@
 !  
 !
 !*****
+MODULE TH5SSELECT
+
+CONTAINS
 
   SUBROUTINE test_select_hyperslab(cleanup, total_error)
 
     USE HDF5 ! This module contains all necessary modules
+    USE TH5_MISC
 
     IMPLICIT NONE
     LOGICAL, INTENT(IN) :: cleanup
-    INTEGER, INTENT(OUT) :: total_error
+    INTEGER, INTENT(INOUT) :: total_error
 
     CHARACTER(LEN=7), PARAMETER :: filename = "tselect"
     CHARACTER(LEN=80) :: fix_filename
@@ -319,10 +323,11 @@
   SUBROUTINE test_select_element(cleanup, total_error)
 
     USE HDF5 ! This module contains all necessary modules
+    USE TH5_MISC
 
     IMPLICIT NONE
     LOGICAL, INTENT(IN)  :: cleanup
-    INTEGER, INTENT(OUT) :: total_error
+    INTEGER, INTENT(INOUT) :: total_error
 
     !
     !the dataset1 is stored in file "copy1.h5"
@@ -695,10 +700,11 @@
 
   SUBROUTINE test_basic_select(cleanup, total_error)
     USE HDF5 ! This module contains all necessary modules
+    USE TH5_MISC
 
     IMPLICIT NONE
     LOGICAL, INTENT(IN)  :: cleanup
-    INTEGER, INTENT(OUT) :: total_error
+    INTEGER, INTENT(INOUT) :: total_error
 
      !
      !the dataset is stored in file "testselect.h5"
@@ -805,8 +811,6 @@
      INTEGER :: error
      INTEGER(HSIZE_T), DIMENSION(3) :: data_dims
 
-     INTEGER :: i
-
      !
      !initialize the coord array to give the selected points' position
      !
@@ -1033,10 +1037,11 @@
 
 SUBROUTINE test_select_point(cleanup, total_error)
   USE HDF5 ! This module contains all necessary modules 
+  USE TH5_MISC
   
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
   INTEGER(HID_T) :: xfer_plist
   
   INTEGER, PARAMETER :: SPACE1_DIM1=3
@@ -1073,10 +1078,10 @@ SUBROUTINE test_select_point(cleanup, total_error)
 !!$               *tbuf;       /* temporary buffer pointer */
   INTEGER :: i,j;        !/* Counters */
 !    struct pnt_iter pi;     /* Custom Pointer iterator struct */
-  INTEGER :: error		!/* Generic return value		*/
+  INTEGER :: error    !/* Generic return value		*/
   CHARACTER(LEN=9) :: filename = 'h5s_hyper'
   CHARACTER(LEN=80) :: fix_filename 
-  CHARACTER(LEN=1), DIMENSION(1:SPACE2_DIM1,1:SPACE2_DIM2) :: wbuf, rbuf
+  CHARACTER(LEN=1), DIMENSION(1:SPACE2_DIM1,1:SPACE2_DIM2) :: wbuf
 
   CALL h5_fixname_f(filename, fix_filename, H5P_DEFAULT_F, error)
   IF (error .NE. 0) THEN
@@ -1357,12 +1362,12 @@ END SUBROUTINE test_select_point
 !**
 !****************************************************************/
 
-SUBROUTINE test_select_combine(cleanup, total_error)
+SUBROUTINE test_select_combine(total_error)
   USE HDF5 ! This module contains all necessary modules 
+  USE TH5_MISC
   
   IMPLICIT NONE
-  LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
 
   INTEGER, PARAMETER :: SPACE7_RANK = 2
   INTEGER, PARAMETER :: SPACE7_DIM1 = 10
@@ -1779,12 +1784,12 @@ END SUBROUTINE test_select_combine
 !**
 !****************************************************************/
 
-SUBROUTINE test_select_bounds(cleanup, total_error)
+SUBROUTINE test_select_bounds(total_error)
   USE HDF5 ! This module contains all necessary modules 
+  USE TH5_MISC
   
   IMPLICIT NONE
-  LOGICAL, INTENT(IN)  :: cleanup
-  INTEGER, INTENT(OUT) :: total_error
+  INTEGER, INTENT(INOUT) :: total_error
 
   INTEGER, PARAMETER :: SPACE11_RANK=2
   INTEGER, PARAMETER :: SPACE11_DIM1=100
@@ -1860,8 +1865,8 @@ SUBROUTINE test_select_bounds(cleanup, total_error)
 
   CALL VERIFY("h5sget_select_bounds_f", INT(low_bounds(1)), 3, total_error)
   CALL VERIFY("h5sget_select_bounds_f", INT(low_bounds(2)), 3, total_error)
-  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(1)), SPACE11_DIM1-4, total_error)
-  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(2)), SPACE11_DIM2-4, total_error)
+  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(1)), INT(SPACE11_DIM1-4), total_error)
+  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(2)), INT(SPACE11_DIM2-4), total_error)
 
   ! /* Set bad offset for selection */
 
@@ -1884,8 +1889,8 @@ SUBROUTINE test_select_bounds(cleanup, total_error)
 
   CALL VERIFY("h5sget_select_bounds_f", INT(low_bounds(1)), 5, total_error)
   CALL VERIFY("h5sget_select_bounds_f", INT(low_bounds(2)), 1, total_error)
-  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(1)), SPACE11_DIM1-2, total_error)
-  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(2)), SPACE11_DIM2-6, total_error)
+  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(1)), INT(SPACE11_DIM1-2), total_error)
+  CALL VERIFY("h5sget_select_bounds_f", INT(high_bounds(2)), INT(SPACE11_DIM2-6), total_error)
 
   ! /* Reset offset for selection */
   offset(1:2) = 0
@@ -1991,3 +1996,5 @@ SUBROUTINE test_select_bounds(cleanup, total_error)
   CALL check("h5sclose_f", error, total_error)
 
 END SUBROUTINE test_select_bounds
+
+END MODULE TH5SSELECT
diff --git a/fortran/test/tH5T.f90 b/fortran/test/tH5T.f90
index b42a8e6..8ac91d2 100644
--- a/fortran/test/tH5T.f90
+++ b/fortran/test/tH5T.f90
@@ -27,6 +27,10 @@
 !
 !*****
 
+MODULE TH5T
+
+CONTAINS
+
     SUBROUTINE compoundtest(cleanup, total_error)
 !
 ! This program creates a dataset that is one dimensional array of
@@ -43,8 +47,8 @@
 ! h5tget_class_f, h5tget_member_name_f, h5tget_member_offset_f, h5tget_member_type_f,
 ! h5tequal_f, h5tinsert_array_f, h5tcommit_f, h5tencode_f, h5tdecode_f
 
-
      USE HDF5 ! This module contains all necessary modules
+     USE TH5_MISC
 
      IMPLICIT NONE
      LOGICAL, INTENT(IN)  :: cleanup
@@ -105,11 +109,10 @@
 
      CHARACTER(LEN=1024) :: cmpd_buf
      INTEGER(SIZE_T) :: cmpd_buf_size=0
-     INTEGER(HID_T) :: decoded_sid1
      INTEGER(HID_T) :: decoded_tid1
 
      INTEGER(HID_T) :: fixed_str1, fixed_str2
-     LOGICAL :: are_equal
+     LOGICAL :: are_equal, differ
      INTEGER(SIZE_T), PARAMETER :: str_size = 10 
      INTEGER(SIZE_T) :: query_size
 
@@ -242,36 +245,6 @@
      offset = offset + type_sized  ! Offset of the last member is 14
      CALL h5tinsert_f(dtype_id, "real_field", offset, H5T_NATIVE_REAL, error)
      CALL check("h5tinsert_f", error, total_error)
-
-!!$     !/*-----------------------------------------------------------------------
-!!$     ! * Test encoding and decoding compound  datatypes
-!!$     ! *-----------------------------------------------------------------------
-!!$     !*/
-!!$     !    /* Encode compound type in a buffer */
-!!$
-!!$     !         First find the buffer size
-!!$
-!!$     CALL H5Tencode_f(dtype_id, cmpd_buf, cmpd_buf_size, error)
-!!$     CALL check("H5Tencode_f", error, total_error)
-!!$
-!!$     ! /* Try decoding bogus buffer */
-!!$
-!!$     CALL H5Tdecode_f(cmpd_buf, decoded_tid1, error)
-!!$     CALL VERIFY("H5Tdecode_f", error, -1, total_error)
-!!$
-!!$     CALL H5Tencode_f(dtype_id, cmpd_buf, cmpd_buf_size, error)
-!!$     CALL check("H5Tencode_f", error, total_error)
-!!$
-!!$     ! /* Decode from the compound buffer and return an object handle */
-!!$     CALL H5Tdecode_f(cmpd_buf, decoded_tid1, error)
-!!$     CALL check("H5Tdecode_f", error, total_error)
-!!$
-!!$     ! /* Verify that the datatype was copied exactly */
-!!$
-!!$     CALL H5Tequal_f(decoded_tid1, dtype_id, flag, error)
-!!$     CALL check("H5Tequal_f", error, total_error)
-!!$     CALL VerifyLogical("H5Tequal_f", flag, .TRUE., total_error)
-
      !
      ! Create the dataset with compound datatype.
      !
@@ -555,7 +528,7 @@
      CALL h5dread_f(dset_id, dt3_id, double_member_out, data_dims, error)
          CALL check("h5dread_f", error, total_error)
          do i = 1, dimsize
-            if (double_member_out(i) .ne. double_member(i)) then
+            IF( .NOT.dreal_eq( REAL(double_member_out(i),dp), REAL( double_member(i), dp)) ) THEN
                 write(*,*) " Wrong double precision data is read back "
                 total_error = total_error + 1
             endif
@@ -572,12 +545,12 @@
      !
      CALL h5dread_f(dset_id, dt4_id, real_member_out, data_dims, error)
          CALL check("h5dread_f", error, total_error)
-         do i = 1, dimsize
-            if (real_member_out(i) .ne. real_member(i)) then
-                write(*,*) " Wrong real precision data is read back "
-                total_error = total_error + 1
-            endif
-         enddo
+         DO i = 1, dimsize
+            IF( .NOT.dreal_eq( REAL(real_member_out(i),dp), REAL( real_member(i), dp)) ) THEN
+               WRITE(*,*) " Wrong real precision data is read back "
+               total_error = total_error + 1
+            ENDIF
+         ENDDO
      !
      ! *-----------------------------------------------------------------------
      ! * Test encoding and decoding compound datatypes
@@ -632,7 +605,7 @@
 
 
 
-    SUBROUTINE basic_data_type_test(cleanup, total_error)
+    SUBROUTINE basic_data_type_test(total_error)
 
 !   This subroutine tests following functionalities:
 !   H5tget_precision_f, H5tset_precision_f, H5tget_offset_f
@@ -642,9 +615,9 @@
 !   H5tset_cset_f, H5tget_strpad_f, H5tset_strpad_f
 
      USE HDF5 ! This module contains all necessary modules
+     USE TH5_MISC
 
      IMPLICIT NONE
-     LOGICAL, INTENT(IN)  :: cleanup
      INTEGER, INTENT(OUT) :: total_error
 
      INTEGER(HID_T) :: dtype1_id, dtype2_id, dtype3_id, dtype4_id, dtype5_id
@@ -859,6 +832,7 @@
     SUBROUTINE enumtest(cleanup, total_error)
 
     USE HDF5
+    USE TH5_MISC
     IMPLICIT NONE
 
     LOGICAL, INTENT(IN)  :: cleanup
@@ -999,6 +973,7 @@
 SUBROUTINE test_derived_flt(cleanup, total_error)
 
   USE HDF5 ! This module contains all necessary modules
+  USE TH5_MISC
 
   IMPLICIT NONE
   LOGICAL, INTENT(IN)  :: cleanup
@@ -1181,3 +1156,5 @@ SUBROUTINE test_derived_flt(cleanup, total_error)
   CALL check("h5_cleanup_f", error, total_error)
 
 END SUBROUTINE test_derived_flt
+
+END MODULE TH5T
diff --git a/fortran/test/tH5T_F03.f90 b/fortran/test/tH5T_F03.f90
index f7efcc4..fc3ebd0 100644
--- a/fortran/test/tH5T_F03.f90
+++ b/fortran/test/tH5T_F03.f90
@@ -41,15 +41,23 @@
 !**
 !****************************************************************/
 !
+
+MODULE TH5T_F03
+
+  USE HDF5 
+  USE ISO_C_BINDING
+
+CONTAINS
+
 SUBROUTINE test_array_compound_atomic(total_error)
 
   USE HDF5 
+  USE TH5_MISC
   USE ISO_C_BINDING
   IMPLICIT NONE
 
   INTEGER, INTENT(INOUT) :: total_error
   ! 1-D dataset WITH fixed dimensions 
-  CHARACTER(LEN=6), PARAMETER :: SPACE1_NAME = "Space1"
   INTEGER, PARAMETER :: SPACE1_RANK = 1
   INTEGER, PARAMETER :: SPACE1_DIM1 = 4
   ! 1-D array datatype 
@@ -63,11 +71,11 @@ SUBROUTINE test_array_compound_atomic(total_error)
   END TYPE s1_t
   TYPE(s1_t), DIMENSION(:,:), ALLOCATABLE, TARGET :: wdata !  Information to write 
   TYPE(s1_t), DIMENSION(:,:), ALLOCATABLE, TARGET :: rdata !  Information read in 
-  INTEGER(hid_t)	:: fid1	! HDF5 File IDs		
-  INTEGER(hid_t) :: dataset	! Dataset ID			
-  INTEGER(hid_t)	:: sid1       ! Dataspace ID			
-  INTEGER(hid_t)	:: tid1       ! Array Datatype ID			
-  INTEGER(hid_t)	:: tid2       ! Compound Datatype ID			
+  INTEGER(hid_t) :: fid1       ! HDF5 File IDs		
+  INTEGER(hid_t) :: dataset    ! Dataset ID			
+  INTEGER(hid_t) :: sid1       ! Dataspace ID			
+  INTEGER(hid_t) :: tid1       ! Array Datatype ID			
+  INTEGER(hid_t) :: tid2       ! Compound Datatype ID			
 
   INTEGER(HSIZE_T), DIMENSION(1) :: sdims1 = (/SPACE1_DIM1/)
   INTEGER(HSIZE_T), DIMENSION(1) :: tdims1=(/ARRAY1_DIM1/)
@@ -79,12 +87,8 @@ SUBROUTINE test_array_compound_atomic(total_error)
   INTEGER(size_t) :: off   ! Offset of compound field 
   INTEGER(hid_t) :: mtid   ! Datatype ID for field 
   INTEGER :: i,j      !  counting variables  
-  INTEGER(SIZE_T) :: type_sizei  ! Size of the integer datatype 
-  INTEGER(SIZE_T) :: type_sizer  ! Size of the real datatype
 
-  INTEGER(SIZE_T) :: sizeof_compound ! total size of compound
   INTEGER :: error    !  Generic RETURN value 
-  INTEGER(SIZE_T)     ::   offset     ! Member's offset
   INTEGER :: namelen
   LOGICAL :: flag
 
@@ -254,7 +258,7 @@ SUBROUTINE test_array_compound_atomic(total_error)
            PRINT*, 'ERROR: Wrong integer data is read back by H5Dread_f '
            total_error = total_error + 1
         ENDIF
-        IF(wdata(i,j)%f.NE.rdata(i,j)%f)THEN
+        IF( .NOT.dreal_eq( REAL(wdata(i,j)%f,dp), REAL( rdata(i,j)%f, dp)) ) THEN
            PRINT*, 'ERROR: Wrong real data is read back by H5Dread_f '
            total_error = total_error + 1
         ENDIF
@@ -285,6 +289,7 @@ END SUBROUTINE test_array_compound_atomic
   SUBROUTINE test_array_compound_array(total_error)
     
     USE HDF5 
+    USE TH5_MISC
     USE ISO_C_BINDING
     IMPLICIT NONE
     
@@ -310,14 +315,13 @@ END SUBROUTINE test_array_compound_atomic
     TYPE(st_t_struct), DIMENSION(1:SPACE1_DIM1,1:ARRAY1_DIM1), TARGET :: rdata
 
 
-    INTEGER(hid_t) :: fid1		!  HDF5 File IDs		
-    INTEGER(hid_t) :: dataset	!  Dataset ID			
+    INTEGER(hid_t) :: fid1      !  HDF5 File IDs		
+    INTEGER(hid_t) :: dataset   !  Dataset ID			
     integer(hid_t) :: sid1      !  Dataspace ID			
     integer(hid_t) :: tid1      !  Array Datatype ID	
     integer(hid_t) :: tid2      !  Compound Datatype ID	
     integer(hid_t) :: tid3      !  Nested Array Datatype ID	
     integer(hid_t) :: tid4      !  Nested Array Datatype ID	
-    INTEGER(HID_T) :: dt5_id      ! Memory datatype identifier 
 
     INTEGER(HSIZE_T), DIMENSION(1) :: sdims1 = (/SPACE1_DIM1/)
     INTEGER(HSIZE_T), DIMENSION(1) :: tdims1=(/ARRAY1_DIM1/)
@@ -326,25 +330,18 @@ END SUBROUTINE test_array_compound_atomic
     INTEGER  ndims      ! Array rank for reading 
 
     INTEGER(HSIZE_T), ALLOCATABLE, DIMENSION(:) :: rdims1 ! Array dimensions for reading 
-    INTEGER(HSIZE_T), ALLOCATABLE, DIMENSION(:) :: rdims ! Array dimensions for reading 
 
     INTEGER :: nmemb ! Number of compound members 
     CHARACTER(LEN=20) :: mname ! Name of compound field 
     INTEGER(size_t) :: off   ! Offset of compound field 
-    INTEGER(size_t) :: offset   ! Offset of compound field 
     INTEGER(hid_t) :: mtid   ! Datatype ID for field  
     INTEGER(hid_t) :: mtid2   ! Datatype ID for field  
-    INTEGER(SIZE_T) :: type_sizei  ! Size of the integer datatype 
-    INTEGER(SIZE_T) :: type_sizer  ! Size of the real datatype 
-    INTEGER(SIZE_T) :: type_sizec  ! Size of the character datatype
-    INTEGER(SIZE_T) :: sizeof_compound ! total size of compound
 
     INTEGER :: mclass     !  Datatype class for field 
     INTEGER :: i,j,k      ! counting variables 
 
     INTEGER :: error
     CHARACTER(LEN=2) :: ichr2
-    INTEGER(SIZE_T) :: sizechar
     INTEGER :: namelen
     LOGICAL :: flag 
     INTEGER(HID_T) :: atype_id       !String Attribute Datatype identifier
@@ -623,6 +620,7 @@ END SUBROUTINE test_array_compound_atomic
              total_error = total_error + 1
           ENDIF
           DO k = 1, ARRAY2_DIM1
+             
              IF(wdata(i,j)%f(k).NE.rdata(i,j)%f(k))THEN
                 PRINT*, 'ERROR: Wrong real array data is read back by H5Dread_f '
                 total_error = total_error + 1
@@ -659,6 +657,7 @@ END SUBROUTINE test_array_compound_atomic
   SUBROUTINE test_array_bkg(total_error)
     
     USE HDF5 
+    USE TH5_MISC
     USE ISO_C_BINDING
     IMPLICIT NONE
 
@@ -722,8 +721,6 @@ END SUBROUTINE test_array_compound_atomic
     INTEGER :: error
     TYPE(c_ptr) :: f_ptr
     
-    TYPE(c_funptr) :: func
-
 !     Initialize the data 
 !     ------------------- 
 
@@ -834,11 +831,11 @@ END SUBROUTINE test_array_compound_atomic
              PRINT*, 'ERROR: Wrong integer data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
-          IF( cf(i)%b(j) .NE. cfr(i)%b(j) )THEN
+          IF( .NOT.dreal_eq( REAL(cf(i)%b(j),dp), REAL( cfr(i)%b(j), dp)) ) THEN
              PRINT*, 'ERROR: Wrong real data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
-          IF( cf(i)%c(j) .NE. cfr(i)%c(j) )THEN
+          IF( .NOT.dreal_eq( REAL(cf(i)%c(j),dp), REAL( cfr(i)%c(j), dp)) ) THEN
              PRINT*, 'ERROR: Wrong double data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
@@ -901,7 +898,7 @@ END SUBROUTINE test_array_compound_atomic
 
     DO i = 1, LENGTH
        DO j = 1, ALEN
-          IF( fld(i)%b(j) .NE. fldr(i)%b(j) )THEN
+          IF( .NOT.dreal_eq( REAL(fld(i)%b(j),dp), REAL( fldr(i)%b(j), dp)) ) THEN
              PRINT*, 'ERROR: Wrong real data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
@@ -932,11 +929,11 @@ END SUBROUTINE test_array_compound_atomic
              PRINT*, 'ERROR: Wrong integer data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
-          IF( cf(i)%b(j) .NE. cfr(i)%b(j) )THEN
+          IF( .NOT.dreal_eq( REAL(cf(i)%b(j),dp), REAL(cfr(i)%b(j), dp)) ) THEN
              PRINT*, 'ERROR: Wrong real data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
-          IF( cf(i)%c(j) .NE. cfr(i)%c(j) )THEN
+          IF( .NOT.dreal_eq( REAL(cf(i)%c(j),dp), REAL(cfr(i)%c(j), dp)) ) THEN
              PRINT*, 'ERROR: Wrong double data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
@@ -990,11 +987,11 @@ END SUBROUTINE test_array_compound_atomic
              PRINT*, 'ERROR: Wrong integer data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
-          IF( cf(i)%b(j) .NE. cfr(i)%b(j) )THEN
+          IF( .NOT.dreal_eq( REAL(cf(i)%b(j),dp), REAL(cfr(i)%b(j), dp)) ) THEN
              PRINT*, 'ERROR: Wrong real data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
-          IF( cf(i)%c(j) .NE. cfr(i)%c(j) )THEN
+          IF( .NOT.dreal_eq( REAL(cf(i)%c(j),dp), REAL(cfr(i)%c(j), dp)) ) THEN
              PRINT*, 'ERROR: Wrong double data is read back by H5Dread_f '
              total_error = total_error + 1
           ENDIF
@@ -1018,6 +1015,7 @@ END SUBROUTINE test_array_compound_atomic
 
     USE ISO_C_BINDING
     USE HDF5 ! This module contains all necessary modules
+    USE TH5_MISC
 
     IMPLICIT NONE
     
@@ -1050,12 +1048,10 @@ END SUBROUTINE test_array_compound_atomic
     INTEGER(HID_T) :: dset_idr8      ! Dataset identifier 
     
     INTEGER :: error ! Error flag
-    INTEGER :: i, j
+    INTEGER :: i
     
 ! Data buffers:
 
-    INTEGER, DIMENSION(1:4) :: dset_data
-
     INTEGER(int_kind_1), DIMENSION(1:4), TARGET :: dset_data_i1, data_out_i1
     INTEGER(int_kind_4), DIMENSION(1:4), TARGET :: dset_data_i4, data_out_i4
     INTEGER(int_kind_8), DIMENSION(1:4), TARGET :: dset_data_i8, data_out_i8
@@ -1069,7 +1065,6 @@ END SUBROUTINE test_array_compound_atomic
     INTEGER(HID_T) :: dspace_id     ! Dataspace identifier
     
     TYPE(C_PTR) :: f_ptr
-    INTEGER(hid_t) :: datatype         ! Common datatype ID 
 
     !
     ! Initialize the dset_data array.
@@ -1179,7 +1174,7 @@ END SUBROUTINE test_array_compound_atomic
        CALL verify_Fortran_INTEGER_4("h5kind_to_type2",INT(dset_data_i4(i),int_kind_8),INT(data_out_i4(i),int_kind_8),total_error)
        CALL verify_Fortran_INTEGER_4("h5kind_to_type3",INT(dset_data_i8(i),int_kind_8),INT(data_out_i8(i),int_kind_8),total_error)
        CALL verify_Fortran_INTEGER_4("h5kind_to_type4",INT(dset_data_i16(i),int_kind_8),INT(data_out_i16(i),int_kind_8),total_error)
-
+       
        CALL verify_real_kind_7("h5kind_to_type5",REAL(dset_data_r(i),real_kind_7),REAL(data_out_r(i),real_kind_7),total_error)
        CALL verify_real_kind_7("h5kind_to_type6",REAL(dset_data_r7(i),real_kind_7),REAL(data_out_r7(i),real_kind_7),total_error)
        CALL verify_real_kind_7("h5kind_to_type7",REAL(dset_data_r15(i),real_kind_7),REAL(data_out_r15(i),real_kind_7),total_error)
@@ -1220,8 +1215,9 @@ END SUBROUTINE test_h5kind_to_type
 !************************************************************
 SUBROUTINE t_array(total_error)
 
-  USE HDF5
   USE ISO_C_BINDING
+  USE HDF5
+  USE TH5_MISC
   
   IMPLICIT NONE
     
@@ -1233,10 +1229,8 @@ SUBROUTINE t_array(total_error)
   INTEGER          , PARAMETER :: adim0     = 3
   INTEGER          , PARAMETER :: adim1     = 5
   INTEGER(HID_T)  :: file, filetype, memtype, space, dset ! Handles
-  INTEGER :: hdferr
   INTEGER(HSIZE_T), DIMENSION(1:1)   :: dims = (/dim0/)
   INTEGER(HSIZE_T), DIMENSION(1:2)   :: adims = (/adim0, adim1/)
-  INTEGER(HSIZE_T), DIMENSION(1:3)   :: bdims = (/dim0, adim0, adim1/)
   INTEGER(HSIZE_T), DIMENSION(1:2)   :: maxdims
   INTEGER, DIMENSION(1:dim0, 1:adim0, 1:adim1), TARGET :: wdata ! Write buffer 
   INTEGER, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: rdata    ! Read buffer
@@ -1337,9 +1331,9 @@ SUBROUTINE t_array(total_error)
   !
   ! Output the data to the screen.
   !
-  i_loop: DO i = 1, dims(1)
-             DO j=1, adim0
-                DO k = 1, adim1
+  i_loop: DO i = 1, INT(dims(1))
+             DO j=1, INT(adim0)
+                DO k = 1, INT(adim1)
                    CALL VERIFY("H5Sget_simple_extent_dims_f",  rdata(i,j,k), wdata(i,j,k), total_error)
                    IF(total_error.NE.0) EXIT i_loop
                 ENDDO
@@ -1365,6 +1359,7 @@ END SUBROUTINE t_array
 SUBROUTINE t_enum(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -1497,8 +1492,8 @@ SUBROUTINE t_enum(total_error)
   !
   ! Output the data to the screen.
   !
-  i_loop: DO i = 1, dims(1)
-             DO j = 1, dims(2)
+  i_loop: DO i = 1, INT(dims(1))
+             DO j = 1, INT(dims(2))
                 !
                 ! Get the name of the enumeration member.
                 !
@@ -1527,6 +1522,7 @@ END SUBROUTINE t_enum
 SUBROUTINE t_bit(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -1617,8 +1613,8 @@ SUBROUTINE t_bit(total_error)
   !
   ! Output the data to the screen.
   !
-  i_loop: DO i = 1, dims(1)
-            DO j = 1, dims(2)
+  i_loop: DO i = 1, INT(dims(1))
+            DO j = 1, INT(dims(2))
                A = IAND(rdata(i,j), INT(hex,C_SIGNED_CHAR)) ! Retrieve field "A"
                B = IAND(ISHFT(rdata(i,j),-2), INT(hex,C_SIGNED_CHAR)) ! Retrieve field "B"
                C = IAND(ISHFT(rdata(i,j),-4), INT(hex,C_SIGNED_CHAR)) ! Retrieve field "C"
@@ -1652,6 +1648,7 @@ END SUBROUTINE t_bit
 SUBROUTINE t_opaque(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -1675,7 +1672,7 @@ SUBROUTINE t_opaque(total_error)
 
   INTEGER :: taglen
   INTEGER(HSIZE_T), DIMENSION(1:1) :: maxdims
-  INTEGER :: i
+  INTEGER(hsize_t) :: i
   CHARACTER(LEN=1) :: ichr
   TYPE(C_PTR) :: f_ptr
   INTEGER :: error
@@ -1799,6 +1796,7 @@ END SUBROUTINE t_opaque
 SUBROUTINE t_objref(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -1905,7 +1903,7 @@ SUBROUTINE t_objref(total_error)
   !
   ! Output the data to the screen.
   !
-  DO i = 1, maxdims(1)
+  DO i = 1, INT(maxdims(1))
      !
      ! Open the referenced object, get its name and type.
      !
@@ -1951,6 +1949,7 @@ END SUBROUTINE t_objref
 SUBROUTINE t_regref(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -1984,7 +1983,7 @@ SUBROUTINE t_regref(total_error)
 
   CHARACTER(LEN=80),DIMENSION(1:1), TARGET :: rdata2
   CHARACTER(LEN=80) :: name
-  INTEGER :: i
+  INTEGER(hsize_t) :: i
   TYPE(C_PTR) :: f_ptr
   CHARACTER(LEN=ds2dim0) :: chrvar
   CHARACTER(LEN=20), DIMENSION(1:2) :: chrref_correct
@@ -2150,6 +2149,7 @@ END SUBROUTINE t_regref
 SUBROUTINE t_vlen(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -2159,7 +2159,7 @@ SUBROUTINE t_vlen(total_error)
   CHARACTER(LEN=3) , PARAMETER :: dataset   = "DS1"
   INTEGER, PARAMETER :: LEN0 = 3
   INTEGER, PARAMETER :: LEN1 = 12
-  INTEGER :: dim0
+  INTEGER(hsize_t) :: dim0
 
   INTEGER(HID_T)  :: file, filetype, memtype, space, dset ! Handles
   INTEGER :: error
@@ -2266,7 +2266,7 @@ SUBROUTINE t_vlen(total_error)
   dim0 = dims(1)
   CALL H5Sget_simple_extent_dims_f(space, dims, maxdims, error) 
   CALL check("H5Sget_simple_extent_dims_f",error, total_error)
-  CALL VERIFY("H5Sget_simple_extent_dims_f", INT(dims(1)), dim0, total_error)
+  CALL VERIFY("H5Sget_simple_extent_dims_f", INT(dims(1)), INT(dim0), total_error)
 
   !
   ! Create the memory datatype.
@@ -2281,7 +2281,7 @@ SUBROUTINE t_vlen(total_error)
   CALL H5Dread_f(dset, memtype, f_ptr, error)
   CALL check("H5Dread_f",error, total_error)
 
-  DO i = 1, dims(1)
+  DO i = 1, INT(dims(1))
      CALL c_f_pointer(rdata(i)%p, ptr_r, [rdata(i)%len] )
      DO j = 1, rdata(i)%len
         CALL VERIFY("t_vlen", ptr_r(j), ptr(i)%data(j), total_error)
@@ -2307,6 +2307,7 @@ END SUBROUTINE t_vlen
 SUBROUTINE t_vlstring(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -2328,7 +2329,7 @@ SUBROUTINE t_vlstring(total_error)
   CHARACTER(LEN=sdim), DIMENSION(:), ALLOCATABLE :: rdata ! Read buffer
   INTEGER(HSIZE_T), DIMENSION(2) :: data_dims = (/sdim,dim0/)
   INTEGER(SIZE_T), DIMENSION(4) :: str_len = (/7,7,5,7/)
-  INTEGER :: i
+  INTEGER(hsize_t) :: i
 
   !
   ! Create a new file using the default properties.
@@ -2427,6 +2428,7 @@ SUBROUTINE t_vlstring_readwrite(total_error)
 ! test writing and reading vl string using h5dread_f and h5dwrite_f, C_LOC and C_F_POINTER
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -2439,7 +2441,6 @@ SUBROUTINE t_vlstring_readwrite(total_error)
 
   INTEGER(HSIZE_T) , PARAMETER :: dim0 = 4
   INTEGER(HSIZE_T) , PARAMETER :: dim1 = 2
-  INTEGER(SIZE_T)  , PARAMETER :: sdim = 7
   INTEGER(HID_T)               :: file, filetype, space, dset ! Handles
   INTEGER(HSIZE_T), DIMENSION(1:1) :: dims = (/dim0/)
   INTEGER(HSIZE_T), DIMENSION(1:2) :: dims2D = (/dim1,dim0/)
@@ -2468,7 +2469,8 @@ SUBROUTINE t_vlstring_readwrite(total_error)
   CHARACTER(len=8, kind=c_char), DIMENSION(1:4) :: data_w ! A pointer to a Fortran string
   CHARACTER(len=8, kind=c_char), DIMENSION(1:dim1,1:dim0) :: data2D_w ! A pointer to a Fortran string
   TYPE(C_PTR) :: f_ptr
-  INTEGER :: i, j, len
+  INTEGER(hsize_t) :: i, j
+  INTEGER :: len
   INTEGER :: error
 
   ! Initialize array of C pointers
@@ -2677,6 +2679,7 @@ END SUBROUTINE t_vlstring_readwrite
 SUBROUTINE t_string(total_error)
 
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -2697,7 +2700,7 @@ SUBROUTINE t_string(total_error)
   CHARACTER(LEN=sdim), DIMENSION(1:dim0), TARGET :: &
        wdata = (/"Parting", "is such", "sweet  ", "sorrow."/)
   CHARACTER(LEN=sdim), DIMENSION(:), ALLOCATABLE, TARGET :: rdata
-  INTEGER :: i
+  INTEGER(hsize_t) :: i
   INTEGER(SIZE_T) :: size
   TYPE(C_PTR) :: f_ptr
   !
@@ -2800,23 +2803,23 @@ SUBROUTINE t_string(total_error)
 
 END SUBROUTINE t_string
 
-SUBROUTINE vl_test_special_char(cleanup, total_error)
+SUBROUTINE vl_test_special_char(total_error)
   
-  USE hdf5
+  USE HDF5
+  USE TH5_MISC
   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
+!  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"
@@ -2967,14 +2970,14 @@ END SUBROUTINE setup_buffer
 !-------------------------------------------------------------------------
 !
 
-SUBROUTINE test_nbit(cleanup, total_error )
+SUBROUTINE test_nbit(total_error )
 
   USE HDF5
+  USE TH5_MISC
   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
   
@@ -2991,7 +2994,7 @@ SUBROUTINE test_nbit(cleanup, total_error )
   INTEGER(size_t) :: PRECISION, offset
   INTEGER :: error
   LOGICAL :: status
-  INTEGER(size_t) :: i, j
+  INTEGER(hsize_t) :: i, j
   TYPE(C_PTR) :: f_ptr
 
   ! check to see if filter is available
@@ -3065,7 +3068,7 @@ SUBROUTINE test_nbit(cleanup, total_error )
   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
+        IF( .NOT.dreal_eq( REAL(new_data(i,j),dp), REAL( orig_data(i,j), dp)) ) THEN
            total_error = total_error + 1
            WRITE(*,'("    Read different values than written.")')
            WRITE(*,'("    At index ", 2(1X,I0))') i, j
@@ -3114,6 +3117,7 @@ SUBROUTINE t_enum_conv(total_error)
 !-------------------------------------------------------------------------
 !
   USE HDF5
+  USE TH5_MISC
   USE ISO_C_BINDING
 
   IMPLICIT NONE
@@ -3125,7 +3129,7 @@ SUBROUTINE t_enum_conv(total_error)
   
   INTEGER, PARAMETER :: real_kind_7 = SELECTED_REAL_KIND(Fortran_REAL_4)  !should map to REAL*4 on most modern processors
 
-  INTEGER(hid_t) :: cwg=-1, dtype=-1, space=-1, dset=-1, memtype ! Handles
+  INTEGER(hid_t) :: cwg=-1, dtype=-1, space=-1, dset=-1 ! Handles
   INTEGER(hid_t) :: file ! Handles
 
   ! Enumerated type
@@ -3137,10 +3141,15 @@ SUBROUTINE t_enum_conv(total_error)
 
   ! Enumerated data array 
   ! Some values are out of range for testing. The library should accept them
-  INTEGER(KIND(E1_RED)), DIMENSION(1:20), TARGET :: data1 = (/E1_RED,   E1_GREEN, E1_BLUE,  E1_GREEN, E1_WHITE,&
-       E1_WHITE, E1_BLACK, E1_GREEN, E1_BLUE,  E1_RED,&
-       E1_RED, E1_BLUE,  E1_GREEN, E1_BLACK, E1_WHITE,&
-       E1_RED, E1_WHITE, INT(0,KIND(E1_RED)), INT(-1,KIND(E1_RED)), INT(-2,KIND(E1_RED))/)
+  INTEGER(KIND(E1_RED)), DIMENSION(1:20), TARGET :: data1 = (/INT(E1_RED,KIND(E1_RED)), &
+       INT(E1_GREEN,KIND(E1_RED)), INT(E1_BLUE,KIND(E1_RED)),  &
+       INT(E1_GREEN,KIND(E1_RED)), INT(E1_WHITE,KIND(E1_RED)), &
+       INT(E1_WHITE,KIND(E1_RED)), INT(E1_BLACK,KIND(E1_RED)), &
+       INT(E1_GREEN,KIND(E1_RED)), INT(E1_BLUE,KIND(E1_RED)), &
+       INT(E1_RED,KIND(E1_RED)), INT(E1_RED,KIND(E1_RED)), INT(E1_BLUE,KIND(E1_RED)), &
+       INT(E1_GREEN,KIND(E1_RED)), INT(E1_BLACK,KIND(E1_RED)), INT(E1_WHITE,KIND(E1_RED)),&
+       INT(E1_RED,KIND(E1_RED)), INT(E1_WHITE,KIND(E1_RED)), &
+       INT(0,KIND(E1_RED)), INT(-1,KIND(E1_RED)), INT(-2,KIND(E1_RED))/)
 
   ! Reading array for enum data
   INTEGER(KIND(E1_RED)), DIMENSION(1:20), TARGET :: data2
@@ -3156,6 +3165,7 @@ SUBROUTINE t_enum_conv(total_error)
 
   INTEGER(hsize_t), DIMENSION(1:1) :: ds_size = (/20/)
   INTEGER(size_t) :: i
+  INTEGER(hsize_t) :: ih
   INTEGER :: error
   TYPE(C_PTR) :: f_ptr
   INTEGER(HID_T) :: m_baset  ! Memory base type
@@ -3218,10 +3228,10 @@ SUBROUTINE t_enum_conv(total_error)
   CALL check(" h5dread_f", error, total_error)
 
   ! Check values
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. data2(i))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. data2(ih))THEN
         total_error = total_error + 1
-        WRITE(*,'("    1. data1(",I0,")=",I0," .NE. data2(",I0,")=",I0)') i, data1(i),i,data2(i)
+        WRITE(*,'("    1. data1(",I0,")=",I0," .NE. data2(",I0,")=",I0)') ih, data1(ih),i,data2(ih)
         EXIT
      ENDIF
   ENDDO
@@ -3232,10 +3242,10 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset, m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
   ! Check values
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. data_short(i))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. data_short(ih))THEN
         total_error = total_error + 1
-        WRITE(*,'("    2. data1(",I0,")=",I0," .NE. data_short(",I0,")=",I0)') i, data1(i),i,data_short(i)
+        WRITE(*,'("    2. data1(",I0,")=",I0," .NE. data_short(",I0,")=",I0)') ih, data1(ih),i,data_short(ih)
         EXIT
      ENDIF
   ENDDO
@@ -3248,11 +3258,11 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset,  m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
   ! Check values
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. INT(data_double(i)))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. INT(data_double(ih)))THEN
         total_error = total_error + 1
         WRITE(*,'("    3. data_double(",I0,")=",I0," .NE. data_double(",I0,")=",I0)') &
-             i, INT(data1(i)), i, INT(data_double(i))
+             ih, INT(data1(ih)), ih, INT(data_double(ih))
         EXIT
      ENDIF
   ENDDO
@@ -3265,11 +3275,11 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset,  m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
   ! Check values
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. INT(data_i8(i)))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. INT(data_i8(ih)))THEN
         total_error = total_error + 1
         WRITE(*,'("    4. data_i8(",I0,")=",I0," .NE. data_i8(",I0,")=",I0)') &
-             i, INT(data1(i)), i, INT(data_i8(i))
+             ih, INT(data1(ih)), i, INT(data_i8(ih))
         EXIT
      ENDIF
   ENDDO
@@ -3282,11 +3292,11 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset,  m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
   ! Check values
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. INT(data_i16(i)))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. INT(data_i16(ih)))THEN
         total_error = total_error + 1
         WRITE(*,'("    5. data_i16(",I0,")=",I0," .NE. data_i16(",I0,")=",I0)') &
-             i, INT(data1(i)), i, INT(data_i16(i))
+             ih, INT(data1(ih)), i, INT(data_i16(ih))
         EXIT
      ENDIF
   ENDDO
@@ -3299,11 +3309,11 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset,  m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
   ! Check values
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. INT(data_r7(i)))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. INT(data_r7(ih)))THEN
         total_error = total_error + 1
         WRITE(*,'("    6. data_r7(",I0,")=",I0," .NE. data_r7(",I0,")=",I0)') &
-             i, INT(data1(i)), i, INT(data_r7(i))
+             ih, INT(data1(ih)), i, INT(data_r7(ih))
         EXIT
      ENDIF
   ENDDO
@@ -3330,10 +3340,10 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset, m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
 
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. data_int(i))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. data_int(ih))THEN
         total_error = total_error + 1
-        WRITE(*,'("    7. data1(",I0,")=",I0," .NE. data_int(",I0,")=",I0)') i, data1(i),i,data_int(i)
+        WRITE(*,'("    7. data1(",I0,")=",I0," .NE. data_int(",I0,")=",I0)') ih, data1(ih),i,data_int(ih)
         EXIT
      ENDIF
   ENDDO
@@ -3358,10 +3368,10 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset, m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
 
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. INT(data_double(i)))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. INT(data_double(ih)))THEN
         total_error = total_error + 1
-        WRITE(*,'("    8. data1(",I0,")=",I0," .NE. data_double(",I0,")=",I0)') i, data1(i),i,INT(data_double(i))
+        WRITE(*,'("    8. data1(",I0,")=",I0," .NE. data_double(",I0,")=",I0)') ih, data1(ih),ih,INT(data_double(ih))
         EXIT
      ENDIF
   ENDDO
@@ -3386,10 +3396,10 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset, m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
 
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. INT(data_r7(i)))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. INT(data_r7(ih)))THEN
         total_error = total_error + 1
-        WRITE(*,'("    9. data1(",I0,")=",I0," .NE. data_r7(",I0,")=",I0)') i, data1(i),i,INT(data_r7(i))
+        WRITE(*,'("    9. data1(",I0,")=",I0," .NE. data_r7(",I0,")=",I0)') ih, data1(ih),ih,INT(data_r7(ih))
         EXIT
      ENDIF
   ENDDO
@@ -3415,10 +3425,10 @@ SUBROUTINE t_enum_conv(total_error)
   CALL h5dread_f(dset, m_baset, f_ptr, error, space, space)
   CALL check("h5dread_f", error, total_error)
 
-  DO i = 1, ds_size(1)
-     IF(data1(i) .NE. data_i16(i))THEN
+  DO ih = 1, ds_size(1)
+     IF(data1(ih) .NE. data_i16(ih))THEN
         total_error = total_error + 1
-        WRITE(*,'("    10. data1(",I0,")=",I0," .NE. data_i16(",I0,")=",I0)') i, data1(i),i,data_i16(i)
+        WRITE(*,'("    10. data1(",I0,")=",I0," .NE. data_i16(",I0,")=",I0)') ih, data1(ih),ih,data_i16(ih)
         EXIT
      ENDIF
   ENDDO
@@ -3439,3 +3449,4 @@ SUBROUTINE t_enum_conv(total_error)
 
 END SUBROUTINE t_enum_conv
 
+END MODULE TH5T_F03
diff --git a/fortran/test/tH5VL.f90 b/fortran/test/tH5VL.f90
index 85feb2b..f063722 100644
--- a/fortran/test/tH5VL.f90
+++ b/fortran/test/tH5VL.f90
@@ -27,8 +27,13 @@
 !
 !*****
 
+MODULE TH5VL
+
+CONTAINS
+
         SUBROUTINE vl_test_integer(cleanup, total_error)
         USE HDF5 ! This module contains all necessary modules
+        USE TH5_MISC
 
           IMPLICIT NONE
           LOGICAL, INTENT(IN) :: cleanup
@@ -54,6 +59,7 @@
           INTEGER     ::   error ! Error flag
 
           INTEGER     :: i, j    !general purpose integers
+          INTEGER(HSIZE_T) :: ih, jh    !general purpose integers
           INTEGER(HSIZE_T), DIMENSION(2) :: data_dims = (/5,6/)
           INTEGER(SIZE_T)  max_len
 
@@ -150,14 +156,14 @@
           CALL h5dread_vl_f(dset_id, vltype_id, vl_int_data_out, data_dims, len_out, &
                             error, mem_space_id = dspace_id, file_space_id = dspace_id)
               CALL check("h5dread_int_f", error, total_error)
-              do i = 1, data_dims(2)
-              do j = 1, len_out(i)
-              if(vl_int_data(j,i) .ne. vl_int_data_out(j,i))  then
+              do ih = 1, data_dims(2)
+              do jh = 1, len_out(ih)
+              if(vl_int_data(jh,ih) .ne. vl_int_data_out(jh,ih))  then
                   total_error = total_error + 1
                   write(*,*) "h5dread_vl_f returned incorrect data"
               endif
               enddo
-               if (len(i) .ne. len_out(i)) then
+               if (len(ih) .ne. len_out(ih)) then
                   total_error = total_error + 1
                   write(*,*) "h5dread_vl_f returned incorrect data"
               endif
@@ -189,6 +195,7 @@
 
         SUBROUTINE vl_test_real(cleanup, total_error)
         USE HDF5 ! This module contains all necessary modules
+        USE TH5_MISC
 
           IMPLICIT NONE
           LOGICAL, INTENT(IN) :: cleanup
@@ -214,10 +221,12 @@
           INTEGER     ::   error ! Error flag
 
           INTEGER     :: i, j    !general purpose integers
+          INTEGER(HSIZE_T)     :: ih, jh    !general purpose integers
           INTEGER(HSIZE_T), DIMENSION(2) :: data_dims = (/5,6/)
           INTEGER(SIZE_T)  max_len
           INTEGER(HID_T) ::  vl_type_id
           LOGICAL        ::  vl_flag
+          LOGICAL        ::  differ
 
           !
           ! Initialize the vl_int_data array.
@@ -320,14 +329,14 @@
           CALL h5dread_vl_f(dset_id, vltype_id, vl_real_data_out, data_dims, len_out, &
                             error, mem_space_id = dspace_id, file_space_id = dspace_id)
               CALL check("h5dread_real_f", error, total_error)
-              do i = 1, data_dims(2)
-              do j = 1, len_out(i)
-              if(vl_real_data(j,i) .ne. vl_real_data_out(j,i))  then
-                  total_error = total_error + 1
-                  write(*,*) "h5dread_vl_f returned incorrect data"
-              endif
+              do ih = 1, data_dims(2)
+              do jh = 1, len_out(ih)
+                 IF( .NOT.dreal_eq( REAL(vl_real_data(jh,ih),dp), REAL(vl_real_data_out(jh,ih), dp)) ) THEN
+                    total_error = total_error + 1
+                    WRITE(*,*) "h5dread_vl_f returned incorrect data"
+                 ENDIF
               enddo
-               if (len(i) .ne. len_out(i)) then
+               if (len(ih) .ne. len_out(ih)) then
                   total_error = total_error + 1
                   write(*,*) "h5dread_vl_f returned incorrect data"
               endif
@@ -360,6 +369,7 @@
 
         SUBROUTINE vl_test_string(cleanup, total_error)
         USE HDF5 ! This module contains all necessary modules
+        USE TH5_MISC
 
           IMPLICIT NONE
           LOGICAL, INTENT(IN) :: cleanup
@@ -383,7 +393,7 @@
           CHARACTER(LEN=10), DIMENSION(4) :: string_data_out     ! Data buffers
           INTEGER     ::   error ! Error flag
 
-          INTEGER     :: i    !general purpose integers
+          INTEGER(HSIZE_T) :: ih    !general purpose integers
           INTEGER(HSIZE_T), DIMENSION(2) :: data_dims = (/10,4/)
           INTEGER(HID_T) :: vl_type_id
           LOGICAL        :: vl_flag
@@ -474,13 +484,13 @@
           CALL h5dread_vl_f(dset_id, H5T_STRING, string_data_out, data_dims,  &
                             str_len_out, error)
               CALL check("h5dread_string_f", error, total_error)
-          do 100 i = 1, data_dims(2)
-             if(str_len(i) .ne. str_len_out(i)) then
+          do 100 ih = 1, data_dims(2)
+             if(str_len(ih) .ne. str_len_out(ih)) then
                 total_error=total_error + 1
                 write(*,*) 'Returned string length is incorrect'
                 goto 100
              endif
-             if(string_data(1)(1:str_len(i)) .ne. string_data_out(1)(1:str_len(i))) then
+             if(string_data(1)(1:str_len(ih)) .ne. string_data_out(1)(1:str_len(ih))) then
              write(*,*) ' Returned string is wrong'
              total_error = total_error + 1
              endif
@@ -506,4 +516,4 @@
 
           RETURN
         END SUBROUTINE vl_test_string
-
+END MODULE TH5VL
diff --git a/fortran/test/tH5Z.f90 b/fortran/test/tH5Z.f90
index cd6a343..4201960 100644
--- a/fortran/test/tH5Z.f90
+++ b/fortran/test/tH5Z.f90
@@ -26,15 +26,18 @@
 !  filters_test, szip_test
 !
 !*****
+MODULE TH5Z
 
-    SUBROUTINE filters_test(cleanup, total_error)
+CONTAINS
+
+    SUBROUTINE filters_test(total_error)
 
 !   This subroutine tests following functionalities: h5zfilter_avail_f, h5zunregister_f
 
    USE HDF5 ! This module contains all necessary modules
+   USE TH5_MISC
 
      IMPLICIT NONE
-     LOGICAL, INTENT(IN)  :: cleanup
      INTEGER, INTENT(OUT) :: total_error
      LOGICAL :: status
      INTEGER(HID_T)    :: crtpr_id, xfer_id
@@ -165,6 +168,7 @@
 
         SUBROUTINE szip_test(szip_flag, cleanup, total_error)
         USE HDF5 ! This module contains all necessary modules
+        USE TH5_MISC
 
           IMPLICIT NONE
           LOGICAL, INTENT(OUT) :: szip_flag
@@ -412,3 +416,4 @@
 
           RETURN
         END SUBROUTINE szip_test
+END MODULE TH5Z
diff --git a/fortran/test/tHDF5.f90 b/fortran/test/tHDF5.f90
new file mode 100644
index 0000000..e73fed2
--- /dev/null
+++ b/fortran/test/tHDF5.f90
@@ -0,0 +1,45 @@
+!****h* ROBODoc/HDF5
+!
+! NAME
+!  MODULE THDF5
+!
+! FILE
+!  src/fortran/test/tHDF5.f90
+!
+! PURPOSE
+!  This is the test  module used for testing the Fortran90 HDF library APIs.
+!
+! COPYRIGHT
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!   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.     *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!
+!*****
+
+MODULE THDF5
+  USE TH5_MISC
+  USE TH5A
+  USE TH5D
+  USE TH5E
+  USE TH5F
+  USE TH5G
+  USE TH5I
+  USE TH5P
+  USE TH5R
+  USE TH5S
+  USE TH5SSELECT
+  USE TH5T
+  USE TH5VL
+  USE TH5Z
+END MODULE THDF5
diff --git a/fortran/test/tHDF5_1_8.f90 b/fortran/test/tHDF5_1_8.f90
new file mode 100644
index 0000000..47eec16
--- /dev/null
+++ b/fortran/test/tHDF5_1_8.f90
@@ -0,0 +1,38 @@
+!****h* ROBODoc/HDF5
+!
+! NAME
+!  MODULE THDF5_1_8
+!
+! FILE
+!  src/fortran/test/tHDF5_1_8.f90
+!
+! PURPOSE
+!  This is the test  module used for testing the Fortran90 HDF library
+!  1.8.* APIs
+!
+! COPYRIGHT
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!   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.     *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!
+!*****
+
+MODULE THDF5_1_8
+  USE TH5_MISC
+  USE TH5MISC_1_8
+  USE TH5A_1_8
+  USE TH5G_1_8
+  USE TH5F
+  USE TH5O
+END MODULE THDF5_1_8
diff --git a/fortran/test/tHDF5_F03.f90 b/fortran/test/tHDF5_F03.f90
new file mode 100644
index 0000000..3dbec11
--- /dev/null
+++ b/fortran/test/tHDF5_F03.f90
@@ -0,0 +1,39 @@
+!****h* ROBODoc/HDF5
+!
+! NAME
+!  MODULE THDF5_F03
+!
+! FILE
+!  src/fortran/test/tHDF5_F03.f90
+!
+! PURPOSE
+!  This is the test  module used for testing the Fortran2003 HDF 
+!  library APIS.
+!
+! COPYRIGHT
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!   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.     *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!
+!*****
+
+MODULE THDF5_F03
+  USE TH5_MISC
+  USE TH5E_F03
+  USE TH5F_F03
+  USE TH5L_F03
+  USE TH5O_F03
+  USE TH5P_F03
+  USE TH5T_F03
+END MODULE THDF5_F03
diff --git a/fortran/test/tf.f90 b/fortran/test/tf.f90
index 4f73fda..2964840 100644
--- a/fortran/test/tf.f90
+++ b/fortran/test/tf.f90
@@ -24,27 +24,44 @@
 !
 ! CONTAINS SUBROUTINES
 !  write_test_status, check, verify, verifyLogical, verifyString, h5_fixname_f,
-!  h5_cleanup_f, h5_exit_f, h5_env_nocleanup_f
+!  h5_cleanup_f, h5_exit_f, h5_env_nocleanup_f,dreal_eqv
 !
 !*****
+MODULE TH5_MISC
+
+  INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15, 307)
+
+CONTAINS
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: dreal_eq
+!DEC$endif
+  LOGICAL FUNCTION dreal_eq(a,b)
+
+    ! Check if two double precision reals are equivalent
+    REAL(dp), INTENT (in):: a,b
+    REAL(dp), PARAMETER :: eps = 1.e-8
+    dreal_eq = ABS(a-b) .LT. eps
+
+  END FUNCTION dreal_eq
 
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: verify_real_kind_7
 !DEC$endif
-SUBROUTINE verify_real_kind_7(string,value,correct_value,total_error)
-  USE HDF5
-	  
-  INTEGER, PARAMETER :: real_kind_7 = SELECTED_REAL_KIND(Fortran_REAL_4) !should map to REAL*4 on most modern processors
-  CHARACTER(LEN=*) :: string
-  REAL(real_kind_7) :: value, correct_value
-  INTEGER :: total_error
-  IF (value .NE. correct_value) THEN
-     total_error=total_error+1
-     WRITE(*,*) "ERROR: INCORRECT REAL VALIDATION ", string
-  ENDIF
-  RETURN
-END SUBROUTINE verify_real_kind_7
+  SUBROUTINE verify_real_kind_7(string,value,correct_value,total_error)
+    USE HDF5
+    INTEGER, PARAMETER :: real_kind_7 = SELECTED_REAL_KIND(Fortran_REAL_4) !should map to REAL*4 on most modern processors
+    CHARACTER(LEN=*) :: string
+    REAL(real_kind_7) :: value, correct_value
+    INTEGER :: total_error
+    IF (.NOT.dreal_eq( REAL(value,dp), REAL(correct_value, dp)) ) THEN
+       total_error=total_error+1
+       WRITE(*,*) "ERROR: INCORRECT REAL VALIDATION ", string
+    ENDIF
+    RETURN
+  END SUBROUTINE verify_real_kind_7
 
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
@@ -52,7 +69,7 @@ END SUBROUTINE verify_real_kind_7
 !DEC$endif
   SUBROUTINE write_test_status( test_result, test_title, total_error)
 
-! Writes the results of the tests
+    ! Writes the results of the tests
 
     IMPLICIT NONE
 
@@ -65,11 +82,11 @@ END SUBROUTINE verify_real_kind_7
 
 ! Controls the output style for reporting test results
 
-  CHARACTER(LEN=8) :: error_string
-  CHARACTER(LEN=8), PARAMETER :: success = ' PASSED '
-  CHARACTER(LEN=8), PARAMETER :: failure = '*FAILED*'
-  CHARACTER(LEN=8), PARAMETER :: skip    = '--SKIP--'
-
+    CHARACTER(LEN=8) :: error_string
+    CHARACTER(LEN=8), PARAMETER :: success = ' PASSED '
+    CHARACTER(LEN=8), PARAMETER :: failure = '*FAILED*'
+    CHARACTER(LEN=8), PARAMETER :: skip    = '--SKIP--'
+    
 
     error_string = failure
     IF (test_result ==  0) THEN
@@ -89,75 +106,76 @@ END SUBROUTINE verify_real_kind_7
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: check
 !DEC$endif
-SUBROUTINE check(string,error,total_error)
-  CHARACTER(LEN=*) :: string
-  INTEGER :: error, total_error
-  IF (error .LT. 0) THEN
-     total_error=total_error+1
-     WRITE(*,*) string, " FAILED"
-  ENDIF
-  RETURN
-END SUBROUTINE check
+  SUBROUTINE check(string,error,total_error)
+    CHARACTER(LEN=*) :: string
+    INTEGER :: error, total_error
+    IF (error .LT. 0) THEN
+       total_error=total_error+1
+       WRITE(*,*) string, " FAILED"
+    ENDIF
+    RETURN
+  END SUBROUTINE check
 
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: verify
 !DEC$endif
-SUBROUTINE verify(string,value,correct_value,total_error)
-  CHARACTER(LEN=*) :: string
-  INTEGER :: value, correct_value, total_error
-  IF (value .NE. correct_value) THEN
-     total_error=total_error+1
-     WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
-  ENDIF
-  RETURN
-END SUBROUTINE verify
+  SUBROUTINE VERIFY(string,value,correct_value,total_error)
+    CHARACTER(LEN=*) :: string
+    INTEGER :: value, correct_value, total_error
+    IF (value .NE. correct_value) THEN
+       total_error=total_error+1
+       WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
+    ENDIF
+    RETURN
+  END SUBROUTINE verify
 
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: verify_Fortran_INTEGER_4
 !DEC$endif
-SUBROUTINE verify_Fortran_INTEGER_4(string,value,correct_value,total_error)
-  USE HDF5
-  INTEGER, PARAMETER :: int_kind_8 = SELECTED_INT_KIND(Fortran_INTEGER_4)  ! should map to INTEGER*4 on most modern processors	
-  CHARACTER(LEN=*) :: string
-  INTEGER(int_kind_8) :: value, correct_value, total_error
-  IF (value .NE. correct_value) THEN
-     total_error=total_error+1
-     WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
-  ENDIF
-  RETURN
-END SUBROUTINE verify_Fortran_INTEGER_4
+  SUBROUTINE verify_Fortran_INTEGER_4(string,value,correct_value,total_error)
+    USE HDF5
+    INTEGER, PARAMETER :: int_kind_8 = SELECTED_INT_KIND(Fortran_INTEGER_4)  ! should map to INTEGER*4 on most modern processors	
+    CHARACTER(LEN=*) :: string
+    INTEGER(int_kind_8) :: value, correct_value
+    INTEGER :: total_error
+    IF (value .NE. correct_value) THEN
+       total_error=total_error+1
+       WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
+    ENDIF
+    RETURN
+  END SUBROUTINE verify_Fortran_INTEGER_4
 
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: verifyLogical
 !DEC$endif
-SUBROUTINE verifyLogical(string,value,correct_value,total_error)
-  CHARACTER(LEN=*) :: string
-  LOGICAL :: value, correct_value
-  INTEGER :: total_error
-  IF (value .NEQV. correct_value) THEN
-     total_error = total_error + 1
-     WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
-  ENDIF
-  RETURN
-END SUBROUTINE verifyLogical
-
+  SUBROUTINE verifyLogical(string,value,correct_value,total_error)
+    CHARACTER(LEN=*) :: string
+    LOGICAL :: value, correct_value
+    INTEGER :: total_error
+    IF (value .NEQV. correct_value) THEN
+       total_error = total_error + 1
+       WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
+    ENDIF
+    RETURN
+  END SUBROUTINE verifyLogical
+  
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: verifyString
 !DEC$endif
-SUBROUTINE verifyString(string, value,correct_value,total_error)
-  CHARACTER*(*) :: string
-  CHARACTER*(*) :: value, correct_value
-  INTEGER :: total_error
-  IF (TRIM(value) .NE. TRIM(correct_value)) THEN
-     total_error = total_error + 1
-     WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
-  ENDIF
-  RETURN
-END SUBROUTINE verifyString
+  SUBROUTINE verifyString(string, value,correct_value,total_error)
+    CHARACTER*(*) :: string
+    CHARACTER*(*) :: value, correct_value
+    INTEGER :: total_error
+    IF (TRIM(value) .NE. TRIM(correct_value)) THEN
+       total_error = total_error + 1
+       WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
+    ENDIF
+    RETURN
+  END SUBROUTINE verifyString
 
 
 !----------------------------------------------------------------------
@@ -180,46 +198,46 @@ END SUBROUTINE verifyString
 !
 !
 !----------------------------------------------------------------------
-SUBROUTINE h5_fixname_f(base_name, full_name, fapl, hdferr)
+  SUBROUTINE h5_fixname_f(base_name, full_name, fapl, hdferr)
 !
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: h5_fixname_f
 !DEC$endif
-  USE H5GLOBAL
-  IMPLICIT NONE
-  CHARACTER(LEN=*), INTENT(IN) :: base_name   ! base name
-  CHARACTER(LEN=*), INTENT(IN) :: full_name   ! full name
-  INTEGER, INTENT(OUT) :: hdferr         ! Error code
-  INTEGER(HID_T), INTENT(IN) :: fapl ! file access property list
-
-  INTEGER(SIZE_T) :: base_namelen ! Length of the base name character string
-  INTEGER(SIZE_T) :: full_namelen ! Length of the full name character string
+    USE H5GLOBAL
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: base_name   ! base name
+    CHARACTER(LEN=*), INTENT(IN) :: full_name   ! full name
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), INTENT(IN) :: fapl ! file access property list
+
+    INTEGER(SIZE_T) :: base_namelen ! Length of the base name character string
+    INTEGER(SIZE_T) :: full_namelen ! Length of the full name character string
 !            INTEGER(HID_T) :: fapl_default
 
-  INTERFACE
-     INTEGER FUNCTION h5_fixname_c(base_name, base_namelen, fapl, &
-          full_name, full_namelen)
-       USE H5GLOBAL
-       !DEC$ IF DEFINED(HDF5F90_WINDOWS)
-       !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_FIXNAME_C':: h5_fixname_c
-       !DEC$ ENDIF
-       !DEC$ATTRIBUTES reference :: base_name
-       !DEC$ATTRIBUTES reference :: full_name
-       CHARACTER(LEN=*), INTENT(IN) :: base_name
-       INTEGER(SIZE_T) :: base_namelen
-       INTEGER(HID_T), INTENT(IN) :: fapl
-       CHARACTER(LEN=*), INTENT(IN) :: full_name
-       INTEGER(SIZE_T) :: full_namelen
-     END FUNCTION h5_fixname_c
-  END INTERFACE
-
-  base_namelen = LEN(base_name)
-  full_namelen = LEN(full_name)
-  hdferr = h5_fixname_c(base_name, base_namelen, fapl, &
-       full_name, full_namelen)
-
-END SUBROUTINE h5_fixname_f
+    INTERFACE
+       INTEGER FUNCTION h5_fixname_c(base_name, base_namelen, fapl, &
+            full_name, full_namelen)
+         USE H5GLOBAL
+         !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_FIXNAME_C':: h5_fixname_c
+         !DEC$ ENDIF
+         !DEC$ATTRIBUTES reference :: base_name
+         !DEC$ATTRIBUTES reference :: full_name
+         CHARACTER(LEN=*), INTENT(IN) :: base_name
+         INTEGER(SIZE_T) :: base_namelen
+         INTEGER(HID_T), INTENT(IN) :: fapl
+         CHARACTER(LEN=*), INTENT(IN) :: full_name
+         INTEGER(SIZE_T) :: full_namelen
+       END FUNCTION h5_fixname_c
+    END INTERFACE
+
+    base_namelen = LEN(base_name)
+    full_namelen = LEN(full_name)
+    hdferr = h5_fixname_c(base_name, base_namelen, fapl, &
+         full_name, full_namelen)
+  
+  END SUBROUTINE h5_fixname_f
 
 !----------------------------------------------------------------------
 ! Name:		h5_cleanup_f
@@ -240,37 +258,37 @@ END SUBROUTINE h5_fixname_f
 !
 !
 !----------------------------------------------------------------------
-SUBROUTINE h5_cleanup_f(base_name, fapl, hdferr)
+  SUBROUTINE h5_cleanup_f(base_name, fapl, hdferr)
 !
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: h5_cleanup_f
 !DEC$endif
-  USE H5GLOBAL
-  IMPLICIT NONE
-  CHARACTER(LEN=*), INTENT(IN) :: base_name   ! base name
-  INTEGER, INTENT(OUT) :: hdferr         ! Error code
-  INTEGER(HID_T), INTENT(IN) :: fapl ! file access property list
-
-  INTEGER(SIZE_T) :: base_namelen ! Length of the base name character string
-
-  INTERFACE
-     INTEGER FUNCTION h5_cleanup_c(base_name, base_namelen, fapl)
-       USE H5GLOBAL
-       !DEC$ IF DEFINED(HDF5F90_WINDOWS)
-       !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_CLEANUP_C':: h5_cleanup_c
-       !DEC$ ENDIF
-       !DEC$ATTRIBUTES reference :: base_name
-       CHARACTER(LEN=*), INTENT(IN) :: base_name
-       INTEGER(SIZE_T) :: base_namelen
-       INTEGER(HID_T), INTENT(IN) :: fapl
-     END FUNCTION h5_cleanup_c
-  END INTERFACE
-
-  base_namelen = LEN(base_name)
-  hdferr = h5_cleanup_c(base_name, base_namelen, fapl)
-
-END SUBROUTINE h5_cleanup_f
+    USE H5GLOBAL
+    IMPLICIT NONE
+    CHARACTER(LEN=*), INTENT(IN) :: base_name   ! base name
+    INTEGER, INTENT(OUT) :: hdferr         ! Error code
+    INTEGER(HID_T), INTENT(IN) :: fapl ! file access property list
+    
+    INTEGER(SIZE_T) :: base_namelen ! Length of the base name character string
+
+    INTERFACE
+       INTEGER FUNCTION h5_cleanup_c(base_name, base_namelen, fapl)
+         USE H5GLOBAL
+         !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_CLEANUP_C':: h5_cleanup_c
+         !DEC$ ENDIF
+         !DEC$ATTRIBUTES reference :: base_name
+         CHARACTER(LEN=*), INTENT(IN) :: base_name
+         INTEGER(SIZE_T) :: base_namelen
+         INTEGER(HID_T), INTENT(IN) :: fapl
+       END FUNCTION h5_cleanup_c
+    END INTERFACE
+    
+    base_namelen = LEN(base_name)
+    hdferr = h5_cleanup_c(base_name, base_namelen, fapl)
+    
+  END SUBROUTINE h5_cleanup_f
 
 !----------------------------------------------------------------------
 ! Name:		h5_exit_f
@@ -292,27 +310,27 @@ END SUBROUTINE h5_cleanup_f
 !
 !
 !----------------------------------------------------------------------
-SUBROUTINE h5_exit_f(status)
+  SUBROUTINE h5_exit_f(status)
 !
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: h5_exit_f
 !DEC$endif
-  IMPLICIT NONE
-  INTEGER, INTENT(IN) :: status         ! Return code
-
-  INTERFACE
-     SUBROUTINE h5_exit_c(status)
-       !DEC$ IF DEFINED(HDF5F90_WINDOWS)
-       !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_EXIT_C':: h5_exit_c
-       !DEC$ ENDIF
-       INTEGER, INTENT(IN) :: status
-     END SUBROUTINE h5_exit_c
-  END INTERFACE
+    IMPLICIT NONE
+    INTEGER, INTENT(IN) :: status         ! Return code
 
-  CALL h5_exit_c(status)
+    INTERFACE
+       SUBROUTINE h5_exit_c(status)
+         !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_EXIT_C':: h5_exit_c
+         !DEC$ ENDIF
+         INTEGER, INTENT(IN) :: status
+       END SUBROUTINE h5_exit_c
+    END INTERFACE
+    
+    CALL h5_exit_c(status)
 
-END SUBROUTINE h5_exit_f
+  END SUBROUTINE h5_exit_f
 
 !----------------------------------------------------------------------
 ! Name:		h5_env_nocleanup_f
@@ -329,31 +347,29 @@ END SUBROUTINE h5_exit_f
 !               September 30, 2008
 !
 !----------------------------------------------------------------------
-SUBROUTINE h5_env_nocleanup_f(HDF5_NOCLEANUP)
+  SUBROUTINE h5_env_nocleanup_f(HDF5_NOCLEANUP)
 !
 !This definition is needed for Windows DLLs
 !DEC$if defined(BUILD_HDF5_DLL)
 !DEC$attributes dllexport :: h5_env_nocleanup_f
 !DEC$endif
-  IMPLICIT NONE
-  LOGICAL, INTENT(OUT) :: HDF5_NOCLEANUP ! Return code
-  INTEGER :: status
-
-  INTERFACE
-     SUBROUTINE h5_env_nocleanup_c(status)
-       !DEC$ IF DEFINED(HDF5F90_WINDOWS)
-       !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_ENV_NOCLEANUP_C':: h5_env_nocleanup_c
-       !DEC$ ENDIF
-       INTEGER :: status
-     END SUBROUTINE h5_env_nocleanup_c
-  END INTERFACE
-
-  CALL h5_env_nocleanup_c(status)
-
-  HDF5_NOCLEANUP = .FALSE.
-  IF(status.EQ.1)THEN
-     HDF5_NOCLEANUP = .TRUE.
-  ENDIF
-
-END SUBROUTINE h5_env_nocleanup_f
-
+    IMPLICIT NONE
+    LOGICAL, INTENT(OUT) :: HDF5_NOCLEANUP ! Return code
+    INTEGER :: status
+    
+    INTERFACE
+       SUBROUTINE h5_env_nocleanup_c(status)
+         !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+         !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5_ENV_NOCLEANUP_C':: h5_env_nocleanup_c
+         !DEC$ ENDIF
+         INTEGER :: status
+       END SUBROUTINE h5_env_nocleanup_c
+    END INTERFACE
+    
+    CALL h5_env_nocleanup_c(status)
+    
+    HDF5_NOCLEANUP = .FALSE.
+    IF(status.EQ.1) HDF5_NOCLEANUP = .TRUE.
+    
+  END SUBROUTINE h5_env_nocleanup_f
+END MODULE TH5_MISC
diff --git a/fortran/testpar/CMakeLists.txt b/fortran/testpar/CMakeLists.txt
index d1aba51..3361220 100644
--- a/fortran/testpar/CMakeLists.txt
+++ b/fortran/testpar/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_FORTRAN_TESTPAR C CXX Fortran)
 
 #-----------------------------------------------------------------------------
@@ -11,23 +11,23 @@ INCLUDE_DIRECTORIES (${CMAKE_Fortran_MODULE_DIRECTORY} ${HDF5_F90_BINARY_DIR} ${
 #-----------------------------------------------------------------------------
 
 #-- Adding test for parallel_test
-ADD_EXECUTABLE (parallel_test
+add_executable (parallel_test
     ptest.f90
     hyper.f90
     mdset.f90
 )
 TARGET_NAMING (parallel_test ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (parallel_test " " " ")
-TARGET_LINK_LIBRARIES (parallel_test 
+target_link_libraries (parallel_test 
     ${HDF5_F90_TEST_LIB_TARGET}
     ${HDF5_F90_LIB_TARGET}
     ${HDF5_LIB_TARGET}
     ${MPI_Fortran_LIBRARIES}
 )
-IF (WIN32 AND MSVC)
-  TARGET_LINK_LIBRARIES (parallel_test "ws2_32.lib")
-ENDIF (WIN32 AND MSVC)
-SET_TARGET_PROPERTIES (parallel_test PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (parallel_test PROPERTIES FOLDER test/fortran)
+if (WIN32 AND MSVC)
+  target_link_libraries (parallel_test "ws2_32.lib")
+endif (WIN32 AND MSVC)
+set_target_properties (parallel_test PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (parallel_test PROPERTIES FOLDER test/fortran)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/fortran/testpar/CMakeTests.cmake b/fortran/testpar/CMakeTests.cmake
index 2cd7ed0..61085e6 100644
--- a/fortran/testpar/CMakeTests.cmake
+++ b/fortran/testpar/CMakeTests.cmake
@@ -4,4 +4,4 @@
 ###           T E S T I N G                                                ###
 ##############################################################################
 ##############################################################################
-ADD_TEST (NAME parallel_test COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:parallel_test>)
+add_test (NAME FORT_parallel_test COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:parallel_test>)
diff --git a/fortran/testpar/Makefile.am b/fortran/testpar/Makefile.am
index 2e85f3b..517a3c8 100644
--- a/fortran/testpar/Makefile.am
+++ b/fortran/testpar/Makefile.am
@@ -21,7 +21,8 @@
 include $(top_srcdir)/config/commence.am
 
 # Include files
-AM_FCFLAGS+=-I$(top_srcdir)/fortran/src -I$(top_srcdir)/fortran/test $(F9XMODFLAG)$(top_builddir)/fortran/src
+AM_FCFLAGS+=-I$(top_srcdir)/fortran/src -I$(top_srcdir)/fortran/test $(F9XMODFLAG)$(top_builddir)/fortran/src \
+            $(F9XMODFLAG)$(top_builddir)/fortran/test
 
 # Some Fortran compilers can't build shared libraries, so sometimes we
 # want to build a shared C library and a static Fortran library.  If so,
diff --git a/fortran/testpar/Makefile.in b/fortran/testpar/Makefile.in
index 9a93367..989c626 100644
--- a/fortran/testpar/Makefile.in
+++ b/fortran/testpar/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # HDF5 Fortran Parallel Library Test Makefile(.in)
 #
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,10 +94,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver
 
 # Some Fortran compilers can't build shared libraries, so sometimes we
 # want to build a shared C library and a static Fortran library.  If so,
@@ -134,12 +162,225 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -158,7 +399,8 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 # Include files
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ -I$(top_srcdir)/fortran/src \
 	-I$(top_srcdir)/fortran/test \
-	$(F9XMODFLAG)$(top_builddir)/fortran/src
+	$(F9XMODFLAG)$(top_builddir)/fortran/src \
+	$(F9XMODFLAG)$(top_builddir)/fortran/test
 AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
 AM_MAKEFLAGS = @AM_MAKEFLAGS@
 AR = @AR@
@@ -215,7 +457,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -460,7 +701,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .f90 .lo .o .obj
+.SUFFIXES: .f90 .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -501,6 +742,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) $(EXTRA_parallel_test_DEPENDENCIES) 
 	@rm -f parallel_test$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(parallel_test_OBJECTS) $(parallel_test_LDADD) $(LIBS)
@@ -526,26 +768,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -557,15 +788,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -574,9 +801,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -592,6 +820,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -648,6 +1021,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -729,19 +1105,19 @@ 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 \
-	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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/fortran/testpar/hyper.f90 b/fortran/testpar/hyper.f90
index 1a580ca..a2e2e07 100644
--- a/fortran/testpar/hyper.f90
+++ b/fortran/testpar/hyper.f90
@@ -19,7 +19,8 @@
 !//////////////////////////////////////////////////////////
 
 SUBROUTINE hyper(length,do_collective,do_chunk, mpi_size, mpi_rank, nerrors)
-  USE hdf5
+  USE HDF5
+  USE TH5_MISC
   IMPLICIT NONE
   INCLUDE 'mpif.h'
 
diff --git a/fortran/testpar/mdset.f90 b/fortran/testpar/mdset.f90
index 9d14a50..7fe431b 100644
--- a/fortran/testpar/mdset.f90
+++ b/fortran/testpar/mdset.f90
@@ -19,7 +19,8 @@
 !//////////////////////////////////////////////////////////
 
 SUBROUTINE multiple_dset_write(length, do_collective, do_chunk, mpi_size, mpi_rank, nerrors)
-  USE hdf5
+  USE HDF5
+  USE TH5_MISC
   IMPLICIT NONE
   INCLUDE 'mpif.h'
 
diff --git a/hl/CMakeLists.txt b/hl/CMakeLists.txt
index 5c9403d..22c0770 100644
--- a/hl/CMakeLists.txt
+++ b/hl/CMakeLists.txt
@@ -1,44 +1,44 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL C CXX)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Shared Libs
 #-----------------------------------------------------------------------------
-IF (BUILD_SHARED_LIBS)
-  SET (HL_BUILT_AS_DYNAMIC_LIB 1)
-ELSE (BUILD_SHARED_LIBS)
-  SET (HL_BUILT_AS_STATIC_LIB 1)
-ENDIF (BUILD_SHARED_LIBS)
+if (BUILD_SHARED_LIBS)
+  set (HL_BUILT_AS_DYNAMIC_LIB 1)
+else (BUILD_SHARED_LIBS)
+  set (HL_BUILT_AS_STATIC_LIB 1)
+endif (BUILD_SHARED_LIBS)
 
 #-----------------------------------------------------------------------------
 # List Source files
 #-----------------------------------------------------------------------------
 INCLUDE_DIRECTORIES (${HDF5_HL_SOURCE_DIR}/src )
 
-ADD_SUBDIRECTORY (${HDF5_HL_SOURCE_DIR}/src ${HDF5_HL_BINARY_DIR}/src)
+add_subdirectory (${HDF5_HL_SOURCE_DIR}/src ${HDF5_HL_BINARY_DIR}/src)
 
 #-- Build the High level Tools
-IF (HDF5_BUILD_TOOLS)
-  ADD_SUBDIRECTORY (${HDF5_HL_SOURCE_DIR}/tools ${HDF5_HL_BINARY_DIR}/tools)
-ENDIF (HDF5_BUILD_TOOLS)
+if (HDF5_BUILD_TOOLS)
+  add_subdirectory (${HDF5_HL_SOURCE_DIR}/tools ${HDF5_HL_BINARY_DIR}/tools)
+endif (HDF5_BUILD_TOOLS)
 
 #-- Add High Level Examples
-IF (HDF5_BUILD_EXAMPLES)
-  ADD_SUBDIRECTORY (${HDF5_HL_SOURCE_DIR}/examples ${HDF5_HL_BINARY_DIR}/examples)
-ENDIF (HDF5_BUILD_EXAMPLES)
+if (HDF5_BUILD_EXAMPLES)
+  add_subdirectory (${HDF5_HL_SOURCE_DIR}/examples ${HDF5_HL_BINARY_DIR}/examples)
+endif (HDF5_BUILD_EXAMPLES)
 
 #-- Build the Unit testing if requested
-IF (NOT HDF5_EXTERNALLY_CONFIGURED)
-  IF (BUILD_TESTING)
-    ADD_SUBDIRECTORY (${HDF5_HL_SOURCE_DIR}/test ${HDF5_HL_BINARY_DIR}/test)
-  ENDIF (BUILD_TESTING)
-ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
-
-IF (HDF5_BUILD_CPP_LIB)
-  ADD_SUBDIRECTORY (${HDF5_HL_SOURCE_DIR}/c++ ${HDF5_HL_BINARY_DIR}/c++)
-ENDIF (HDF5_BUILD_CPP_LIB)
+if (NOT HDF5_EXTERNALLY_CONFIGURED)
+  if (BUILD_TESTING)
+    add_subdirectory (${HDF5_HL_SOURCE_DIR}/test ${HDF5_HL_BINARY_DIR}/test)
+  endif (BUILD_TESTING)
+endif (NOT HDF5_EXTERNALLY_CONFIGURED)
+
+if (HDF5_BUILD_CPP_LIB)
+  add_subdirectory (${HDF5_HL_SOURCE_DIR}/c++ ${HDF5_HL_BINARY_DIR}/c++)
+endif (HDF5_BUILD_CPP_LIB)
diff --git a/hl/Makefile.in b/hl/Makefile.in
index 786bfba..17a1ff0 100644
--- a/hl/Makefile.in
+++ b/hl/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 #
 # HDF5 High-Level Makefile(.in)
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,10 +98,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = hl
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -98,13 +126,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -112,15 +141,230 @@ am__can_run_installinfo = \
   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
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -217,7 +461,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -452,6 +695,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -496,14 +740,13 @@ clean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -524,31 +767,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -564,12 +789,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -581,15 +801,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -598,9 +814,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -616,6 +833,151 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -697,6 +1059,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -774,14 +1139,11 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool cscopelist cscopelist-recursive \
-	ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 \
@@ -791,7 +1153,7 @@ uninstall-am:
 	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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/c++/CMakeLists.txt b/hl/c++/CMakeLists.txt
index 8d68dd0..9f0aa7e 100644
--- a/hl/c++/CMakeLists.txt
+++ b/hl/c++/CMakeLists.txt
@@ -1,22 +1,22 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_CPP)
 
 #-----------------------------------------------------------------------------
 # Main HL lib is in /src
 #-----------------------------------------------------------------------------
-ADD_SUBDIRECTORY (${HDF5_HL_CPP_SOURCE_DIR}/src ${HDF5_HL_CPP_BINARY_DIR}/src)
+add_subdirectory (${HDF5_HL_CPP_SOURCE_DIR}/src ${HDF5_HL_CPP_BINARY_DIR}/src)
 
 # --------------------------------------------------------------------
 #  Add in the examples for the Packet Table codes
 # --------------------------------------------------------------------
-IF (HDF5_BUILD_EXAMPLES)
-  ADD_SUBDIRECTORY (${HDF5_HL_CPP_SOURCE_DIR}/examples ${HDF5_HL_CPP_BINARY_DIR}/examples)
-ENDIF (HDF5_BUILD_EXAMPLES)
+if (HDF5_BUILD_EXAMPLES)
+  add_subdirectory (${HDF5_HL_CPP_SOURCE_DIR}/examples ${HDF5_HL_CPP_BINARY_DIR}/examples)
+endif (HDF5_BUILD_EXAMPLES)
 
 # --------------------------------------------------------------------
 # Add in the unit tests for the packet table c++ wrapper
 # --------------------------------------------------------------------
 
-IF (BUILD_TESTING)
-  ADD_SUBDIRECTORY (${HDF5_HL_CPP_SOURCE_DIR}/test ${HDF5_HL_CPP_BINARY_DIR}/test)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  add_subdirectory (${HDF5_HL_CPP_SOURCE_DIR}/test ${HDF5_HL_CPP_BINARY_DIR}/test)
+endif (BUILD_TESTING)
diff --git a/hl/c++/Makefile.in b/hl/c++/Makefile.in
index 60baefe..4b11ad8 100644
--- a/hl/c++/Makefile.in
+++ b/hl/c++/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # High-Level API C++ Makefile(.in)
 # 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,10 +94,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = hl/c++
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -94,13 +122,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -108,15 +137,230 @@ am__can_run_installinfo = \
   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
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -213,7 +457,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -446,6 +689,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -490,14 +734,13 @@ clean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -518,31 +761,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -558,12 +783,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -575,15 +795,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -592,9 +808,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -610,6 +827,151 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -691,6 +1053,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -768,14 +1133,11 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool cscopelist cscopelist-recursive \
-	ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 \
@@ -785,7 +1147,7 @@ uninstall-am:
 	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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/c++/examples/CMakeLists.txt b/hl/c++/examples/CMakeLists.txt
index f762839..8f9b43f 100644
--- a/hl/c++/examples/CMakeLists.txt
+++ b/hl/c++/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_CPP_EXAMPLES)
 
 #-----------------------------------------------------------------------------
@@ -10,17 +10,17 @@ INCLUDE_DIRECTORIES (${HDF5_HL_CPP_SRC_DIR}/src)
 # --------------------------------------------------------------------
 #  Add in the examples for the Packet Table codes
 # --------------------------------------------------------------------
-ADD_EXECUTABLE (ptExampleFL ${HDF5_HL_CPP_EXAMPLES_SOURCE_DIR}/ptExampleFL.cpp)
+add_executable (ptExampleFL ${HDF5_HL_CPP_EXAMPLES_SOURCE_DIR}/ptExampleFL.cpp)
 TARGET_NAMING (ptExampleFL ${LIB_TYPE})
 TARGET_C_PROPERTIES (ptExampleFL " " " ")
-TARGET_LINK_LIBRARIES (
+target_link_libraries (
     ptExampleFL
     ${HDF5_HL_CPP_LIB_TARGET}
     ${HDF5_HL_LIB_TARGET}
     ${HDF5_LIB_TARGET}
 )
-SET_TARGET_PROPERTIES (ptExampleFL PROPERTIES FOLDER examples/hl/cpp)
+set_target_properties (ptExampleFL PROPERTIES FOLDER examples/hl/cpp)
 
-IF (BUILD_TESTING)
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
diff --git a/hl/c++/examples/CMakeTests.cmake b/hl/c++/examples/CMakeTests.cmake
index c73ceeb..bac9fdf 100644
--- a/hl/c++/examples/CMakeTests.cmake
+++ b/hl/c++/examples/CMakeTests.cmake
@@ -5,12 +5,12 @@
 ##############################################################################
 ##############################################################################
 # Remove any output file left over from previous test run
-ADD_TEST (
-    NAME cpp_hl_ex_ptExampleFL-clear-objects
+add_test (
+    NAME HL_CPP_ex_ptExampleFL-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
             PTcppexampleFL.h5
 )
 
-ADD_TEST (NAME cpp_hl_ex_ptExampleFL COMMAND $<TARGET_FILE:ptExampleFL>)
-SET_TESTS_PROPERTIES (cpp_hl_ex_ptExampleFL PROPERTIES DEPENDS cpp_hl_ex_ptExampleFL-clear-objects)
+add_test (NAME HL_CPP_ex_ptExampleFL COMMAND $<TARGET_FILE:ptExampleFL>)
+set_tests_properties (HL_CPP_ex_ptExampleFL PROPERTIES DEPENDS HL_CPP_ex_ptExampleFL-clear-objects)
diff --git a/hl/c++/examples/Makefile.am b/hl/c++/examples/Makefile.am
index df15257..c8f0305 100644
--- a/hl/c++/examples/Makefile.am
+++ b/hl/c++/examples/Makefile.am
@@ -24,6 +24,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.
 EXAMPLE_PROG=ptExampleFL
+TEST_EXAMPLES_SCRIPT=$(INSTALL_SCRIPT_FILES)
 
 # These are the example files to be installed
 INSTALL_FILES=ptExampleFL.cpp
diff --git a/hl/c++/examples/Makefile.in b/hl/c++/examples/Makefile.in
index 8297d0a..3938a3b 100644
--- a/hl/c++/examples/Makefile.in
+++ b/hl/c++/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 # 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; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,11 +98,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/examples.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(srcdir)/run-hlc++-ex.sh.in $(top_srcdir)/bin/test-driver
 TESTS =
 subdir = hl/c++/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -104,10 +132,207 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -179,7 +404,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -391,6 +615,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.
 EXAMPLE_PROG = ptExampleFL
+TEST_EXAMPLES_SCRIPT = $(INSTALL_SCRIPT_FILES)
 
 # These are the example files to be installed
 INSTALL_FILES = ptExampleFL.cpp
@@ -433,6 +658,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -472,15 +698,158 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -537,6 +906,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -618,17 +990,18 @@ uninstall-am: uninstall-local
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local 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 \
+	clean-generic clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local 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 \
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-local
+	pdf-am ps ps-am recheck tags-am uninstall uninstall-am \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -692,27 +1065,34 @@ install-examples: $(EXAMPLEDIR) $(INSTALL_FILES)
 uninstall-examples:
 	@if test -n "$(INSTALL_FILES)" -a -d $(EXAMPLEDIR); then             \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_FILES);                \
-        fi
+	fi
 	@if test -n "$(INSTALL_SCRIPT_FILES)" -a -d $(EXAMPLEDIR); then           \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_SCRIPT_FILES);              \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_FILES);       \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_SCRIPT_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_SCRIPT_FILES);       \
-        fi
+	fi
 
 installcheck-local:
 	@if test "$(STATIC_SHARED)" = "static, shared"; then               \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
 	  $(MAKE) $(AM_MAKEFLAGS) clean;                                   \
 	  H5CCFLAGS="" $(MAKE) $(AM_MAKEFLAGS) check;                      \
-	 elif test "$(STATIC_SHARED)" = "shared"; then                     \
+	elif test "$(STATIC_SHARED)" = "shared"; then                     \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
-	 else                                                              \
+	else                                                              \
 	  $(MAKE) $(AM_MAKEFLAGS) check;                                   \
-	 fi
+	fi 
+	@if test "$(INSTALL_FILES)" -a $(TEST_EXAMPLES_SCRIPT) -a -d $(EXAMPLEDIR); then \
+	    echo "============================";                                         \
+	    echo "Testing $(TEST_EXAMPLES_SCRIPT)";                                      \
+	    echo "============================";                                         \
+	    (cd $(EXAMPLEDIR);                                                           \
+	     /bin/sh ./$(TEST_EXAMPLES_SCRIPT);)                                                   \
+	fi
 
 # lib/progs/tests targets recurse into subdirectories. build-* targets
 # build files in this directory.
diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt
index aa54889..9776f06 100644
--- a/hl/c++/src/CMakeLists.txt
+++ b/hl/c++/src/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_CPP_SRC)
 
 #-----------------------------------------------------------------------------
@@ -7,24 +7,27 @@ PROJECT (HDF5_HL_CPP_SRC)
 INCLUDE_DIRECTORIES (${HDF5_HL_SRC_DIR}/src)
 INCLUDE_DIRECTORIES (${HDF5_HL_CPP_SRC_SOURCE_DIR})
 
-SET (HDF5_HL_CPP_SRCS ${HDF5_HL_CPP_SRC_SOURCE_DIR}/H5PacketTable.cpp)
-SET (HDF5_HL_CPP_HDRS ${HDF5_HL_CPP_SRC_SOURCE_DIR}/H5PacketTable.h)
+set (HDF5_HL_CPP_SRCS ${HDF5_HL_CPP_SRC_SOURCE_DIR}/H5PacketTable.cpp)
+set (HDF5_HL_CPP_HDRS ${HDF5_HL_CPP_SRC_SOURCE_DIR}/H5PacketTable.h)
 
-ADD_LIBRARY (${HDF5_HL_CPP_LIB_TARGET} ${LIB_TYPE} ${HDF5_HL_CPP_SRCS})
+add_library (${HDF5_HL_CPP_LIB_TARGET} ${LIB_TYPE} ${HDF5_HL_CPP_SRCS})
 TARGET_C_PROPERTIES (${HDF5_HL_CPP_LIB_TARGET} " " " ")
-TARGET_LINK_LIBRARIES (
+target_link_libraries (
     ${HDF5_HL_CPP_LIB_TARGET}
     ${HDF5_HL_LIB_TARGET}
     ${HDF5_LIB_TARGET}
 )
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_HL_CPP_LIB_TARGET}")
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_HL_CPP_LIB_TARGET}")
 H5_SET_LIB_OPTIONS (${HDF5_HL_CPP_LIB_TARGET} ${HDF5_HL_CPP_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_HL_CPP_LIB_TARGET} PROPERTIES FOLDER libraries/hl)
+set_target_properties (${HDF5_HL_CPP_LIB_TARGET} PROPERTIES
+    FOLDER libraries/hl
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install 
 #-----------------------------------------------------------------------------
-INSTALL (
+install (
     FILES
         ${HDF5_HL_CPP_HDRS}
     DESTINATION
@@ -36,11 +39,12 @@ 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)
+if (HDF5_EXPORTED_TARGETS)
+  if (BUILD_SHARED_LIBS)
+    INSTALL_TARGET_PDB (${HDF5_HL_CPP_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} hlcpplibraries)
+  endif (BUILD_SHARED_LIBS)
   
-  INSTALL (
+  install (
       TARGETS
           ${HDF5_HL_CPP_LIB_TARGET}
       EXPORT
@@ -49,4 +53,4 @@ IF (HDF5_EXPORTED_TARGETS)
       ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT hlcpplibraries
       RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hlcpplibraries
   )
-ENDIF (HDF5_EXPORTED_TARGETS)
+endif (HDF5_EXPORTED_TARGETS)
diff --git a/hl/c++/src/Makefile.am b/hl/c++/src/Makefile.am
index d2794c9..9751e94 100644
--- a/hl/c++/src/Makefile.am
+++ b/hl/c++/src/Makefile.am
@@ -22,7 +22,7 @@ include $(top_srcdir)/config/commence.am
 include $(top_srcdir)/config/lt_vers.am
 
 # Include src directory
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/hl/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/hl/src
 
 # This is our main target
 lib_LTLIBRARIES=libhdf5_hl_cpp.la
@@ -40,7 +40,7 @@ endif
 # At the moment, only the H5PT Packet Table has a C++ API.
 libhdf5_hl_cpp_la_SOURCES=H5PacketTable.cpp
 
-# HDF5 HL C++ library depends on HDF5 HL Library and HDF5 C++ Library.
+# HDF5 HL C++ library depends on HDF5 Library.
 libhdf5_hl_cpp_la_LIBADD=$(LIBH5_HL) $(LIBH5CPP)
 
 # Public headers
diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in
index 5aad7a6..23ea5d6 100644
--- a/hl/c++/src/Makefile.in
+++ b/hl/c++/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,23 +33,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -68,12 +96,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(include_HEADERS) $(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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/lt_vers.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(include_HEADERS) \
+	$(top_srcdir)/bin/test-driver
 
 # Shared C++ libraries aren't universally supported.
 @CXX_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
@@ -169,12 +197,198 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 HEADERS = $(include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -186,7 +400,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src directory
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/hl/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -246,7 +463,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -458,12 +674,9 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 8
-LT_VERS_REVISION = 1
+LT_VERS_REVISION = 2 
 LT_VERS_AGE = 0
 
-# Include src directory
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/hl/src
-
 # This is our main target
 lib_LTLIBRARIES = libhdf5_hl_cpp.la
 
@@ -474,7 +687,7 @@ libhdf5_hl_cpp_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISIO
 # At the moment, only the H5PT Packet Table has a C++ API.
 libhdf5_hl_cpp_la_SOURCES = H5PacketTable.cpp
 
-# HDF5 HL C++ library depends on HDF5 HL Library and HDF5 C++ Library.
+# HDF5 HL C++ library depends on HDF5 Library.
 libhdf5_hl_cpp_la_LIBADD = $(LIBH5_HL) $(LIBH5CPP)
 
 # Public headers
@@ -502,7 +715,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .cpp .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -534,6 +747,7 @@ $(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):
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -568,6 +782,7 @@ clean-libLTLIBRARIES:
 	  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)
 
@@ -627,26 +842,15 @@ uninstall-includeHEADERS:
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -658,15 +862,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -675,9 +875,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -693,6 +894,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -751,6 +1097,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -834,20 +1183,20 @@ 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 \
-	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-includeHEADERS install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool cscopelist-am ctags ctags-am 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-includeHEADERS install-info \
+	install-info-am install-libLTLIBRARIES 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 \
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \
 	uninstall-includeHEADERS uninstall-libLTLIBRARIES
 
 
diff --git a/hl/c++/test/CMakeLists.txt b/hl/c++/test/CMakeLists.txt
index 46229ba..4a7523c 100644
--- a/hl/c++/test/CMakeLists.txt
+++ b/hl/c++/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_CPP_TEST)
 
 #-----------------------------------------------------------------------------
@@ -15,10 +15,10 @@ INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
 INCLUDE_DIRECTORIES (${HDF5_HL_SRC_DIR}/test)
 INCLUDE_DIRECTORIES (${HDF5_CPP_SRC_DIR}/src)
 
-ADD_EXECUTABLE (hl_ptableTest ${HDF5_HL_CPP_TEST_SOURCE_DIR}/ptableTest.cpp)
+add_executable (hl_ptableTest ${HDF5_HL_CPP_TEST_SOURCE_DIR}/ptableTest.cpp)
 TARGET_C_PROPERTIES (hl_ptableTest " " " ")
 TARGET_NAMING (hl_ptableTest ${LIB_TYPE})
-TARGET_LINK_LIBRARIES (
+target_link_libraries (
     hl_ptableTest
     ${HDF5_LIB_TARGET}
     ${HDF5_TEST_LIB_TARGET}
@@ -26,6 +26,6 @@ TARGET_LINK_LIBRARIES (
     ${HDF5_HL_LIB_TARGET}
     ${HDF5_HL_CPP_LIB_TARGET}
 )
-SET_TARGET_PROPERTIES (hl_ptableTest PROPERTIES FOLDER test/hl/cpp)
+set_target_properties (hl_ptableTest PROPERTIES FOLDER test/hl/cpp)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/hl/c++/test/CMakeTests.cmake b/hl/c++/test/CMakeTests.cmake
index cb9454b..e36b5aa 100644
--- a/hl/c++/test/CMakeTests.cmake
+++ b/hl/c++/test/CMakeTests.cmake
@@ -5,4 +5,4 @@
 ##############################################################################
 ##############################################################################
   
-  ADD_TEST (NAME hl_ptableTest COMMAND $<TARGET_FILE:hl_ptableTest>)
+  add_test (NAME HL_CPP_ptableTest COMMAND $<TARGET_FILE:hl_ptableTest>)
diff --git a/hl/c++/test/Makefile.am b/hl/c++/test/Makefile.am
index 6dcea1c..105188f 100644
--- a/hl/c++/test/Makefile.am
+++ b/hl/c++/test/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/c++/src -I$(top_srcdir)/hl/src -I$(top_srcdir)/hl/c++/src -I$(top_srcdir)/test -I$(top_builddir)/hl/test -I$(top_srcdir)/hl/test
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/c++/src -I$(top_srcdir)/hl/src -I$(top_srcdir)/hl/c++/src -I$(top_srcdir)/test -I$(top_builddir)/hl/test -I$(top_srcdir)/hl/test
 
 # Shared C++ libraries aren't universally supported.
 if CXX_SHARED_CONDITIONAL
diff --git a/hl/c++/test/Makefile.in b/hl/c++/test/Makefile.in
index f8ad89b..cee963a 100644
--- a/hl/c++/test/Makefile.in
+++ b/hl/c++/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # HDF5-C++ Makefile(.in)
 #
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,10 +94,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver
 
 # Shared C++ libraries aren't universally supported.
 @CXX_SHARED_CONDITIONAL_FALSE at am__append_1 = -static
@@ -135,12 +163,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -152,7 +395,12 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/c++/src -I$(top_srcdir)/hl/src \
+	-I$(top_srcdir)/hl/c++/src -I$(top_srcdir)/test \
+	-I$(top_builddir)/hl/test -I$(top_srcdir)/hl/test
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -212,7 +460,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -421,9 +668,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 
-# Include directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/c++/src -I$(top_srcdir)/hl/src -I$(top_srcdir)/hl/c++/src -I$(top_srcdir)/test -I$(top_builddir)/hl/test -I$(top_srcdir)/hl/test
-
 # These are our main targets.  They should be listed in the order to be
 # executed, generally most specific tests to least specific tests.
 TEST_PROG = ptableTest
@@ -457,7 +701,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .cpp .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -498,6 +742,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) $(EXTRA_ptableTest_DEPENDENCIES) 
 	@rm -f ptableTest$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(ptableTest_OBJECTS) $(ptableTest_LDADD) $(LIBS)
@@ -537,26 +782,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -568,15 +802,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -585,9 +815,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -603,6 +834,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+ptableTest.log: ptableTest$(EXEEXT)
+	@p='ptableTest$(EXEEXT)'; \
+	b='ptableTest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -659,6 +1042,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -742,19 +1128,19 @@ 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 \
-	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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/examples/CMakeLists.txt b/hl/examples/CMakeLists.txt
index a9c5258..7847dbe 100644
--- a/hl/examples/CMakeLists.txt
+++ b/hl/examples/CMakeLists.txt
@@ -1,10 +1,10 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_EXAMPLES )
 
 #-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
-SET (examples
+set (examples
     ex_lite1
     ex_lite2    #ex_lite2 PROPERTIES DEPENDS ex_lite1)
     ex_lite3
@@ -26,16 +26,16 @@ SET (examples
     ex_ds1
 )
 
-FOREACH (example ${examples})
-  ADD_EXECUTABLE (hl_ex_${example} ${HDF5_HL_EXAMPLES_SOURCE_DIR}/${example}.c)
+foreach (example ${examples})
+  add_executable (hl_ex_${example} ${HDF5_HL_EXAMPLES_SOURCE_DIR}/${example}.c)
   TARGET_NAMING (hl_ex_${example} ${LIB_TYPE})
   TARGET_C_PROPERTIES (hl_ex_${example} " " " ")
-  TARGET_LINK_LIBRARIES (hl_ex_${example} ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
-  SET_TARGET_PROPERTIES (hl_ex_${example} PROPERTIES FOLDER examples/hl)
-ENDFOREACH (example ${examples})
+  target_link_libraries (hl_ex_${example} ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
+  set_target_properties (hl_ex_${example} PROPERTIES FOLDER examples/hl)
+endforeach (example ${examples})
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
 
-ENDIF (BUILD_TESTING)
+endif (BUILD_TESTING)
diff --git a/hl/examples/CMakeTests.cmake b/hl/examples/CMakeTests.cmake
index 0f9ca11..8cf74d9 100644
--- a/hl/examples/CMakeTests.cmake
+++ b/hl/examples/CMakeTests.cmake
@@ -5,25 +5,25 @@
 ##############################################################################
 ##############################################################################
 
-SET (HDF5_TEST_FILES
+set (HDF5_TEST_FILES
     image24pixel.txt
     image8.txt
 )
 
-FOREACH (h5_file ${HDF5_TEST_FILES})
-  SET (dest "${PROJECT_BINARY_DIR}/${h5_file}")
-  #MESSAGE (STATUS " Copying ${h5_file}")
-  ADD_CUSTOM_COMMAND (
+foreach (h5_file ${HDF5_TEST_FILES})
+  set (dest "${PROJECT_BINARY_DIR}/${h5_file}")
+  #message (STATUS " Copying ${h5_file}")
+  add_custom_command (
       TARGET     hl_ex_ex_ds1
       POST_BUILD
       COMMAND    ${CMAKE_COMMAND}
       ARGS       -E copy_if_different ${PROJECT_SOURCE_DIR}/${h5_file} ${dest}
   )
-ENDFOREACH (h5_file ${HDF5_TEST_FILES})
+endforeach (h5_file ${HDF5_TEST_FILES})
 
   # Remove any output file left over from previous test run
-  ADD_TEST (
-      NAME hl_ex-clear-objects
+  add_test (
+      NAME HL_ex-clear-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
     ex_lite1.h5
@@ -46,15 +46,15 @@ ENDFOREACH (h5_file ${HDF5_TEST_FILES})
     ex_table_12.h5
     ex_ds1.h5
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (hl_ex-clear-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "hl_ex-clear-objects")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (HL_ex-clear-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "HL_ex-clear-objects")
 
-FOREACH (example ${examples})
-  ADD_TEST (NAME hl_ex_${example} COMMAND $<TARGET_FILE:hl_ex_${example}>)
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (hl_ex_${example} PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "hl_ex_${example}")
-ENDFOREACH (example ${examples})
+foreach (example ${examples})
+  add_test (NAME HL_ex_${example} COMMAND $<TARGET_FILE:hl_ex_${example}>)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (HL_ex_${example} PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "HL_ex_${example}")
+endforeach (example ${examples})
diff --git a/hl/examples/Makefile.am b/hl/examples/Makefile.am
index 5108c5e..ba200ed 100644
--- a/hl/examples/Makefile.am
+++ b/hl/examples/Makefile.am
@@ -29,6 +29,8 @@ endif
 # Note: no '/' after DESTDIR.  Explanation in commence.am
 EXAMPLEDIR=${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl/c
 EXAMPLETOPDIR=${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl
+INSTALL_SCRIPT_FILES = run-hlc-ex.sh
+INSTALL_TOP_SCRIPT_FILES = run-hl-ex.sh
 
 # Example programs.
 # Don't tell automake about them, because if it knew they were programs,
@@ -40,6 +42,7 @@ EXAMPLE_PROG = ex_lite1 ex_lite2 ex_lite3 ptExampleFL \
             ex_table_05 ex_table_06 ex_table_07 ex_table_08 \
             ex_table_09 ex_table_10 ex_table_11 ex_table_12 \
             ex_ds1
+TEST_EXAMPLES_SCRIPT=$(INSTALL_SCRIPT_FILES)
 
 # Install files
 # List all file that should be installed in examples directory
@@ -50,8 +53,6 @@ INSTALL_FILES = ex_lite1.c ex_lite2.c ex_lite3.c ptExampleFL.c \
                 ex_table_09.c ex_table_10.c ex_table_11.c ex_table_12.c      \
                 ex_ds1.c image24pixel.txt image8.txt pal_rgb.h
 
-INSTALL_SCRIPT_FILES = run-hlc-ex.sh
-INSTALL_TOP_SCRIPT_FILES = run-hl-ex.sh
 
 # Additional dependencies for each program are listed below.
 if BUILD_PARALLEL_CONDITIONAL
diff --git a/hl/examples/Makefile.in b/hl/examples/Makefile.in
index 2713377..2bf5764 100644
--- a/hl/examples/Makefile.in
+++ b/hl/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 # 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; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,11 +98,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/examples.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(srcdir)/run-hlc-ex.sh.in $(top_srcdir)/bin/test-driver
 TESTS =
 subdir = hl/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -104,10 +132,207 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -179,7 +404,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -393,6 +617,8 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 # Note: no '/' after DESTDIR.  Explanation in commence.am
 EXAMPLEDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl/c
 EXAMPLETOPDIR = ${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl
+INSTALL_SCRIPT_FILES = run-hlc-ex.sh
+INSTALL_TOP_SCRIPT_FILES = run-hl-ex.sh
 
 # Example programs.
 # Don't tell automake about them, because if it knew they were programs,
@@ -405,6 +631,7 @@ EXAMPLE_PROG = ex_lite1 ex_lite2 ex_lite3 ptExampleFL \
             ex_table_09 ex_table_10 ex_table_11 ex_table_12 \
             ex_ds1
 
+TEST_EXAMPLES_SCRIPT = $(INSTALL_SCRIPT_FILES)
 
 # Install files
 # List all file that should be installed in examples directory
@@ -415,8 +642,6 @@ INSTALL_FILES = ex_lite1.c ex_lite2.c ex_lite3.c ptExampleFL.c \
                 ex_table_09.c ex_table_10.c ex_table_11.c ex_table_12.c      \
                 ex_ds1.c image24pixel.txt image8.txt pal_rgb.h
 
-INSTALL_SCRIPT_FILES = run-hlc-ex.sh
-INSTALL_TOP_SCRIPT_FILES = run-hl-ex.sh
 @BUILD_SHARED_SZIP_CONDITIONAL_TRUE at LD_LIBRARY_PATH = $(LL_PATH)
 
 # Assume that all tests in this directory are examples, and tell
@@ -449,6 +674,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -488,15 +714,158 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -553,6 +922,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -634,17 +1006,18 @@ uninstall-am: uninstall-local
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local 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 \
+	clean-generic clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local 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 \
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-local
+	pdf-am ps ps-am recheck tags-am uninstall uninstall-am \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -732,27 +1105,34 @@ install-examples: $(EXAMPLEDIR) $(INSTALL_FILES)
 uninstall-examples:
 	@if test -n "$(INSTALL_FILES)" -a -d $(EXAMPLEDIR); then             \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_FILES);                \
-        fi
+	fi
 	@if test -n "$(INSTALL_SCRIPT_FILES)" -a -d $(EXAMPLEDIR); then           \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_SCRIPT_FILES);              \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_FILES);       \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_SCRIPT_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_SCRIPT_FILES);       \
-        fi
+	fi
 
 installcheck-local:
 	@if test "$(STATIC_SHARED)" = "static, shared"; then               \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
 	  $(MAKE) $(AM_MAKEFLAGS) clean;                                   \
 	  H5CCFLAGS="" $(MAKE) $(AM_MAKEFLAGS) check;                      \
-	 elif test "$(STATIC_SHARED)" = "shared"; then                     \
+	elif test "$(STATIC_SHARED)" = "shared"; then                     \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
-	 else                                                              \
+	else                                                              \
 	  $(MAKE) $(AM_MAKEFLAGS) check;                                   \
-	 fi
+	fi 
+	@if test "$(INSTALL_FILES)" -a $(TEST_EXAMPLES_SCRIPT) -a -d $(EXAMPLEDIR); then \
+	    echo "============================";                                         \
+	    echo "Testing $(TEST_EXAMPLES_SCRIPT)";                                      \
+	    echo "============================";                                         \
+	    (cd $(EXAMPLEDIR);                                                           \
+	     /bin/sh ./$(TEST_EXAMPLES_SCRIPT);)                                                   \
+	fi
 
 # lib/progs/tests targets recurse into subdirectories. build-* targets
 # build files in this directory.
diff --git a/hl/examples/ex_image2.c b/hl/examples/ex_image2.c
index 76c3a75..3276f7c 100644
--- a/hl/examples/ex_image2.c
+++ b/hl/examples/ex_image2.c
@@ -26,7 +26,7 @@
 #define PAL_ENTRIES  256
 
 static int    read_data(const char* file_name, hsize_t *width, hsize_t *height );
-unsigned char *gbuf = 0;  /* global buffer for image data */
+unsigned char *gbuf = NULL;  /* global buffer for image data */
 
 int main( void )
 {
@@ -79,18 +79,25 @@ int main( void )
 
  /* make dataset */
  status=H5IMmake_image_24bit( file_id, IMAGE2_NAME, width, height, "INTERLACE_PIXEL", gbuf );
- if (gbuf) {
-    free(gbuf);
-    gbuf = NULL;
- }
 
  /* close the file. */
  H5Fclose( file_id );
 
+ if(gbuf) {
+    free(gbuf);
+    gbuf = NULL;
+ }
+
  return 0;
 
 out:
  printf("Error on return function...Exiting\n");
+
+ if(gbuf) {
+    free(gbuf);
+    gbuf = NULL;
+ }
+
  return 1;
 }
 
diff --git a/hl/fortran/CMakeLists.txt b/hl/fortran/CMakeLists.txt
index 0da0825..c26d94c 100644
--- a/hl/fortran/CMakeLists.txt
+++ b/hl/fortran/CMakeLists.txt
@@ -1,21 +1,21 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_F90 C CXX Fortran)
 
 #-----------------------------------------------------------------------------
 # List Source files
 #-----------------------------------------------------------------------------
-ADD_SUBDIRECTORY (${HDF5_HL_F90_SOURCE_DIR}/src ${HDF5_HL_F90_BINARY_DIR}/src)
+add_subdirectory (${HDF5_HL_F90_SOURCE_DIR}/src ${HDF5_HL_F90_BINARY_DIR}/src)
 
 #-----------------------------------------------------------------------------
 # Build the HL Fortran Examples
 #-----------------------------------------------------------------------------
-IF (HDF5_BUILD_FORTRAN_EXAMPLES)
-  ADD_SUBDIRECTORY (${HDF5_HL_F90_SOURCE_DIR}/examples ${HDF5_HL_F90_BINARY_DIR}/examples)
-ENDIF (HDF5_BUILD_FORTRAN_EXAMPLES)
+if (HDF5_BUILD_FORTRAN_EXAMPLES)
+  add_subdirectory (${HDF5_HL_F90_SOURCE_DIR}/examples ${HDF5_HL_F90_BINARY_DIR}/examples)
+endif (HDF5_BUILD_FORTRAN_EXAMPLES)
 
 #-----------------------------------------------------------------------------
 # Testing
 #-----------------------------------------------------------------------------
-IF (BUILD_TESTING)
-  ADD_SUBDIRECTORY (${HDF5_HL_F90_SOURCE_DIR}/test ${HDF5_HL_F90_BINARY_DIR}/test)
-ENDIF (BUILD_TESTING)
+if (BUILD_TESTING)
+  add_subdirectory (${HDF5_HL_F90_SOURCE_DIR}/test ${HDF5_HL_F90_BINARY_DIR}/test)
+endif (BUILD_TESTING)
diff --git a/hl/fortran/Makefile.in b/hl/fortran/Makefile.in
index 8b7f728..c2d6610 100644
--- a/hl/fortran/Makefile.in
+++ b/hl/fortran/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 #
 # HDF5 High-Level Makefile(.in)
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,10 +98,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = hl/fortran
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -98,13 +126,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -112,15 +141,230 @@ am__can_run_installinfo = \
   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
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -217,7 +461,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -450,6 +693,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -494,14 +738,13 @@ clean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -522,31 +765,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -562,12 +787,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -579,15 +799,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -596,9 +812,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -614,6 +831,151 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -695,6 +1057,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -772,14 +1137,11 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool cscopelist cscopelist-recursive \
-	ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 \
@@ -789,7 +1151,7 @@ uninstall-am:
 	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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/fortran/examples/CMakeLists.txt b/hl/fortran/examples/CMakeLists.txt
index 0f663c7..12467b8 100644
--- a/hl/fortran/examples/CMakeLists.txt
+++ b/hl/fortran/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_F90_EXAMPLES C CXX Fortran)
 
 #-----------------------------------------------------------------------------
@@ -10,27 +10,27 @@ INCLUDE_DIRECTORIES (
     ${HDF5_F90_SRC_DIR}/src
 )
 
-SET (examples
+set (examples
     exlite
     ex_ds1
 )
 
-FOREACH (example ${examples})
-  ADD_EXECUTABLE (hl_f90_ex_${example} ${HDF5_HL_F90_EXAMPLES_SOURCE_DIR}/${example}.f90)
+foreach (example ${examples})
+  add_executable (hl_f90_ex_${example} ${HDF5_HL_F90_EXAMPLES_SOURCE_DIR}/${example}.f90)
   TARGET_NAMING (hl_f90_ex_${example} ${LIB_TYPE})
   TARGET_FORTRAN_PROPERTIES (hl_f90_ex_${example} " " " ")
-  TARGET_LINK_LIBRARIES (hl_f90_ex_${example} 
+  target_link_libraries (hl_f90_ex_${example} 
       ${HDF5_HL_F90_LIB_TARGET}
       ${HDF5_F90_LIB_TARGET}
       ${HDF5_LIB_TARGET}
   )
-  SET_TARGET_PROPERTIES (hl_f90_ex_${example} PROPERTIES LINKER_LANGUAGE Fortran)
-  SET_TARGET_PROPERTIES (hl_f90_ex_${example} PROPERTIES FOLDER examples/hl/fortran)
+  set_target_properties (hl_f90_ex_${example} PROPERTIES LINKER_LANGUAGE Fortran)
+  set_target_properties (hl_f90_ex_${example} PROPERTIES FOLDER examples/hl/fortran)
 
-ENDFOREACH (example ${examples})
+endforeach (example ${examples})
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
 
-ENDIF (BUILD_TESTING)
+endif (BUILD_TESTING)
diff --git a/hl/fortran/examples/CMakeTests.cmake b/hl/fortran/examples/CMakeTests.cmake
index 7e6c348..954a01b 100644
--- a/hl/fortran/examples/CMakeTests.cmake
+++ b/hl/fortran/examples/CMakeTests.cmake
@@ -5,6 +5,6 @@
 ##############################################################################
 ##############################################################################
 
-FOREACH (example ${examples})
-  ADD_TEST (NAME hl_f90_ex_${example} COMMAND $<TARGET_FILE:hl_f90_ex_${example}>)
-ENDFOREACH (example ${examples})
+foreach (example ${examples})
+  add_test (NAME HL_FORTRAN_f90_ex_${example} COMMAND $<TARGET_FILE:hl_f90_ex_${example}>)
+endforeach (example ${examples})
diff --git a/hl/fortran/examples/Makefile.am b/hl/fortran/examples/Makefile.am
index f94f031..91cb7c5 100644
--- a/hl/fortran/examples/Makefile.am
+++ b/hl/fortran/examples/Makefile.am
@@ -32,6 +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.
 EXAMPLE_PROG=exlite ex_ds1
+TEST_EXAMPLES_SCRIPT=$(INSTALL_SCRIPT_FILES)
 
 # 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 9f08f21..1eb9c9d 100644
--- a/hl/fortran/examples/Makefile.in
+++ b/hl/fortran/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 # 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; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,12 +98,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/examples.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(srcdir)/run-hlfortran-ex.sh.in $(top_srcdir)/bin/test-driver
 TESTS =
 subdir = hl/fortran/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -105,10 +132,207 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -180,7 +404,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -398,6 +621,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 # We don't tell automake about these programs so that it doesn't try to
 # compile them with the regular fortran compiler.
 EXAMPLE_PROG = exlite ex_ds1
+TEST_EXAMPLES_SCRIPT = $(INSTALL_SCRIPT_FILES)
 
 # List files to be installed here
 INSTALL_FILES = exlite.f90 ex_ds1.f90
@@ -441,6 +665,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/examples.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -480,15 +705,158 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -545,6 +913,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -626,17 +997,18 @@ uninstall-am: uninstall-local
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local 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 \
+	clean-generic clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local 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 \
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-local
+	pdf-am ps ps-am recheck tags-am uninstall uninstall-am \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
@@ -696,27 +1068,34 @@ install-examples: $(EXAMPLEDIR) $(INSTALL_FILES)
 uninstall-examples:
 	@if test -n "$(INSTALL_FILES)" -a -d $(EXAMPLEDIR); then             \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_FILES);                \
-        fi
+	fi
 	@if test -n "$(INSTALL_SCRIPT_FILES)" -a -d $(EXAMPLEDIR); then           \
 	  set -x; cd $(EXAMPLEDIR) && $(RM) $(INSTALL_SCRIPT_FILES);              \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_FILES);       \
-        fi
+	fi
 	@if test -n "$(INSTALL_TOP_SCRIPT_FILES)" -a -d $(EXAMPLETOPDIR); then    \
 	  set -x; cd $(EXAMPLETOPDIR) && $(RM) $(INSTALL_TOP_SCRIPT_FILES);       \
-        fi
+	fi
 
 installcheck-local:
 	@if test "$(STATIC_SHARED)" = "static, shared"; then               \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
 	  $(MAKE) $(AM_MAKEFLAGS) clean;                                   \
 	  H5CCFLAGS="" $(MAKE) $(AM_MAKEFLAGS) check;                      \
-	 elif test "$(STATIC_SHARED)" = "shared"; then                     \
+	elif test "$(STATIC_SHARED)" = "shared"; then                     \
 	  H5CCFLAGS="-shlib" $(MAKE) $(AM_MAKEFLAGS) check;                \
-	 else                                                              \
+	else                                                              \
 	  $(MAKE) $(AM_MAKEFLAGS) check;                                   \
-	 fi
+	fi 
+	@if test "$(INSTALL_FILES)" -a $(TEST_EXAMPLES_SCRIPT) -a -d $(EXAMPLEDIR); then \
+	    echo "============================";                                         \
+	    echo "Testing $(TEST_EXAMPLES_SCRIPT)";                                      \
+	    echo "============================";                                         \
+	    (cd $(EXAMPLEDIR);                                                           \
+	     /bin/sh ./$(TEST_EXAMPLES_SCRIPT);)                                                   \
+	fi
 
 # lib/progs/tests targets recurse into subdirectories. build-* targets
 # build files in this directory.
diff --git a/hl/fortran/examples/ex_ds1.f90 b/hl/fortran/examples/ex_ds1.f90
index 377a641..d77f8e0 100644
--- a/hl/fortran/examples/ex_ds1.f90
+++ b/hl/fortran/examples/ex_ds1.f90
@@ -86,7 +86,7 @@ PROGRAM example_ds
 
   ! Test if dimension Scale Attached 
   CALL H5DSis_attached_f(did, dsid, DIM1, is_attached, err)
-  WRITE(*,'(/,5X 3(A,1X),I0,A,L1)') 'Is',TRIM(DS_1_NAME),&
+  WRITE(*,'(/,5X,3(A,1X),I0,A,L1)') 'Is',TRIM(DS_1_NAME),&
        'attached to dimension',DIM1,' ... ',is_attached
   
 
diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt
index 22353f8..c5b2d57 100644
--- a/hl/fortran/src/CMakeLists.txt
+++ b/hl/fortran/src/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT(HDF5_HL_F90_SRC C CXX Fortran)
 
 #-----------------------------------------------------------------------------
@@ -14,93 +14,106 @@ INCLUDE_DIRECTORIES (
 #-----------------------------------------------------------------------------
 # hl_f90CStub lib
 #-----------------------------------------------------------------------------
-SET (HDF5_HL_F90_C_SRCS
+set (HDF5_HL_F90_C_SRCS
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5DSfc.c
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5LTfc.c
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5IMfc.c
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5IMcc.c
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5TBfc.c
 )
-SET_SOURCE_FILES_PROPERTIES (${HDF5_HL_F90_C_SRCS} PROPERTIES LANGUAGE C)
+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 (HDF5_HL_F90_HEADERS ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5LTf90proto.h)
 
-ADD_LIBRARY (${HDF5_HL_F90_C_LIB_TARGET} ${LIB_TYPE} ${HDF5_HL_F90_C_SRCS} ${HDF5_HL_F90_HEADERS})
+add_library (${HDF5_HL_F90_C_LIB_TARGET} ${LIB_TYPE} ${HDF5_HL_F90_C_SRCS} ${HDF5_HL_F90_HEADERS})
 TARGET_C_PROPERTIES (${HDF5_HL_F90_C_LIB_TARGET} " " " ")
-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}")
+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)
+set_target_properties (${HDF5_HL_F90_C_LIB_TARGET} PROPERTIES
+    FOLDER libraries/hl/fortran
+    LINKER_LANGUAGE C
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # Fortran Modules
 #-----------------------------------------------------------------------------
-SET (HDF5_HL_F90_F_SRCS
+set (HDF5_HL_F90_F_SRCS
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5DSff.f90
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5TBff.f90
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5LTff.f90
     ${HDF5_HL_F90_SRC_SOURCE_DIR}/H5IMff.f90
 )
 
-ADD_LIBRARY (${HDF5_HL_F90_LIB_TARGET} ${LIB_TYPE} ${HDF5_HL_F90_F_SRCS})
-SET (SHARED_LINK_FLAGS " ")
-IF (BUILD_SHARED_LIBS)
-  IF (WIN32 AND NOT CYGWIN)
-    SET_PROPERTY (TARGET ${HDF5_HL_F90_LIB_TARGET} 
+add_library (${HDF5_HL_F90_LIB_TARGET} ${LIB_TYPE} ${HDF5_HL_F90_F_SRCS})
+set (SHARED_LINK_FLAGS " ")
+if (BUILD_SHARED_LIBS)
+  if (WIN32)
+    set_property (TARGET ${HDF5_HL_F90_LIB_TARGET} 
       APPEND PROPERTY COMPILE_DEFINITIONS 
         BUILD_HDF5_DLL
   )
-    IF (MSVC)
-      SET (SHARED_LINK_FLAGS "/DLL")
-    ENDIF (MSVC)
-  ENDIF (WIN32 AND NOT CYGWIN)
-ENDIF (BUILD_SHARED_LIBS)
-IF (WIN32 AND NOT CYGWIN)
-  SET_PROPERTY (TARGET ${HDF5_HL_F90_LIB_TARGET} 
+    if (MSVC)
+      set (SHARED_LINK_FLAGS "/DLL")
+    endif (MSVC)
+  endif (WIN32)
+endif (BUILD_SHARED_LIBS)
+if (WIN32)
+  set_property (TARGET ${HDF5_HL_F90_LIB_TARGET} 
       APPEND PROPERTY COMPILE_DEFINITIONS 
         HDF5F90_WINDOWS
   )
-ENDIF (WIN32 AND NOT CYGWIN)
+endif (WIN32)
 TARGET_FORTRAN_PROPERTIES (${HDF5_HL_F90_LIB_TARGET} " " ${SHARED_LINK_FLAGS})
-SET_TARGET_PROPERTIES (${HDF5_HL_F90_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran)
-TARGET_LINK_LIBRARIES (${HDF5_HL_F90_LIB_TARGET} ${HDF5_HL_F90_C_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_HL_F90_LIB_TARGET}")
+set_target_properties (${HDF5_HL_F90_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran)
+target_link_libraries (${HDF5_HL_F90_LIB_TARGET} ${HDF5_HL_F90_C_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_HL_F90_LIB_TARGET}")
 H5_SET_LIB_OPTIONS (${HDF5_HL_F90_LIB_TARGET} ${HDF5_HL_F90_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_HL_F90_LIB_TARGET} PROPERTIES FOLDER libraries/hl/fortran)
+set_target_properties (${HDF5_HL_F90_LIB_TARGET} PROPERTIES
+    FOLDER libraries/hl/fortran
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install
 #-----------------------------------------------------------------------------
-IF (WIN32 AND NOT CYGWIN)
-  INSTALL (
-      DIRECTORY
-          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/
+if (WIN32)
+  install (
+      FILES
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5ds.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5tb.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5lt.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5im.mod
       DESTINATION
           ${HDF5_INSTALL_INCLUDE_DIR}
       COMPONENT
           fortheaders
   )
-ELSE (WIN32 AND NOT CYGWIN)
-  INSTALL (
-      DIRECTORY
-          ${CMAKE_Fortran_MODULE_DIRECTORY}/
+else (WIN32)
+  install (
+      FILES
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5ds.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5tb.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5lt.mod
+          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5im.mod
       DESTINATION
           ${HDF5_INSTALL_INCLUDE_DIR}
       COMPONENT
           fortheaders
   )
-ENDIF (WIN32 AND NOT CYGWIN)
+endif (WIN32)
 
 #-----------------------------------------------------------------------------
 # 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)
+if (HDF5_EXPORTED_TARGETS)
+  if (BUILD_SHARED_LIBS)
+    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)
+  endif (BUILD_SHARED_LIBS)
   
-  INSTALL (
+  install (
       TARGETS
           ${HDF5_HL_F90_C_LIB_TARGET}
           ${HDF5_HL_F90_LIB_TARGET}
@@ -110,4 +123,4 @@ IF (HDF5_EXPORTED_TARGETS)
       ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT hlfortlibraries
       RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hlfortlibraries
   )
-ENDIF (HDF5_EXPORTED_TARGETS)
+endif (HDF5_EXPORTED_TARGETS)
diff --git a/hl/fortran/src/Makefile.am b/hl/fortran/src/Makefile.am
index 9835196..c8c4541 100644
--- a/hl/fortran/src/Makefile.am
+++ b/hl/fortran/src/Makefile.am
@@ -22,7 +22,7 @@
 include $(top_srcdir)/config/commence.am
 include $(top_srcdir)/config/lt_vers.am
 
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \
          -I$(top_srcdir)/fortran/src -I$(top_builddir)/fortran/src
 AM_FCFLAGS+=-I$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src
 
@@ -49,7 +49,7 @@ endif
 libhdf5hl_fortran_la_SOURCES=H5DSfc.c H5LTfc.c  H5IMfc.c H5IMcc.c H5TBfc.c \
 	H5DSff.f90 H5LTff.f90 H5IMff.f90 H5TBff.f90
 
-# HDF5 HL Fortran library depends on HDF5 HL Library and HDF5 Fortran Library.
+# HDF5 HL Fortran library depends on HDF5 Library.
 libhdf5hl_fortran_la_LIBADD=$(LIBH5_HL) $(LIBH5F)
 
 # Fortran module files can have different extensions and different names
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index 9f3c8d4..f49f748 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 # HDF5 High-Level Fortran Makefile(.in)
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,11 +95,11 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/lt_vers.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver
 
 # Some Fortran compilers can't build shared libraries, so sometimes we
 # want to build a shared C library and a static Fortran library.  If so,
@@ -184,12 +212,198 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -201,7 +415,9 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \
+	-I$(top_srcdir)/fortran/src -I$(top_builddir)/fortran/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ -I$(top_builddir)/fortran/src \
@@ -262,7 +478,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -474,11 +689,8 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 8
-LT_VERS_REVISION = 1
+LT_VERS_REVISION = 2 
 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
-
 
 # Our main target, the high-level fortran library
 lib_LTLIBRARIES = libhdf5hl_fortran.la
@@ -496,7 +708,7 @@ libhdf5hl_fortran_la_SOURCES = H5DSfc.c H5LTfc.c  H5IMfc.c H5IMcc.c H5TBfc.c \
 	H5DSff.f90 H5LTff.f90 H5IMff.f90 H5TBff.f90
 
 
-# HDF5 HL Fortran library depends on HDF5 HL Library and HDF5 Fortran Library.
+# HDF5 HL Fortran library depends on HDF5 Library.
 libhdf5hl_fortran_la_LIBADD = $(LIBH5_HL) $(LIBH5F)
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
@@ -521,7 +733,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .f90 .lo .o .obj
+.SUFFIXES: .c .f90 .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -553,6 +765,7 @@ $(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):
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -587,6 +800,7 @@ clean-libLTLIBRARIES:
 	  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)
 
@@ -607,14 +821,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -638,26 +852,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -669,15 +872,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -686,9 +885,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -704,6 +904,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -762,6 +1107,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -846,21 +1194,23 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local
 
 .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 \
-	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 \
-	install-data-local install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-libLTLIBRARIES install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool clean-local cscopelist-am ctags ctags-am \
+	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 install-data-local install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am \
+	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic maintainer-clean-local mostlyclean \
 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-libLTLIBRARIES uninstall-local
+	mostlyclean-local pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am uninstall-libLTLIBRARIES \
+	uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/fortran/test/CMakeLists.txt b/hl/fortran/test/CMakeLists.txt
index 2084162..120d6a5 100644
--- a/hl/fortran/test/CMakeLists.txt
+++ b/hl/fortran/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_FORTRAN_TESTS C CXX Fortran)
 
 #-----------------------------------------------------------------------------
@@ -7,35 +7,35 @@ PROJECT (HDF5_HL_FORTRAN_TESTS C CXX Fortran)
 INCLUDE_DIRECTORIES (${CMAKE_Fortran_MODULE_DIRECTORY} ${HDF5_F90_BINARY_DIR} ${HDF5_F90_SRC_DIR}/src)
 
 #-- Adding test for hl_f90_tstds
-ADD_EXECUTABLE (hl_f90_tstds tstds.f90)
+add_executable (hl_f90_tstds tstds.f90)
 TARGET_NAMING (hl_f90_tstds ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (hl_f90_tstds " " " ")
-TARGET_LINK_LIBRARIES (hl_f90_tstds ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
-SET_TARGET_PROPERTIES (hl_f90_tstds PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (hl_f90_tstds PROPERTIES FOLDER test/hl/fortran)
+target_link_libraries (hl_f90_tstds ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
+set_target_properties (hl_f90_tstds PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (hl_f90_tstds PROPERTIES FOLDER test/hl/fortran)
 
 #-- Adding test for hl_f90_tstlite
-ADD_EXECUTABLE (hl_f90_tstlite tstlite.f90)
+add_executable (hl_f90_tstlite tstlite.f90)
 TARGET_NAMING (hl_f90_tstlite ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (hl_f90_tstlite " " " ")
-TARGET_LINK_LIBRARIES (hl_f90_tstlite ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
-SET_TARGET_PROPERTIES (hl_f90_tstlite PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (hl_f90_tstlite PROPERTIES FOLDER test/hl/fortran)
+target_link_libraries (hl_f90_tstlite ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
+set_target_properties (hl_f90_tstlite PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (hl_f90_tstlite PROPERTIES FOLDER test/hl/fortran)
 
 #-- Adding test for hl_f90_tstimage
-ADD_EXECUTABLE (hl_f90_tstimage tstimage.f90)
+add_executable (hl_f90_tstimage tstimage.f90)
 TARGET_NAMING (hl_f90_tstimage ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (hl_f90_tstimage " " " ")
-TARGET_LINK_LIBRARIES (hl_f90_tstimage  ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
-SET_TARGET_PROPERTIES (hl_f90_tstimage PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (hl_f90_tstimage PROPERTIES FOLDER test/hl/fortran)
+target_link_libraries (hl_f90_tstimage  ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
+set_target_properties (hl_f90_tstimage PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (hl_f90_tstimage PROPERTIES FOLDER test/hl/fortran)
 
 #-- Adding test for hl_f90_tsttable
-ADD_EXECUTABLE (hl_f90_tsttable tsttable.f90)
+add_executable (hl_f90_tsttable tsttable.f90)
 TARGET_NAMING (hl_f90_tsttable ${LIB_TYPE})
 TARGET_FORTRAN_PROPERTIES (hl_f90_tsttable " " " ")
-TARGET_LINK_LIBRARIES (hl_f90_tsttable ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
-SET_TARGET_PROPERTIES (hl_f90_tsttable PROPERTIES LINKER_LANGUAGE Fortran)
-SET_TARGET_PROPERTIES (hl_f90_tsttable PROPERTIES FOLDER test/hl/fortran)
+target_link_libraries (hl_f90_tsttable ${HDF5_HL_F90_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
+set_target_properties (hl_f90_tsttable PROPERTIES LINKER_LANGUAGE Fortran)
+set_target_properties (hl_f90_tsttable PROPERTIES FOLDER test/hl/fortran)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/hl/fortran/test/CMakeTests.cmake b/hl/fortran/test/CMakeTests.cmake
index 81253bd..3676d24 100644
--- a/hl/fortran/test/CMakeTests.cmake
+++ b/hl/fortran/test/CMakeTests.cmake
@@ -6,8 +6,8 @@
 ##############################################################################
 
 # Remove any output file left over from previous test run
-ADD_TEST (
-    NAME hl_fortran_test-clear-objects
+add_test (
+    NAME HL_FORTRAN_test-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         dsetf1.h5
@@ -20,10 +20,14 @@ ADD_TEST (
         tstds.h5
 )
 
-ADD_TEST (NAME hl_f90_tstds COMMAND $<TARGET_FILE:hl_f90_tstds>)
+add_test (NAME HL_FORTRAN_f90_tstds COMMAND $<TARGET_FILE:hl_f90_tstds>)
+set_tests_properties (HL_FORTRAN_f90_tstds PROPERTIES DEPENDS HL_FORTRAN_test-clear-objects)
 
-ADD_TEST (NAME hl_f90_tstlite COMMAND $<TARGET_FILE:hl_f90_tstlite>)
+add_test (NAME HL_FORTRAN_f90_tstlite COMMAND $<TARGET_FILE:hl_f90_tstlite>)
+set_tests_properties (HL_FORTRAN_f90_tstlite PROPERTIES DEPENDS HL_FORTRAN_test-clear-objects)
 
-ADD_TEST (NAME hl_f90_tstimage COMMAND $<TARGET_FILE:hl_f90_tstimage>)
+add_test (NAME HL_FORTRAN_f90_tstimage COMMAND $<TARGET_FILE:hl_f90_tstimage>)
+set_tests_properties (HL_FORTRAN_f90_tstimage PROPERTIES DEPENDS HL_FORTRAN_test-clear-objects)
 
-ADD_TEST (NAME hl_f90_tsttable COMMAND $<TARGET_FILE:hl_f90_tsttable>)
+add_test (NAME HL_FORTRAN_f90_tsttable COMMAND $<TARGET_FILE:hl_f90_tsttable>)
+set_tests_properties (HL_FORTRAN_f90_tsttable PROPERTIES DEPENDS HL_FORTRAN_test-clear-objects)
diff --git a/hl/fortran/test/Makefile.am b/hl/fortran/test/Makefile.am
index cd281b7..fa3a803 100644
--- a/hl/fortran/test/Makefile.am
+++ b/hl/fortran/test/Makefile.am
@@ -45,7 +45,7 @@ tstimage_SOURCES=tstimage.f90
 tsttable_SOURCES=tsttable.f90
 
 # Temporary files.
-CHECK_CLEANFILES+=dsetf[1-4].h5 f1img.h5 f1tab.h5 tstds.h5
+CHECK_CLEANFILES+=dsetf[1-5].h5 f1img.h5 f1tab.h5 tstds.h5
 
 # Mark this directory as part of the Fortran API (this affects output
 # from tests in conclude.am)
diff --git a/hl/fortran/test/Makefile.in b/hl/fortran/test/Makefile.in
index 2acee8c..e142edf 100644
--- a/hl/fortran/test/Makefile.in
+++ b/hl/fortran/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 #
 # HDF5 High-Level Fortran Makefile(.in)
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,10 +94,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver
 
 # Some Fortran compilers can't build shared libraries, so sometimes we
 # need to make sure the Fortran programs link against the static version
@@ -145,12 +173,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -226,7 +469,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -435,7 +677,7 @@ TRACE = perl $(top_srcdir)/bin/trace
 # *.clog are from the MPE option.
 
 # Temporary files.
-CHECK_CLEANFILES = *.chkexe *.chklog *.clog dsetf[1-4].h5 f1img.h5 \
+CHECK_CLEANFILES = *.chkexe *.chklog *.clog dsetf[1-5].h5 f1img.h5 \
 	f1tab.h5 tstds.h5
 
 # Our main target, the test programs
@@ -474,7 +716,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .f90 .lo .o .obj
+.SUFFIXES: .f90 .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -515,15 +757,19 @@ 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) $(EXTRA_tstds_DEPENDENCIES) 
 	@rm -f tstds$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(tstds_OBJECTS) $(tstds_LDADD) $(LIBS)
+
 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) $(EXTRA_tstlite_DEPENDENCIES) 
 	@rm -f tstlite$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(tstlite_OBJECTS) $(tstlite_LDADD) $(LIBS)
+
 tsttable$(EXEEXT): $(tsttable_OBJECTS) $(tsttable_DEPENDENCIES) $(EXTRA_tsttable_DEPENDENCIES) 
 	@rm -f tsttable$(EXEEXT)
 	$(AM_V_FCLD)$(FCLINK) $(tsttable_OBJECTS) $(tsttable_LDADD) $(LIBS)
@@ -549,26 +795,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -580,15 +815,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -597,9 +828,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -615,6 +847,179 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+tstds.log: tstds$(EXEEXT)
+	@p='tstds$(EXEEXT)'; \
+	b='tstds'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tstlite.log: tstlite$(EXEEXT)
+	@p='tstlite$(EXEEXT)'; \
+	b='tstlite'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tstimage.log: tstimage$(EXEEXT)
+	@p='tstimage$(EXEEXT)'; \
+	b='tstimage'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tsttable.log: tsttable$(EXEEXT)
+	@p='tsttable$(EXEEXT)'; \
+	b='tsttable'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -671,6 +1076,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -752,19 +1160,19 @@ 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 \
-	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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt
index 5904d05..e3a72e4 100644
--- a/hl/src/CMakeLists.txt
+++ b/hl/src/CMakeLists.txt
@@ -1,19 +1,17 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_SRC)
 
 #-----------------------------------------------------------------------------
 # Shared Libs
 #-----------------------------------------------------------------------------
-IF (BUILD_SHARED_LIBS)
-  SET (HL_BUILT_AS_DYNAMIC_LIB 1)
-ENDIF (BUILD_SHARED_LIBS)
+if (BUILD_SHARED_LIBS)
+  set (HL_BUILT_AS_DYNAMIC_LIB 1)
+endif (BUILD_SHARED_LIBS)
 
 #-----------------------------------------------------------------------------
 # List Source files
 #-----------------------------------------------------------------------------
-INCLUDE_DIRECTORIES (${HDF5_HL_SRC_DIR}/src)
-
-SET (HL_SRCS
+set (HL_SRCS
     ${HDF5_HL_SRC_SOURCE_DIR}/H5DO.c
     ${HDF5_HL_SRC_SOURCE_DIR}/H5DS.c
     ${HDF5_HL_SRC_SOURCE_DIR}/H5IM.c
@@ -24,7 +22,7 @@ SET (HL_SRCS
     ${HDF5_HL_SRC_SOURCE_DIR}/H5TB.c
 )
 
-SET (HL_HEADERS
+set (HL_HEADERS
     ${HDF5_HL_SRC_SOURCE_DIR}/H5DOpublic.h
     ${HDF5_HL_SRC_SOURCE_DIR}/H5DSpublic.h
     ${HDF5_HL_SRC_SOURCE_DIR}/H5IMpublic.h
@@ -35,17 +33,20 @@ SET (HL_HEADERS
     ${HDF5_HL_SRC_SOURCE_DIR}/hdf5_hl.h
 )
 
-ADD_LIBRARY (${HDF5_HL_LIB_TARGET} ${LIB_TYPE} ${HL_SRCS} ${HL_HEADERS})
+add_library (${HDF5_HL_LIB_TARGET} ${LIB_TYPE} ${HL_SRCS} ${HL_HEADERS})
 TARGET_C_PROPERTIES (${HDF5_HL_LIB_TARGET} " " " ")
-TARGET_LINK_LIBRARIES (${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_HL_LIB_TARGET}")
+target_link_libraries (${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
 H5_SET_LIB_OPTIONS (${HDF5_HL_LIB_TARGET} ${HDF5_HL_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_HL_LIB_TARGET} PROPERTIES FOLDER libraries/hl)
+set_target_properties (${HDF5_HL_LIB_TARGET} PROPERTIES
+    FOLDER libraries/hl
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_HL_LIB_TARGET}")
 
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install 
 #-----------------------------------------------------------------------------
-INSTALL (
+install (
     FILES
         ${HL_HEADERS}
     DESTINATION
@@ -57,11 +58,12 @@ 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)
+if (HDF5_EXPORTED_TARGETS)
+  if (BUILD_SHARED_LIBS)
+    INSTALL_TARGET_PDB (${HDF5_HL_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} hllibraries)
+  endif (BUILD_SHARED_LIBS)
   
-  INSTALL (
+  install (
       TARGETS
           ${HDF5_HL_LIB_TARGET}
       EXPORT
@@ -70,4 +72,4 @@ IF (HDF5_EXPORTED_TARGETS)
       ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT hllibraries
       RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hllibraries
   )
-ENDIF (HDF5_EXPORTED_TARGETS)
+endif (HDF5_EXPORTED_TARGETS)
diff --git a/hl/src/H5DO.c b/hl/src/H5DO.c
index 9cfd8c1..99dbd93 100644
--- a/hl/src/H5DO.c
+++ b/hl/src/H5DO.c
@@ -18,8 +18,14 @@
 #include <assert.h>
 #include <stdio.h>
 
-#include "H5DOprivate.h"
+/* High-level library internal header file */
+#include "H5HLprivate2.h"
 
+/* public LT prototypes			*/
+#include "H5DOpublic.h"
+
+
+

 /*-------------------------------------------------------------------------
  * Function:	H5DOwrite_chunk
  *
@@ -30,108 +36,64 @@
  * Programmer:	Raymond Lu
  *		30 July 2012
  *
- * Modifications:
  *-------------------------------------------------------------------------
  */
 herr_t
 H5DOwrite_chunk(hid_t dset_id, hid_t dxpl_id, uint32_t filters, const hsize_t *offset, 
          size_t data_size, const void *buf)
 {
-    hbool_t created_dxpl = FALSE;
-    herr_t  ret_value = SUCCEED;  /* Return value */
+    hbool_t created_dxpl = FALSE;       /* Whether we created a DXPL */
+    hbool_t do_direct_write = TRUE;     /* Flag for direct writes */
+    uint32_t data_size_32;              /* Chunk data size (limited to 32-bits currently) */
+    herr_t  ret_value = FAIL;           /* Return value */
     
-    if(dset_id < 0) {
-        ret_value = FAIL;
+    /* Check arguments */
+    if(dset_id < 0)
         goto done;
-    }
-
-    if(!buf) {
-        ret_value = FAIL;
+    if(!buf)
         goto done;
-    }
-
-    if(!offset) {
-        ret_value = FAIL;
+    if(!offset)
         goto done;
-    }
-
-    if(!data_size) {
-        ret_value = FAIL;
+    if(!data_size)
+        goto done;
+    data_size_32 = (uint32_t)data_size;
+    if(data_size != (size_t)data_size_32)
         goto done;
-    }
 
+    /* If the user passed in a default DXPL, create one to pass to H5Dwrite() */
     if(H5P_DEFAULT == dxpl_id) {
-	if((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0) {
-            ret_value = FAIL;
+	if((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0)
             goto done;
-        }
-
         created_dxpl = TRUE;
-    }
+    } /* end if */
 
-    if(H5DO_write_chunk(dset_id, dxpl_id, filters, offset, data_size, buf) < 0) {
-        ret_value = FAIL;
+    /* Set direct write parameters */
+    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0)
         goto done;
-    }
-
-done:
-    if(created_dxpl) {
-        if(H5Pclose(dxpl_id) < 0)
-            ret_value = FAIL;
-    }
-
-    return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function:	H5DO_write_chunk
- *
- * Purpose:     Private function for H5DOwrite_chunk
- *
- * Return:	Non-negative on success/Negative on failure
- *
- * Programmer:	Raymond Lu
- *		30 July 2012
- *
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5DO_write_chunk(hid_t dset_id, hid_t dxpl_id, uint32_t filters, const hsize_t *offset, 
-         size_t data_size, const void *buf)
-{
-    hbool_t do_direct_write = TRUE;
-    herr_t  ret_value = SUCCEED;  /* Return value */
-
-    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0) {
-        ret_value = FAIL;
+    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_NAME, &filters) < 0)
         goto done;
-    }
-
-    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_NAME, &filters) < 0) {
-        ret_value = FAIL;
+    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_NAME, &offset) < 0)
         goto done;
-    }
-
-    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_NAME, &offset) < 0) {
-        ret_value = FAIL;
+    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_NAME, &data_size_32) < 0)
         goto done;
-    }
 
-    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_NAME, &data_size) < 0) {
-        ret_value = FAIL;
+    /* Write chunk */
+    if(H5Dwrite(dset_id, 0, H5S_ALL, H5S_ALL, dxpl_id, buf) < 0)
         goto done;
-    }
 
-    if(H5Dwrite(dset_id, 0, H5S_ALL, H5S_ALL, dxpl_id, buf) < 0) {
-        ret_value = FAIL;
-        goto done;
-    }
+    /* Indicate success */
+    ret_value = SUCCEED;
 
 done:
-    do_direct_write = FALSE;
-    if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0)
-        ret_value = FAIL;
+    if(created_dxpl) {
+        if(H5Pclose(dxpl_id) < 0)
+            ret_value = FAIL;
+    } /* end if */
+    else
+        /* Reset the direct write flag on user DXPL */
+        if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0)
+            ret_value = FAIL;
+
+    return(ret_value);
+} /* end H5DOwrite_chunk() */
 
-    return ret_value;
-}
diff --git a/hl/src/H5DOprivate.h b/hl/src/H5DOprivate.h
deleted file mode 100644
index fcea585..0000000
--- a/hl/src/H5DOprivate.h
+++ /dev/null
@@ -1,37 +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.     *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#ifndef _H5DOprivate_H
-#define _H5DOprivate_H
-
-/* High-level library internal header file */
-#include "H5HLprivate2.h"
-
-/* public LT prototypes			*/
-#include "H5DOpublic.h"
-
-/*-------------------------------------------------------------------------
- * Private functions
- *-------------------------------------------------------------------------
- */
-
-H5_HLDLL herr_t H5DO_write_chunk(hid_t dset_id, 
-			hid_t dxpl_id, 
-			uint32_t filters, 
-			const hsize_t *offset, 
-         		size_t data_size, 
-			const void *buf);
-
-#endif
diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c
index 98f2ff2..6da097c 100644
--- a/hl/src/H5LT.c
+++ b/hl/src/H5LT.c
@@ -27,7 +27,7 @@
 #define         INCREMENT       1024
 #define         TMP_LEN         256
 #define         MAX(a,b)        (((a)>(b)) ? (a) : (b))
-int  input_len;
+size_t  input_len;
 char *myinput;
 size_t  indent = 0;
 
@@ -2291,9 +2291,9 @@ print_enum(hid_t type, char* str, size_t *str_len, hbool_t no_ubuf, size_t indt)
     size_t           dst_size;      /*destination value type size    */
     int              i;
 
-    if((nmembs = H5Tget_nmembers(type))==0)
+    if((nmembs = H5Tget_nmembers(type))<=0)
         goto out;
-    assert(nmembs>0);
+
     if((super = H5Tget_super(type)) < 0)
         goto out;
 
@@ -2360,7 +2360,7 @@ print_enum(hid_t type, char* str, size_t *str_len, hbool_t no_ubuf, size_t indt)
 
     /* Release resources */
     for(i = 0; i < nmembs; i++)
-        HDfree(name[i]);
+        H5free_memory(name[i]);
 
     HDfree(name);
     HDfree(value);
@@ -2745,7 +2745,7 @@ next:
             if(tag) {
                 HDsnprintf(tmp_str, TMP_LEN, "OPQ_TAG \"%s\";\n", tag);
                 if(tag)
-                    HDfree(tag);
+                    H5free_memory(tag);
                 tag = NULL;
             } else
                 HDsnprintf(tmp_str, TMP_LEN, "OPQ_TAG \"\";\n");
@@ -2951,7 +2951,7 @@ next:
                     if(!(dt_str = realloc_and_append(no_user_buf, slen, dt_str, tmp_str)))
                         goto out;
                     if(mname)
-                        HDfree(mname);
+                        H5free_memory(mname);
                     mname = NULL;
 
                     HDsnprintf(tmp_str, TMP_LEN, " : %lu;\n", (unsigned long)moffset);
diff --git a/hl/src/H5LTanalyze.c b/hl/src/H5LTanalyze.c
index f02bed6..31ec84f 100644
--- a/hl/src/H5LTanalyze.c
+++ b/hl/src/H5LTanalyze.c
@@ -14,9 +14,11 @@
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 /*
- * This file was generated by Lex with the command "lex -PH5LTyy -oH5LTanalyze.c H5LTanalyze.l".
- * Do NOT modify it by hand, but in line 52, "#ifdef H5_HAVE_UNISTD_H" should be added if
- * the platform doesn't have the unistd.h header file.
+ * This file was generated by Lex with the command "lex -PH5LTyy
+ * -oH5LTanalyze.c H5LTanalyze.l".  Do NOT modify it by hand, but in
+ * line 52, "#ifdef H5_HAVE_UNISTD_H" should be added if the platform
+ * doesn't have the unistd.h header file. Also hdf5.h should be added
+ * before adding H5_HAVE_UNISTD_H.
  */
 
 #define yy_create_buffer H5LTyy_create_buffer
@@ -37,7 +39,7 @@
 #define yytext H5LTyytext
 #define yywrap H5LTyywrap
 
-#line 20 "H5LTanalyze.c"
+#line 43 "H5LTanalyze.c"
 /* A lexical scanner generated by flex*/
 
 /* Scanner skeleton version:
@@ -49,6 +51,7 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
+#include <hdf5.h>
 #ifdef H5_HAVE_UNISTD_H
 #include <unistd.h>
 #endif 
@@ -806,7 +809,7 @@ char *yytext;
 #line 17 "H5LTanalyze.l"
 #include <stdlib.h>
 #include <string.h>
-#include<hdf5.h>
+#include <hdf5.h>
 #include "H5LTparse.h"
 
 int my_yyinput(char *, int);
@@ -820,7 +823,7 @@ int my_yyinput(char *, int);
 #define YY_BUF_SIZE        262144    /*Define read buffer to be 256K*/
 
 extern char *myinput;
-extern int  input_len;
+extern size_t input_len;
 
 #define STACK_SIZE      16
 
@@ -855,13 +858,9 @@ extern hbool_t is_opq_tag;
 
 hbool_t        first_quote = 1;
 
-/* For Lex and Yacc */
-/*int  input_len;
-char *myinput;*/
-    
 #define TAG_STRING 1
 
-#line 843 "H5LTanalyze.c"
+#line 864 "H5LTanalyze.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1012,10 +1011,10 @@ YY_DECL
 	register char *yy_cp = NULL, *yy_bp = NULL;
 	register int yy_act;
 
-#line 76 "H5LTanalyze.l"
+#line 72 "H5LTanalyze.l"
 
 
-#line 997 "H5LTanalyze.c"
+#line 1018 "H5LTanalyze.c"
 
 	if ( yy_init )
 		{
@@ -1101,277 +1100,277 @@ do_action:	/* This label is used only to access EOF actions. */
 	{ /* beginning of action switch */
 case 1:
 YY_RULE_SETUP
-#line 78 "H5LTanalyze.l"
+#line 74 "H5LTanalyze.l"
 {return token(H5T_STD_I8BE_TOKEN);}
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 79 "H5LTanalyze.l"
+#line 75 "H5LTanalyze.l"
 {return token(H5T_STD_I8LE_TOKEN);}
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 80 "H5LTanalyze.l"
+#line 76 "H5LTanalyze.l"
 {return token(H5T_STD_I16BE_TOKEN);}
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 81 "H5LTanalyze.l"
+#line 77 "H5LTanalyze.l"
 {return token(H5T_STD_I16LE_TOKEN);}
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 82 "H5LTanalyze.l"
+#line 78 "H5LTanalyze.l"
 {return token(H5T_STD_I32BE_TOKEN);}
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 83 "H5LTanalyze.l"
+#line 79 "H5LTanalyze.l"
 {return token(H5T_STD_I32LE_TOKEN);}
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 84 "H5LTanalyze.l"
+#line 80 "H5LTanalyze.l"
 {return token(H5T_STD_I64BE_TOKEN);}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 85 "H5LTanalyze.l"
+#line 81 "H5LTanalyze.l"
 {return token(H5T_STD_I64LE_TOKEN);}
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 87 "H5LTanalyze.l"
+#line 83 "H5LTanalyze.l"
 {return token(H5T_STD_U8BE_TOKEN);}
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 88 "H5LTanalyze.l"
+#line 84 "H5LTanalyze.l"
 {return token(H5T_STD_U8LE_TOKEN);}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 89 "H5LTanalyze.l"
+#line 85 "H5LTanalyze.l"
 {return token(H5T_STD_U16BE_TOKEN);}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 90 "H5LTanalyze.l"
+#line 86 "H5LTanalyze.l"
 {return token(H5T_STD_U16LE_TOKEN);}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 91 "H5LTanalyze.l"
+#line 87 "H5LTanalyze.l"
 {return token(H5T_STD_U32BE_TOKEN);}
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 92 "H5LTanalyze.l"
+#line 88 "H5LTanalyze.l"
 {return token(H5T_STD_U32LE_TOKEN);}
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 93 "H5LTanalyze.l"
+#line 89 "H5LTanalyze.l"
 {return token(H5T_STD_U64BE_TOKEN);}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 94 "H5LTanalyze.l"
+#line 90 "H5LTanalyze.l"
 {return token(H5T_STD_U64LE_TOKEN);}
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 96 "H5LTanalyze.l"
+#line 92 "H5LTanalyze.l"
 {return token(H5T_NATIVE_CHAR_TOKEN);}
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 97 "H5LTanalyze.l"
+#line 93 "H5LTanalyze.l"
 {return token(H5T_NATIVE_SCHAR_TOKEN);}
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 98 "H5LTanalyze.l"
+#line 94 "H5LTanalyze.l"
 {return token(H5T_NATIVE_UCHAR_TOKEN);}
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 99 "H5LTanalyze.l"
+#line 95 "H5LTanalyze.l"
 {return token(H5T_NATIVE_SHORT_TOKEN);}
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 100 "H5LTanalyze.l"
+#line 96 "H5LTanalyze.l"
 {return token(H5T_NATIVE_USHORT_TOKEN);}
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 101 "H5LTanalyze.l"
+#line 97 "H5LTanalyze.l"
 {return token(H5T_NATIVE_INT_TOKEN);}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 102 "H5LTanalyze.l"
+#line 98 "H5LTanalyze.l"
 {return token(H5T_NATIVE_UINT_TOKEN);}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 103 "H5LTanalyze.l"
+#line 99 "H5LTanalyze.l"
 {return token(H5T_NATIVE_LONG_TOKEN);}
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 104 "H5LTanalyze.l"
+#line 100 "H5LTanalyze.l"
 {return token(H5T_NATIVE_ULONG_TOKEN);}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 105 "H5LTanalyze.l"
+#line 101 "H5LTanalyze.l"
 {return token(H5T_NATIVE_LLONG_TOKEN);}
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 106 "H5LTanalyze.l"
+#line 102 "H5LTanalyze.l"
 {return token(H5T_NATIVE_ULLONG_TOKEN);}
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 108 "H5LTanalyze.l"
+#line 104 "H5LTanalyze.l"
 {return token(H5T_IEEE_F32BE_TOKEN);}
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 109 "H5LTanalyze.l"
+#line 105 "H5LTanalyze.l"
 {return token(H5T_IEEE_F32LE_TOKEN);}
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 110 "H5LTanalyze.l"
+#line 106 "H5LTanalyze.l"
 {return token(H5T_IEEE_F64BE_TOKEN);}
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 111 "H5LTanalyze.l"
+#line 107 "H5LTanalyze.l"
 {return token(H5T_IEEE_F64LE_TOKEN);}
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 112 "H5LTanalyze.l"
+#line 108 "H5LTanalyze.l"
 {return token(H5T_NATIVE_FLOAT_TOKEN);}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 113 "H5LTanalyze.l"
+#line 109 "H5LTanalyze.l"
 {return token(H5T_NATIVE_DOUBLE_TOKEN);}
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 114 "H5LTanalyze.l"
+#line 110 "H5LTanalyze.l"
 {return token(H5T_NATIVE_LDOUBLE_TOKEN);}
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 116 "H5LTanalyze.l"
+#line 112 "H5LTanalyze.l"
 {return token(H5T_STRING_TOKEN);}
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 117 "H5LTanalyze.l"
+#line 113 "H5LTanalyze.l"
 {return token(STRSIZE_TOKEN);}
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 118 "H5LTanalyze.l"
+#line 114 "H5LTanalyze.l"
 {return token(STRPAD_TOKEN);}
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 119 "H5LTanalyze.l"
+#line 115 "H5LTanalyze.l"
 {return token(CSET_TOKEN);}
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 120 "H5LTanalyze.l"
+#line 116 "H5LTanalyze.l"
 {return token(CTYPE_TOKEN);}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 121 "H5LTanalyze.l"
+#line 117 "H5LTanalyze.l"
 {return token(H5T_STR_NULLTERM_TOKEN);} 
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 122 "H5LTanalyze.l"
+#line 118 "H5LTanalyze.l"
 {return token(H5T_STR_NULLPAD_TOKEN);} 
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 123 "H5LTanalyze.l"
+#line 119 "H5LTanalyze.l"
 {return token(H5T_STR_SPACEPAD_TOKEN);} 
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 124 "H5LTanalyze.l"
+#line 120 "H5LTanalyze.l"
 {return token(H5T_CSET_ASCII_TOKEN);}
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 125 "H5LTanalyze.l"
+#line 121 "H5LTanalyze.l"
 {return token(H5T_CSET_UTF8_TOKEN);}
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 126 "H5LTanalyze.l"
+#line 122 "H5LTanalyze.l"
 {return token(H5T_C_S1_TOKEN);}
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 127 "H5LTanalyze.l"
+#line 123 "H5LTanalyze.l"
 {return token(H5T_FORTRAN_S1_TOKEN);}
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 128 "H5LTanalyze.l"
+#line 124 "H5LTanalyze.l"
 {return token(H5T_VARIABLE_TOKEN);}
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 130 "H5LTanalyze.l"
+#line 126 "H5LTanalyze.l"
 {return token(H5T_COMPOUND_TOKEN);}
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 131 "H5LTanalyze.l"
+#line 127 "H5LTanalyze.l"
 {return token(H5T_ENUM_TOKEN);}
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 132 "H5LTanalyze.l"
+#line 128 "H5LTanalyze.l"
 {return token(H5T_ARRAY_TOKEN);}
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 133 "H5LTanalyze.l"
+#line 129 "H5LTanalyze.l"
 {return token(H5T_VLEN_TOKEN);}
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 135 "H5LTanalyze.l"
+#line 131 "H5LTanalyze.l"
 {return token(H5T_OPAQUE_TOKEN);}
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 136 "H5LTanalyze.l"
+#line 132 "H5LTanalyze.l"
 {return token(OPQ_SIZE_TOKEN);}
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 137 "H5LTanalyze.l"
+#line 133 "H5LTanalyze.l"
 {return token(OPQ_TAG_TOKEN);}
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 139 "H5LTanalyze.l"
+#line 135 "H5LTanalyze.l"
 {    
                         if( is_str_size || (is_enum && is_enum_memb) || 
                             is_opq_size || (asindex>-1 && arr_stack[asindex].is_dim) ||
@@ -1384,7 +1383,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 149 "H5LTanalyze.l"
+#line 145 "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)) 
@@ -1398,7 +1397,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 159 "H5LTanalyze.l"
+#line 155 "H5LTanalyze.l"
 {
 #ifdef H5_HAVE_WIN32_API
                     H5LTyylval.sval = _strdup(yytext);
@@ -1411,50 +1410,50 @@ YY_RULE_SETUP
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 169 "H5LTanalyze.l"
+#line 165 "H5LTanalyze.l"
 {return token('{');}
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 170 "H5LTanalyze.l"
+#line 166 "H5LTanalyze.l"
 {return token('}');}
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 171 "H5LTanalyze.l"
+#line 167 "H5LTanalyze.l"
 {return token('[');}
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 172 "H5LTanalyze.l"
+#line 168 "H5LTanalyze.l"
 {return token(']');}
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 173 "H5LTanalyze.l"
+#line 169 "H5LTanalyze.l"
 {return token(':');}
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 174 "H5LTanalyze.l"
+#line 170 "H5LTanalyze.l"
 {return token(';');}
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 175 "H5LTanalyze.l"
+#line 171 "H5LTanalyze.l"
 ;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 176 "H5LTanalyze.l"
+#line 172 "H5LTanalyze.l"
 { return 0; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 178 "H5LTanalyze.l"
+#line 174 "H5LTanalyze.l"
 ECHO;
 	YY_BREAK
-#line 1432 "H5LTanalyze.c"
+#line 1457 "H5LTanalyze.c"
 			case YY_STATE_EOF(INITIAL):
 			case YY_STATE_EOF(TAG_STRING):
 				yyterminate();
@@ -2037,7 +2036,7 @@ FILE *file;
 	b->yy_is_interactive = 0;
 #else
 #ifdef H5_HAVE_WIN32_API
-    b->yy_is_interactive = file ? (isatty( _fileno(file) ) > 0) : 0;
+    b->yy_is_interactive = file ? (_isatty( _fileno(file) ) > 0) : 0;
 #else /* H5_HAVE_WIN32_API */
     b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
 #endif  /* H5_HAVE_WIN32_API */
@@ -2335,18 +2334,18 @@ int main()
 	return 0;
 	}
 #endif
-#line 178 "H5LTanalyze.l"
+#line 174 "H5LTanalyze.l"
 
 int my_yyinput(char *buf, int max_size)
 {
    int ret;
     
    memcpy(buf, myinput, input_len); 
-   ret = input_len;
+   ret = (int)input_len;
    return ret;
 }
 
-int H5LTyyerror(char *msg)
+int H5LTyyerror(const char *msg)
 {
    printf("ERROR: %s before \"%s\".\n", msg, yytext);
    return 0;
diff --git a/hl/src/H5LTanalyze.l b/hl/src/H5LTanalyze.l
index 581672b..9682f78 100644
--- a/hl/src/H5LTanalyze.l
+++ b/hl/src/H5LTanalyze.l
@@ -16,7 +16,7 @@
 %{
 #include <stdlib.h>
 #include <string.h>
-#include<hdf5.h>
+#include <hdf5.h>
 #include "H5LTparse.h"
 
 int my_yyinput(char *, int);
@@ -30,7 +30,7 @@ int my_yyinput(char *, int);
 #define YY_BUF_SIZE        262144    /*Define read buffer to be 256K*/
 
 extern char *myinput;
-extern int  input_len;
+extern size_t input_len;
 
 #define STACK_SIZE      16
 
@@ -65,10 +65,6 @@ extern hbool_t is_opq_tag;
 
 hbool_t        first_quote = 1;
 
-/* For Lex and Yacc */
-/*int  input_len;
-char *myinput;*/
-    
 %}
 
 %s TAG_STRING
@@ -181,11 +177,11 @@ int my_yyinput(char *buf, int max_size)
    int ret;
     
    memcpy(buf, myinput, input_len); 
-   ret = input_len;
+   ret = (int)input_len;
    return ret;
 }
 
-int H5LTyyerror(char *msg)
+int H5LTyyerror(const char *msg)
 {
    printf("ERROR: %s before \"%s\".\n", msg, yytext);
    return 0;
diff --git a/hl/src/H5LTparse.c b/hl/src/H5LTparse.c
index 41c4cec..4527a5f 100644
--- a/hl/src/H5LTparse.c
+++ b/hl/src/H5LTparse.c
@@ -58,12 +58,12 @@ static int yygrowstack();
 #define yystacksize H5LTyystacksize
 #define YYPREFIX "H5LTyy"
 #line 17 "H5LTparse.y"
-#include<stdio.h>
-#include<string.h>
-#include<hdf5.h>
+#include <stdio.h>
+#include <string.h>
+#include <hdf5.h>
 
 extern int yylex();
-extern int yyerror(char *);
+extern int yyerror(const char *);
 
 #define STACK_SIZE      16
 
@@ -95,7 +95,7 @@ int asindex = -1;               /*pointer to the top of array stack*/
 
 hbool_t     is_str_size = 0;        /*flag to lexer for string size*/
 hbool_t     is_str_pad = 0;         /*flag to lexer for string padding*/
-H5T_pad_t   str_pad;                /*variable for string padding*/
+H5T_str_t   str_pad;                /*variable for string padding*/
 H5T_cset_t  str_cset;               /*variable for string character set*/
 hbool_t     is_variable = 0;        /*variable for variable-length string*/
 size_t      str_size;               /*variable for string size*/
@@ -113,7 +113,7 @@ typedef union {
     int   ival;         /*for integer token*/
     char  *sval;        /*for name string*/
 } YYSTYPE;
-#line 99 "H5LTparse.c"
+#line 117 "H5LTparse.c"
 #define YYERRCODE 256
 #define H5T_STD_I8BE_TOKEN 257
 #define H5T_STD_I8LE_TOKEN 258
@@ -1042,11 +1042,15 @@ case 91:
 #line 330 "H5LTparse.y"
 {
                                                 is_enum_memb = 1; /*indicate member of enum*/
-                                                enum_memb_symbol = strdup(yylval.sval);
+#ifdef H5_HAVE_WIN32_API
+                                                enum_memb_symbol = _strdup(yylval.sval); 
+#else /* H5_HAVE_WIN32_API */
+                                                enum_memb_symbol = strdup(yylval.sval); 
+#endif  /* H5_HAVE_WIN32_API */
                                             }
 break;
 case 92:
-#line 335 "H5LTparse.y"
+#line 339 "H5LTparse.y"
 {
                                 char char_val=(char)yylval.ival;
                                 short short_val=(short)yylval.ival;
@@ -1090,7 +1094,7 @@ case 92:
                                 H5Tclose(native);
                             }
 break;
-#line 1076 "H5LTparse.c"
+#line 1098 "H5LTparse.c"
     }
     yyssp -= yym;
     yystate = *yyssp;
diff --git a/hl/src/H5LTparse.y b/hl/src/H5LTparse.y
index b91e97e..d4c786c 100644
--- a/hl/src/H5LTparse.y
+++ b/hl/src/H5LTparse.y
@@ -14,12 +14,12 @@
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 %{
-#include<stdio.h>
-#include<string.h>
-#include<hdf5.h>
+#include <stdio.h>
+#include <string.h>
+#include <hdf5.h>
 
 extern int yylex();
-extern int yyerror(char *);
+extern int yyerror(const char *);
 
 #define STACK_SIZE      16
 
@@ -51,7 +51,7 @@ int asindex = -1;               /*pointer to the top of array stack*/
 
 hbool_t     is_str_size = 0;        /*flag to lexer for string size*/
 hbool_t     is_str_pad = 0;         /*flag to lexer for string padding*/
-H5T_pad_t   str_pad;                /*variable for string padding*/
+H5T_str_t   str_pad;                /*variable for string padding*/
 H5T_cset_t  str_cset;               /*variable for string character set*/
 hbool_t     is_variable = 0;        /*variable for variable-length string*/
 size_t      str_size;               /*variable for string size*/
diff --git a/hl/src/H5TB.c b/hl/src/H5TB.c
index 0b6305b..0fa23bc 100644
--- a/hl/src/H5TB.c
+++ b/hl/src/H5TB.c
@@ -196,7 +196,7 @@ herr_t H5TBmake_table( const char *table_title,
         if (H5LTset_attribute_string( loc_id, dset_name, attr_name, member_name ) < 0)
             goto out;
 
-        free( member_name );
+        H5free_memory( member_name );
 
     }
 
@@ -234,7 +234,7 @@ herr_t H5TBmake_table( const char *table_title,
             if (H5Aclose(attr_id) < 0)
                 goto out;
 
-            free(member_name);
+            H5free_memory(member_name);
         }
 
         /* terminate access to the data space. */
@@ -570,7 +570,7 @@ herr_t H5TBwrite_fields_name( hid_t loc_id,
                 goto out;
         }
 
-        free( member_name );
+        H5free_memory( member_name );
 
     }
 
@@ -734,7 +734,7 @@ herr_t H5TBwrite_fields_index( hid_t loc_id,
         if(H5Tclose( nmtype_id ) < 0)
             goto out;
 
-        free( member_name );
+        H5free_memory( member_name );
 
     }
 
@@ -1059,7 +1059,7 @@ herr_t H5TBread_fields_name( hid_t loc_id,
                 goto out;
             j++;
         }
-        free( member_name );
+        H5free_memory( member_name );
     }
 
     /* get the dataspace handle */
@@ -1221,7 +1221,7 @@ herr_t H5TBread_fields_index( hid_t loc_id,
         if (H5Tclose( nmtype_id ) < 0)
             goto out;
 
-        free( member_name );
+        H5free_memory( member_name );
     }
 
     /* get the dataspace handle */
@@ -2314,7 +2314,7 @@ herr_t H5TBinsert_field( hid_t loc_id,
 
         curr_offset += member_size;
 
-        free( member_name );
+        H5free_memory( member_name );
 
         /* close the member type */
         if(H5Tclose( member_type_id ) < 0)
@@ -2694,13 +2694,13 @@ herr_t H5TBdelete_field( hid_t loc_id,
             if (H5Tclose( member_type_id ) < 0)
                 goto out;
 
-            free( member_name );
+            H5free_memory( member_name );
 
             break;
 
         }
 
-        free( member_name );
+        H5free_memory( member_name );
 
     } /* i */
 
@@ -2742,7 +2742,7 @@ herr_t H5TBdelete_field( hid_t loc_id,
         /* we want to skip the field to delete */
         if (H5TB_find_field( member_name, field_name ) > 0 )
         {
-            free( member_name );
+            H5free_memory( member_name );
             continue;
         }
 
@@ -2780,7 +2780,7 @@ herr_t H5TBdelete_field( hid_t loc_id,
 
         curr_offset += member_size;
 
-        free(member_name);
+        H5free_memory(member_name);
 
         /* close the member type */
         if (H5Tclose(member_type_id) < 0)
@@ -2821,7 +2821,7 @@ herr_t H5TBdelete_field( hid_t loc_id,
         /* skip the field to delete */
         if (H5TB_find_field(member_name, field_name) > 0)
         {
-            free(member_name);
+            H5free_memory(member_name);
             continue;
         }
 
@@ -2881,8 +2881,8 @@ herr_t H5TBdelete_field( hid_t loc_id,
             goto out;
 
         /* release resources. */
-        free( member_name );
-        free ( tmp_buf );
+        H5free_memory( member_name );
+        HDfree ( tmp_buf );
 
     } /* i */
 
@@ -3306,7 +3306,7 @@ herr_t H5TBget_field_info( hid_t loc_id,
 
             member_name = H5Tget_member_name(tid, (unsigned)i);
             strcpy(field_names[i], member_name);
-            free(member_name);
+            H5free_memory(member_name);
         } /* end if */
 
         /* get the member type */
@@ -3459,7 +3459,7 @@ herr_t H5TB_attach_attributes( const char *table_title,
         if (H5LTset_attribute_string( loc_id, dset_name, attr_name, member_name ) < 0)
             goto out;
 
-        free( member_name );
+        H5free_memory( member_name );
 
     }
 
diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in
index cc1135f..49ca65b 100644
--- a/hl/src/Makefile.in
+++ b/hl/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,23 +33,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -68,12 +96,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(include_HEADERS) $(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 COPYING
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/lt_vers.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(include_HEADERS) \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = hl/src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -166,12 +194,198 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 HEADERS = $(include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -245,7 +459,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -457,7 +670,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 8
-LT_VERS_REVISION = 1
+LT_VERS_REVISION = 2 
 LT_VERS_AGE = 0
 
 # This library is our main target.
@@ -497,7 +710,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -529,6 +742,7 @@ $(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):
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -563,6 +777,7 @@ clean-libLTLIBRARIES:
 	  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)
 
@@ -586,14 +801,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -629,26 +844,15 @@ uninstall-includeHEADERS:
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -660,15 +864,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -677,9 +877,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -695,6 +896,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -753,6 +1099,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -836,20 +1185,20 @@ 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 \
-	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-includeHEADERS install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool cscopelist-am ctags ctags-am 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-includeHEADERS install-info \
+	install-info-am install-libLTLIBRARIES 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 \
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \
 	uninstall-includeHEADERS uninstall-libLTLIBRARIES
 
 
diff --git a/hl/test/CMakeLists.txt b/hl/test/CMakeLists.txt
index f969dbf..545210b 100644
--- a/hl/test/CMakeLists.txt
+++ b/hl/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_TEST)
 # --------------------------------------------------------------------
 # Notes: When creating unit test executables they should be prefixed
@@ -11,8 +11,8 @@ PROJECT (HDF5_HL_TEST)
 #-----------------------------------------------------------------------------
 # Generate the H5srcdir_str.h file containing user settings needed by compilation
 #-----------------------------------------------------------------------------
-SET (srcdir ${CMAKE_CURRENT_SOURCE_DIR})
-CONFIGURE_FILE (${HDF5_HL_TEST_SOURCE_DIR}/H5srcdir_str.h.in H5srcdir_str.h  @ONLY)
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR})
+configure_file (${HDF5_HL_TEST_SOURCE_DIR}/H5srcdir_str.h.in H5srcdir_str.h  @ONLY)
 
 INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR})
 INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
@@ -21,15 +21,15 @@ INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
 #  Macro used to add a unit test
 # --------------------------------------------------------------------
 MACRO (HL_ADD_EXE hl_name)
-  ADD_EXECUTABLE (hl_${hl_name} ${hl_name}.c)
+  add_executable (hl_${hl_name} ${hl_name}.c)
   TARGET_NAMING (hl_${hl_name} ${LIB_TYPE})
   TARGET_C_PROPERTIES (hl_${hl_name} " " " ")
-  TARGET_LINK_LIBRARIES (hl_${hl_name}
+  target_link_libraries (hl_${hl_name}
       ${HDF5_HL_LIB_TARGET}
       ${HDF5_LIB_TARGET}
       ${HDF5_TEST_LIB_TARGET}
   )
-  SET_TARGET_PROPERTIES (hl_${hl_name} PROPERTIES FOLDER test/hl)
+  set_target_properties (hl_${hl_name} PROPERTIES FOLDER test/hl)
 ENDMACRO (HL_ADD_EXE)
 
 HL_ADD_EXE (test_ds)
@@ -43,16 +43,16 @@ HL_ADD_EXE (test_table)
 # This executable is used to generate test files for the test_ds test.
 # It should only be run during development when new test files are needed
 # --------------------------------------------------------------------
-IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-  ADD_EXECUTABLE (hl_gen_test_ds gen_test_ds.c)
+if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+  add_executable (hl_gen_test_ds gen_test_ds.c)
   TARGET_NAMING (hl_gen_test_ds ${LIB_TYPE})
   TARGET_C_PROPERTIES (hl_gen_test_ds " " " ")
-  TARGET_LINK_LIBRARIES (hl_gen_test_ds
+  target_link_libraries (hl_gen_test_ds
       ${HDF5_HL_LIB_TARGET}
       ${HDF5_LIB_TARGET}
       ${HDF5_TEST_LIB_TARGET}
   )
-  SET_TARGET_PROPERTIES (hl_gen_test_ds PROPERTIES FOLDER test/hl/gen)
-ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+  set_target_properties (hl_gen_test_ds PROPERTIES FOLDER test/hl/gen)
+endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/hl/test/CMakeTests.cmake b/hl/test/CMakeTests.cmake
index 5d42b57..7d632cc 100644
--- a/hl/test/CMakeTests.cmake
+++ b/hl/test/CMakeTests.cmake
@@ -9,30 +9,30 @@
 #  Macro used to add a unit test
 # --------------------------------------------------------------------
 MACRO (HL_ADD_TEST hl_name files)
-  ADD_TEST (NAME hl_${hl_name} COMMAND $<TARGET_FILE:hl_${hl_name}>)
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (hl_${hl_name} PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
+  add_test (NAME HL_${hl_name} COMMAND $<TARGET_FILE:hl_${hl_name}>)
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (HL_${hl_name} PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
 
   # --------------------------------------------------------------------
   #-- Copy the necessary files.
   # --------------------------------------------------------------------
-  FOREACH (h5_file ${files})
-    SET (dest "${HDF5_HL_TEST_BINARY_DIR}/${h5_file}")
-    #MESSAGE (STATUS " Copying HL Test File ${h5_file} to ${dest}")
-    ADD_CUSTOM_COMMAND (
+  foreach (h5_file ${files})
+    set (dest "${HDF5_HL_TEST_BINARY_DIR}/${h5_file}")
+    #message (STATUS " Copying HL Test File ${h5_file} to ${dest}")
+    add_custom_command (
         TARGET     hl_${hl_name}
         PRE_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_HL_TEST_SOURCE_DIR}/${h5_file} ${dest}
     )
 
-  ENDFOREACH (h5_file ${HL_REFERENCE_TEST_FILES})
+  endforeach (h5_file ${HL_REFERENCE_TEST_FILES})
 ENDMACRO (HL_ADD_TEST)
 
 # Remove any output file left over from previous test run
-ADD_TEST (
-    NAME hl_test-clear-objects
+add_test (
+    NAME HL_test-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         combine_tables1.h5
@@ -60,14 +60,14 @@ ADD_TEST (
         test_packet_table.h5
         test_table.h5
 )
-IF (NOT "${last_test}" STREQUAL "")
-  SET_TESTS_PROPERTIES (hl_test-clear-objects PROPERTIES DEPENDS ${last_test})
-ENDIF (NOT "${last_test}" STREQUAL "")
-SET (last_test "hl_test-clear-objects")
+if (NOT "${last_test}" STREQUAL "")
+  set_tests_properties (HL_test-clear-objects PROPERTIES DEPENDS ${last_test})
+endif (NOT "${last_test}" STREQUAL "")
+set (last_test "HL_test-clear-objects")
 
-HL_ADD_TEST (test_ds "dsdata.txt;dslat.txt;dslon.txt;test_ds_be.h5;test_ds_le.h5")
-HL_ADD_TEST (test_dset_opt "")
-HL_ADD_TEST (test_image "image8.txt;sepia.pal;earth.pal;image24pixel.txt;image24plane.txt;usa.wri")
-HL_ADD_TEST (test_lite "dtype_file.txt")
-HL_ADD_TEST (test_packet "")
-HL_ADD_TEST (test_table "test_table_be.h5;test_table_cray.h5;test_table_le.h5")
+HL_add_test (test_ds "dsdata.txt;dslat.txt;dslon.txt;test_ds_be.h5;test_ds_le.h5")
+HL_add_test (test_dset_opt "")
+HL_add_test (test_image "image8.txt;sepia.pal;earth.pal;image24pixel.txt;image24plane.txt;usa.wri")
+HL_add_test (test_lite "dtype_file.txt")
+HL_add_test (test_packet "")
+HL_add_test (test_table "test_table_be.h5;test_table_cray.h5;test_table_le.h5")
diff --git a/hl/test/Makefile.in b/hl/test/Makefile.in
index 30b329e..0bb4abe 100644
--- a/hl/test/Makefile.in
+++ b/hl/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -34,23 +34,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -69,11 +97,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/H5srcdir_str.h.in $(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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(srcdir)/H5srcdir_str.h.in $(top_srcdir)/bin/depcomp \
+	$(top_srcdir)/bin/test-driver COPYING
 check_PROGRAMS = $(am__EXEEXT_1)
 @BUILD_ALL_CONDITIONAL_TRUE at noinst_PROGRAMS = $(am__EXEEXT_2)
 TESTS = $(am__EXEEXT_1)
@@ -171,12 +199,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -253,7 +496,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -504,7 +746,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -556,27 +798,35 @@ 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) $(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) $(EXTRA_test_ds_DEPENDENCIES) 
 	@rm -f test_ds$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_ds_OBJECTS) $(test_ds_LDADD) $(LIBS)
+
 test_dset_opt$(EXEEXT): $(test_dset_opt_OBJECTS) $(test_dset_opt_DEPENDENCIES) $(EXTRA_test_dset_opt_DEPENDENCIES) 
 	@rm -f test_dset_opt$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_dset_opt_OBJECTS) $(test_dset_opt_LDADD) $(LIBS)
+
 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) $(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) $(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) $(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) $(EXTRA_test_table_DEPENDENCIES) 
 	@rm -f test_table$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_table_OBJECTS) $(test_table_LDADD) $(LIBS)
@@ -601,14 +851,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -623,26 +873,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -654,15 +893,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -671,9 +906,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -689,6 +925,200 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+test_lite.log: test_lite$(EXEEXT)
+	@p='test_lite$(EXEEXT)'; \
+	b='test_lite'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_image.log: test_image$(EXEEXT)
+	@p='test_image$(EXEEXT)'; \
+	b='test_image'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_file_image.log: test_file_image$(EXEEXT)
+	@p='test_file_image$(EXEEXT)'; \
+	b='test_file_image'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_table.log: test_table$(EXEEXT)
+	@p='test_table$(EXEEXT)'; \
+	b='test_table'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_ds.log: test_ds$(EXEEXT)
+	@p='test_ds$(EXEEXT)'; \
+	b='test_ds'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_packet.log: test_packet$(EXEEXT)
+	@p='test_packet$(EXEEXT)'; \
+	b='test_packet'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_dset_opt.log: test_dset_opt$(EXEEXT)
+	@p='test_dset_opt$(EXEEXT)'; \
+	b='test_dset_opt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -745,6 +1175,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -828,9 +1261,9 @@ 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 \
-	clean-noinstPROGRAMS cscopelist ctags distclean \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	clean-noinstPROGRAMS cscopelist-am ctags ctags-am 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 \
@@ -840,8 +1273,8 @@ uninstall-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
+	mostlyclean-local pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/test/test_image.c b/hl/test/test_image.c
index 5a52980..3109a36 100644
--- a/hl/test/test_image.c
+++ b/hl/test/test_image.c
@@ -13,8 +13,10 @@
 * access to either file, you may request a copy from help at hdfgroup.org.     *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
+#include <limits.h>
 #include <stdlib.h>
 #include <string.h>
+
 #include "h5hltest.h"
 #include "H5srcdir.h"
 #include "H5LTpublic.h"
@@ -542,7 +544,7 @@ static int test_generate(void)
     int      imax, jmax, kmax;
     int      n_elements;
     float    valex, xmin, xmax, value;
-    FILE     *f;
+    FILE     *f = NULL;
     char     *srcdir = getenv("srcdir"); /* the source directory */
     char     data_file[512]="";          /* buffer to hold name of existing data file */
     int      i;
@@ -634,17 +636,20 @@ static int test_generate(void)
     if(n_elements > INT_MAX / (int)sizeof(float))
         goto out;
     
-    data = (float *)HDmalloc((size_t)n_elements * sizeof( float ));
-    HDassert(data);
-    image_data = (unsigned char *)HDmalloc((size_t)n_elements * sizeof( unsigned char ));
-    HDassert(image_data);
+    data = (float *)HDmalloc((size_t)n_elements * sizeof(float));
+    if(NULL == data)
+        goto out;
+    image_data = (unsigned char *)HDmalloc((size_t)n_elements * sizeof(unsigned char));
+    if(NULL == image_data)
+        goto out;
 
     for ( i = 0; i < n_elements; i++ )
     {
         fscanf( f, "%f ", &value );
         data[i] = value;
     }
-    HDfclose( f );
+    HDfclose(f);
+    f = NULL;
 
     /*-------------------------------------------------------------------------
     * transform the data from floating point to unsigned char
@@ -754,6 +759,8 @@ out:
     H5E_BEGIN_TRY {
         H5Fclose(fid);
     } H5E_END_TRY;
+    if(f)
+        HDfclose(f);
     H5_FAILED();
     return retval;
 }
@@ -806,9 +813,6 @@ static int read_data( const char* fname, /*IN*/
     fscanf(f, "%s", str);
     fscanf(f, "%d", &w);
 
-    *width = (hsize_t)w;
-    *height = (hsize_t)h;
-
     /* Check product for overflow */
     if(w < 1 || h < 1 || color_planes < 1)
         goto out;
@@ -825,13 +829,16 @@ static int read_data( const char* fname, /*IN*/
         goto out;
 
     /* Release the buffer, if it was previously allocated */
-    if(image_data) {
+    if(image_data)
         HDfree(image_data);
-        image_data = NULL;
-    } /* end if */
 
     /* Allocate the image data buffer */
     image_data = (unsigned char *)HDmalloc((size_t)n_elements * sizeof(unsigned char));
+    if(NULL == image_data)
+        goto out;
+
+    *width = (hsize_t)w;
+    *height = (hsize_t)h;
 
     /* Read data elements */
     for(i = 0; i < n_elements; i++) {
diff --git a/hl/test/test_lite.c b/hl/test/test_lite.c
index ad17206..a76f3d7 100644
--- a/hl/test/test_lite.c
+++ b/hl/test/test_lite.c
@@ -1551,10 +1551,10 @@ static int test_compounds(void)
     if((memb_name = H5Tget_member_name(dtype, 1)) == NULL)
         goto out;
     if(HDstrcmp(memb_name, "i16_field")) {
-        HDfree(memb_name);
+        H5free_memory(memb_name);
         goto out;
     }
-    HDfree(memb_name);
+    H5free_memory(memb_name);
 
     if((memb_class = H5Tget_member_class(dtype, 2))<0)
         goto out;
@@ -1619,10 +1619,10 @@ static int test_compound_bug(void)
     if((memb_name = H5Tget_member_name(dtype, 2)) == NULL)
         goto out;
     if(HDstrcmp(memb_name, "sub")) {
-        HDfree(memb_name);
+        H5free_memory(memb_name);
         goto out;
     }
-    HDfree(memb_name);
+    H5free_memory(memb_name);
 
     if(H5LTdtype_to_text(dtype, NULL, H5LT_DDL, &str_len)<0)
         goto out;
@@ -1656,10 +1656,10 @@ static int test_compound_bug(void)
     if((memb_name = H5Tget_member_name(dtype, 1)) == NULL)
         goto out;
     if(HDstrcmp(memb_name, "desc_________________________________________________________________________________________")) {
-        HDfree(memb_name);
+        H5free_memory(memb_name);
         goto out;
     }
-    HDfree(memb_name);
+    H5free_memory(memb_name);
 
     if(H5LTdtype_to_text(dtype, NULL, H5LT_DDL, &str_len)<0)
         goto out;
diff --git a/hl/tools/CMakeLists.txt b/hl/tools/CMakeLists.txt
index 256ff89..a41aecc 100644
--- a/hl/tools/CMakeLists.txt
+++ b/hl/tools/CMakeLists.txt
@@ -1,10 +1,10 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_HL_TOOLS)
 
 #-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
-SET (GIF2H5_SRCS
+set (GIF2H5_SRCS
     ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif.h
     ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/decompress.c
     ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif2hdf.c
@@ -17,46 +17,46 @@ SET (GIF2H5_SRCS
 INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 INCLUDE_DIRECTORIES (${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5)
 
-ADD_EXECUTABLE (gif2h5 ${GIF2H5_SRCS})
+add_executable (gif2h5 ${GIF2H5_SRCS})
 TARGET_NAMING (gif2h5 ${LIB_TYPE})
 TARGET_C_PROPERTIES (gif2h5 " " " ")
-TARGET_LINK_LIBRARIES (gif2h5 ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (gif2h5 PROPERTIES FOLDER tools/hl)
+target_link_libraries (gif2h5 ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (gif2h5 PROPERTIES FOLDER tools/hl)
 
 #-- Add h52gif program
-SET (hdf2gif_SRCS
+set (hdf2gif_SRCS
     ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/hdf2gif.c
     ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/hdfgifwr.c
 )
-ADD_EXECUTABLE (h52gif ${hdf2gif_SRCS})
+add_executable (h52gif ${hdf2gif_SRCS})
 TARGET_NAMING (h52gif ${LIB_TYPE})
 TARGET_C_PROPERTIES (h52gif " " " ")
-TARGET_LINK_LIBRARIES (h52gif ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (h52gif PROPERTIES FOLDER tools/hl)
+target_link_libraries (h52gif ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (h52gif PROPERTIES FOLDER tools/hl)
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # This executable can generate the actual test files - Currently not
   #  used in the CMake Build system as we rely on the test files that are
   #  shipped with HDF5 source archives
   # --------------------------------------------------------------------
-  IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-      ADD_EXECUTABLE (hl_h52gifgentest ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/h52gifgentst.c)
+  if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+      add_executable (hl_h52gifgentest ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/h52gifgentst.c)
       TARGET_NAMING (hl_h52gifgentest ${LIB_TYPE})
       TARGET_C_PROPERTIES (hl_h52gifgentest " " " ")
-      TARGET_LINK_LIBRARIES (hl_h52gifgentest ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
-      SET_TARGET_PROPERTIES (hl_h52gifgentest PROPERTIES FOLDER generator/tools/hl)
+      target_link_libraries (hl_h52gifgentest ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
+      set_target_properties (hl_h52gifgentest PROPERTIES FOLDER generator/tools/hl)
     
-#      ADD_TEST (NAME hl_h52gifgentest COMMAND $<TARGET_FILE:hl_h52gifgentest>)
-  ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+#      add_test (NAME hl_h52gifgentest COMMAND $<TARGET_FILE:hl_h52gifgentest>)
+  endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
 
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install
 #-----------------------------------------------------------------------------
-INSTALL (
+install (
     TARGETS
         gif2h5
         h52gif
diff --git a/hl/tools/CMakeTests.cmake b/hl/tools/CMakeTests.cmake
index 9f987fd..a340c2d 100644
--- a/hl/tools/CMakeTests.cmake
+++ b/hl/tools/CMakeTests.cmake
@@ -6,20 +6,20 @@
 ##############################################################################
 
 # Make testfiles dir under build dir
-FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
 #
 # copy test files from source to build dir
 #
 
-ADD_CUSTOM_COMMAND (
+add_custom_command (
     TARGET     gif2h5
     POST_BUILD
     COMMAND    ${CMAKE_COMMAND}
     ARGS       -E copy_if_different ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/testfiles/image1.gif ${PROJECT_BINARY_DIR}/testfiles/image1.gif
 )
 
-ADD_CUSTOM_COMMAND (
+add_custom_command (
     TARGET     h52gif
     POST_BUILD
     COMMAND    ${CMAKE_COMMAND}
@@ -27,7 +27,7 @@ ADD_CUSTOM_COMMAND (
 )
 
 # Remove any output file left over from previous test run
-ADD_TEST (
+add_test (
     NAME HL_TOOLS-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
@@ -35,6 +35,6 @@ ADD_TEST (
         image1.h5
 )
 
-ADD_TEST (NAME HL_TOOLS_h52gif COMMAND $<TARGET_FILE:h52gif> testfiles/h52giftst.h5 image1.gif -i image)
+add_test (NAME HL_TOOLS_h52gif COMMAND $<TARGET_FILE:h52gif> testfiles/h52giftst.h5 image1.gif -i image)
 
-ADD_TEST (NAME HL_TOOLS_gif2h5 COMMAND $<TARGET_FILE:gif2h5> testfiles/image1.gif image1.h5)
+add_test (NAME HL_TOOLS_gif2h5 COMMAND $<TARGET_FILE:gif2h5> testfiles/image1.gif image1.h5)
diff --git a/hl/tools/Makefile.in b/hl/tools/Makefile.in
index eca7b8f..5247b54 100644
--- a/hl/tools/Makefile.in
+++ b/hl/tools/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # Tools HDF5 Makefile(.in)
 #
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,10 +94,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = hl/tools
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -94,13 +122,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -108,15 +137,230 @@ am__can_run_installinfo = \
   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
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
@@ -214,7 +458,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -448,6 +691,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -492,14 +736,13 @@ clean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -520,31 +763,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -560,12 +785,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -577,15 +797,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -594,9 +810,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -612,6 +829,151 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -693,6 +1055,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -770,14 +1135,11 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool cscopelist cscopelist-recursive \
-	ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 \
@@ -786,8 +1148,8 @@ uninstall-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
+	mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am \
+	recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/hl/tools/gif2h5/Makefile.am b/hl/tools/gif2h5/Makefile.am
index d1d416a..c82485e 100644
--- a/hl/tools/gif2h5/Makefile.am
+++ b/hl/tools/gif2h5/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src and tools/lib directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib -I$(top_srcdir)/hl/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib -I$(top_srcdir)/hl/src
 
 # These are our main targets, the tools
 
diff --git a/hl/tools/gif2h5/Makefile.in b/hl/tools/gif2h5/Makefile.in
index 3d7e7fe..0652ddb 100644
--- a/hl/tools/gif2h5/Makefile.in
+++ b/hl/tools/gif2h5/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,11 +95,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/h52giftest.sh.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+	$(top_srcdir)/bin/test-driver
 bin_PROGRAMS = gif2h5$(EXEEXT) h52gif$(EXEEXT)
 noinst_PROGRAMS = h52gifgentst$(EXEEXT)
 TESTS = $(TEST_SCRIPT)
@@ -151,12 +179,225 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -168,7 +409,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src and tools/lib directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib -I$(top_srcdir)/hl/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -228,7 +472,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -437,9 +680,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 *.gif
 
-# Include src and tools/lib directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib -I$(top_srcdir)/hl/src
-
 # These are our main targets, the tools
 TEST_SCRIPT = h52giftest.sh
 check_SCRIPTS = $(TEST_SCRIPT)
@@ -477,7 +717,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -520,10 +760,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -544,7 +786,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -566,12 +809,15 @@ 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) $(EXTRA_gif2h5_DEPENDENCIES) 
 	@rm -f gif2h5$(EXEEXT)
 	$(AM_V_CCLD)$(gif2h5_LINK) $(gif2h5_OBJECTS) $(gif2h5_LDADD) $(LIBS)
+
 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) $(EXTRA_h52gifgentst_DEPENDENCIES) 
 	@rm -f h52gifgentst$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h52gifgentst_OBJECTS) $(h52gifgentst_LDADD) $(LIBS)
@@ -596,14 +842,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -618,26 +864,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -649,15 +884,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -666,9 +897,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -684,6 +916,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -743,6 +1120,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -826,9 +1206,9 @@ 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 \
-	clean-noinstPROGRAMS cscopelist ctags distclean \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-generic clean-libtool \
+	clean-noinstPROGRAMS cscopelist-am ctags ctags-am 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 \
@@ -839,7 +1219,7 @@ uninstall-am: uninstall-binPROGRAMS
 	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 \
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \
 	uninstall-binPROGRAMS
 
 
diff --git a/hl/tools/gif2h5/decompress.c b/hl/tools/gif2h5/decompress.c
index 2e44f1c..d4e4cdc 100644
--- a/hl/tools/gif2h5/decompress.c
+++ b/hl/tools/gif2h5/decompress.c
@@ -17,12 +17,6 @@
 
 #include "gif.h"
 
-#define NEXTBYTE        (*ptr++)
-
-#define IMAGESEP        0x2c
-#define INTERLACEMASK   0x40
-#define COLORMAPMASK    0x80
-
 WORD iWIDE, iHIGH, eWIDE, eHIGH, expand, numcols, strip, nostrip;
 unsigned long  cols[256];
 char *cmd;
diff --git a/hl/tools/gif2h5/gif2mem.c b/hl/tools/gif2h5/gif2mem.c
index 7995bb4..ac4b0ec 100644
--- a/hl/tools/gif2h5/gif2mem.c
+++ b/hl/tools/gif2h5/gif2mem.c
@@ -37,8 +37,6 @@
 
 #include "gif.h"
 
-#define GIF2VERSION                     "1.00"
-
 GIFTOMEM
 Gif2Mem(BYTE *MemGif)
 {
diff --git a/hl/tools/gif2h5/hdfgifwr.c b/hl/tools/gif2h5/hdfgifwr.c
index 1771d06..d828226 100644
--- a/hl/tools/gif2h5/hdfgifwr.c
+++ b/hl/tools/gif2h5/hdfgifwr.c
@@ -56,31 +56,6 @@
 typedef BYTE  byte;
 typedef long int count_int;
 
-/* indicies into conv24MB */
-#define CONV24_8BIT  0
-#define CONV24_24BIT 1
-#define CONV24_SEP1  2
-#define CONV24_LOCK  3
-#define CONV24_SEP2  4
-#define CONV24_FAST  5
-#define CONV24_SLOW  6
-#define CONV24_BEST  7
-#define CONV24_MAX   8
-
-/* values 'picType' can take */
-#define PIC8  CONV24_8BIT
-#define PIC24 CONV24_24BIT
-
-/* MONO returns total intensity of r,g,b components */
-#define MONO(rd,gn,bl) (((rd)*11 + (gn)*16 + (bl)*5) >> 5)  /*.33R+ .5G+ .17B*/
-
-#ifdef UNUSED
-static int  Width, Height;
-static int  curx, cury;
-static long CountDown;
-static int  Interlace;
-#endif /* UNUSED */
-
 #ifdef __STDC__
 static void compress(int, FILE *, byte *, int);
 static void output(int);
@@ -95,20 +70,12 @@ static void char_init(), char_out(), flush_char();
 #endif  /* __STDC__ */
 
 static byte pc2nc[256];
-#ifdef UNUSED
-static byte r1[256],g1[256],b1[256];
-#endif /* UNUSED */
 
 /*************************************************************/
 int hdfWriteGIF(FILE *fp, byte *pic, int ptype, int w, int h, byte *rmap,
                 byte *gmap, byte *bmap, byte *pc2ncmap, int numcols,
                 int colorstyle, int BitsPerPixel)
 {
-#ifdef UNUSED
-    int RWidth, RHeight;
-    int LeftOfs, TopOfs;
-    int ColorMapSize, Background;
-#endif /* UNUSED */
     int InitCodeSize;
     int i;
     byte *pic8 = pic;
@@ -121,39 +88,15 @@ int hdfWriteGIF(FILE *fp, byte *pic, int ptype, int w, int h, byte *rmap,
     numcols=numcols;
     colorstyle=colorstyle;
 
-#ifdef UNUSED
-    Interlace = 0;
-    Background = 0;
-#endif /* UNUSED */
-
     for (i = 0; i < 256; i++) {
       pc2nc[i] = pc2ncmap[i];
-#ifdef UNUSED
-      r1[i] = rmap[i];
-      g1[i] = gmap[i];
-      b1[i] = bmap[i];
-#endif /* UNUSED */
     }
 
-#ifdef UNUSED
-    ColorMapSize = 1 << BitsPerPixel;
-
-    RWidth  = Width = w;
-    RHeight = Height = h;
-    LeftOfs = TopOfs = 0;
-
-    CountDown = w * h;    /* # of pixels we'll be doing */
-#endif /* UNUSED */
-
     if (BitsPerPixel <= 1)
         InitCodeSize = 2;
     else
         InitCodeSize = BitsPerPixel;
 
-#ifdef UNUSED
-    curx = cury = 0;
-#endif /* UNUSED */
-
     if (!fp) {
         fprintf(stderr,  "WriteGIF: file not open for writing\n" );
         return (1);
@@ -172,11 +115,7 @@ static unsigned long cur_accum = 0;
 static int           cur_bits = 0;
 
 #define MAXCODE(n_bits)     ( (1 << (n_bits)) - 1)
-#ifndef min
-#define min(a,b)        ((a>b) ? b : a)
-#endif /* min */
 #define XV_BITS 12    /* BITS was already defined on some systems */
-#define MSDOS 1
 #define HSIZE  5003            /* 80% occupancy */
 
 typedef unsigned char   char_type;
@@ -203,10 +142,6 @@ static int hsize = HSIZE;            /* for dynamic table sizing */
  * used to be 8000 characters).
  */
 
-#define tab_prefixof(i) CodeTabOf(i)
-#define tab_suffixof(i)        ((char_type *)(htab))[i]
-#define de_stack               ((char_type *)&tab_suffixof(1<<XV_BITS))
-
 static int free_ent = 0;                  /* first unused entry */
 
 /*
diff --git a/html/ADGuide.html b/html/ADGuide.html
index a45dfec..3641156 100644
--- a/html/ADGuide.html
+++ b/html/ADGuide.html
@@ -299,7 +299,7 @@
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
@@ -313,7 +313,7 @@
 </address>
 <!-- #EndLibraryItem -->
  
-Last modified:  15 November 2013
+Last modified:  15 May 2014
 
 
 </body>
diff --git a/html/ADGuide/Changes.html b/html/ADGuide/Changes.html
index 6038c08..fafae9c 100755
--- a/html/ADGuide/Changes.html
+++ b/html/ADGuide/Changes.html
@@ -61,8 +61,494 @@ This document is provided to assist application developers who must keep
 an application synchronized with the HDF5 Library or related software.
 
 
+<!-- ============= REVEAL THE FOLLOWING FOR RELEASE 1.8.14 =============
+<a name="1814">
+<h2>Release 1.8.14 of November 2014 (current release) versus Release 1.8.13</h2>
+</a>
+<dir>
+
+This section lists interface-level changes and 
+other user-visible changes in behavior 
+in the transition from HDF5 Release 1.8.13 to Release 1.8.14.
+
+
+    <h3>New and Changed Functions, Classes, Subroutines, Wrappers, 
+        and Macros</h3>
+        <dir>
+        <dl>    
+            <dt><strong>In the C Interface (main library)</strong>
+
+            <dt>The following new C functions have been added:
+                </dt>
+            <dd>To enable a single write or read call to operate 
+                on multiple datasets:
+                <ul>
+                <li><a href="../RM/RM_H5D.html#Dataset-WriteMulti">
+                    <code>H5Dwrite_multi</code></a>
+                <li><a href="../RM/RM_H5D.html#Dataset-ReadMulti">
+                    <code>H5Dread_multi</code></a>
+                <li>Related struct: <code>H5D_rw_multi_t</code>
+                </ul>
+                <br />
+                </dd>
+
+
+        </dl>
+        </dir>
+</dir>
+============= REVEAL THE ABOVE FOR RELEASE 1.8.14 ============= -->
+
+
+<a name="1813">
+<h2>Release 1.8.13 of May 2014 (current release) versus Release 1.8.12</h2>
+</a>
+<dir>
+
+This section lists interface-level changes and 
+other user-visible changes in behavior 
+in the transition from HDF5 Release 1.8.12 to Release 1.8.13.
+
+
+    <h3>New and Changed Functions, Classes, Subroutines, Wrappers, 
+        and Macros</h3>
+        <dir>
+        <dl>    
+            <dt><strong>In the C Interface (main library)</strong>
+
+<!--
+            <dt>The following new high-level C functions have been added:
+                </dt>
+            <dd>
+                <ul>
+                <li><a href="../HL/RM_HDF5Optimized.html#H5DOwrite_chunk">
+                    <code>__</code></a> 
+                </ul>
+                    This function ..
+                    <p>
+                    See “<a 
+                    href="../Advanced/DirectChunkWrite/index.html">__
+                    </a>” for additional information.
+                </dd>
+-->
+
+            <p>
+            <dt>The following new C functions have been added:
+                </dt>
+            <dd>
+                To free memory allocated by HDF5 function calls:
+                <ul>
+                <li><a href="../RM/RM_H5.html#Library-FreeMemory">
+                    <code>H5free_memory</code></a>
+                    <br>
+                    This function should be used to free memory that has 
+                    been allocated by HDF5 API calls such as
+                    <code>H5Tget_member_name</code> and 
+                    <code>H5Pget_class_name</code>.
+                    <p />
+                    The primary value for this call is on Windows systems, 
+                    where it is common for application code and the 
+                    HDF5 Library to be using different C run-time 
+                    libraries (CRT). Using this new call ensures that the 
+                    same CRT handles both the allocation and free. 
+                    <p />
+                    This function can also be useful in any case where 
+                    the library uses a different memory manager than the 
+                    application, such as when a debug memory manager is 
+                    in use or when the HDF5 Library is wrapped for use 
+                    in a managed language like Python or Java.
+                </ul>
+
+            <dd>
+                New configuration property for the <small>CORE</small> driver:
+                <ul>
+                <li><a href="../RM/RM_H5P.html#Property-SetCoreWriteTracking">
+                    <code>H5Pset_core_write_tracking</code></a>
+                    <br>
+                    <a href="../RM/RM_H5P.html#Property-GetCoreWriteTracking">
+                    <code>H5Pget_core_write_tracking</code></a>
+                    <br>
+                    With this property, the <small>CORE</small> driver,
+                    <a href="../RM/RM_H5P.html#Property-SetFaplCore"><code>H5Pset_fapl_core</code></a>,
+                    can be configured to track dirty regions in the file and 
+                    write out only the changed regions on flush or close 
+                    operations. 
+                    Additionally, a <i>page aggregation size</i> 
+                    can be set that will aggregate small writes into 
+                    larger writes. For example, 
+                    setting a 1 mebibyte (1 MiB) page aggregation size 
+                    will logically partition the the in-memory file 
+                    into 1 MiB pages that will be written out 
+                    in their entirety if even a single byte is dirtied.
+                    
+                </ul>
+                </dd>
+
+            <p>
+            <dt>The following C functions have been modified:
+                </dt>
+                <ul>
+                <li><a href="../RM/RM_H5R.html#Reference-GetName">
+                    <code>H5Rget_name</code></a>
+                    <br />
+                    If the <code>name</code> parameter is passed as
+                    <code>NULL</code>, then the <code>size</code>
+                    parameter is ignored and the function returns the size 
+                    of the buffer required to read the name
+                    (not including the NULL terminator).
+                    <br>
+                <li><a href="../RM/RM_H5Z.html#Compression-FilterAvail">
+                    <code>H5Zfilter_avail</code></a> 
+                    <br>
+                    This function has been updated to correctly identify
+                    <a href="../Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">dynamically 
+                    loaded filters</a>.
+                    If a filter is not found among registered filters,
+                    the function now checks for dynamically loaded filters.
+                </ul>
+
+            <p>
+            <dt><strong>In the C++ Interface</strong>
+
+            <dt>The following new features have been added:
+
+                <dd>Wrappers to the class <code>H5Object</code> to get 
+                    an object’s name:
+<pre>
+    ssize_t getObjName(char *obj_name, size_t buf_size = 0)
+    ssize_t getObjName(H5std_string& obj_name, size_t len = 0)
+    H5std_string getObjName()
+</pre>
+                </dd>
+                <dd>Wrappers to the class <code>H5CommonFG</code> 
+                    to get a child object’s type from a group or file:
+<pre>
+    H5O_type_t childObjType(const H5std_string& objname)
+    H5O_type_t childObjType(const char* objname)
+    H5O_type_t childObjType(hsize_t index,
+        H5_index_t index_type=H5_INDEX_NAME,
+        H5_iter_order_t order=H5_ITER_INC, const char* objname=".")
+</pre>
+                </dd>
+                <dd>Wrappers to the class <code>DSetMemXferPropList</code>
+                    for setting or getting a transform property list:
+<pre>
+    DSetMemXferPropList(const char* expression);
+    void setDataTransform(const char* expression)
+    void setDataTransform(const H5std_string& expression)
+    ssize_t getDataTransform(char* exp, size_t buf_size=0)
+    H5std_string getDataTransform()
+</pre>
+                </dd>
+                <dd>Wrapper to <code>CompType</code> for setting the 
+                    size of a compound datatype:
+<pre>
+    void setSize(size_t size)
+</pre>
+                </dd>
+                <dd>Overloaded functions to provide prototypes that 
+                    declare constant arguments <code>const</code>:  
+<pre>
+    DataSet::fillMemBuf
+    DataSet::getVlenBufSize
+    DataSpace::extentCopy
+    DataType::commit
+    FileAccPropList::setSplit
+    H5File::getVFDHandle
+</pre>
+                </dd>
+                <dd>Additional overload to the class <code>H5Location</code>
+                    to get a comment as a <code>char*</code>:
+<pre>
+    ssize_t getComment(const char* name, size_t buf_size, char* comment) 
+</pre>
+                </dd>
+                <dd>Additional overloads to the 
+                    class <code>Attribute</code>
+                    to get an attribute’s name for convenience:
+<pre>
+    ssize_t getName(char* attr_name, size_t buf_size=0)
+    ssize_t getName(H5std_string& attr_name, size_t buf_size=0)
+</pre>
+                </dd>
+
+
+            <p>
+            <dt><strong>In the Fortran Interface</strong>
+
+            <dt>The following new Fortran subroutines have been added:
+<!--
+            <dd>Fortran90 subroutines: 
+                <table width="100%" border="0">
+                <tr><td align="left" valign="top" width="50%">
+                <ul>
+                    <li><code>__</code> 
+                </ul>
+                </td><td align="left" valign="top" width="50%">
+                <ul>
+                    <li><code>__</code> 
+                </ul>
+                </td></tr>
+                <td align="left" valign="top" colspan="2">
+                </td></tr>
+                </table>
+                </dd>
+                 
+-->
+
+            <dd>Fortran2003 subroutines: 
+                <table width="100%" border="0">
+                <tr><td align="left" valign="top" width="50%">
+                    <code>h5pset_file_image_f</code> 
+                    <br>
+                    <code>h5pget_file_image_f</code>
+                </td><td align="left" valign="top" width="50%">
+                     
+                </td></tr>
+                <tr><td colspan="2">
+                    <code>h5fget_file_image_f</code>
+                    <i>
+                    (Added in Release 1.8.11, but not documented at that time.)
+                    </i>
+                </table>
+                </dd>
+
+            <p />
+            <dt>The following Fortran subroutine has been changed:
+                <ul>
+                    <li><code>h5pset_chunk_cache_f</code> 
+                        <br>
+                        The values of the constants
+                        <code>H5D_CHUNK_CACHE_NSLOTS_DFLT_F</code> and 
+                        <code>H5D_CHUNK_CACHE_NBYTES_DFLT_F</code> 
+                        have been changed to
+                        <code>INTEGER(KIND=size_t)</code>.
+                </ul>
+
+        </dl>    
+        </dir>
+
+
+    <h3>Other New Features</h3>
+        <dir>
+        <dl>
+            <dt>Parallel I/O support:</dt>
+            <dd>Parallel I/O support has been enhanced to allow collective I/O 
+                on point selections.
+            <p />
+            <dt>Thread safety (Windows only)</dt>
+            <dd>The thread-safe HDF5 library no longer leaks thread-local 
+                storage resources on Windows with Win32 threads. 
+                This cleanup can only be performed when the library 
+                is built as a shared library, so a 
+                thread-safe HDF5 static library with Win32 threads 
+                is no longer supported.  
+                <p />
+                This change affects only Windows environments.
+                <p />
+                Also see “<a href="#BuildConfig_1.8.13">Build and 
+                Configuration</a>” below.
+            
+        </dir>
+
+
+<!--
+    <h3>New Command-line Tool Options and Option Parameters</h3>
+        <dir>
+        <dl>    
+            <dt><a href="../RM/Tools.html#Tools-Dump">
+                <code>h5dump</code></a>
+            <dd><code>h5dump</code> has a new option for identifying 
+                objects by a full or partial path:
+                <br>
+                <code>   -N<i>P</i></code>
+                <br>
+                <code>   --any-path=<i>P</i></code>
+                <br> 
+
+            <dd>The <code>h5dump</code> attributes-only option, 
+                <code>-A</code> or <code>--only-attr</code>,
+                now accepts an optional parameter value
+                of <code>0</code> (zero):
+                <br>
+                <code>   -A 0</code>
+                <br>
+                <code>   --only-attr=0</code>
+                <br>
+                Specifying this value has the effect of reversing 
+                the role of the option to display everything
+                <i>except</i> attributes.
+                <br> 
+
+            <dt><a href="../RM/Tools.html#Tools-Repack">
+                <code>h5repack</code></a>
+            <dd>The <code>h5repack</code> option 
+                <code>-f</code>, <code>--filter</code> 
+                has a new parameter, <code>UD</code>, 
+                to enable the use of user-defined filters:
+                <br>
+                <code>   -f UD=<i><filter_parameters></i></code>
+                <br>
+                <code>   --filter=UD=<i><filter_parameters></i></code>
+                <br> 
+
+            <dt><a href="../RM/Tools.html#Tools-Stat">
+                <code>h5stat</code></a>
+            <dd><code>h5stat</code> has three new options for setting 
+                print thresholds:
+                <br>
+                <code>   </code>For attributes:
+                <br>
+                <code>      -a<i>N</i></code>
+                <br>
+                <code>      --attribute=<i>N</i></code>
+                <br> 
+
+                <br>
+                <code>   </code>For links in a group:
+                <br>
+                <code>      -l<i>N</i></code>
+                <br>
+                <code>      --links=<i>N</i></code>
+                <br> 
+
+                <br>
+                <code>   </code>For dimension sizes:
+                <br>
+                <code>      -m<i>N</i></code>
+                <br>
+                <code>      --dims=<i>N</i></code>
+
+        </dl>    
+        </dir>
+-->
+
+
+    <h3>Command-line Tools with Changed Behavior</h3>
+        <dir>
+        <dl>    
+            <dt><a href="../RM/Tools.html#Tools-Repack">
+                <code>h5repack</code></a>
+            <dd><code>h5repack</code> has been updated to correctly handle
+                <a href="../Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">dynamically 
+                loaded filters</a>.
+
+        </dl>    
+        </dir>
+
+
+
+
+    <a name="BuildConfig_1.8.13">
+    <h3>Build and Configuration</h3>
+    </a>
+        <dir>
+        <dl>    
+            <dt>Thread safety</dt>
+            <dd>When configuring a thread-safe HDF5 Library with 
+                <code>--enable-threadsafe</code>, 
+                it is no longer necessary to specify <code>--with-pthreads</code> 
+                if the Pthreads library is in a standard location. 
+                </dd>
+
+<!--
+            <dt>CMake and Autotools configuration
+            <dd>A new configuration option can be used to change the default 
+                <a href="../Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">plugin</a> path:
+                <table>
+                <tr><td><code>   </code></td>
+                    <td>Autotools <code>configure</code> option</td>
+                    <td>    </td>
+                    <td><code>--with-default-plugindir=location</code></td>
+                    </tr>
+                <tr><td> </td>
+                    <td><code>cmake</code> option</td>
+                    <td>    </td>
+                    <td><code>-DH5_DEFAULT_PLUGINDIR:PATH=location</code></td>
+                    </tr>
+                </table>
+                <p />
+
+            <dt>CMake configuration
+            <dd>CMake builds of HDF5 now create 
+                <code>*.so.{lt_version}</code> 
+                files with the same version as <code>configure</code>.
+                <p />
+
+            <dt>Autotools <code>configure</code> flag 
+            <dd>The <code>configure</code> flag 
+                <code>FFLAGS</code> has been renamed to <code>FCFLAGS</code>.
+                
+-->
+        </dl>    
+        </dir>
+
+
+<!--
+    <h3>Compile Scripts with Changed Behavior</h3>
+        <dir>
+        <dl>    
+            <dt><a href="../RM/Tools.html#Tools-H5CC">
+                <code>h5cc</code> and <code>h5pcc</code></a>
+            <dt><a href="../RM/Tools.html#Tools-H5C++">
+                <code>h5c++</code></a>
+            <dt><a href="../RM/Tools.html#Tools-H5FC">
+                <code>h5fc</code> and <code>h5pfc</code></a>
+
+            <dd>These compile scripts have been modified 
+                to change the default behavior
+                to link to shared libraries in environments where
+                HDF5 has been configured with <code>--disable-static</code>. 
+        </dl>    
+        </dir>
+-->
+
+
+<!--
+    <h3>Deprecated Functions</h3>
+        <dir>
+
+        <dl>    
+            <dt>The following C function has been deprecated:
+                </dt>
+            <dd>
+                <li><a href="../RM/RM_H5P.html#Property-property">
+                    <code>H5Pproperty</code></a> 
+                </dd>
+                    <p>
+                    This function may be removed from the library
+                    in a future release.
+        </dl>    
+        </dir>
+-->
+
+
+    <h3>Removed Functions and Wrappers</h3>
+        <dir>
+        <dl>    
+            <dt>The <small>MPI-POSIX</small> driver has been removed.
+                The following C functions and
+                the corresponding Fortran subroutines and C++ wrappers
+                therefore are no longer included in the HDF5 distribution:
+                </dt>
+            <dd>
+                <ul>
+                <li><code>H5Pset_fapl_mpiposix</code>
+                <li><code>H5Pget_fapl_mpiposix</code>
+                </ul>
+                </dd>
+                Applications performing parallel I/O should use the 
+                <small>MPI-IO</small> driver,  
+                <a href="../RM/RM_H5P.html#Property-SetFaplMpio">
+                <code>H5Pset_fapl_mpio</code></a>.
+        </dl>    
+        </dir>
+
+</dir>
+
+
+
 <a name="1812">
-<h2>Release 1.8.12 of November 2013 (current release) versus Release 1.8.11</h2>
+<h2>Release 1.8.12 of November 2013 versus Release 1.8.11</h2>
 </a>
 <dir>
 
@@ -10579,7 +11065,7 @@ V1.4.0
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
@@ -10593,7 +11079,7 @@ V1.4.0
 </address>
 <!-- #EndLibraryItem --><!-- Created: Spring 1999 -->
 <!-- hhmts start -->
-Last modified: 14 November 2013
+Last modified: 12 May 2014
 <!-- hhmts end -->
 
 </body>
diff --git a/html/ADGuide/CompatFormat180.html b/html/ADGuide/CompatFormat180.html
index 07bfd77..316b568 100644
--- a/html/ADGuide/CompatFormat180.html
+++ b/html/ADGuide/CompatFormat180.html
@@ -1073,7 +1073,7 @@ to create no compatibility concerns</a>.”
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ADGuide/ImageSpec.html b/html/ADGuide/ImageSpec.html
index b74cf89..4d8e4ed 100755
--- a/html/ADGuide/ImageSpec.html
+++ b/html/ADGuide/ImageSpec.html
@@ -1275,7 +1275,7 @@ it may or may not be correct for a given application.</p>
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Advanced.html b/html/Advanced.html
index 4e24da0..96c612c 100644
--- a/html/Advanced.html
+++ b/html/Advanced.html
@@ -30,18 +30,18 @@
 <!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" -->
 <hr>
 <center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-    <a href="index.html">HDF5 documents and links</a> <br>
-    <a href="H5.intro.html">Introduction to HDF5</a> <br>
+<table border="0" width="98%">
+<tr><td valign="top" align="left">
+    <a href="index.html">HDF5 documents and links</a> <br />
+    <a href="H5.intro.html">Introduction to HDF5</a> <br />
     <!--
-    <a href="Glossary.html">Glossary</a><br>
+    <a href="Glossary.html">Glossary</a><br />
     -->
 </td>
-<td valign=top align=right>
-    <a href="UG/index.html">HDF5 User's Guide</a> <br>
-    <a href="RM/RM_H5Front.html">HDF5 Reference Manual</a> <br>
-    <a href="ADGuide.html">HDF5 Application Developer's Guide</a> <br>
+<td valign="top" align="right">
+    <a href="UG/index.html">HDF5 User's Guide</a> <br />
+    <a href="RM/RM_H5Front.html">HDF5 Reference Manual</a> <br />
+    <a href="ADGuide.html">HDF5 Application Developer's Guide</a> <br />
 </td></tr>
 </table>
 </center>
@@ -52,28 +52,28 @@
 
 
 <div align="center">
-<table border=0 width=80%>
+<table border="0" width="80%">
 
 
       <!--                              -->
       <!-- OF INTEREST TO GENERAL USERS -->
       <!--                              -->
 
-      <tr><td colspan=3>
+      <tr><td colspan="3">
           <hr color="green" size="3"/>
           The following topics are broadly applicable in HDF5 applications.
           <hr color="green" size="1"/>
           </td></tr>
 
-      <tr><td valign=top><a href="Advanced/Chunking/index.html">Chunking in HDF5</a>
+      <tr><td valign="top"><a href="Advanced/Chunking/index.html">Chunking in HDF5</a>
         </td><td>   
-        </td><td valign=top>Provides background and guidance to assist in
+        </td><td valign="top">Provides background and guidance to assist in
           structuring and tuning the use of chunking.
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
-      <tr><td valign=top>
+      <tr><td valign="top">
         <a href="Advanced/DirectChunkWrite/UsingDirectChunkWrite.pdf">
         Using the Direct</a>
           <br />   
@@ -83,15 +83,15 @@
         <a href="Advanced/DirectChunkWrite/UsingDirectChunkWrite.pdf">
         Function</a>
         </td><td>   
-        </td><td valign=top>
+        </td><td valign="top">
         Describes another way that chunks can be written to datasets.
         <br />
         <i>(PDF only)</i>
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
-      <tr><td valign=top>
+      <tr><td valign="top">
         <a href="Advanced/CommittedDatatypeCopying/CopyingCommittedDatatypesWithH5Ocopy.pdf">
         Copying Committed</a>
           <br />   
@@ -101,7 +101,7 @@
         <a href="Advanced/CommittedDatatypeCopying/CopyingCommittedDatatypesWithH5Ocopy.pdf">
         H5Ocopy</a>
         </td><td>   
-        </td><td valign=top>
+        </td><td valign="top">
         Describes how to copy to another file a dataset that uses a committed 
         datatype or an object with an attribute that uses a committed datatype 
         so that the committed datatype in the destination file can be used by 
@@ -110,91 +110,91 @@
         <i>(PDF only)</i>
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
-      <tr><td valign=top><a href="Advanced/UsingIdentifiers/index.html">Using
+      <tr><td valign="top"><a href="Advanced/UsingIdentifiers/index.html">Using
         Identifiers</a>
         </td><td>   
-        </td><td valign=top>Describes how HDF5 identifiers behave and 
+        </td><td valign="top">Describes how HDF5 identifiers behave and 
           how they should be treated. 
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 <!--
 
-      <tr><td valign=top colspan="3">
+      <tr><td valign="top" colspan="3">
           <a href="Advanced/UsingUnicode/index.html">Using
           UTF-8 Encoding in HDF5 Applications</a>
         </td></tr>
         <tr>
         <td>   </td>
-        <td valign=top colspan="2">Describes the use of UTF-8 Unicode character
+        <td valign="top" colspan="2">Describes the use of UTF-8 Unicode character
           encodings in HDF5 applications.
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 -->
 
-      <tr><td valign=top><a href="Advanced/UsingUnicode/index.html">Using
+      <tr><td valign="top"><a href="Advanced/UsingUnicode/index.html">Using
           UTF-8 </a>
           <br />   
           <a href="Advanced/UsingUnicode/index.html">Encoding in</a>
           <br />   
           <a href="Advanced/UsingUnicode/index.html">HDF5 Applications</a>
         </td><td>   
-        </td><td valign=top>Describes the use of UTF-8 Unicode character
+        </td><td valign="top">Describes the use of UTF-8 Unicode character
           encodings in HDF5 applications.
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
-      <tr><td valign=top><a href="Advanced/HDF5_Metadata/index.html">HDF5 
+      <tr><td valign="top"><a href="Advanced/HDF5_Metadata/index.html">HDF5 
               Metadata</a>
-        </td><td></td><td valign=top>Provides a comprehensive overview of
+        </td><td></td><td valign="top">Provides a comprehensive overview of
           the types of metadata used in HDF5.
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
-      <tr><td valign=top>
+      <tr><td valign="top">
       <a href="Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">
       HDF5 Dynamically</a>
-          <br>   
+          <br />   
           <a href="Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">
           Loaded Filters</a>
-        </td><td></td><td valign=top>
-          Describes how an HDF5 application can apply a non-native 
-          HDF5 filter during I/O operations at run-time. 
+        </td><td></td><td valign="top">
+          Describes how an HDF5 application can apply a filter that is not 
+          registered with the HDF5 Library.
           <br />
           <i>(PDF only)</i>
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
 
       <!--                      -->
       <!-- MORE ESOTERIC TOPICS -->
       <!--                      -->
 
-      <tr><td valign=top>
+      <tr><td valign="top">
           <a href="Advanced/DataFlow_H5Dread/DataFlow_H5Dread.pdf">HDF5 
           Data Flow</a>
-          <br>   <a href="Advanced/DataFlow_H5Dread/DataFlow_H5Dread.pdf">Pipeline for H5Dread</a>
+          <br />   <a href="Advanced/DataFlow_H5Dread/DataFlow_H5Dread.pdf">Pipeline for H5Dread</a>
         </td><td>   
-        </td><td valign=top>Describes data flow when reading raw data 
+        </td><td valign="top">Describes data flow when reading raw data 
           from an HDF5 dataset.
-          <br>
+          <br />
           <i>(PDF only)</i>
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
 
       <!--                      -->
       <!-- MOST ESOTERIC TOPICS -->
       <!--                      -->
 
-      <tr><td colspan=3>
+      <tr><td colspan="3">
           <hr color="green" size="3"/>
           The following topics are of interest in certain limited 
           situations such as when space utilization or performance must 
@@ -202,23 +202,23 @@
           <hr color="green" size="1"/>
           </td></tr>
 
-      <tr><td valign=top><a href="Advanced/MetadataCache/index.html">Metadata 
+      <tr><td valign="top"><a href="Advanced/MetadataCache/index.html">Metadata 
               Caching</a>
-          <br>   
+          <br />   
           <a href="Advanced/MetadataCache/index.html">in HDF5</a>
-        </td><td></td><td valign=top>Provides detailed information for
+        </td><td></td><td valign="top">Provides detailed information for
           managing and tuning HDF5 metadata caching.
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 
-      <tr><td valign=top>
+      <tr><td valign="top">
       <a href="Advanced/FileImageOperations/HDF5FileImageOperations.pdf">
       HDF5 File Image </a>
-          <br>   
+          <br />   
           <a href="Advanced/FileImageOperations/HDF5FileImageOperations.pdf">
           Operations</a>
-        </td><td></td><td valign=top>
+        </td><td></td><td valign="top">
           Describes how to work with HDF5 files in memory. Disk I/O is not 
           required when file images are opened, created, read from, or 
           written to. 
@@ -226,28 +226,62 @@
           <i>(PDF only)</i>
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
+
+      <tr><td valign="top">
+      <a href="Advanced/ModifiedRegionWrites/ModifiedRegionWrites.pdf">
+      Modified Region </a>
+        <br />   
+        <a href="Advanced/ModifiedRegionWrites/ModifiedRegionWrites.pdf">
+        Writes</a>
+        </td><td></td><td valign="top">
+        Describes how to set write operations for in-memory files so that 
+        only modified regions are written to storage. Available when 
+        the Core (Memory) VFD is used. 
+        <br />
+        <i>(PDF only)</i>
+        </td></tr>
+
+      <tr><td colspan="3"> </td></tr>
+
+      <tr><td valign="top">
+      <a href="Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">
+      Freeing Memory </a>
+          <br />   
+          <a href="Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">
+          Allocated by the </a>
+          <br />   
+          <a href="Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">
+          HDF5 Library</a>
+        </td><td></td><td valign="top">
+          Describes how inconsistent memory management can cause heap 
+          corruption or resource leaks and possible solutions.
+          <br />
+          <i>(PDF only)</i>
+        </td></tr>
+
+      <tr><td colspan="3"> </td></tr>
 
-      <tr><td valign=top>
+      <tr><td valign="top">
       <a href="Advanced/PHDF5FileConsistencySemantics/PHDF5FileConsistencySemantics.pdf">
       Enabling a Strict</a>
-          <br>   
+          <br />   
           <a href="Advanced/PHDF5FileConsistencySemantics/PHDF5FileConsistencySemantics.pdf">
           Consistency </a>
-          <br>   
+          <br />   
           <a href="Advanced/PHDF5FileConsistencySemantics/PHDF5FileConsistencySemantics.pdf">
           Semantics Model</a>
-          <br>   
+          <br />   
           <a href="Advanced/PHDF5FileConsistencySemantics/PHDF5FileConsistencySemantics.pdf">
           in Parallel HDF5</a>
-        </td><td></td><td valign=top>
+        </td><td></td><td valign="top">
           Describes how to improve file access consistency semantics with the 
           Parallel HDF5 Library. 
           <br />
           <i>(PDF only)</i>
         </td></tr>
 
-      <tr><td colspan=3> 
+      <tr><td colspan="3"> 
           <hr color="green" size="3"/>
         </td></tr>
 
@@ -255,13 +289,13 @@
 
 
 <!-- TEMPLATE
-      <tr><td valign=top><a href="Advanced/SUBDIR">TitleLine1</a>
-          <br>   
+      <tr><td valign="top"><a href="Advanced/SUBDIR">TitleLine1</a>
+          <br />   
           <a href="Advanced/SUBDIR">TitleLine2</a>
-        </td><td></td><td valign=top>DESCRIPTION
+        </td><td></td><td valign="top">DESCRIPTION
         </td></tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
 -->
 
 
@@ -275,18 +309,18 @@
 <!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" -->
 <hr>
 <center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-    <a href="index.html">HDF5 documents and links</a> <br>
-    <a href="H5.intro.html">Introduction to HDF5</a> <br>
+<table border="0" width="98%">
+<tr><td valign="top" align="left">
+    <a href="index.html">HDF5 documents and links</a> <br />
+    <a href="H5.intro.html">Introduction to HDF5</a> <br />
     <!--
-    <a href="Glossary.html">Glossary</a><br>
+    <a href="Glossary.html">Glossary</a><br />
     -->
 </td>
-<td valign=top align=right>
-    <a href="UG/index.html">HDF5 User's Guide</a> <br>
-    <a href="RM/RM_H5Front.html">HDF5 Reference Manual</a> <br>
-    <a href="ADGuide.html">HDF5 Application Developer's Guide</a> <br>
+<td valign="top" align="right">
+    <a href="UG/index.html">HDF5 User's Guide</a> <br />
+    <a href="RM/RM_H5Front.html">HDF5 Reference Manual</a> <br />
+    <a href="ADGuide.html">HDF5 Application Developer's Guide</a> <br />
 </td></tr>
 </table>
 </center>
@@ -301,7 +335,7 @@
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
@@ -315,7 +349,7 @@
 </address>
 <!-- #EndLibraryItem -->
  
-Last modified:  12 November 2013
+Last modified:  23 April 2014
 
 
 </body>
diff --git a/html/Advanced/Chunking/index.html b/html/Advanced/Chunking/index.html
index e54aee6..d7420ef 100644
--- a/html/Advanced/Chunking/index.html
+++ b/html/Advanced/Chunking/index.html
@@ -544,7 +544,7 @@ Example 2: Writing part of a column to a chunked dataset
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Advanced/DirectChunkWrite/index.html b/html/Advanced/DirectChunkWrite/index.html
index f6784e7..330a856 100644
--- a/html/Advanced/DirectChunkWrite/index.html
+++ b/html/Advanced/DirectChunkWrite/index.html
@@ -87,7 +87,7 @@ The following documents describe the use of this feature:
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Advanced/HDF5_Metadata/index.html b/html/Advanced/HDF5_Metadata/index.html
index e51dcdb..8d68d59 100644
--- a/html/Advanced/HDF5_Metadata/index.html
+++ b/html/Advanced/HDF5_Metadata/index.html
@@ -581,7 +581,7 @@ Return to “<a href="../../Advanced.html">Advanced Topics</a>.”</p>
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Advanced/MetadataCache/index.html b/html/Advanced/MetadataCache/index.html
index 5ce1b96..1ac11d2 100755
--- a/html/Advanced/MetadataCache/index.html
+++ b/html/Advanced/MetadataCache/index.html
@@ -1250,7 +1250,7 @@
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Advanced/ModifiedRegionWrites/ModifiedRegionWrites.docx b/html/Advanced/ModifiedRegionWrites/ModifiedRegionWrites.docx
new file mode 100644
index 0000000..3433b57
Binary files /dev/null and b/html/Advanced/ModifiedRegionWrites/ModifiedRegionWrites.docx differ
diff --git a/html/Advanced/UsingIdentifiers/index.html b/html/Advanced/UsingIdentifiers/index.html
index cf83ad7..6b45a9e 100644
--- a/html/Advanced/UsingIdentifiers/index.html
+++ b/html/Advanced/UsingIdentifiers/index.html
@@ -146,7 +146,7 @@ see the <a href="../../RM/RM_H5Front.html">
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Advanced/UsingUnicode/index.html b/html/Advanced/UsingUnicode/index.html
index 7c146e5..cf2cf19 100644
--- a/html/Advanced/UsingUnicode/index.html
+++ b/html/Advanced/UsingUnicode/index.html
@@ -44,7 +44,7 @@ Return to “<a href="../../Advanced.html">Advanced Topics</a>.”</p>
     but what if that plain text file is in French, German, Chinese,
     or any of several hundred other languages?
     This document introduces the use of UTF-8 encoding 
-    (see <a href="#Note1">note 1</a>), 
+    (see <a href="#UTF8_Note1">note 1</a>), 
     enabling the use of a much more extensive and flexible character set 
     that can faithfully represent any of those languages.
 
@@ -299,7 +299,7 @@ Return to “<a href="../../Advanced.html">Advanced Topics</a>.”</p>
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Copyright.html b/html/Copyright.html
index 5edc27a..5bf71ad 100644
--- a/html/Copyright.html
+++ b/html/Copyright.html
@@ -147,7 +147,7 @@ for further details.
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align="center" height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Glossary.html b/html/Glossary.html
index 5cdc9d5..9c13834 100644
--- a/html/Glossary.html
+++ b/html/Glossary.html
@@ -556,7 +556,7 @@ HDF5 Glossary and Terms
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/H5.format.html b/html/H5.format.html
index cfc1313..5d9436d 100644
--- a/html/H5.format.html
+++ b/html/H5.format.html
@@ -9804,7 +9804,7 @@ TABLE.list TD { border:none; }
     <div align=center>
       <table class=format>
         <caption>
-          Array Property Description for Datatype Versions 1 & 2
+          Array Property Description for Datatype Version 2
         </caption>
 
         <tr>
@@ -13702,7 +13702,7 @@ value with all bits set, i.e. <code>0xffff...ff</code>.
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/H5.intro.html b/html/H5.intro.html
index 838572a..29149a2 100644
--- a/html/H5.intro.html
+++ b/html/H5.intro.html
@@ -3147,7 +3147,7 @@ For the example codes, see
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/Intro/IntroExamples.html b/html/Intro/IntroExamples.html
index 54c3df9..bb627a4 100644
--- a/html/Intro/IntroExamples.html
+++ b/html/Intro/IntroExamples.html
@@ -2114,7 +2114,7 @@ main(void)
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/APICompatMacros.html b/html/RM/APICompatMacros.html
index dc0304a..2aeb582 100644
--- a/html/RM/APICompatMacros.html
+++ b/html/RM/APICompatMacros.html
@@ -821,7 +821,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/CollectiveCalls.html b/html/RM/CollectiveCalls.html
index 8941fc9..6442f7f 100644
--- a/html/RM/CollectiveCalls.html
+++ b/html/RM/CollectiveCalls.html
@@ -1977,7 +1977,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/H5/H5free_memory.htm b/html/RM/H5/H5free_memory.htm
new file mode 100644
index 0000000..946aa23
--- /dev/null
+++ b/html/RM/H5/H5free_memory.htm
@@ -0,0 +1,128 @@
+
+
+
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * Copyright by The HDF Group.                                               *
+  * 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://www.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.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+
+
+
+<!--__ ***********************************************************  -->
+<!--__ Do not alter the next line; it is used by the PDF generator. -->
+<!--__ ***********************************************************  -->
+<!-- NEW PAGE -->
+
+
+<!--__ *** HEADER RIGHT ******************************************  -->
+<!--__ Update H5function_name; leave remainder of line unchanged    -->
+<!--__ as it is also used by the PDF generator.                     -->
+<!--__ ***********************************************************  -->
+<!-- HEADER RIGHT "H5free_memory" -->
+
+<hr />
+<dl>
+
+<dt><div align="right"><font color="999999" size="-1"><i>
+    Last modified: 23 April 2014
+    </i></font></div></dt>
+    <br />
+
+<dt><strong>Name:</strong> 
+    <a name="Library-FreeMemory">H5free_memory</a></dt>
+    <br />
+
+<dt><strong>Signature:</strong></dt>
+    <dd><code><em>herr_t</em> H5free_memory(<em>void</em> *buf)</code></dd>
+    <br />
+
+<dt><strong>Purpose:</strong></dt>
+    <dd>Frees memory allocated by the HDF5 Library.</dd>
+    <br />
+
+<dt><strong>Description:</strong></dt>
+    <dd>In order to avoid heap corruption, allocated memory should be 
+    freed using the same library that initially allocated it. In most 
+    cases, the HDF5 API uses resources that are allocated and freed 
+    entirely by either the user or the library. In some cases, however, 
+    HDF5 API calls will allocate memory that the user must free 
+    (for example, <code>H5Tget_member_name</code>). 
+    <code>H5free_memory</code> allows the user to safely free this 
+    memory.</dd>
+    <br />
+
+<dt><strong>Notes:</strong></dt>
+    <dd>It is especially important to use this function to free memory 
+    allocated by the library on Windows. The C standard library is 
+    implemented in dynamic link libraries (DLLs) known as the C run-time 
+    (CRT). Each version of Visual Studio comes with two CRT DLLs 
+    (debug and release) and allocating and freeing across DLL boundaries 
+    can cause resource leaks and subtle bugs due to heap corruption.
+    
+    <p>Only use this function to free memory allocated by the HDF5 Library. 
+    It will generally not be safe to use this function to free memory 
+    allocated by any other means.</p>
+    
+    <p>Even when using this function, it is still best to ensure that all 
+    components of a C application are built with the same version of 
+    Visual Studio and build (debug or release) and thus linked against 
+    the same CRT.</p></dd>
+    <br />
+
+<dt><strong>Parameters:</strong></dt>
+    <dd>
+    <table width="100%">
+    <tr valign="bottom">
+    <td width="10%"><code><em>void</em> *mem</code></td>
+    <td width="90%">IN: Buffer to be freed. Can be NULL.</td></tr>
+    </table>
+    </dd>
+    <br />
+
+<dt><strong>Returns:</strong></dt>
+    <dd>Returns a non-negative value if successful. Otherwise returns 
+    a negative value.</dd>
+    <br />
+
+<dt><strong>Fortran Interface:</strong></dt>
+    <dd>None</dd>
+    <br />
+
+<dt><strong>See Also:</strong></dt>
+    <dd><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">
+    <em>Freeing Memory Allocated by the HDF5 Library</em></a>
+    in the <a href="http://www.hdfgroup.org/HDF5/doc/Advanced.html">
+    “Advanced Topics”</a> section.
+    </dd>
+    <br />
+
+<dt><strong>History:</strong></dt>
+<dd><table width="100%">
+    <tr>
+    <td valign="top" align="left" width="10%">
+    <strong>Release</strong></td>
+    <td valign="top" align="left" width="90%">
+    <strong>Change</strong></td></tr>
+    <tr>
+    <td valign="top">1.8.13</td>
+    <td valign="top">
+    C function introduced with this release. </td></tr>
+    </table></dd>
+</dl>
+<br />
+<br />
+<br />
+
+
+
diff --git a/html/RM/H5F/H5Fget_file_image.htm b/html/RM/H5F/H5Fget_file_image.htm
index 76cd214..9203385 100644
--- a/html/RM/H5F/H5Fget_file_image.htm
+++ b/html/RM/H5F/H5Fget_file_image.htm
@@ -23,7 +23,7 @@
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 17 April 2012
+      Last modified: 2 May 2014
       </i></font></div>
 
   <dt><strong>Name:</strong> <a name="File-GetFileImage">H5Fget_file_image</a>
@@ -161,18 +161,11 @@ Complete usage example line(s) for the second example here
   <p>
 -->
 
+  <p>
+  <dt><strong>Fortran2003 Interface:</strong> h5fget_file_image_f
+    <dd>
 
-<!--__ *** FORTRAN INTERFACE  ************************************  -->
-<!--__ Leave this comment block in place if there is not yet a      -->
-<!--__ Fortran interface for this function.                         -->
-<!--__                                                              -->
-<!--__ When the Fortran interface is complete, replace this         -->
-<!--__ section with the Fortran subroutine description.             -->
-<!--__                                                              -->
-<!--__ See the file h5fortran_f_insert.htm for a template and       -->
-<!--__ instructions.                                                -->
-<!--__ ***********************************************************  -->
-
+        <?php include("H5F/h5fget_file_image_f_F03.htm"); ?>
 
   <p>
   <dt><strong>See Also:</strong>
@@ -231,6 +224,10 @@ Complete usage example line(s) for the second example here
             <strong>Change</strong></td>
         </tr>
         <tr>
+          <td valign="top">1.8.13</td>
+          <td valign="top">
+              Fortran subroutine added in this release.</td></tr>
+        <tr>
           <td valign="top">1.8.9</td>
           <td valign="top">
             C function introduced in this release.</td>
diff --git a/html/RM/H5F/h5fget_file_image_f_F03.htm b/html/RM/H5F/h5fget_file_image_f_F03.htm
new file mode 100644
index 0000000..b64a8a0
--- /dev/null
+++ b/html/RM/H5F/h5fget_file_image_f_F03.htm
@@ -0,0 +1,26 @@
+<a name="h5fget_file_image_f_F03"></a>
+
+<p class="item_name"><strong>Signature</strong>:</p>
+<pre class="source">  SUBROUTINE h5fget_file_image_f(file_id, buf_ptr, buf_len, hdferr, buf_size)
+    USE, INTRINSIC :: ISO_C_BINDING
+    IMPLICIT NONE
+    INTEGER(HID_T) , INTENT(IN)              :: file_id
+    TYPE(C_PTR)    , INTENT(INOUT)           :: buf_ptr
+    INTEGER(SIZE_T), INTENT(IN)              :: buf_len
+    INTEGER        , INTENT(OUT)             :: hdferr
+    INTEGER(SIZE_T), INTENT(OUT)  , OPTIONAL :: buf_size
+</pre>
+<p class="item_name"><strong>Inputs:</strong></p>
+<pre>  file_id    - Target file identifier.
+  buf_ptr    - Pointer to the buffer into which the image of the HDF5 file is to be copied.
+  buf_len    - Size of the supplied buffer.
+</pre>
+<p class="item_name"><strong>Outputs:</strong></p>
+<pre>  hdferr     - error code:
+                 0 on success and -1 on failure
+</pre>
+<p class="item_name"><strong>Optional parameters:</strong></p>
+<pre>  buf_size   - Returns the size in bytes of the buffer required to store the file image,
+               no data will be copied.
+</pre>
+
diff --git a/html/RM/H5P/H5Pcreate.htm b/html/RM/H5P/H5Pcreate.htm
index ec03385..b80ec75 100644
--- a/html/RM/H5P/H5Pcreate.htm
+++ b/html/RM/H5P/H5Pcreate.htm
@@ -42,7 +42,7 @@
     <dd><code>H5Pcreate</code> creates a new property list as an instance of 
         some property list class.  The new property list is initialized
         with default values for the specified class. The classes are as
-        follows; see the <a href="#Function_index">function index</a> at
+        follows; see the <a href="#FunctionIndex">function index</a> at
         the top of this page for a list of functions related to each class:
       <dir>
       <dl>
diff --git a/html/RM/H5P/H5Pget_core_write_tracking.htm b/html/RM/H5P/H5Pget_core_write_tracking.htm
new file mode 100644
index 0000000..0af354e
--- /dev/null
+++ b/html/RM/H5P/H5Pget_core_write_tracking.htm
@@ -0,0 +1,132 @@
+
+
+
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * Copyright by The HDF Group.                                               *
+  * 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://www.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.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+
+
+
+<!--__ ***********************************************************  -->
+<!--__ Do not alter the next line; it is used by the PDF generator. -->
+<!--__ ***********************************************************  -->
+<!-- NEW PAGE -->
+
+
+<!--__ *** HEADER RIGHT ******************************************  -->
+<!--__ Update H5function_name; leave remainder of line unchanged    -->
+<!--__ as it is also used by the PDF generator.                     -->
+<!--__ ***********************************************************  -->
+<!-- HEADER RIGHT "H5Pget_core_write_tracking" -->
+
+<hr />
+<dl>
+
+<dt><div align="right"><font color="999999" size="-1"><i>
+    Last modified: 2 May 2014
+    </i></font></div></dt>
+    <br />
+
+<dt><strong>Name:</strong> 
+    <a name="Property-GetCoreWriteTracking">H5Pget_core_write_tracking</a></dt>
+    <br />
+
+<dt><strong>Signature:</strong></dt>
+    <dd><code><em>herr_t</em> H5Pget_core_write_tracking(<em>hid_t</em> 
+    fapl_id, <em>hbool_t</em> *is_enabled, <em>size_t</em> 
+    *page_size)</code></dd>
+    <br />
+
+<dt><strong>Purpose:</strong></dt>
+    <dd>Gets information about the write tracking feature used by the 
+    Core VFD.</dd>
+    <br />
+
+<dt><strong>Description:</strong></dt>
+    <dd>When a file is created or opened for writing using the Core 
+    virtual file driver (VFD) with the backing store option turned on, 
+    the VFD can be configured to track changes to the file and only 
+    write out the modified bytes. To avoid a large number of small 
+    writes, the changes can be aggregated into pages of a user-specified 
+    size. The Core VFD is also known as the Memory VFD. The driver 
+    identifier is <code>H5FD_CORE</code>.</dd>
+    <br />
+
+<dt><strong>Notes:</strong></dt>
+    <dd>This function is only for use with the Core VFD and must be used 
+    after the call to <code>H5Pset_fapl_core</code>. It is an error to 
+    use this function with any other VFD.
+    
+    <p>This function only applies to the backing store write operation 
+    which typically occurs when the file is flushed or closed. This 
+    function has no relationship to the increment parameter passed to 
+    <code>H5Pset_fapl_core</code>.</p>
+    
+    <p>For optimum performance, the <code>page_size</code> parameter 
+    should be a power of two.</p></dd>
+    <br />
+
+<dt><strong>Parameters:</strong></dt>
+    <dd>
+    <table width="100%">
+    <tr valign="bottom">
+    <td width="17%"><code><em>hid_t</em> fapl_id</code></td>
+    <td width="83%">IN: File access property list identifier.</td></tr>
+    <tr valign="bottom">
+    <td><code><em>hbool_t</em> *is_enabled</code></td>
+    <td>OUT: Whether the feature is enabled.</td></tr>
+    <tr valign="bottom">
+    <td><code><em>size_t</em> *page_size</code></td>
+    <td>OUT: Size, in bytes, of write aggregation pages.</td></tr>
+    </table>
+    </dd>
+    <br />
+
+<dt><strong>Returns:</strong></dt>
+    <dd>Returns a non-negative value if successful. 
+    Otherwise returns a negative value.</dd>
+    <br />
+
+<dt><strong>Fortran Interface:</strong></dt>
+<dd>None</dd>
+<br />
+
+<dt><strong>See Also:</strong></dt>
+    <dd>
+    <a href="#Property-SetCoreWriteTracking"><code>
+    H5Pset_core_write_tracking</code></a>
+    </dd>
+    <br />
+
+
+<dt><strong>History:</strong></dt>
+<dd><table width="100%">
+    <tr>
+    <td valign="top" align="left" width="10%">
+    <strong>Release</strong></td>
+    <td valign="top" align="left" width="90%">
+    <strong>Change</strong></td></tr>
+    <tr>
+    <td valign="top">1.8.13</td>
+    <td valign="top">
+    C function introduced with this release. </td></tr>
+    </table></dd>
+</dl>
+<br />
+<br />
+<br />
+
+
+
diff --git a/html/RM/H5P/H5Pget_fapl_mpiposix.htm b/html/RM/H5P/H5Pget_fapl_mpiposix.htm
index c45defa..b421af2 100644
--- a/html/RM/H5P/H5Pget_fapl_mpiposix.htm
+++ b/html/RM/H5P/H5Pget_fapl_mpiposix.htm
@@ -24,7 +24,7 @@
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 3 October 2011
+      Last modified: 2 May 2013
       </i></font></div>
 
   <dt><strong>Name:</strong> <a name="Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>
@@ -40,6 +40,36 @@
     <dd> Returns MPI communicator information.
 
   <p>
+  <dt><strong>Function Removed:</strong>
+    <dd>
+      <table border=2 bordercolor=red width=98%><tr><td valign=top align=left>
+        <font color=red>
+        The C functions 
+        <a href="#Property-SetFaplMpiPosix"><code>H5Pset_fapl_mpiposix</code></a>
+        and <code>H5Pset_fapl_mpiposix</code> 
+        and the corresponding Fortran subroutines
+        have been removed from the HDF5 Library at Release 1.8.13.
+        They remain available in earlier releases, through HDF5 Release 1.8.12.
+        <p>
+        </p>
+        All applications used with HDF5 Release 1.8.13 or later
+        and that use MPI I/O should use the functions 
+        <a href="#Property-SetFaplMpio"><code>H5Pset_fapl_mpio</code></a> and
+        <a href="#Property-GetFaplMpio"><code>H5Pget_fapl_mpio</code></a>
+        or the corresponding Fortran subroutines.
+        <p>
+        </p>
+        While HDF5’s <small>MPI-POSIX</small> driver
+        (<code>H5Pset_fapl_mpiposix</code> and <code>H5Pget_fapl_mpiposix</code>)
+        once provided performance benefits on some systems, 
+        that is no longer the case.
+        HDF5’s <small>MPIO</small> driver
+        (<code>H5Pset_fapl_mpio</code> and <code>H5Pget_fapl_mpio</code>)
+        now provides as good or better performance on all modern systems.
+        </font>
+      </td></tr></table>
+
+  <p>
   <dt><strong>Description:</strong>
     <dd>If the file access property list is set to the <code>H5FD_MPIPOSIX</code> 
         driver, <code>H5Pget_fapl_mpiposix</code> returns 
@@ -97,6 +127,12 @@ END SUBROUTINE h5pget_fapl_mpiposix_f
           <td valign="top" align="left">
             <strong>Change</strong></td></tr>
         <tr>
+          <td valign="top">1.8.13</td>
+          <td valign="top">
+            C function and Fortran subroutine removed
+            from HDF5 at this release.
+          </td></tr>
+        <tr>
           <td valign="top">1.6.1</td>
           <td valign="top">
         	Fortran subroutine introduced.</td></tr>
diff --git a/html/RM/H5P/H5Pget_file_image.htm b/html/RM/H5P/H5Pget_file_image.htm
index 85d9523..d565912 100644
--- a/html/RM/H5P/H5Pget_file_image.htm
+++ b/html/RM/H5P/H5Pget_file_image.htm
@@ -23,7 +23,7 @@
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 2 May 2013
+      Last modified: 5 May 2014
       </i></font></div>
 
   <dt><strong>Name:</strong> <a name="Property-GetFileImage">H5Pget_file_image</a>
@@ -56,7 +56,7 @@
       >HDF5 File Image Operations</a>” before implementing software
       that works with such file images.
       <p>
-      Tthe “See Also” section below provides links to 
+      The “See Also” section below provides links to 
       individual elements of HDF5 file image operations feature set.
 
   <p>
@@ -108,7 +108,8 @@ Silent failure or unintended consequences that might go unnoticed, for example.
         <td><em>void **</em><code>buf_ptr_ptr</code>
             </td><td> </td>
         <td>IN/OUT: On input, 
-                    <code>NULL</code> or a pointer to a <code>void*</code>. 
+                    <code>NULL</code> or a pointer to a pointer to a buffer 
+                    that contains the file image.
                     <p>
                     On successful return, 
                     if <code>buf_ptr_ptr</code> is not <code>NULL</code>, 
@@ -123,7 +124,8 @@ Silent failure or unintended consequences that might go unnoticed, for example.
         <td><em>size_t *</em><code>buf_len_ptr</code>
             </td><td> </td>
         <td>IN/OUT: On input, 
-                    <code>NULL</code> or a pointer to <code>size_t</code>. 
+                    <code>NULL</code> or a pointer to a buffer specifying 
+                    the required size of the buffer to hold the file image.
                     <p>
                     On successful return, 
                     if <code>buf_len_ptr</code> was not passed in 
@@ -170,16 +172,12 @@ Complete usage example line(s) for the second example here
 -->
 
 
-<!--__ *** FORTRAN INTERFACE  ************************************  -->
-<!--__ Leave this comment block in place if there is not yet a      -->
-<!--__ Fortran interface for this function.                         -->
-<!--__                                                              -->
-<!--__ When the Fortran interface is complete, replace this         -->
-<!--__ section with the Fortran subroutine description.             -->
-<!--__                                                              -->
-<!--__ See the file h5fortran_f_insert.htm for a template and       -->
-<!--__ instructions.                                                -->
-<!--__ ***********************************************************  -->
+  <p>
+  <dt><strong>Fortran2003 Interface:</strong> h5pget_file_image_f
+    <dd>
+
+        <?php include("H5P/h5pget_file_image_f_F03.htm"); ?>
+
 
 
   <p>
@@ -239,6 +237,10 @@ Complete usage example line(s) for the second example here
             <strong>Change</strong></td>
         </tr>
         <tr>
+          <td valign="top">1.8.13</td>
+          <td valign="top">
+              Fortran subroutine added in this release.</td></tr>
+        <tr>
           <td valign="top">1.8.9</td>
           <td valign="top">
             C function introduced in this release.</td>
diff --git a/html/RM/H5P/H5Pset_core_write_tracking.htm b/html/RM/H5P/H5Pset_core_write_tracking.htm
new file mode 100644
index 0000000..50ecaf6
--- /dev/null
+++ b/html/RM/H5P/H5Pset_core_write_tracking.htm
@@ -0,0 +1,145 @@
+
+
+
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * Copyright by The HDF Group.                                               *
+  * 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://www.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.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+
+
+
+<!--__ ***********************************************************  -->
+<!--__ Do not alter the next line; it is used by the PDF generator. -->
+<!--__ ***********************************************************  -->
+<!-- NEW PAGE -->
+
+
+<!--__ *** HEADER RIGHT ******************************************  -->
+<!--__ Update H5function_name; leave remainder of line unchanged    -->
+<!--__ as it is also used by the PDF generator.                     -->
+<!--__ ***********************************************************  -->
+<!-- HEADER RIGHT "H5Pset_core_write_tracking" -->
+
+<hr />
+<dl>
+
+<dt><div align="right"><font color="999999" size="-1"><i>
+    Last modified: 2 May 2014
+    </i></font></div></dt>
+    <br />
+
+<dt><strong>Name:</strong> 
+    <a name="Property-SetCoreWriteTracking">H5Pset_core_write_tracking</a></dt>
+    <br />
+
+<dt><strong>Signature:</strong></dt>
+    <dd><code><em>herr_t</em> H5Pset_core_write_tracking(<em>hid_t</em> 
+    fapl_id, <em>hbool_t</em> is_enabled, <em>size_t</em> 
+    page_size)</code></dd>
+    <br />
+
+<dt><strong>Purpose:</strong></dt>
+    <dd>Sets information about the write tracking feature used by the 
+    Core VFD.</dd>
+    <br />
+
+<dt><strong>Description:</strong></dt>
+    <dd>When a file is created or opened for writing using the Core 
+    virtual file driver (VFD) with the backing store option turned on, 
+    the VFD can be configured to track changes to the file and only 
+    write out the modified bytes. To avoid a large number of small 
+    writes, the changes can be aggregated into pages of a user-specified 
+    size. The Core VFD is also known as the Memory VFD. The driver 
+    identifier is <code>H5FD_CORE</code>.
+    
+    <p>Setting the <code>page_size</code> parameter to zero will turn 
+    off tracking and cause the entire file to be written out to storage 
+    when closed.</p>
+    
+    <p>Setting the <code>page_size</code> parameter to 1 will enable 
+    tracking but with no paging.</p></dd>
+    <br />
+
+<dt><strong>Notes:</strong></dt>
+    <dd>Write tracking is turned off by default.
+    
+    <p>This function is only for use with the Core VFD and must be used 
+    after the call to <code>H5Pset_fapl_core</code>. It is an error to 
+    use this function with any other VFD.</p>
+    
+    <p>It is an error to use this function when the backing store flag 
+    has not been set using <code>H5Pset_fapl_core</code>.
+    
+    <p>This function only applies to the backing store write operation 
+    which typically occurs when the file is flushed or closed. This 
+    function has no relationship to the increment parameter passed to 
+    <code>H5Pset_fapl_core</code>.</p>
+    
+    <p>For optimum performance, the <code>page_size</code> parameter 
+    should be a power of two.</p>
+    
+    <p>It is considered an error to set the page size to 0.</p></dd>
+    <br />
+
+<dt><strong>Parameters:</strong></dt>
+    <dd>
+    <table width="100%">
+    <tr valign="bottom">
+    <td width="17%"><code><em>hid_t</em> fapl_id</code></td>
+    <td width="83%">IN: File access property list identifier.</td></tr>
+    <tr valign="bottom">
+    <td><code><em>hbool_t</em> is_enabled</code></td>
+    <td>IN: Whether the feature is enabled.</td></tr>
+    <tr valign="bottom">
+    <td><code><em>size_t</em> page_size</code></td>
+    <td>IN: Size, in bytes, of write aggregation pages.</td></tr>
+    </table>
+    </dd>
+    <br />
+
+<dt><strong>Returns:</strong></dt>
+    <dd>Returns a non-negative value if successful. 
+    Otherwise returns a negative value.</dd>
+    <br />
+
+<dt><strong>Fortran Interface:</strong></dt>
+    <dd>None</dd>
+    <br />
+
+<dt><strong>See Also:</strong></dt>
+    <dd>
+    <a href="#Property-GetCoreWriteTracking"><code>
+    H5Pget_core_write_tracking</code></a>
+    </dd>
+    <br />
+
+<dt><strong>History:</strong></dt>
+<dd><table width="100%">
+    <tr>
+    <td valign="top" align="left" width="10%">
+    <strong>Release</strong></td>
+    <td valign="top" align="left" width="90%">
+    <strong>Change</strong></td></tr>
+    <tr>
+    <td valign="top">1.8.13</td>
+    <td valign="top">
+    C function introduced with this release. </td></tr>
+    </table></dd>
+</dl>
+<br />
+<br />
+<br />
+
+
+
diff --git a/html/RM/H5P/H5Pset_fapl_mpiposix.htm b/html/RM/H5P/H5Pset_fapl_mpiposix.htm
index df98c5f..c9cdbbe 100644
--- a/html/RM/H5P/H5Pset_fapl_mpiposix.htm
+++ b/html/RM/H5P/H5Pset_fapl_mpiposix.htm
@@ -23,7 +23,7 @@
 <hr>
 <dl>
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 15 April 2009
+      Last modified: 2 May 2013
       </i></font></div>
  
   <dt><strong>Name:</strong> <a name="Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>
@@ -37,6 +37,36 @@
   <p>
   <dt><strong>Purpose:</strong>
     <dd>Stores MPI IO communicator information to a file access property list.
+
+  <p>
+  <dt><strong>Function Removed:</strong>
+    <dd>
+      <table border=2 bordercolor=red width=98%><tr><td valign=top align=left>
+        <font color=red>
+        The C functions 
+        <code>H5Pset_fapl_mpiposix</code> and 
+        <a href="#Property-GetFaplMpiPosix"><code>H5Pget_fapl_mpiposix</code></a>
+        and the corresponding Fortran subroutines
+        have been removed from the HDF5 Library at Release 1.8.13.
+        They remain available in earlier releases, through HDF5 Release 1.8.12.
+        <p>
+        </p>
+        All applications used with HDF5 Release 1.8.13 or later
+        and that use MPI I/O should use the functions 
+        <a href="#Property-SetFaplMpio"><code>H5Pset_fapl_mpio</code></a> and
+        <a href="#Property-GetFaplMpio"><code>H5Pget_fapl_mpio</code></a>
+        or the corresponding Fortran subroutines.
+        <p>
+        </p>
+        While HDF5’s <small>MPI-POSIX</small> driver
+        (<code>H5Pset_fapl_mpiposix</code> and <code>H5Pget_fapl_mpiposix</code>)
+        once provided performance benefits on some systems, 
+        that is no longer the case.
+        HDF5’s <small>MPIO</small> driver
+        (<code>H5Pset_fapl_mpio</code> and <code>H5Pget_fapl_mpio</code>)
+        now provides as good or better performance on all modern systems.
+        </font>
+      </td></tr></table>
  
   <p>
   <dt><strong>Description:</strong>
@@ -128,6 +158,12 @@ END SUBROUTINE h5pset_fapl_mpiposix_f
           <td valign="top" align="left">
             <strong>Change</strong></td>
         <tr>
+          <td valign="top">1.8.13</td>
+          <td valign="top">
+            C function and Fortran subroutine removed
+            from HDF5 at this release.
+          </td></tr>
+        <tr>
           <td valign="top">1.6.1</td>
           <td valign="top">
             Fortran subroutine introduced in this release.
diff --git a/html/RM/H5P/H5Pset_file_image.htm b/html/RM/H5P/H5Pset_file_image.htm
index 8206dfe..d9750d5 100644
--- a/html/RM/H5P/H5Pset_file_image.htm
+++ b/html/RM/H5P/H5Pset_file_image.htm
@@ -23,7 +23,7 @@
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 13 April 2012
+      Last modified: 2 May 2014
       </i></font></div>
 
   <dt><strong>Name:</strong> <a name="Property-SetFileImage">H5Pset_file_image</a>
@@ -137,17 +137,11 @@ Complete usage example line(s) for the second example here
 </pre></dir>
 -->
 
-<!--__ *** FORTRAN INTERFACE  ************************************  -->
-<!--__ Leave this comment block in place if there is not yet a      -->
-<!--__ Fortran interface for this function.                         -->
-<!--__                                                              -->
-<!--__ When the Fortran interface is complete, replace this         -->
-<!--__ section with the Fortran subroutine description.             -->
-<!--__                                                              -->
-<!--__ See the file h5fortran_f_insert.htm for a template and       -->
-<!--__ instructions.                                                -->
-<!--__ ***********************************************************  -->
+  <p>
+  <dt><strong>Fortran2003 Interface:</strong> h5pset_file_image_f
+    <dd>
 
+        <?php include("H5P/h5pset_file_image_f_F03.htm"); ?>
 
   <p>
   <dt><strong>See Also:</strong>
@@ -206,6 +200,10 @@ Complete usage example line(s) for the second example here
             <strong>Change</strong></td>
         </tr>
         <tr>
+          <td valign="top">1.8.13</td>
+          <td valign="top">
+              Fortran subroutine added in this release.</td></tr>
+        <tr>
           <td valign="top">1.8.9</td>
           <td valign="top">
             C function introduced in this release.</td>
diff --git a/html/RM/H5P/H5Pset_filter.htm b/html/RM/H5P/H5Pset_filter.htm
index 3e04296..950f3ce 100644
--- a/html/RM/H5P/H5Pset_filter.htm
+++ b/html/RM/H5P/H5Pset_filter.htm
@@ -24,7 +24,7 @@
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 8 October 2010
+      Last modified: 30 April 2014
       </i></font></div>
 
   <dt><strong>Name:</strong> <a name="Property-SetFilter">H5Pset_filter</a>
@@ -194,12 +194,22 @@
         each block of the fractal heap for groups
         in the order in which they were set.
 
+<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
+<!--       Include special topic files                       -->
+<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
+
+<?php include("../_topic/filter_behavior.htm"); ?>
+
+
   <p>
   <dt><strong>See Also:</strong>
-    <dd>For a discussion of optional versus required (mandatory) 
+    <dd>
+        <!--
+        For a discussion of optional versus required (mandatory) 
         filter behavior, see “<a href="#Property-FilterBehavior">Filter 
         Behavior in HDF5</a>.”
         <p>
+        -->
         For a discussion of the chunk cache, see
         <a href="#Property-SetCache"><code>H5Pset_cache</code></a>.
         <p>
diff --git a/html/RM/H5P/h5pget_file_image_f_F03.htm b/html/RM/H5P/h5pget_file_image_f_F03.htm
new file mode 100644
index 0000000..cb9d511
--- /dev/null
+++ b/html/RM/H5P/h5pget_file_image_f_F03.htm
@@ -0,0 +1,30 @@
+<a name="H5P2028F03292fh5pget_file_image_f_F03"></a>
+
+<p class="item_name"><strong>Signature</strong>:</p>
+<pre class="source">  SUBROUTINE h5pget_file_image_f(fapl_id, buf_ptr, buf_len_ptr, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T) , INTENT(IN)                :: fapl_id
+    TYPE(C_PTR)    , INTENT(OUT), DIMENSION(*) :: buf_ptr
+    INTEGER(SIZE_T), INTENT(OUT)               :: buf_len_ptr
+    INTEGER        , INTENT(OUT)               :: hdferr
+</pre>
+<p class="item_name"><strong>Inputs:</strong></p>
+<pre>  fapl_id     - File access property list identifier.
+</pre>
+<p class="item_name"><strong>Outputs:</strong></p>
+<pre>  buf_ptr     - Will hold either a C_NULL_PTR or a scalar of type
+                c_loc. If buf_ptr is not C_NULL_PTR, on successful
+                return, buf_ptr shall contain a C pointer to a copy
+                of the initial image provided in the last call to
+                H5Pset_file_image_f for the supplied fapl_id, or
+                buf_ptr shall contain a C_NULL_PTR if there is no
+                initial image set.
+
+  buf_len_ptr - Contains the value of the buffer parameter for
+                the initial image in the supplied fapl_id. The value
+                will be 0 if no initial image is set.
+
+  hdferr      - Returns 0 if successful and -1 if fails
+</pre>
+
diff --git a/html/RM/H5P/h5pset_file_image_f_F03.htm b/html/RM/H5P/h5pset_file_image_f_F03.htm
new file mode 100644
index 0000000..63a893c
--- /dev/null
+++ b/html/RM/H5P/h5pset_file_image_f_F03.htm
@@ -0,0 +1,21 @@
+<a name="H5P2028F03292fh5pset_file_image_f_F03"></a>
+
+<p class="item_name"><strong>Signature</strong>:</p>
+<pre class="source">  SUBROUTINE h5pset_file_image_f(fapl_id, buf_ptr, buf_len, hdferr)
+    USE iso_c_binding
+    IMPLICIT NONE
+    INTEGER(HID_T) , INTENT(IN)  :: fapl_id
+    TYPE(C_PTR)    , INTENT(IN)  :: buf_ptr
+    INTEGER(SIZE_T), INTENT(IN)  :: buf_len
+    INTEGER        , INTENT(OUT) :: hdferr
+</pre>
+<p class="item_name"><strong>Inputs:</strong></p>
+<pre>  fapl_id - File access property list identifier
+  buf_ptr - Pointer to the initial file image, 
+            or C_NULL_PTR if no initial file image is desired
+  buf_len - Size of the supplied buffer, or 0 (zero) if no initial image is desired
+</pre>
+<p class="item_name"><strong>Outputs:</strong></p>
+<pre>  hdferr  - Returns 0 if successful and -1 if fails
+</pre>
+
diff --git a/html/RM/H5T/H5Tget_precision.htm b/html/RM/H5T/H5Tget_precision.htm
index e9b323b..76d68bd 100644
--- a/html/RM/H5T/H5Tget_precision.htm
+++ b/html/RM/H5T/H5Tget_precision.htm
@@ -23,11 +23,13 @@
 <hr>
 <dl>
 
-<dt><div align=right><font color=999999 size=-1><i>
-    Last modified: 18 August 2010
+<dt><div align="right"><font color="999999" size="-1"><i>
+    Last modified: 12 August 2011
     </i></font></div>
 
-<dt><strong>Name:</strong> <a name="Datatype-GetPrecision">H5Tget_precision</a>
+<dt><strong>Name:</strong> <a name="Datatype-GetPrecision">H5Tget_precision</a>
+</dt>
+<br />
 <dt><strong>Signature:</strong>
     <dd><em>size_t </em><code>H5Tget_precision</code>(
         <em>hid_t </em><code>dtype_id</code>
diff --git a/html/RM/PredefDTypes.html b/html/RM/PredefDTypes.html
index a93d82e..c8f826d 100644
--- a/html/RM/PredefDTypes.html
+++ b/html/RM/PredefDTypes.html
@@ -563,7 +563,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5.html b/html/RM/RM_H5.html
index 802cd4e..875a78f 100644
--- a/html/RM/RM_H5.html
+++ b/html/RM/RM_H5.html
@@ -28,7 +28,7 @@ HDF5/H5 API Specification
 <hr>
 <center>
 <table border=0 width=98%>
-<tr><td valign=top align=left>
+<tr><td valign="top" align=left>
 <a href="../index.html">HDF5 documents and links</a> <br>
 <a href="../H5.intro.html">Introduction to HDF5</a> <br>
 <a href="../UG/index.html">HDF5 User Guide</a> <br>
@@ -36,7 +36,7 @@ HDF5/H5 API Specification
 <a href="Glossary.html">Glossary</a><br>
 -->
 </td>
-<td valign=top align=right>
+<td valign="top" align=right>
 In the 
 <a href="RM_H5Front.html">HDF5 Reference Manual</a> 
 <font size="-1"><br>
@@ -89,59 +89,64 @@ library and its users.
 <p>
 <strong>The C Interfaces:</strong>
 
-<table border="0" width="80%">
-<tr><td valign=top width="20%">
+<table border="0" width="100%">
+<tr>
+<td valign="top" width="15%">
 <ul>
-    <li><a href="#Library-Open">H5open</a>
-    <li><a href="#Library-Close">H5close</a>
+    <li><a href="#Library-Open">H5open</a></li>
+    <li><a href="#Library-Close">H5close</a></li>
+    <li><a href="#Library-SetFreeListLimits">H5set_free_list_limits</a></li>
+    <li><a href="#Library-GarbageCollect">H5garbage_collect</a></li>
 </ul>
-</td><td>      </td><td valign=top>
+</td>
+<td valign="top" width="15%">
 <ul>
-    <li><a href="#Library-SetFreeListLimits">H5set_free_list_limits</a>
-    <li><a href="#Library-GarbageCollect">H5garbage_collect</a>
-    <li><a href="#Library-DontAtExit">H5dont_atexit</a>
+    <li><a href="#Library-DontAtExit">H5dont_atexit</a></li>
+    <li><a href="#Library-Version">H5get_libversion</a></li>
+    <li><a href="#Library-VersCheck">H5check_version</a></li>
 </ul>
-</td><td>      </td><td valign=top>
+</td>
+
+<td valign="top" width="70%">
+
 <ul>
-    <li><a href="#Library-Version">H5get_libversion</a>
-    <li><a href="#Library-VersCheck">H5check_version</a>
-    <li><a href="#Library-VersionGE">H5_VERSION_GE</a>
-    <li><a href="#Library-VersionLE">H5_VERSION_LE</a>
-</ul></td>
+    <li><a href="#Library-VersionGE">H5_VERSION_GE</a></li>
+    <li><a href="#Library-VersionLE">H5_VERSION_LE</a></li>
+    <li><a href="#Library-FreeMemory">H5free_memory</a></li>
+</ul>
+
+</td>
 </tr>
 </table>
 <br>
 
 <i>Alphabetical Listing</i>
 
-<table border="0">
+<table border="0" width="100%">
   <tr>
 
-    <td valign="top">
+    <td valign="top" width="15%">
 	<ul>
-      <li><a href="#Library-VersCheck">H5check_version</a>
-      <li><a href="#Library-Close">H5close</a>
-      <li><a href="#Library-DontAtExit">H5dont_atexit</a>
+      <li><a href="#Library-VersCheck">H5check_version</a></li>
+      <li><a href="#Library-Close">H5close</a></li>
+      <li><a href="#Library-DontAtExit">H5dont_atexit</a></li>
+      <li><a href="#Library-FreeMemory">H5free_memory</a></li>
 	</ul>
     </td>
     
-    <td>      </td>
-    
-    <td valign="top">
+    <td valign="top" width="15%">
 	<ul>
-      <li><a href="#Library-GarbageCollect">H5garbage_collect</a>
-      <li><a href="#Library-Version">H5get_libversion</a>
-      <li><a href="#Library-Open">H5open</a>
+      <li><a href="#Library-GarbageCollect">H5garbage_collect</a></li>
+      <li><a href="#Library-Version">H5get_libversion</a></li>
+      <li><a href="#Library-Open">H5open</a></li>
 	</ul>
     </td>
     
-    <td>      </td>
-    
-    <td valign="top">
+    <td valign="top" width="70%">
 	<ul>
-      <li><a href="#Library-SetFreeListLimits">H5set_free_list_limits</a>
-      <li><a href="#Library-VersionGE">H5_VERSION_GE</a>
-      <li><a href="#Library-VersionLE">H5_VERSION_LE</a>
+      <li><a href="#Library-SetFreeListLimits">H5set_free_list_limits</a></li>
+      <li><a href="#Library-VersionGE">H5_VERSION_GE</a></li>
+      <li><a href="#Library-VersionLE">H5_VERSION_LE</a></li>
 	</ul>
     </td>
   </tr>
@@ -154,22 +159,25 @@ In general, each Fortran subroutine performs exactly the same task
 as the corresponding C function.  
 <br>
 
-<table border=0>
-<tr><td valign=top>
+<table width="100%">
+<tr>
+<td valign="top" width="15%">
 <ul>
-    <li><a href="#Library-Open">h5open_f</a>
-    <li><a href="#Library-Close">h5close_f</a>
+    <li><a href="#Library-Open">h5open_f</a></li>
+    <li><a href="#Library-Close">h5close_f</a></li>
 </ul>
-</td><td>      </td><td valign=top>
+</td>
+<td valign="top" width="15%">
 <ul>
-    <li><a href="#Library-Version">h5get_libversion_f</a>
-    <li><a href="#Library-VersCheck">h5check_version_f</a>
+    <li><a href="#Library-Version">h5get_libversion_f</a></li>
+    <li><a href="#Library-VersCheck">h5check_version_f</a></li>
 </ul>
-</td><td>      </td><td valign=top>
+</td>
+<td valign="top" width="70%">
 <ul>
 <!--<li><a href="#Library-SetFreeListLimits">h5set_free_list_limits_f</a>  -->
-    <li><a href="#Library-GarbageCollect">h5garbage_collect_f</a>
-    <li><a href="#Library-DontAtExit">h5dont_atexit_f</a>
+    <li><a href="#Library-GarbageCollect">h5garbage_collect_f</a></li>
+    <li><a href="#Library-DontAtExit">h5dont_atexit_f</a></li>
 </ul>
 </td></tr>
 </table>
@@ -189,6 +197,7 @@ as the corresponding C function.
 <?php include("H5/H5check_version.htm"); ?>
 <?php include("H5/H5close.htm"); ?>
 <?php include("H5/H5dont_atexit.htm"); ?>
+<?php include("H5/H5free_memory.htm"); ?>
 <?php include("H5/H5garbage_collect.htm"); ?>
 <?php include("H5/H5get_libversion.htm"); ?>
 <?php include("H5/H5open.htm"); ?>
@@ -201,8 +210,8 @@ as the corresponding C function.
 <!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
 <hr>
 <center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
+<table border="0" width="98%">
+<tr><td valign="top" align="left">
 <a href="../index.html">HDF5 documents and links</a> <br>
 <a href="../H5.intro.html">Introduction to HDF5</a> <br>
 <a href="../UG/index.html">HDF5 User Guide</a> <br>
@@ -210,10 +219,11 @@ as the corresponding C function.
 <a href="Glossary.html">Glossary</a><br>
 -->
 </td>
-<td valign=top align=right>
+<td valign="top" align="right">
 In the 
 <a href="RM_H5Front.html">HDF5 Reference Manual</a> 
-<font size="-1"><br>
+<font size="-1">
+<br>
 <a href="../HL/RM_H5DS.html">H5DS</a>  
 <a href="../HL/RM_H5IM.html">H5IM</a>  
 <a href="../HL/RM_H5LT.html">H5LT</a>  
@@ -259,9 +269,10 @@ In the
   <tr valign="top">
       <td align="left">
           <address>
-          The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
+          The HDF Group Help Desk: <img src="../Graphics/help.png" 
+          align="top" height="16">
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
@@ -275,7 +286,7 @@ In the
 </address>
 <!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 1 November 2011");
+document.writeln("Last modified: 22 April 2014");
 -->
 </SCRIPT>
 
diff --git a/html/RM/RM_H5A.html b/html/RM/RM_H5A.html
index 9567d0b..0ee99d8 100644
--- a/html/RM/RM_H5A.html
+++ b/html/RM/RM_H5A.html
@@ -387,7 +387,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5D.html b/html/RM/RM_H5D.html
index a7201be..8475352 100644
--- a/html/RM/RM_H5D.html
+++ b/html/RM/RM_H5D.html
@@ -337,7 +337,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5E.html b/html/RM/RM_H5E.html
index c0e7b8c..75e1064 100644
--- a/html/RM/RM_H5E.html
+++ b/html/RM/RM_H5E.html
@@ -373,7 +373,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5F.html b/html/RM/RM_H5F.html
index 0db64ac..d5e195f 100644
--- a/html/RM/RM_H5F.html
+++ b/html/RM/RM_H5F.html
@@ -200,6 +200,7 @@ as the corresponding C function.
 <ul>
     <li><a href="#File-Create">h5fcreate_f</a>
     <li><a href="#File-Open">h5fopen_f</a>
+    <li><a href="#File-GetFileImage">h5fget_file_image_f</a>
     <li><a href="#File-Reopen">h5freopen_f</a>
     <li><a href="#File-Close">h5fclose_f</a>
     <li><a href="#File-Flush">h5fflush_f</a>
@@ -338,7 +339,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
@@ -352,7 +353,7 @@ In the
 </address>
 <!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 18 June 2013");
+document.writeln("Last modified: 2 May 2014");
 -->
 </SCRIPT>
  
diff --git a/html/RM/RM_H5Front.html b/html/RM/RM_H5Front.html
index a0e8649..064d627 100644
--- a/html/RM/RM_H5Front.html
+++ b/html/RM/RM_H5Front.html
@@ -487,7 +487,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
@@ -502,7 +502,7 @@ In the
 <!-- #EndLibraryItem --><table width="100%" border="0"> <tr valign="top"> <td align="left">
 <SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 8 November 2013");
+document.writeln("Last modified: 14 May 2014");
 -->
 </SCRIPT>
 </td></tr></table>
diff --git a/html/RM/RM_H5G.html b/html/RM/RM_H5G.html
index cbc06f7..9b2454a 100644
--- a/html/RM/RM_H5G.html
+++ b/html/RM/RM_H5G.html
@@ -346,7 +346,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5I.html b/html/RM/RM_H5I.html
index 685cd69..7affeb8 100644
--- a/html/RM/RM_H5I.html
+++ b/html/RM/RM_H5I.html
@@ -296,7 +296,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5L.html b/html/RM/RM_H5L.html
index 88d4e30..e187374 100644
--- a/html/RM/RM_H5L.html
+++ b/html/RM/RM_H5L.html
@@ -339,7 +339,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5O.html b/html/RM/RM_H5O.html
index 7814030..fca46a1 100644
--- a/html/RM/RM_H5O.html
+++ b/html/RM/RM_H5O.html
@@ -343,7 +343,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5P.html b/html/RM/RM_H5P.html
index 4e383a7..3c6509b 100644
--- a/html/RM/RM_H5P.html
+++ b/html/RM/RM_H5P.html
@@ -43,7 +43,8 @@ HDF5/H5P API Specification
 <td valign=top align=right>
 In the 
 <a href="RM_H5Front.html">HDF5 Reference Manual</a> 
-<font size="-1"><br>
+<font size=-1>
+<br>
 <a href="../HL/RM_H5DS.html">H5DS</a>  
 <a href="../HL/RM_H5IM.html">H5IM</a>  
 <a href="../HL/RM_H5LT.html">H5LT</a>  
@@ -73,12 +74,11 @@ In the
 <a href="APICompatMacros.html">Compatibility Macros</a> 
 <br>
 <a href="CollectiveCalls.html">Collective Calls in Parallel</a> 
-</font>
 <!--
 <br>
 <i><font size=-1>(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i> 
 -->
-
+</font>
 </td></tr>
 </table>
 </center>
@@ -88,30 +88,901 @@ In the
 </center>
 <h2>Property List API Functions</h2>
 
-These functions manipulate property list objects to allow objects 
-which require many different parameters to be easily manipulated.
-<br>
-In the following lists, italic type indicates a configurable macro.
+The functions, macros, and subroutines listed here
+are used to manipulate property list objects in various ways, 
+including to reset property values.
+With the use of property lists, HDF5 functions have been implemented and 
+can be used in applications with many fewer parameters than would be 
+required without property lists.
+<p />
+The following index to these functions, macros, and subroutines is organized 
+into three sections: 
+<ul>
+  <li><a href="#FunctionIndex">C functions, 
+      sorted by property list class</a>
+  <li><a href="#AlphaIndex">C functions, 
+      sorted alphabetically</a>
+  <li><a href="#SubroutineIndex">Fortran subroutines, 
+      sorted by property list class</a>
+</ul>
+Fortran subroutine descriptions appear within the C function descriptions
+on this page.  In general, a Fortran subroutine does exactly the same thing 
+the corresponding C function does; the rare exceptions are noted
+in the Fortran subroutine description.
+<p />
+Symbolic notation in the following index is interpreted as follows:
+<table width="100%">
+  <tr valign="top" align="left">
+    <td width="5%"><code>    </code></td>
+    <td>||</td>
+    <td>This function or subroutine is available only in the
+        parallel HDF5 library.</td>
+  </tr><tr valign="top" align="left">
+    <td width="5%"><code>    </code></td>
+    <td>*</td>
+    <td>This function or subroutine is deprecated in the 1.8.<i>x</i> series.</td>
+  </tr><tr valign="top" align="left">
+    <td width="5%"><code>    </code></td>
+    <td><i>italics</i><code> </code></td>
+    <td>This is a configurable macro name rather than a function name.</td>
+  </tr>
+</table>
 
 
-<a name="Function_index">
-<p>
-<strong>The C Interfaces:</strong>
-</a>
+    <p>
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="3" />
+    </td></tr>
+<tr><td width="36%" align="left" valign="top">
+    <a name="FunctionIndex">
+    <strong>The C Interfaces:</strong>
+    </a>
+    </td>
+<td width="64%" align="left" valign="top">
+<!--
+    ||  
+    <i>Indicates functions that are available only in the 
+    parallel HDF5 library.</i>
+    <br>
+    *  
+    <i>Use of these functions was deprecated as of Release 1.8.0.</i>
+-->
+    </td></tr>
+<tr>
+<td colspan="2" align="right" valign="top">
+<!--
+    Proceed to <a href="#AlphaIndex">Alphabetic Listing</a> 
+    <br>
+    Proceed to <a href="#SubroutineIndex">Fortran Interfaces</a>
+-->
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0" bgcolor="EEEEEE">
+<tr><td colspan="3" align="left" valign="top">
+    <hr color="green" size="1" />
+    </td></tr>
+<tr>
+<td width="33%" align="left" valign="top">
+      <font face="sans-serif" size="-1">
+      General Operations:
+      <br>
+      <a href="#GenPropOpsFuncs">General Property List Operations</a>
+      <br> 
+      <br>
+      File Operations:
+      <br>
+      <a href="#FileCreatePropFuncs">File Creation Properties</a>
+      <br>
+      <a href="#FileAccessPropFuncs">File Access Properties</a>
+      <br> 
+      <br>
+      Group Operations:
+      <br>
+      <a href="#GroupCreatePropFuncs">Group Creation Properties</a>
+<!--
+      <br>
+      <a href="#GroupAccessPropFuncs">Group Access Properties</a>
+-->
+      </font>
+    </td>
+<td width="33%" align="left" valign="top">
+      <font face="sans-serif" size="-1">
+      Link Operations:
+      <br>
+      <a href="#LinkCreatePropFuncs">Link Creation Properties</a>
+      <br>
+      <a href="#LinkAccessPropFuncs">Link Access Properties</a>
+      <br> 
+      <br>
+      Dataset Operations:
+      <br>
+      <a href="#DatasetCreatePropFuncs">Dataset Creation Properties</a>
+      <br>
+      <a href="#DatasetAccessPropFuncs">Dataset Access Properties</a>
+      <br>
+      <a href="#DatasetTransferPropFuncs">Dataset Transfer Properties</a>
+      </font>
+    </td>
+<td width="34%" align="left" valign="top">
+      <font face="sans-serif" size="-1">
+<!--
+      Datatype Operations:
+      <br>
+      <a href="#DatatypeCreatePropFuncs">Datatype Creation Properties</a>
+      <br>
+      <a href="#DatatypeAccessPropFuncs">Datatype Access Properties</a>
+      <br>
+-->
+      Object Operations:
+      <br>
+      <a href="#ObjectCreatePropFuncs">Object Creation Properties</a>
+      <br>
+      <a href="#ObjectCopyPropFuncs">Object Copy Properties</a>
+      <br> 
+      <br>
+      Attribute Operations:
+      <br>
+      <a href="#AttributeCreatePropFuncs">Attribute Creation Properties</a>
+      <br> 
+      <br>
+      Advanced Usage:
+      <br>
+      <a href="#GenericPropFuncs">Generic Property Operations</a>
+      </font>
+    </td></tr>
+<tr><td colspan="3" align="left" valign="top">
+    <hr color="green" size="1" />
+    </td></tr>
+</table>
+
+
+
+<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+<!-- NEW BANDED LAYOUT               ----------------------------------->
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <a name="GenPropOpsFuncs">
+    <i>General Property List Operations</i>
+    </a>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-Create">H5Pcreate</a>
+    <br />
+    <a href="#Property-GetClass">H5Pget_class</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-Copy">H5Pcopy</a>
+    <br />
+    <a href="#Property-Close">H5Pclose</a>
+    </td>
+<td width="32%" align="left" valign="top">
+ 
+<!-- ====== WHEN EXPOSING, REMOVE FORCED BLANK SPACE IMMEDIATELY ABOVE. =====
+    <a href="#Property-Encode">H5Pencode</a>
+    <br />
+    <a href="#Property-Decode">H5Pdecode</a>
+-->
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="FileCreatePropFuncs">
+    <i>File Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetVersion">H5Pget_version</a>
+    <br />
+    <a href="#Property-SetUserblock">H5Pset_userblock</a>
+    <br />
+    <a href="#Property-GetUserblock">H5Pget_userblock</a>
+    <br />
+    <a href="#Property-SetSizes">H5Pset_sizes</a>
+    <br />
+    <a href="#Property-GetSizes">H5Pget_sizes</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetSymK">H5Pset_sym_k</a>
+    <br />
+    <a href="#Property-GetSymK">H5Pget_sym_k</a>
+    <br />
+    <a href="#Property-SetIstoreK">H5Pset_istore_k</a>
+    <br />
+    <a href="#Property-GetIstoreK">H5Pget_istore_k</a>
+<!--
+    <br />
+    <a href="#Property-SetFileSpace">H5Pset_file_space</a>
+    <br />
+    <a href="#Property-GetFileSpace">H5Pget_file_space</a>
+-->
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetSharedMesgNIndexes">H5Pset_shared_mesg_nindexes</a>
+    <br />
+    <a href="#Property-GetSharedMesgNIndexes">H5Pget_shared_mesg_nindexes</a>
+    <br />
+    <a href="#Property-SetSharedMesgIndex">H5Pset_shared_mesg_index</a>
+    <br />
+    <a href="#Property-GetSharedMesgIndex">H5Pget_shared_mesg_index</a>
+    <br />
+    <a href="#Property-SetSharedMesgPhaseChange">H5Pset_shared_mesg_phase_change</a>
+    <br />
+    <a href="#Property-GetSharedMesgPhaseChange">H5Pget_shared_mesg_phase_change</a>
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="FileAccessPropFuncs">
+    <i>File Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetDriver">H5Pset_driver</a>
+    <br />
+    <a href="#Property-GetDriver">H5Pget_driver</a>
+    <br />
+    <a href="#Property-GetDriverInfo">H5Pget_driver_info</a>
+    <br />
+    <a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
+    <br />
+    <a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>    
+    <br />
+    <a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
+    <br />
+    <a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
+    <br />
+    <a href="#Property-SetCoreWriteTracking">H5Pset_core_write_tracking</a>
+    <br />
+    <a href="#Property-GetCoreWriteTracking">H5Pget_core_write_tracking</a>
+    <br />
+    <a href="#Property-SetFaplDirect">H5Pset_fapl_direct</a>
+    <br />
+    <a href="#Property-GetFaplDirect">H5Pget_fapl_direct</a>
+    <br />
+    <a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
+    <br />
+    <a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
+    <br />
+    <a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
+    <br />
+    <a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>    
+    <br />
+    <a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>   ||
+    <br />
+    <a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>   ||
+    <br />
+    <a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>   ||
+    <br />
+    <a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>   ||
+    <br />
+    <a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
+    <br />
+    <a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
+    <br />
+    <a href="#Property-SetMultiType">H5Pset_multi_type</a>
+    <br />
+    <a href="#Property-GetMultiType">H5Pget_multi_type</a>
+    <br />
+    <a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
+    <br />
+    <a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
+    <br />
+    <a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
+<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+<!--<br />
+    <a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>      -->
+<!--<br />
+    <a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>      -->
+<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+    <br />
+    <a href="#Property-SetFaplWindows">H5Pset_fapl_windows</a>
+    <br />
+    <a href="#Property-SetFileImage">H5Pset_file_image</a>
+    <br />
+    <a href="#Property-GetFileImage">H5Pget_file_image</a>
+    <br />
+    <a href="#Property-SetFileImageCallbacks">H5Pset_file_image_callbacks</a>
+    <br />
+    <a href="#Property-GetFileImageCallbacks">H5Pget_file_image_callbacks</a>    
+    <br />
+    <a href="#Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
+    <br />
+    <a href="#Property-GetMetaBlockSize">H5Pget_meta_block_size</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
+    <br />
+    <a href="#Property-GetSieveBufSize">H5Pget_sieve_buf_size</a>
+    <br />
+    <a href="#Property-SetAlignment">H5Pset_alignment</a>
+    <br />
+    <a href="#Property-GetAlignment">H5Pget_alignment</a>
+    <br />
+    <a href="#Property-SetCache">H5Pset_cache</a>
+    <br />
+    <a href="#Property-GetCache">H5Pget_cache</a>
+    <br />
+    <a href="#Property-SetELinkFileCacheSize">H5Pset_elink_file_cache_size</a>
+    <br />
+    <a href="#Property-GetELinkFileCacheSize">H5Pget_elink_file_cache_size</a>
+    <br />
+    <a href="#Property-SetMdcConfig">H5Pset_mdc_config</a>
+    <br />
+    <a href="#Property-GetMdcConfig">H5Pget_mdc_config</a>
+    <br />
+    <a href="#Property-SetGCReferences">H5Pset_gc_references</a>
+    <br />
+    <a href="#Property-GetGCReferences">H5Pget_gc_references</a>
+    <br />
+    <a href="#Property-SetSmallData">H5Pset_small_data_block_size</a>
+    <br />
+    <a href="#Property-GetSmallData">H5Pget_small_data_block_size</a>
+    <br />
+    <a href="#Property-SetLibverBounds">H5Pset_libver_bounds</a>
+    <br />
+    <a href="#Property-GetLibverBounds">H5Pget_libver_bounds</a>
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="GroupCreatePropFuncs">
+    <i>Group Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetLocalHeapSizeHint">H5Pset_local_heap_size_hint</a>
+    <br />
+    <a href="#Property-GetLocalHeapSizeHint">H5Pget_local_heap_size_hint</a>
+    <br />
+    <a href="#Property-SetLinkCreationOrder">H5Pset_link_creation_order</a>    
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetLinkCreationOrder">H5Pget_link_creation_order</a>    
+    <br />
+    <a href="#Property-SetEstLinkInfo">H5Pset_est_link_info</a>
+    <br />
+    <a href="#Property-GetEstLinkInfo">H5Pget_est_link_info</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetLinkPhaseChange">H5Pset_link_phase_change</a>
+    <br />
+    <a href="#Property-GetLinkPhaseChange">H5Pget_link_phase_change</a>
+    </td></tr>
+</table>
+
+
+<!--
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="GroupAccessPropFuncs">
+    <i>Group Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+-->
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="LinkCreatePropFuncs">
+    <i>Link Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetCharEncoding">H5Pset_char_encoding</a>
+    <br />
+    <a href="#Property-GetCharEncoding">H5Pget_char_encoding</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetCreateIntermediateGroup">H5Pset_create_intermediate_group</a>
+    <br />
+    <a href="#Property-GetCreateIntermediateGroup">H5Pget_create_intermediate_group</a>
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="LinkAccessPropFuncs">
+    <i>Link Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetNLinks">H5Pset_nlinks</a>
+    <br />
+    <a href="#Property-GetNLinks">H5Pget_nlinks</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetELinkCb">H5Pset_elink_cb</a>
+    <br />
+    <a href="#Property-GetELinkCb">H5Pget_elink_cb</a>
+    <br />
+    <a href="#Property-SetELinkPrefix">H5Pset_elink_prefix</a>
+    <br />
+    <a href="#Property-GetELinkPrefix">H5Pget_elink_prefix</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetELinkFapl">H5Pset_elink_fapl</a>
+    <br />
+    <a href="#Property-GetELinkFapl">H5Pget_elink_fapl</a>
+    <br />
+    <a href="#Property-SetELinkAccFlags">H5Pset_elink_acc_flags</a>
+    <br />
+    <a href="#Property-GetELinkAccFlags">H5Pget_elink_acc_flags</a>
+    </td></tr>
+</table>
 
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatasetCreatePropFuncs">
+    <i>Dataset Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetLayout">H5Pset_layout</a>
+    <br />
+    <a href="#Property-GetLayout">H5Pget_layout</a>
+    <br />
+    <a href="#Property-SetChunk">H5Pset_chunk</a>
+    <br />
+    <a href="#Property-GetChunk">H5Pget_chunk</a>
+    <br />
+    <a href="#Property-SetDeflate">H5Pset_deflate</a>
+<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+<!--
+    <br />
+    <a href="#Property-GetDeflate">H5Pget_deflate</a>
+    <br />
+    <a href="#Property-SetCompression">H5Pset_compression</a>
+    <br />
+    <a href="#Property-GetCompression">H5Pget_compression</a>
+    11.13.2012. The W3C Link Checker complained about these commented out links.
+     The function entries that these links are looking for do not exist. 
+     This Link Checker error can be ignored. These links appear in 3 other 
+     locations in this file.
+-->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+    <br />
+    <a href="#Property-SetFillValue">H5Pset_fill_value</a>
+    <br />
+    <a href="#Property-GetFillValue">H5Pget_fill_value</a>
+    <br />
+    <a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
+    <br />
+    <a href="#Property-SetFillTime">H5Pset_fill_time</a>
+    <br />
+    <a href="#Property-GetFillTime">H5Pget_fill_time</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetAllocTime">H5Pset_alloc_time</a>
+    <br />
+    <a href="#Property-GetAllocTime">H5Pget_alloc_time</a>
+    <br />
+    <a href="#Property-SetFilter">H5Pset_filter</a>
+    <br />
+    <a href="#Property-AllFiltersAvail">H5Pall_filters_avail</a>
+    <br />
+    <a href="#Property-GetNFilters">H5Pget_nfilters</a>
+    <br />
+    <a href="#Property-GetFilter"><i>H5Pget_filter</i></a>
+    <br />
+    <a href="#Property-GetFilter1">H5Pget_filter1</a>
+           *
+    <br />
+    <a href="#Property-GetFilter2">H5Pget_filter2</a>
+    <br />
+    <a href="#Property-GetFilterById"><i>H5Pget_filter_by_id</i></a>
+    <br />
+    <a href="#Property-GetFilterById1">H5Pget_filter_by_id1</a>
+           *
+    <br />
+    <a href="#Property-GetFilterById2">H5Pget_filter_by_id2</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-ModifyFilter">H5Pmodify_filter</a>
+    <br />
+    <a href="#Property-RemoveFilter">H5Premove_filter</a>
+    <br />
+    <a href="#Property-SetFletcher32">H5Pset_fletcher32</a>
+    <br />
+    <a href="#Property-SetNbit">H5Pset_nbit</a>
+    <br />
+    <a href="#Property-SetScaleoffset">H5Pset_scaleoffset</a>
+    <br />
+    <a href="#Property-SetShuffle">H5Pset_shuffle</a>
+    <br />
+    <a href="#Property-SetSzip">H5Pset_szip</a>
+    <br />
+    <a href="#Property-SetExternal">H5Pset_external</a>
+    <br />
+    <a href="#Property-GetExternalCount">H5Pget_external_count</a>
+    <br />
+    <a href="#Property-GetExternal">H5Pget_external</a>
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatasetAccessPropFuncs">
+    <i>Dataset Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatasetTransferPropFuncs">
+    <i>Dataset Transfer Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetBuffer">H5Pset_buffer</a>
+    <br />
+    <a href="#Property-GetBuffer">H5Pget_buffer</a>
+    <br />
+    <a href="#Property-SetPreserve">H5Pset_preserve</a>
+           *
+    <br />
+    <a href="#Property-GetPreserve">H5Pget_preserve</a>
+           *
+    <br />
+    <a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
+    <br />
+    <a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
+    <br />
+    <a href="#Property-SetFilterCallback">H5Pset_filter_callback</a>
+    <br />
+    <a href="#Property-SetDataTransform">H5Pset_data_transform</a>
+    <br />
+    <a href="#Property-GetDataTransform">H5Pget_data_transform</a>    
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetTypeConvCb">H5Pset_type_conv_cb</a>
+    <br />
+    <a href="#Property-GetTypeConvCb">H5Pget_type_conv_cb</a>
+    <br />
+    <a href="#Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>
+    <br />
+    <a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
+    <br />
+    <a href="#Property-SetBTreeRatios">H5Pset_btree_ratios</a>
+    <br />
+    <a href="#Property-GetBTreeRatios">H5Pget_btree_ratios</a>
+    <br />
+    <a href="#Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
+    <br />
+    <a href="#Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>    
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>   ||
+    <br />
+    <a href="#Property-SetDxplMpioChunkOpt">H5Pset_dxpl_mpio_chunk_opt</a>   ||
+    <br />
+    <a href="#Property-SetDxplMpioChunkOptNum">H5Pset_dxpl_mpio_chunk_opt_num</a>   ||
+    <br />
+    <a href="#Property-SetDxplMpioChunkOptRatio">H5Pset_dxpl_mpio_chunk_opt_ratio</a>   ||
+    <br />
+    <a href="#Property-SetDxplMpioCollectiveOpt">H5Pset_dxpl_mpio_collective_opt</a>   ||
+    <br />
+    <a href="#Property-GetDxplMpio">H5Pget_dxpl_mpio</a>   ||
+    <br />
+    <a href="#Property-GetMpioActualChunkOptMode">H5Pget_mpio_actual_chunk_opt_mode</a>   ||
+    <br />
+    <a href="#Property-GetMpioActualIoMode">H5Pget_mpio_actual_io_mode</a>   ||
+    <br />
+    <a href="#Property-GetMpioNoCollectiveCause">H5Pget_mpio_no_collective_cause</a>   ||
+    </td></tr>
+</table>
+
+
+<!--
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatatypeCreatePropFuncs">
+    <i>Datatype Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+-->
+
+
+<!--
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatatypeAccessPropFuncs">
+    <i>Datatype Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+-->
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="ObjectCreatePropFuncs">
+    <i>Object Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetCreateIntermediateGroup">H5Pset_create_intermediate_group</a>
+    <br />
+    <a href="#Property-GetCreateIntermediateGroup">H5Pget_create_intermediate_group</a>    
+    <br />
+    <a href="#Property-SetObjTrackTimes">H5Pset_obj_track_times</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetObjTrackTimes">H5Pget_obj_track_times</a>
+    <br />
+    <a href="#Property-SetAttrPhaseChange">H5Pset_attr_phase_change</a>    
+    <br />
+    <a href="#Property-GetAttrPhaseChange">H5Pget_attr_phase_change</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetAttrCreationOrder">H5Pset_attr_creation_order</a>
+    <br />
+    <a href="#Property-GetAttrCreationOrder">H5Pget_attr_creation_order</a>
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="ObjectCopyPropFuncs">
+    <i>Object Copy Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetCopyObject">H5Pset_copy_object</a>
+    <br />
+    <a href="#Property-GetCopyObject">H5Pget_copy_object</a>    
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-AddMergeCommittedDtypePath">H5Padd_merge_committed_dtype_path</a>
+    <br />
+    <a href="#Property-FreeMergeCommittedDtypePaths">H5Pfree_merge_committed_dtype_paths</a>    
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetMcdtSearchCb">H5Pset_mcdt_search_cb</a>
+    <br />
+    <a href="#Property-GetMcdtSearchCb">H5Pget_mcdt_search_cb</a>
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="AttributeCreatePropFuncs">
+    <i>Attribute Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetCharEncoding">H5Pset_char_encoding</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetCharEncoding">H5Pget_char_encoding</a>
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="GenericPropFuncs">
+    <i>Generic Property Operations (Advanced)</i> 
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-CreateClass">H5Pcreate_class</a> 
+    <br />
+    <a href="#Property-Register"><i>H5Pregister</i></a> 
+    <br />
+    <a href="#Property-Register1">H5Pregister1</a> 
+           *
+    <br />
+    <a href="#Property-Register2">H5Pregister2</a> 
+    <br />
+    <a href="#Property-Insert"><i>H5Pinsert</i></a> 
+    <br />
+    <a href="#Property-Insert1">H5Pinsert1</a> 
+           *
+    <br />
+    <a href="#Property-Insert2">H5Pinsert2</a> 
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-Set">H5Pset</a> 
+    <br />
+    <a href="#Property-Exist">H5Pexist</a> 
+    <br />
+    <a href="#Property-GetSize">H5Pget_size</a> 
+    <br />
+    <a href="#Property-GetNProps">H5Pget_nprops</a> 
+    <br />
+    <a href="#Property-GetClassName">H5Pget_class_name</a> 
+    <br />
+    <a href="#Property-GetClassParent">H5Pget_class_parent</a> 
+    <br />
+    <a href="#Property-IsAClass">H5Pisa_class</a> 
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-Get">H5Pget</a> 
+    <br />
+    <a href="#Property-Equal">H5Pequal</a> 
+    <br />
+    <a href="#Property-Iterate">H5Piterate</a> 
+    <br />
+    <a href="#Property-CopyProp">H5Pcopy_prop</a> 
+    <br />
+    <a href="#Property-Remove">H5Premove</a> 
+    <br />
+    <a href="#Property-Unregister">H5Punregister</a> 
+    <br />
+    <a href="#Property-CloseClass">H5Pclose_class</a> 
+    </td></tr>
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="3" />
+    </td></tr>
+</table>
+
+
+
+<!-- ===== 3-COLUMN TEMPLATE =============================================
+<table width="100%" border="1">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    </td>
+<td width="32%" align="left" valign="top">
+    </td>
+<td width="32%" align="left" valign="top">
+    </td></tr>
+</table>
+<p />
+====================================================================== -->
+
+<!-- ===== 2-COLUMN TEMPLATE =============================================
+<table width="100%" border="1">
+<tr><td colspan="3" align="left" valign="top">
+    <hr color="green" size="1" />
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="48%" align="left" valign="top">
+    </td>
+<td width="48%" align="left" valign="top">
+    </td></tr>
+</table>
+<p />
+====================================================================== -->
+
+
+
+<!-- FOR USE WITH ELECTRONIC VERSION -----------------------------------
 <table border=0>
 <tr><td valign=top>
 
-    <i>General Property List <br> Operations</i>
+    <i>General Property List Operations</i>
     <ul>
     <li><a href="#Property-Create">H5Pcreate</a>
     <li><a href="#Property-GetClass">H5Pget_class</a>
     <li><a href="#Property-Copy">H5Pcopy</a>
     <li><a href="#Property-Close">H5Pclose</a>
+-->
+<!-- ====== =====
+    <li><a href="#Property-Encode">H5Pencode</a>
+    <li><a href="#Property-Decode">H5Pdecode</a>
+-->
+<!--
     </ul>
 
-    <p><i>Generic Property List Functions</i> 
+    <p><i>Generic Property Functions (Advanced)</i> 
     <ul>
     <li><a href="#Property-CreateClass">H5Pcreate_class</a> 
     <li><a href="#Property-Register"><i>H5Pregister</i></a> 
@@ -160,7 +1031,7 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetELinkAccFlags">H5Pget_elink_acc_flags</a>
     </ul>
 
-    <p><i>Object Copy and <br> Object Creation Properties</i>
+    <p><i>Object Creation Properties</i>
     <ul>
     <li><a href="#Property-SetCreateIntermediateGroup">H5Pset_create_intermediate_group</a>
     <li><a href="#Property-GetCreateIntermediateGroup">H5Pget_create_intermediate_group</a>
@@ -170,6 +1041,10 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetAttrCreationOrder">H5Pget_attr_creation_order</a>
     <li><a href="#Property-SetObjTrackTimes">H5Pset_obj_track_times</a>
     <li><a href="#Property-GetObjTrackTimes">H5Pget_obj_track_times</a>
+    </ul>
+
+    <p><i>Object Copy Properties</i>
+    <ul>
     <li><a href="#Property-SetCopyObject">H5Pset_copy_object</a>
     <li><a href="#Property-GetCopyObject">H5Pget_copy_object</a>
     <li><a href="#Property-AddMergeCommittedDtypePath">H5Padd_merge_committed_dtype_path</a>
@@ -178,7 +1053,7 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetMcdtSearchCb">H5Pget_mcdt_search_cb</a>
     </ul>
 
-    <p><i>String Properties</i>
+    <p><i>Attribute Creation Properties</i>
     <ul>
     <li><a href="#Property-SetCharEncoding">H5Pset_char_encoding</a>
     <li><a href="#Property-GetCharEncoding">H5Pget_char_encoding</a>
@@ -212,6 +1087,12 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetSymK">H5Pget_sym_k</a>
     <li><a href="#Property-SetIstoreK">H5Pset_istore_k</a>
     <li><a href="#Property-GetIstoreK">H5Pget_istore_k</a>
+-->
+<!--
+    <li><a href="#Property-SetFileSpace">H5Pset_file_space</a>
+    <li><a href="#Property-GetFileSpace">H5Pget_file_space</a>
+-->
+<!--
     <li><a href="#Property-SetSharedMesgNIndexes">H5Pset_shared_mesg_nindexes</a>
     <li><a href="#Property-GetSharedMesgNIndexes">H5Pget_shared_mesg_nindexes</a>
     <li><a href="#Property-SetSharedMesgIndex">H5Pset_shared_mesg_index</a>
@@ -247,10 +1128,11 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
     <li><a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
     <li><a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
+-->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
 <!--<li><a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>      -->
 <!--<li><a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>      -->
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+<!-- FOR USE WITH ELECTRONIC VERSION -----------------------------------
     <li><a href="#Property-SetFaplWindows">H5Pset_fapl_windows</a>
     <li><a href="#Property-SetFileImage">H5Pset_file_image</a>
     <li><a href="#Property-GetFileImage">H5Pget_file_image</a>
@@ -286,6 +1168,7 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-SetChunk">H5Pset_chunk</a>
     <li><a href="#Property-GetChunk">H5Pget_chunk</a>
     <li><a href="#Property-SetDeflate">H5Pset_deflate</a>
+-->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
 <!--
     <li><a href="#Property-GetDeflate">H5Pget_deflate</a>
@@ -296,7 +1179,7 @@ In the following lists, italic type indicates a configurable macro.
      This Link Checker error can be ignored. These links appear in 3 other 
      locations in this file.
 -->
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+<!-- FOR USE WITH ELECTRONIC VERSION -----------------------------------
     <li><a href="#Property-SetFillValue">H5Pset_fill_value</a>
     <li><a href="#Property-GetFillValue">H5Pget_fill_value</a>
     <li><a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
@@ -327,7 +1210,13 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetExternal">H5Pget_external</a>
     </ul>
 
-    <p><i>Dataset Access, Memory, and <br> Transfer Properties</i>
+    <p><i>Dataset Access Properties</i>
+    <ul>
+    <li><a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
+    <li><a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
+    </ul>
+
+    <p><i>Dataset Transfer Properties</i>
     <ul>
     <li><a href="#Property-SetBuffer">H5Pset_buffer</a>
     <li><a href="#Property-GetBuffer">H5Pget_buffer</a>
@@ -335,8 +1224,6 @@ In the following lists, italic type indicates a configurable macro.
            *
     <li><a href="#Property-GetPreserve">H5Pget_preserve</a>
            *
-    <li><a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
-    <li><a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
     <li><a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
     <li><a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
     <li><a href="#Property-SetFilterCallback">H5Pset_filter_callback</a>
@@ -383,6 +1270,7 @@ In the following lists, italic type indicates a configurable macro.
 
 
 </td></tr>
+-->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
 <!--
 <tr><td colspan=5 align=right>
@@ -391,8 +1279,9 @@ In the following lists, italic type indicates a configurable macro.
 </td></tr>
 -->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+<!--
 </table>
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+-->
 
 
 
@@ -401,15 +1290,21 @@ In the following lists, italic type indicates a configurable macro.
 <tr>
 <td valign="top" width="31%">
 
-  <i>General Functions</i>
+  <i>General Property List Operations</i>
   <ul>
     <li><a href="#Property-Create">H5Pcreate</a>
     <li><a href="#Property-GetClass">H5Pget_class</a>
     <li><a href="#Property-Copy">H5Pcopy</a>
     <li><a href="#Property-Close">H5Pclose</a>
+-->
+<!-- ====== =====
+    <li><a href="#Property-Encode">H5Pencode</a>
+    <li><a href="#Property-Decode">H5Pdecode</a>
+-->
+<!--
   </ul>
 
-  <i>Generic Properties</i> 
+  <i>Generic Property Operations (Advanced)</i> 
   <ul>
     <li><a href="#Property-CreateClass">H5Pcreate_class</a> 
     <li><a href="#Property-Register"><i>H5Pregister</i></a> 
@@ -442,29 +1337,120 @@ In the following lists, italic type indicates a configurable macro.
   <i>File Access Properties</i>
   <ul>
     <li><a href="#Property-SetDriver">H5Pset_driver</a>
-    <li><a href="#Property-GetDriverInfo">H5Pget_driver_info</a>
-    <li><a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
-    <li><a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
-    <li><a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
-    <li><a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
-    <li><a href="#Property-SetFaplDirect">H5Pset_fapl_direct</a>
-    <li><a href="#Property-GetFaplDirect">H5Pget_fapl_direct</a>
-    <li><a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
-    <li><a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
-    <li><a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
-    <li><a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>    
-    <li><a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
-    <li><a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>   ||
-    <li><a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>   ||
-    <li><a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>   ||
-    <li><a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>   ||
-    <li><a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
-    <li><a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
-    <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
-    <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
+    </ul>
+
+
+<br> 
+<br> 
+<br>
+    ||  
+  <i>Indicates functions <br> 
+           
+  available only in the<br>
+           
+  parallel HDF5 library.</i>
+
+<br> 
+<br>
+    *  
+  <i>Use of these functions <br> 
+           
+  is deprecated in <br>
+           
+  Release 1.8.0.</i>
+
+
+</td></tr>
+-->
+<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+<!--
+<tr><td colspan=5 align=right>
+<br>
+||   <i>Available only in the parallel HDF5 library.</i>
+</td></tr>
+-->
+<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+</table>
+<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
+
+
+
+<!-- FOR USE WITH PRINT VERSION ----------------------------------------
+<table border="0" width="95%">
+<tr>
+<td valign="top" width="31%">
+
+  <i>General Property List Operations</i>
+  <ul>
+    <li><a href="#Property-Create">H5Pcreate</a>
+    <li><a href="#Property-GetClass">H5Pget_class</a>
+    <li><a href="#Property-Copy">H5Pcopy</a>
+    <li><a href="#Property-Close">H5Pclose</a>
+-->
+<!-- ====== =====
+    <li><a href="#Property-Encode">H5Pencode</a>
+    <li><a href="#Property-Decode">H5Pdecode</a>
+-->
+<!--
+  </ul>
+
+  <i>Generic Property Operations (Advanced)</i> 
+  <ul>
+    <li><a href="#Property-CreateClass">H5Pcreate_class</a> 
+    <li><a href="#Property-Register"><i>H5Pregister</i></a> 
+    <li><a href="#Property-Register1">H5Pregister1</a> 
+           *
+    <li><a href="#Property-Register2">H5Pregister2</a> 
+    <li><a href="#Property-Insert"><i>H5Pinsert</i></a> 
+    <li><a href="#Property-Insert1">H5Pinsert1</a> 
+           *
+    <li><a href="#Property-Insert2">H5Pinsert2</a> 
+    <li><a href="#Property-Set">H5Pset</a> 
+    <li><a href="#Property-Exist">H5Pexist</a> 
+    <li><a href="#Property-GetSize">H5Pget_size</a> 
+    <li><a href="#Property-GetNProps">H5Pget_nprops</a> 
+    <li><a href="#Property-GetClassName">H5Pget_class_name</a> 
+    <li><a href="#Property-GetClassParent">H5Pget_class_parent</a> 
+    <li><a href="#Property-IsAClass">H5Pisa_class</a> 
+    <li><a href="#Property-Get">H5Pget</a> 
+    <li><a href="#Property-Equal">H5Pequal</a> 
+    <li><a href="#Property-Iterate">H5Piterate</a> 
+    <li><a href="#Property-CopyProp">H5Pcopy_prop</a> 
+    <li><a href="#Property-Remove">H5Premove</a> 
+    <li><a href="#Property-Unregister">H5Punregister</a> 
+    <li><a href="#Property-CloseClass">H5Pclose_class</a> 
+  </ul>
+  
+</td>
+<td valign="top" width="3%"> </td>
+<td valign="top" width="32%">
+  <i>File Access Properties</i>
+  <ul>
+    <li><a href="#Property-SetDriver">H5Pset_driver</a>
+    <li><a href="#Property-GetDriverInfo">H5Pget_driver_info</a>
+    <li><a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
+    <li><a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
+    <li><a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
+    <li><a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
+    <li><a href="#Property-SetFaplDirect">H5Pset_fapl_direct</a>
+    <li><a href="#Property-GetFaplDirect">H5Pget_fapl_direct</a>
+    <li><a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
+    <li><a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
+    <li><a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
+    <li><a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>    
+    <li><a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
+    <li><a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>   ||
+    <li><a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>   ||
+    <li><a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>   ||
+    <li><a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>   ||
+    <li><a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
+    <li><a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
+    <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
+    <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
     <li><a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
     <li><a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
     <li><a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 <!--<li><a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>      -->
 <!--<li><a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>      -->
@@ -514,6 +1500,12 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetSymK">H5Pget_sym_k</a>
     <li><a href="#Property-SetIstoreK">H5Pset_istore_k</a>
     <li><a href="#Property-GetIstoreK">H5Pget_istore_k</a>
+-->
+<!--
+    <li><a href="#Property-SetFileSpace">H5Pset_file_space</a>
+    <li><a href="#Property-GetFileSpace">H5Pget_file_space</a>
+-->
+<!--
     <li><a href="#Property-SetSharedMesgNIndexes">H5Pset_shared_mesg_nindexes</a>
     <li><a href="#Property-GetSharedMesgNIndexes">H5Pget_shared_mesg_nindexes</a>
     <li><a href="#Property-SetSharedMesgIndex">H5Pset_shared_mesg_index</a>
@@ -529,6 +1521,7 @@ In the following lists, italic type indicates a configurable macro.
 </td>
 </tr>
 </table>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 
 <!-- NEW PAGE -->
@@ -544,6 +1537,7 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-SetChunk">H5Pset_chunk</a>
     <li><a href="#Property-GetChunk">H5Pget_chunk</a>
     <li><a href="#Property-SetDeflate">H5Pset_deflate</a>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 <!--
     <li><a href="#Property-GetDeflate">H5Pget_deflate</a>
@@ -588,7 +1582,13 @@ In the following lists, italic type indicates a configurable macro.
 </td>
 <td valign="top" width="3%"> </td>
 <td valign="top" width="32%">
-  <i>Dataset Access, Memory, and <br> Transfer Properties</i>
+  <i>Dataset Access Properties</i>
+  <ul>
+    <li><a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
+    <li><a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
+  </ul>
+
+  <i>Dataset Transfer Properties</i>
   <ul>
     <li><a href="#Property-SetBuffer">H5Pset_buffer</a>
     <li><a href="#Property-GetBuffer">H5Pget_buffer</a>
@@ -596,8 +1596,6 @@ In the following lists, italic type indicates a configurable macro.
            *
     <li><a href="#Property-GetPreserve">H5Pget_preserve</a>
            *
-    <li><a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
-    <li><a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
     <li><a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
     <li><a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
     <li><a href="#Property-SetDataTransform">H5Pset_data_transform</a>
@@ -637,6 +1635,7 @@ In the following lists, italic type indicates a configurable macro.
 </td>
 </table>
 
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 <!-- NEW PAGE -->
 <!-- FOR USE WITH PRINT VERSION ----------------------------------------
@@ -646,7 +1645,7 @@ In the following lists, italic type indicates a configurable macro.
 <td valign="top" width="31%">
 
 
-  <i>Object Copy and <br> Object Creation Properties</i>
+  <i>Object Creation Properties</i>
   <ul>
     <li><a href="#Property-SetCreateIntermediateGroup">H5Pset_create_intermediate_group</a>
     <li><a href="#Property-GetCreateIntermediateGroup">H5Pget_create_intermediate_group</a>
@@ -656,6 +1655,10 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetAttrCreationOrder">H5Pget_attr_creation_order</a>
     <li><a href="#Property-SetObjTrackTimes">H5Pset_obj_track_times</a>
     <li><a href="#Property-GetObjTrackTimes">H5Pget_obj_track_times</a>
+  </ul>
+
+  <i>Object Copy Properties</i>
+  <ul>
     <li><a href="#Property-SetCopyObject">H5Pset_copy_object</a>
     <li><a href="#Property-GetCopyObject">H5Pget_copy_object</a>
     <li><a href="#Property-AddMergeCommittedDtypePath">H5Padd_merge_committed_dtype_path</a>
@@ -664,6 +1667,7 @@ In the following lists, italic type indicates a configurable macro.
     <li><a href="#Property-GetMcdtSearchCb">H5Pget_mcdt_search_cb</a>
   </ul>
 
+
 <br><br><br><br>
    || <i>Indicates functions<br>
      available only in the<br>
@@ -704,6 +1708,7 @@ In the following lists, italic type indicates a configurable macro.
 </td>
 </tr>
 </table>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 
 <br>
@@ -715,233 +1720,450 @@ See further notes in the description of each function.
 -->
 
     
-<p>
 
 <!-- Electronic version -->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<i>Alphabetical Listing</i>
-<table border="0">
-  <tr>
-    <td valign="top">
-    <ul>
-      <li><a href="#Property-AddMergeCommittedDtypePath">H5Padd_merge_committed_dtype_path</a>
-      <li><a href="#Property-AllFiltersAvail">H5Pall_filters_avail</a>
-      <li><a href="#Property-Close">H5Pclose</a>
-      <li><a href="#Property-CloseClass">H5Pclose_class</a>
-      <li><a href="#Property-Copy">H5Pcopy</a>
-      <li><a href="#Property-CopyProp">H5Pcopy_prop</a>
-      <li><a href="#Property-Create">H5Pcreate</a>
-      <li><a href="#Property-CreateClass">H5Pcreate_class</a>
-      <li><a href="#Property-Equal">H5Pequal</a>
-      <li><a href="#Property-Exist">H5Pexist</a>
-      <li><a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
-      <li><a href="#Property-FreeMergeCommittedDtypePaths">H5Pfree_merge_committed_dtype_paths</a>
-      <li><a href="#Property-Get">H5Pget</a>
-      <li><a href="#Property-GetAlignment">H5Pget_alignment</a>
-      <li><a href="#Property-GetAllocTime">H5Pget_alloc_time</a>
-      <li><a href="#Property-GetAttrCreationOrder">H5Pget_attr_creation_order</a>
-      <li><a href="#Property-GetAttrPhaseChange">H5Pget_attr_phase_change</a>
-      <li><a href="#Property-GetBTreeRatios">H5Pget_btree_ratios</a>
-      <li><a href="#Property-GetBuffer">H5Pget_buffer</a>
-      <li><a href="#Property-GetCache">H5Pget_cache</a>
-      <li><a href="#Property-GetCharEncoding">H5Pget_char_encoding</a>
-      <li><a href="#Property-GetChunk">H5Pget_chunk</a>
-      <li><a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
-      <li><a href="#Property-GetClass">H5Pget_class</a>
-      <li><a href="#Property-GetClassName">H5Pget_class_name</a>
-      <li><a href="#Property-GetClassParent">H5Pget_class_parent</a>
-      <li><a href="#Property-GetCopyObject">H5Pget_copy_object</a>
-      <li><a href="#Property-GetCreateIntermediateGroup">H5Pget_create_intermediate_group</a>
-      <li><a href="#Property-GetDataTransform">H5Pget_data_transform</a>
-      <li><a href="#Property-GetDriver">H5Pget_driver</a>
-      <li><a href="#Property-GetDriverInfo">H5Pget_driver_info</a>
-      <li><a href="#Property-GetDxplMpio">H5Pget_dxpl_mpio</a>   ||
-      <li><a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
-      <li><a href="#Property-GetELinkAccFlags">H5Pget_elink_acc_flags</a>
-      <li><a href="#Property-GetELinkCb">H5Pget_elink_cb</a>
-      <li><a href="#Property-GetELinkFapl">H5Pget_elink_fapl</a>
-      <li><a href="#Property-GetELinkFileCacheSize">H5Pget_elink_file_cache_size</a>
-      <li><a href="#Property-GetELinkPrefix">H5Pget_elink_prefix</a>
-      <li><a href="#Property-GetEstLinkInfo">H5Pget_est_link_info</a>
-      <li><a href="#Property-GetExternal">H5Pget_external</a>
-      <li><a href="#Property-GetExternalCount">H5Pget_external_count</a>
-      <li><a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>
-      <li><a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
-      <li><a href="#Property-GetFaplDirect">H5Pget_fapl_direct</a>
-      <li><a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
-      <li><a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>   ||
-      <li><a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>   ||
-      <li><a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
+
+<!-- ===== 3-COLUMN TEMPLATE =============================================
+<table width="100%" border="1">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    </td>
+<td width="32%" align="left" valign="top">
+    </td>
+<td width="32%" align="left" valign="top">
+    </td></tr>
+</table>
+<p />
+====================================================================== -->
+
+<a name="AlphaIndex"> </a>
+<p>
+
+<table width="100%" border="0">
+<tr><td colspan="6" align="left" valign="top">
+    <hr color="green" size="3" />
+    <i>Alphabetic Listing</i>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+      
+    </td>
+<td valign="top" align="left" width="31%">
+      <a href="#Property-AddMergeCommittedDtypePath">H5Padd_merge_committed_dtype_path</a>
+      <br />
+      <a href="#Property-AllFiltersAvail">H5Pall_filters_avail</a>
+      <br />
+      <a href="#Property-Close">H5Pclose</a>
+      <br />
+      <a href="#Property-CloseClass">H5Pclose_class</a>
+      <br />
+      <a href="#Property-Copy">H5Pcopy</a>
+      <br />
+      <a href="#Property-CopyProp">H5Pcopy_prop</a>
+      <br />
+      <a href="#Property-Create">H5Pcreate</a>
+      <br />
+      <a href="#Property-CreateClass">H5Pcreate_class</a>
+<!-- ====== =====
+      <br />
+      <a href="#Property-Decode">H5Pdecode</a>
+      <br />
+      <a href="#Property-Encode">H5Pencode</a>
+-->
+      <br />
+      <a href="#Property-Equal">H5Pequal</a>
+      <br />
+      <a href="#Property-Exist">H5Pexist</a>
+      <br />
+      <a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
+      <br />
+      <a href="#Property-FreeMergeCommittedDtypePaths">H5Pfree_merge_committed_dtype_paths</a>
+      <br />
+      <a href="#Property-Get">H5Pget</a>
+      <br />
+      <a href="#Property-GetAlignment">H5Pget_alignment</a>
+      <br />
+      <a href="#Property-GetAllocTime">H5Pget_alloc_time</a>
+      <br />
+      <a href="#Property-GetAttrCreationOrder">H5Pget_attr_creation_order</a>
+      <br />
+      <a href="#Property-GetAttrPhaseChange">H5Pget_attr_phase_change</a>
+      <br />
+      <a href="#Property-GetBTreeRatios">H5Pget_btree_ratios</a>
+      <br />
+      <a href="#Property-GetBuffer">H5Pget_buffer</a>
+      <br />
+      <a href="#Property-GetCache">H5Pget_cache</a>
+      <br />
+      <a href="#Property-GetCharEncoding">H5Pget_char_encoding</a>
+      <br />
+      <a href="#Property-GetChunk">H5Pget_chunk</a>
+      <br />
+      <a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
+      <br />
+      <a href="#Property-GetClass">H5Pget_class</a>
+      <br />
+      <a href="#Property-GetClassName">H5Pget_class_name</a>
+      <br />
+      <a href="#Property-GetClassParent">H5Pget_class_parent</a>
+      <br />
+      <a href="#Property-GetCopyObject">H5Pget_copy_object</a>
+      <br />
+      <a href="#Property-GetCoreWriteTracking">H5Pget_core_write_tracking</a>
+      <br />
+      <a href="#Property-GetCreateIntermediateGroup">H5Pget_create_intermediate_group</a>
+      <br />
+      <a href="#Property-GetDataTransform">H5Pget_data_transform</a>
+      <br />
+      <a href="#Property-GetDriver">H5Pget_driver</a>
+      <br />
+      <a href="#Property-GetDriverInfo">H5Pget_driver_info</a>
+      <br />
+      <a href="#Property-GetDxplMpio">H5Pget_dxpl_mpio</a>   ||
+      <br />
+      <a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
+      <br />
+      <a href="#Property-GetELinkAccFlags">H5Pget_elink_acc_flags</a>
+      <br />
+      <a href="#Property-GetELinkCb">H5Pget_elink_cb</a>
+      <br />
+      <a href="#Property-GetELinkFapl">H5Pget_elink_fapl</a>
+      <br />
+      <a href="#Property-GetELinkFileCacheSize">H5Pget_elink_file_cache_size</a>
+      <br />
+      <a href="#Property-GetELinkPrefix">H5Pget_elink_prefix</a>
+      <br />
+      <a href="#Property-GetEstLinkInfo">H5Pget_est_link_info</a>
+      <br />
+      <a href="#Property-GetExternal">H5Pget_external</a>
+      <br />
+      <a href="#Property-GetExternalCount">H5Pget_external_count</a>
+      <br />
+      <a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>
+      <br />
+      <a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
+      <br />
+      <a href="#Property-GetFaplDirect">H5Pget_fapl_direct</a>
+      <br />
+      <a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
+      <br />
+      <a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>   ||
+      <br />
+      <a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>   ||
+      <br />
+      <a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<!--  <li><a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>        -->
+<!--  <br />
+      <a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>        -->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
     
     
-      <li><a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
-      <li><a href="#Property-GetFileImage">H5Pget_file_image</a>
-      <li><a href="#Property-GetFileImageCallbacks">H5Pget_file_image_callbacks</a>
-      <li><a href="#Property-GetFillTime">H5Pget_fill_time</a>
-      <li><a href="#Property-GetFillValue">H5Pget_fill_value</a>
-      <li><a href="#Property-GetFilter"><i>H5Pget_filter</i></a>
-      <li><a href="#Property-GetFilter1">H5Pget_filter1</a>
+      <br />
+      <a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
+      <br />
+      <a href="#Property-GetFileImage">H5Pget_file_image</a>
+      <br />
+      <a href="#Property-GetFileImageCallbacks">H5Pget_file_image_callbacks</a>
+<!--
+      <br />
+      <a href="#Property-GetFileSpace">H5Pget_file_space</a>
+-->
+      <br />
+      <a href="#Property-GetFillTime">H5Pget_fill_time</a>
+      <br />
+      <a href="#Property-GetFillValue">H5Pget_fill_value</a>
+      <br />
+      <a href="#Property-GetFilter"><i>H5Pget_filter</i></a>
+      <br />
+      <a href="#Property-GetFilter1">H5Pget_filter1</a>
              *
-      <li><a href="#Property-GetFilter2">H5Pget_filter2</a>
-      <li><a href="#Property-GetFilterById"><i>H5Pget_filter_by_id</i></a>
-      <li><a href="#Property-GetFilterById1">H5Pget_filter_by_id1</a>
+      <br />
+      <a href="#Property-GetFilter2">H5Pget_filter2</a>
+      <br />
+      <a href="#Property-GetFilterById"><i>H5Pget_filter_by_id</i></a>
+      <br />
+      <a href="#Property-GetFilterById1">H5Pget_filter_by_id1</a>
              *
-      <li><a href="#Property-GetFilterById2">H5Pget_filter_by_id2</a>
-      <li><a href="#Property-GetGCReferences">H5Pget_gc_references</a>
-    </ul>
+      <br />
+      <a href="#Property-GetFilterById2">H5Pget_filter_by_id2</a>
     </td>
 
     <td>   </td>
 
     <td valign="top">
-    <ul>
-      <li><a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
-      <li><a href="#Property-GetIstoreK">H5Pget_istore_k</a>
-      <li><a href="#Property-GetLayout">H5Pget_layout</a>
-      <li><a href="#Property-GetLibverBounds">H5Pget_libver_bounds</a>
-      <li><a href="#Property-GetLinkCreationOrder">H5Pget_link_creation_order</a>
-      <li><a href="#Property-GetLinkPhaseChange">H5Pget_link_phase_change</a>
-      <li><a href="#Property-GetLocalHeapSizeHint">H5Pget_local_heap_size_hint</a>
-      <li><a href="#Property-GetMcdtSearchCb">H5Pget_mcdt_search_cb</a>
-      <li><a href="#Property-GetMdcConfig">H5Pget_mdc_config</a>
-      <li><a href="#Property-GetMetaBlockSize">H5Pget_meta_block_size</a>
-      <li><a href="#Property-GetMpioActualChunkOptMode">H5Pget_mpio_actual_chunk_opt_mode</a>   ||
-      <li><a href="#Property-GetMpioActualIoMode">H5Pget_mpio_actual_io_mode</a>   ||
-      <li><a href="#Property-GetMpioNoCollectiveCause">H5Pget_mpio_no_collective_cause</a>   ||
-      <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
-      <li><a href="#Property-GetNFilters">H5Pget_nfilters</a>
-      <li><a href="#Property-GetNLinks">H5Pget_nlinks</a>
-      <li><a href="#Property-GetNProps">H5Pget_nprops</a>
-      <li><a href="#Property-GetPreserve">H5Pget_preserve</a>
+      <a href="#Property-GetGCReferences">H5Pget_gc_references</a>
+      <br />
+      <a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
+      <br />
+      <a href="#Property-GetIstoreK">H5Pget_istore_k</a>
+      <br />
+      <a href="#Property-GetLayout">H5Pget_layout</a>
+      <br />
+      <a href="#Property-GetLibverBounds">H5Pget_libver_bounds</a>
+      <br />
+      <a href="#Property-GetLinkCreationOrder">H5Pget_link_creation_order</a>
+      <br />
+      <a href="#Property-GetLinkPhaseChange">H5Pget_link_phase_change</a>
+      <br />
+      <a href="#Property-GetLocalHeapSizeHint">H5Pget_local_heap_size_hint</a>
+      <br />
+      <a href="#Property-GetMcdtSearchCb">H5Pget_mcdt_search_cb</a>
+      <br />
+      <a href="#Property-GetMdcConfig">H5Pget_mdc_config</a>
+      <br />
+      <a href="#Property-GetMetaBlockSize">H5Pget_meta_block_size</a>
+      <br />
+      <a href="#Property-GetMpioActualChunkOptMode">H5Pget_mpio_actual_chunk_opt_mode</a>   ||
+      <br />
+      <a href="#Property-GetMpioActualIoMode">H5Pget_mpio_actual_io_mode</a>   ||
+      <br />
+      <a href="#Property-GetMpioNoCollectiveCause">H5Pget_mpio_no_collective_cause</a>   ||
+      <br />
+      <a href="#Property-GetMultiType">H5Pget_multi_type</a>
+      <br />
+      <a href="#Property-GetNFilters">H5Pget_nfilters</a>
+      <br />
+      <a href="#Property-GetNLinks">H5Pget_nlinks</a>
+      <br />
+      <a href="#Property-GetNProps">H5Pget_nprops</a>
+      <br />
+      <a href="#Property-GetPreserve">H5Pget_preserve</a>
            *
-      <li><a href="#Property-GetObjTrackTimes">H5Pget_obj_track_times</a>
-      <li><a href="#Property-GetSharedMesgIndex">H5Pget_shared_mesg_index</a>
-      <li><a href="#Property-GetSharedMesgNIndexes">H5Pget_shared_mesg_nindexes</a>
-      <li><a href="#Property-GetSharedMesgPhaseChange">H5Pget_shared_mesg_phase_change</a>
-      <li><a href="#Property-GetSieveBufSize">H5Pget_sieve_buf_size</a>
-      <li><a href="#Property-GetSize">H5Pget_size</a>
-      <li><a href="#Property-GetSizes">H5Pget_sizes</a>
-      <li><a href="#Property-GetSmallData">H5Pget_small_data_block_size</a>
-      <li><a href="#Property-GetSymK">H5Pget_sym_k</a>
-      <li><a href="#Property-GetTypeConvCb">H5Pget_type_conv_cb</a>
-      <li><a href="#Property-GetUserblock">H5Pget_userblock</a>
-      <li><a href="#Property-GetVersion">H5Pget_version</a>
-      <li><a href="#Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>
-      <li><a href="#Property-Insert"><i>H5Pinsert</i></a>
-      <li><a href="#Property-Insert1">H5Pinsert1</a> 
+      <br />
+      <a href="#Property-GetObjTrackTimes">H5Pget_obj_track_times</a>
+      <br />
+      <a href="#Property-GetSharedMesgIndex">H5Pget_shared_mesg_index</a>
+      <br />
+      <a href="#Property-GetSharedMesgNIndexes">H5Pget_shared_mesg_nindexes</a>
+      <br />
+      <a href="#Property-GetSharedMesgPhaseChange">H5Pget_shared_mesg_phase_change</a>
+      <br />
+      <a href="#Property-GetSieveBufSize">H5Pget_sieve_buf_size</a>
+      <br />
+      <a href="#Property-GetSize">H5Pget_size</a>
+      <br />
+      <a href="#Property-GetSizes">H5Pget_sizes</a>
+      <br />
+      <a href="#Property-GetSmallData">H5Pget_small_data_block_size</a>
+      <br />
+      <a href="#Property-GetSymK">H5Pget_sym_k</a>
+      <br />
+      <a href="#Property-GetTypeConvCb">H5Pget_type_conv_cb</a>
+      <br />
+      <a href="#Property-GetUserblock">H5Pget_userblock</a>
+      <br />
+      <a href="#Property-GetVersion">H5Pget_version</a>
+      <br />
+      <a href="#Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>
+      <br />
+      <a href="#Property-Insert"><i>H5Pinsert</i></a>
+      <br />
+      <a href="#Property-Insert1">H5Pinsert1</a> 
            *
-      <li><a href="#Property-Insert2">H5Pinsert2</a> 
-      <li><a href="#Property-IsAClass">H5Pisa_class</a>
-      <li><a href="#Property-Iterate">H5Piterate</a>
-      <li><a href="#Property-ModifyFilter">H5Pmodify_filter</a>
-      <li><a href="#Property-Register"><i>H5Pregister</i></a>
-      <li><a href="#Property-Register1">H5Pregister1</a> 
+      <br />
+      <a href="#Property-Insert2">H5Pinsert2</a> 
+      <br />
+      <a href="#Property-IsAClass">H5Pisa_class</a>
+      <br />
+      <a href="#Property-Iterate">H5Piterate</a>
+      <br />
+      <a href="#Property-ModifyFilter">H5Pmodify_filter</a>
+      <br />
+      <a href="#Property-Register"><i>H5Pregister</i></a>
+      <br />
+      <a href="#Property-Register1">H5Pregister1</a> 
            *
-      <li><a href="#Property-Register2">H5Pregister2</a> 
-      <li><a href="#Property-Remove">H5Premove</a>
-      <li><a href="#Property-RemoveFilter">H5Premove_filter</a>
-      <li><a href="#Property-Set">H5Pset</a>
-      <li><a href="#Property-SetAlignment">H5Pset_alignment</a>
-      <li><a href="#Property-SetAllocTime">H5Pset_alloc_time</a>
-      <li><a href="#Property-SetAttrCreationOrder">H5Pset_attr_creation_order</a>
-      <li><a href="#Property-SetAttrPhaseChange">H5Pset_attr_phase_change</a>
-      <li><a href="#Property-SetBTreeRatios">H5Pset_btree_ratios</a>
-      <li><a href="#Property-SetBuffer">H5Pset_buffer</a>
-      <li><a href="#Property-SetCache">H5Pset_cache</a>
-      <li><a href="#Property-SetCharEncoding">H5Pset_char_encoding</a>
-      <li><a href="#Property-SetChunk">H5Pset_chunk</a>
-      <li><a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
-      <li><a href="#Property-SetCopyObject">H5Pset_copy_object</a>
-      <li><a href="#Property-SetCreateIntermediateGroup">H5Pset_create_intermediate_group</a>
-      <li><a href="#Property-SetDataTransform">H5Pset_data_transform</a>
-      <li><a href="#Property-SetDeflate">H5Pset_deflate</a>
-      <li><a href="#Property-SetDriver">H5Pset_driver</a>
-      <li><a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>   ||
-      <li><a href="#Property-SetDxplMpioChunkOpt">H5Pset_dxpl_mpio_chunk_opt</a>   ||
-      <li><a href="#Property-SetDxplMpioChunkOptNum">H5Pset_dxpl_mpio_chunk_opt_num</a>   ||
-      <li><a href="#Property-SetDxplMpioChunkOptRatio">H5Pset_dxpl_mpio_chunk_opt_ratio</a>   ||
-      <li><a href="#Property-SetDxplMpioCollectiveOpt">H5Pset_dxpl_mpio_collective_opt</a>   ||
-    </ul>
+      <br />
+      <a href="#Property-Register2">H5Pregister2</a> 
+      <br />
+      <a href="#Property-Remove">H5Premove</a>
+      <br />
+      <a href="#Property-RemoveFilter">H5Premove_filter</a>
+      <br />
+      <a href="#Property-Set">H5Pset</a>
+      <br />
+      <a href="#Property-SetAlignment">H5Pset_alignment</a>
+      <br />
+      <a href="#Property-SetAllocTime">H5Pset_alloc_time</a>
+      <br />
+      <a href="#Property-SetAttrCreationOrder">H5Pset_attr_creation_order</a>
+      <br />
+      <a href="#Property-SetAttrPhaseChange">H5Pset_attr_phase_change</a>
+      <br />
+      <a href="#Property-SetBTreeRatios">H5Pset_btree_ratios</a>
+      <br />
+      <a href="#Property-SetBuffer">H5Pset_buffer</a>
+      <br />
+      <a href="#Property-SetCache">H5Pset_cache</a>
+      <br />
+      <a href="#Property-SetCharEncoding">H5Pset_char_encoding</a>
+      <br />
+      <a href="#Property-SetChunk">H5Pset_chunk</a>
+      <br />
+      <a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
+      <br />
+      <a href="#Property-SetCopyObject">H5Pset_copy_object</a>
+      <br />
+      <a href="#Property-SetCoreWriteTracking">H5Pset_core_write_tracking</a>
+      <br />
+      <a href="#Property-SetCreateIntermediateGroup">H5Pset_create_intermediate_group</a>
+      <br />
+      <a href="#Property-SetDataTransform">H5Pset_data_transform</a>
+      <br />
+      <a href="#Property-SetDeflate">H5Pset_deflate</a>
+      <br />
+      <a href="#Property-SetDriver">H5Pset_driver</a>
+      <br />
+      <a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>   ||
+      <br />
+      <a href="#Property-SetDxplMpioChunkOpt">H5Pset_dxpl_mpio_chunk_opt</a>   ||
+      <br />
+      <a href="#Property-SetDxplMpioChunkOptNum">H5Pset_dxpl_mpio_chunk_opt_num</a>   ||
     </td>
 
     <td>   </td>
 
     <td valign="top">
-    <ul>
-      <li><a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
-      <li><a href="#Property-SetELinkAccFlags">H5Pset_elink_acc_flags</a>
-      <li><a href="#Property-SetELinkCb">H5Pset_elink_cb</a>
-      <li><a href="#Property-SetELinkFapl">H5Pset_elink_fapl</a>
-      <li><a href="#Property-SetELinkFileCacheSize">H5Pset_elink_file_cache_size</a>
-      <li><a href="#Property-SetELinkPrefix">H5Pset_elink_prefix</a>
-      <li><a href="#Property-SetEstLinkInfo">H5Pset_est_link_info</a>
-      <li><a href="#Property-SetExternal">H5Pset_external</a>
-      <li><a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
-      <li><a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
-      <li><a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
-      <li><a href="#Property-SetFaplDirect">H5Pset_fapl_direct</a>
-      <li><a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
-      <li><a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>   ||
-      <li><a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>   ||
-      <li><a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
-      <li><a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
-      <li><a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
-      <li><a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
+      <a href="#Property-SetDxplMpioChunkOptRatio">H5Pset_dxpl_mpio_chunk_opt_ratio</a>   ||
+      <br />
+      <a href="#Property-SetDxplMpioCollectiveOpt">H5Pset_dxpl_mpio_collective_opt</a>   ||
+      <br />
+      <a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
+      <br />
+      <a href="#Property-SetELinkAccFlags">H5Pset_elink_acc_flags</a>
+      <br />
+      <a href="#Property-SetELinkCb">H5Pset_elink_cb</a>
+      <br />
+      <a href="#Property-SetELinkFapl">H5Pset_elink_fapl</a>
+      <br />
+      <a href="#Property-SetELinkFileCacheSize">H5Pset_elink_file_cache_size</a>
+      <br />
+      <a href="#Property-SetELinkPrefix">H5Pset_elink_prefix</a>
+      <br />
+      <a href="#Property-SetEstLinkInfo">H5Pset_est_link_info</a>
+      <br />
+      <a href="#Property-SetExternal">H5Pset_external</a>
+      <br />
+      <a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
+      <br />
+      <a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
+      <br />
+      <a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
+      <br />
+      <a href="#Property-SetFaplDirect">H5Pset_fapl_direct</a>
+      <br />
+      <a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
+      <br />
+      <a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>   ||
+      <br />
+      <a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>   ||
+      <br />
+      <a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
+      <br />
+      <a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
+      <br />
+      <a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
+      <br />
+      <a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<!--  <li><a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>        -->
+<!--  <br />
+      <a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>        -->
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-      <li><a href="#Property-SetFaplWindows">H5Pset_fapl_windows</a>
+      <br />
+      <a href="#Property-SetFaplWindows">H5Pset_fapl_windows</a>
     
     
-      <li><a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
-      <li><a href="#Property-SetFileImage">H5Pset_file_image</a>
-      <li><a href="#Property-SetFileImageCallbacks">H5Pset_file_image_callbacks</a>
-      <li><a href="#Property-SetFillTime">H5Pset_fill_time</a>
-      <li><a href="#Property-SetFillValue">H5Pset_fill_value</a>
-      <li><a href="#Property-SetFilter">H5Pset_filter</a>
-      <li><a href="#Property-SetFilterCallback">H5Pset_filter_callback</a>
-      <li><a href="#Property-SetFletcher32">H5Pset_fletcher32</a>
-      <li><a href="#Property-SetGCReferences">H5Pset_gc_references</a>
-      <li><a href="#Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>
-      <li><a href="#Property-SetIstoreK">H5Pset_istore_k</a>
-      <li><a href="#Property-SetLayout">H5Pset_layout</a>
-      <li><a href="#Property-SetLibverBounds">H5Pset_libver_bounds</a>
-      <li><a href="#Property-SetLinkCreationOrder">H5Pset_link_creation_order</a>
-      <li><a href="#Property-SetLinkPhaseChange">H5Pset_link_phase_change</a>
-      <li><a href="#Property-SetLocalHeapSizeHint">H5Pset_local_heap_size_hint</a>
-      <li><a href="#Property-SetMcdtSearchCb">H5Pset_mcdt_search_cb</a>
-      <li><a href="#Property-SetMdcConfig">H5Pset_mdc_config</a>
-      <li><a href="#Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
-      <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
-      <li><a href="#Property-SetNbit">H5Pset_nbit</a>
-      <li><a href="#Property-SetNLinks">H5Pset_nlinks</a>
-      <li><a href="#Property-SetPreserve">H5Pset_preserve</a>
+      <br />
+      <a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
+      <br />
+      <a href="#Property-SetFileImage">H5Pset_file_image</a>
+      <br />
+      <a href="#Property-SetFileImageCallbacks">H5Pset_file_image_callbacks</a>
+<!--
+      <br />
+      <a href="#Property-SetFileSpace">H5Pset_file_space</a>
+-->
+      <br />
+      <a href="#Property-SetFillTime">H5Pset_fill_time</a>
+      <br />
+      <a href="#Property-SetFillValue">H5Pset_fill_value</a>
+      <br />
+      <a href="#Property-SetFilter">H5Pset_filter</a>
+      <br />
+      <a href="#Property-SetFilterCallback">H5Pset_filter_callback</a>
+      <br />
+      <a href="#Property-SetFletcher32">H5Pset_fletcher32</a>
+      <br />
+      <a href="#Property-SetGCReferences">H5Pset_gc_references</a>
+      <br />
+      <a href="#Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>
+      <br />
+      <a href="#Property-SetIstoreK">H5Pset_istore_k</a>
+      <br />
+      <a href="#Property-SetLayout">H5Pset_layout</a>
+      <br />
+      <a href="#Property-SetLibverBounds">H5Pset_libver_bounds</a>
+      <br />
+      <a href="#Property-SetLinkCreationOrder">H5Pset_link_creation_order</a>
+      <br />
+      <a href="#Property-SetLinkPhaseChange">H5Pset_link_phase_change</a>
+      <br />
+      <a href="#Property-SetLocalHeapSizeHint">H5Pset_local_heap_size_hint</a>
+      <br />
+      <a href="#Property-SetMcdtSearchCb">H5Pset_mcdt_search_cb</a>
+      <br />
+      <a href="#Property-SetMdcConfig">H5Pset_mdc_config</a>
+      <br />
+      <a href="#Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
+      <br />
+      <a href="#Property-SetMultiType">H5Pset_multi_type</a>
+      <br />
+      <a href="#Property-SetNbit">H5Pset_nbit</a>
+      <br />
+      <a href="#Property-SetNLinks">H5Pset_nlinks</a>
+      <br />
+      <a href="#Property-SetPreserve">H5Pset_preserve</a>
            *
-      <li><a href="#Property-SetObjTrackTimes">H5Pset_obj_track_times</a>
-      <li><a href="#Property-SetScaleoffset">H5Pset_scaleoffset</a>
-      <li><a href="#Property-SetSharedMesgIndex">H5Pset_shared_mesg_index</a>
-      <li><a href="#Property-SetSharedMesgNIndexes">H5Pset_shared_mesg_nindexes</a>
-      <li><a href="#Property-SetSharedMesgPhaseChange">H5Pset_shared_mesg_phase_change</a>
-      <li><a href="#Property-SetShuffle">H5Pset_shuffle</a>
-      <li><a href="#Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
-      <li><a href="#Property-SetSizes">H5Pset_sizes</a>
-      <li><a href="#Property-SetSmallData">H5Pset_small_data_block_size</a>
-      <li><a href="#Property-SetSymK">H5Pset_sym_k</a>
-      <li><a href="#Property-SetSzip">H5Pset_szip</a>
-      <li><a href="#Property-SetTypeConvCb">H5Pset_type_conv_cb</a>
-      <li><a href="#Property-SetUserblock">H5Pset_userblock</a>
-      <li><a href="#Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
-      <li><a href="#Property-Unregister">H5Punregister</a>
-    </ul>
-      <br> 
-          ||  <i>Available only in the 
-      <br>
-              parallel HDF5 library.</i>
+      <br />
+      <a href="#Property-SetObjTrackTimes">H5Pset_obj_track_times</a>
+      <br />
+      <a href="#Property-SetScaleoffset">H5Pset_scaleoffset</a>
+      <br />
+      <a href="#Property-SetSharedMesgIndex">H5Pset_shared_mesg_index</a>
+      <br />
+      <a href="#Property-SetSharedMesgNIndexes">H5Pset_shared_mesg_nindexes</a>
+      <br />
+      <a href="#Property-SetSharedMesgPhaseChange">H5Pset_shared_mesg_phase_change</a>
+      <br />
+      <a href="#Property-SetShuffle">H5Pset_shuffle</a>
+      <br />
+      <a href="#Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
+      <br />
+      <a href="#Property-SetSizes">H5Pset_sizes</a>
+      <br />
+      <a href="#Property-SetSmallData">H5Pset_small_data_block_size</a>
+      <br />
+      <a href="#Property-SetSymK">H5Pset_sym_k</a>
+      <br />
+      <a href="#Property-SetSzip">H5Pset_szip</a>
+      <br />
+      <a href="#Property-SetTypeConvCb">H5Pset_type_conv_cb</a>
+      <br />
+      <a href="#Property-SetUserblock">H5Pset_userblock</a>
+      <br />
+      <a href="#Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
+      <br />
+      <a href="#Property-Unregister">H5Punregister</a>
     </td>
   </tr>
+<tr><td colspan="6" align="left" valign="top">
+    <hr color="green" size="3" />
+    </td></tr>
 </table>
 <!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
 
@@ -962,6 +2184,12 @@ See further notes in the description of each function.
       <li><a href="#Property-CopyProp">H5Pcopy_prop</a>
       <li><a href="#Property-Create">H5Pcreate</a>
       <li><a href="#Property-CreateClass">H5Pcreate_class</a>
+-->
+<!-- ====== =====
+      <li><a href="#Property-Decode">H5Pdecode</a>
+      <li><a href="#Property-Encode">H5Pencode</a>
+-->
+<!--
       <li><a href="#Property-Equal">H5Pequal</a>
       <li><a href="#Property-Exist">H5Pexist</a>
       <li><a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
@@ -1001,6 +2229,7 @@ See further notes in the description of each function.
       <li><a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>   ||
       <li><a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>   ||
       <li><a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 <!--  <li><a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>        -->
 <!-- FOR USE WITH PRINT VERSION ----------------------------------------
@@ -1014,6 +2243,11 @@ See further notes in the description of each function.
       <li><a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
       <li><a href="#Property-GetFileImage">H5Pget_file_image</a>
       <li><a href="#Property-GetFileImageCallbacks">H5Pget_file_image_callbacks</a>
+-->
+<!--
+      <li><a href="#Property-GetFileSpace">H5Pget_file_space</a>
+-->
+<!--
       <li><a href="#Property-GetFillTime">H5Pget_fill_time</a>
       <li><a href="#Property-GetFillValue">H5Pget_fill_value</a>
       <li><a href="#Property-GetFilter"><i>H5Pget_filter</i></a>
@@ -1068,6 +2302,7 @@ See further notes in the description of each function.
     </td>
   </tr>
 </table>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 <!-- NEW PAGE -->
 <!-- FOR USE WITH PRINT VERSION ----------------------------------------
@@ -1120,6 +2355,7 @@ See further notes in the description of each function.
       <li><a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
       <li><a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
       <li><a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 <!--  <li><a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>        -->
 <!-- FOR USE WITH PRINT VERSION ----------------------------------------
@@ -1134,6 +2370,11 @@ See further notes in the description of each function.
       <li><a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
       <li><a href="#Property-SetFileImage">H5Pset_file_image</a>
       <li><a href="#Property-SetFileImageCallbacks">H5Pset_file_image_callbacks</a>
+-->
+<!--
+      <li><a href="#Property-SetFileSpace">H5Pset_file_space</a>
+-->
+<!--
       <li><a href="#Property-SetFillTime">H5Pset_fill_time</a>
       <li><a href="#Property-SetFillValue">H5Pset_fill_value</a>
       <li><a href="#Property-SetFilter">H5Pset_filter</a>
@@ -1178,284 +2419,760 @@ See further notes in the description of each function.
     </td>
   </tr>
 </table>
+-->
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
 
 <br>
 <!-- NEW PAGE -->
-<strong>The Fortran Interface:</strong>
-
-<br>
-In general, each Fortran subroutine performs exactly the same task 
-as the corresponding C function.  
-<br>
-
-<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-<p />    
-<table border=0>
-<tr><td valign=top>
-
-    <i>General Property List Operations</i>
-    <ul>
-    <li><a href="#Property-Create">h5pcreate_f</a>
-    <li><a href="#Property-GetClass">h5pget_class_f</a>
-    <li><a href="#Property-Copy">h5pcopy_f</a>
-    <li><a href="#Property-Close">h5pclose_f</a>
-    </ul>
-
 
-    <p><i>Generic Properties</i> 
-    <ul>
-    <li><a href="#Property-CreateClass">h5pcreate_class_f</a>
-    <li><a href="#Property-Register">h5pregister_f</a>
-    <li><a href="#Property-Insert">h5pinsert_f</a>
-    <li><a href="#Property-Set">h5pset_f</a>
-    <li><a href="#Property-Exist">h5pexist_f</a>
-    <li><a href="#Property-GetSize">h5pget_size_f</a>
-    <li><a href="#Property-GetNProps">h5pget_nprops_f</a>
-    <li><a href="#Property-GetClassName">h5pget_class_name_f</a>
-    <li><a href="#Property-GetClassParent">h5pget_class_parent_f</a>
-    <li><a href="#Property-IsAClass">h5pisa_class_f</a>
-    <li><a href="#Property-Get">h5pget_f</a>
-    <li><a href="#Property-Equal">h5pequal_f</a>
-<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-<!--<li><a href="#Property-Iterate">h5piterate_f</a>           -->
-<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-CopyProp">h5pcopy_prop_f</a>
-    <li><a href="#Property-Remove">h5premove_f</a>
-    <li><a href="#Property-Unregister">h5punregister_f</a>
-    <li><a href="#Property-CloseClass">h5pclose_class_f</a>
-    </ul>
-
-
-  <p><i>Link Access Properties</i>
-    <ul>
-    <li><a href="#Property-SetNLinks">h5pset_nlinks_f</a>
-    <li><a href="#Property-GetNLinks">h5pget_nlinks_f</a>
-<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <!--<li><a href="#Property-SetELinkPrefix">h5pset_elink_prefix_f</a>-->
-    <!--<li><a href="#Property-GetELinkPrefix">h5pget_elink_prefix_f</a>-->
-<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-  </ul>
-
-  <i>Group Creation Properties</i>
-    <ul>
-    <li><a href="#Property-SetCreateIntermediateGroup">h5pset_create_inter_group_f</a>
-    <li><a href="#Property-GetCreateIntermediateGroup">h5pget_create_inter_group_f</a>
-    <li><a href="#Property-SetLocalHeapSizeHint">h5pset_local_heap_size_hint_f</a>
-    <li><a href="#Property-GetLocalHeapSizeHint">h5pget_local_heap_size_hint_f</a>
-    <li><a href="#Property-SetLinkCreationOrder">h5pset_link_creation_order_f</a>
-    <li><a href="#Property-GetLinkCreationOrder">h5pget_link_creation_order_f</a>
-    <li><a href="#Property-SetEstLinkInfo">h5pset_est_link_info_f</a>
-    <li><a href="#Property-GetEstLinkInfo">h5pget_est_link_info_f</a>
-    <li><a href="#Property-SetLinkPhaseChange">h5pset_link_phase_change_f</a>
-    <li><a href="#Property-GetLinkPhaseChange">h5pget_link_phase_change_f</a>
-    </ul>
-
-  <i>Object Copy and <br> Object Creation Properties</i>
-    <ul>
-    <li><a href="#Property-SetCreateIntermediateGroup">h5pset_create_inter_group_f</a>
-    <li><a href="#Property-GetCreateIntermediateGroup">h5pget_create_inter_group_f</a>
-    <li><a href="#Property-SetCopyObject">h5pset_copy_object_f</a>
-    <li><a href="#Property-GetCopyObject">h5pget_copy_object_f</a>
-    <li><a href="#Property-SetAttrPhaseChange">h5pset_attr_phase_change_f</a>
-    <li><a href="#Property-GetAttrPhaseChange">h5pget_attr_phase_change_f</a>
-    <li><a href="#Property-SetAttrCreationOrder">h5pset_attr_creation_order_f</a>
-    <li><a href="#Property-GetAttrCreationOrder">h5pget_attr_creation_order_f</a>
-    <li><a href="#Property-SetObjTrackTimes">h5pset_obj_track_times_f</a>
-    <li><a href="#Property-GetObjTrackTimes">h5pget_obj_track_times_f</a>
-  </ul>
 
+<a name="SubroutineIndex">
+<p /> 
+<p />
+</a>
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="3" />
+    <strong>The Fortran Interface:</strong>
+<!--
+    <br />
+    In general, each Fortran subroutine performs exactly the same task 
+    as the corresponding C function.  
+-->
+    </td></tr>
+<!--
+<tr><td width="36%" align="left" valign="top">
+     
+    </td>
+<td width="64%" align="left" valign="top">
+    ||  
+    <i>Indicates functions that are available only in the  
+    parallel HDF5 library.</i>
+    <br> 
+    *  
+    <i>Use of these functions was deprecated as of Release 1.8.0.</i>
+    </td></tr>
+<tr>
+<td colspan="2" align="right" valign="top">
+    Proceed to <a href="#AlphaIndex">Alphabetic Listing</a> 
+    <br>
+    Return to <a href="#FunctionIndex">C Interfaces</a>
+    </td></tr>
+-->
+</table>
 
-</td><td>   </td><td valign="top">
+<table width="100%" border="0" bgcolor="EEEEEE">
+<tr><td colspan="3" align="left" valign="top">
+    <hr color="green" size="1" />
+    </td></tr>
+<tr>
+<td width="33%" align="left" valign="top">
+      <font face="sans-serif" size="-1">
+      General Operations:
+      <br>
+      <a href="#GenPropOpsFuncs_f">General Property List Operations</a>
+      <br> 
+      <br>
+      File Operations:
+      <br>
+      <a href="#FileCreatePropFuncs_f">File Creation Properties</a>
+      <br>
+      <a href="#FileAccessPropFuncs_f">File Access Properties</a>
+      <br> 
+      <br>
+      Group Operations:
+      <br>
+      <a href="#GroupCreatePropFuncs_f">Group Creation Properties</a>
+<!--
+      <br>
+      <a href="#GroupAccessPropFuncs_f">Group Access Properties</a>
+-->
+    </font>
+    </td>
+<td width="33%" align="left" valign="top">
+      <font face="sans-serif" size="-1">
+      Link Operations:
+      <br>
+      <a href="#LinkCreatePropFuncs_f">Link Creation Properties</a>
+      <br>
+      <a href="#LinkAccessPropFuncs_f">Link Access Properties</a>
+      <br> 
+      <br>
+      Dataset Operations:
+      <br>
+      <a href="#DatasetCreatePropFuncs_f">Dataset Creation Properties</a>
+      <br>
+      <a href="#DatasetAccessPropFuncs_f">Dataset Access Properties</a>
+      <br>
+      <a href="#DatasetTransferPropFuncs_f">Dataset Transfer Properties</a>
+    </font>
+    </td>
+<td width="34%" align="left" valign="top">
+      <font face="sans-serif" size="-1">
+<!--
+      Datatype Operations:
+      <br>
+      <a href="#DatatypeCreatePropFuncs_f">Datatype Creation Properties</a>
+      <br>
+      <a href="#DatatypeAccessPropFuncs_f">Datatype Access Properties</a>
+      <br>
+-->
+      Object Operations:
+      <br>
+      <a href="#ObjectCreatePropFuncs_f">Object Creation Properties</a>
+      <br>
+      <a href="#ObjectCopyPropFuncs_f">Object Copy Properties</a>
+      <br> 
+      <br>
+      Attribute Operations:
+      <br>
+      <a href="#AttributeCreatePropFuncs_f">Attribute Creation Properties</a>
+      <br> 
+      <br>
+      Advanced Usage:
+      <br>
+      <a href="#GenericPropFuncs_f">Generic Property Operations</a>
+    </td></tr>
+<tr><td colspan="3" align="left" valign="top">
+    <hr color="green" size="1" />
+    </td></tr>
+<tr>
+</table>
 
 
-   <i>File Creation Properties</i>
-    <ul>
-    <li><a href="#Property-GetVersion">h5pget_version_f</a>
-    <li><a href="#Property-SetUserblock">h5pset_userblock_f</a>
-    <li><a href="#Property-GetUserblock">h5pget_userblock_f</a>
-    <li><a href="#Property-SetSizes">h5pset_sizes_f</a>
-    <li><a href="#Property-GetSizes">h5pget_sizes_f</a>
-    <li><a href="#Property-SetSymK">h5pset_sym_k_f</a>
-    <li><a href="#Property-GetSymK">h5pget_sym_k_f</a>
-    <li><a href="#Property-SetIstoreK">h5pset_istore_k_f</a>
-    <li><a href="#Property-GetIstoreK">h5pget_istore_k_f</a>
-    <li><a href="#Property-SetSharedMesgNIndexes">h5pset_shared_mesg_nindexes_f</a>
-    <li><a href="#Property-SetSharedMesgIndex">h5pset_shared_mesg_index_f</a>
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <a name="GenPropOpsFuncs_f">
+    <i>General Property List Operations</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-Create">h5pcreate_f</a>
+    <br />
+    <a href="#Property-GetClass">h5pget_class_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-Copy">h5pcopy_f</a>
+    <br />
+    <a href="#Property-Close">h5pclose_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="FileCreatePropFuncs_f">
+    <i>File Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetVersion">h5pget_version_f</a>
+    <br />
+    <a href="#Property-SetUserblock">h5pset_userblock_f</a>
+    <br />
+    <a href="#Property-GetUserblock">h5pget_userblock_f</a>
+    <br />
+    <a href="#Property-SetSizes">h5pset_sizes_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetSizes">h5pget_sizes_f</a>
+    <br />
+    <a href="#Property-SetSymK">h5pset_sym_k_f</a>
+    <br />
+    <a href="#Property-GetSymK">h5pget_sym_k_f</a>
+    <br />
+    <a href="#Property-SetIstoreK">h5pset_istore_k_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetIstoreK">h5pget_istore_k_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-<!--    <li><a href="#Property-GetSharedMesgNIndexes">h5pget_shared_mesg_nindexes_f</a> -->
-<!--    <li><a href="#Property-GetSharedMesgIndex">h5pget_shared_mesg_index_f</a> -->
-<!--    <li><a href="#Property-SetSharedMesgPhaseChange">h5pset_shared_mesg_phase_change_f</a>-->
-<!--    <li><a href="#Property-GetSharedMesgPhaseChange">h5pget_shared_mesg_phase_change_f</a>-->
+<!--<br />
+    <a href="#Property-SetFileSpace">h5pset_file_space_f</a>         -->
+<!--<br />
+    <a href="#Property-GetFileSpace">h5pget_file_space_f</a>         -->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    </ul>
-  <i>File Access Properties</i>
-  <ul>
-<!--    <li><a href="#Property-SetDriver">h5pset_driver_f</a>   -->
-<!--    <li><a href="#Property-GetDriverInfo">h5pget_driver_info_f</a>  -->
-    <li><a href="#Property-SetFcloseDegree">h5pset_fclose_degree_f</a>
-    <li><a href="#Property-GetFcloseDegree">h5pget_fclose_degree_f</a>
-    <li><a href="#Property-SetFaplCore">h5pset_fapl_core_f</a>
-    <li><a href="#Property-GetFaplCore">h5pget_fapl_core_f</a>
-    <li><a href="#Property-SetFaplDirect">h5pset_fapl_direct_f</a>
-    <li><a href="#Property-GetFaplDirect">h5pget_fapl_direct_f</a>
-    <li><a href="#Property-SetFaplFamily">h5pset_fapl_family_f</a>
-    <li><a href="#Property-GetFaplFamily">h5pget_fapl_family_f</a>
-    <li><a href="#Property-SetFamilyOffset">h5pset_family_offset_f</a>
+    <br />
+    <a href="#Property-SetSharedMesgNIndexes">h5pset_shared_mesg_nindexes_f</a>
+    <br />
+    <a href="#Property-SetSharedMesgIndex">h5pset_shared_mesg_index_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <!--<li><a href="#Property-GetFamilyOffset">h5pget_family_offset_f</a> -->   
-    <!--<li><a href="#Property-SetFaplLog">h5pset_fapl_log_f</a>--> 
+<!--    <br />
+    <a href="#Property-GetSharedMesgNIndexes">h5pget_shared_mesg_nindexes_f</a> -->
+<!--    <br />
+    <a href="#Property-GetSharedMesgIndex">h5pget_shared_mesg_index_f</a> -->
+<!--    <br />
+    <a href="#Property-SetSharedMesgPhaseChange">h5pset_shared_mesg_phase_change_f</a>-->
+<!--    <br />
+    <a href="#Property-GetSharedMesgPhaseChange">h5pget_shared_mesg_phase_change_f</a>-->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-SetFaplMpio">h5pset_fapl_mpio_f</a>   ||
-    <li><a href="#Property-GetFaplMpio">h5pget_fapl_mpio_f</a>   ||
-    <li><a href="#Property-SetFaplMpiPosix">h5pset_fapl_mpiposix_f</a>   ||
-    <li><a href="#Property-GetFaplMpiPosix">h5pget_fapl_mpiposix_f</a>   ||
-    <li><a href="#Property-SetFaplMulti">h5pset_fapl_multi_f</a>
-    <li><a href="#Property-GetFaplMulti">h5pget_fapl_multi_f</a>
-<!--    <li><a href="#Property-SetMultiType">h5pset_multi_type_f</a>    -->
-<!--    <li><a href="#Property-GetMultiType">h5pget_multi_type_f</a>    -->
-    <li><a href="#Property-SetFaplSplit">h5pset_fapl_split_f</a>
-    <li><a href="#Property-SetFaplSec2">h5pset_fapl_sec2_f</a>
-    <li><a href="#Property-SetFaplStdio">h5pset_fapl_stdio_f</a>
-    <li><a href="#Property-GetDriver">h5pget_driver_f</a>
-    <li><a href="#Property-SetMetaBlockSize">h5pset_meta_block_size_f</a>
-    <li><a href="#Property-GetMetaBlockSize">h5pget_meta_block_size_f</a>
-    <li><a href="#Property-SetSieveBufSize">h5pset_sieve_buf_size_f</a>
-    <li><a href="#Property-GetSieveBufSize">h5pget_sieve_buf_size_f</a>
-    <li><a href="#Property-SetAlignment">h5pset_alignment_f</a>
-    <li><a href="#Property-GetAlignment">h5pget_alignment_f</a>
-    <li><a href="#Property-SetCache">h5pset_cache_f</a>
-    <li><a href="#Property-GetCache">h5pget_cache_f</a>
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="FileAccessPropFuncs_f">
+    <i>File Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+<!--    <a href="#Property-SetDriver">h5pset_driver_f</a> 
+    <br />                                                  --> 
+<!--    <a href="#Property-GetDriverInfo">h5pget_driver_info_f</a>
+    <br />                                                  --> 
+    <a href="#Property-SetFcloseDegree">h5pset_fclose_degree_f</a>
+    <br />
+    <a href="#Property-GetFcloseDegree">h5pget_fclose_degree_f</a>
+    <br />
+    <a href="#Property-SetFaplCore">h5pset_fapl_core_f</a>
+    <br />
+    <a href="#Property-GetFaplCore">h5pget_fapl_core_f</a>
+    <br />
+    <a href="#Property-SetFaplDirect">h5pset_fapl_direct_f</a>
+    <br />
+    <a href="#Property-GetFaplDirect">h5pget_fapl_direct_f</a>
+    <br />
+    <a href="#Property-SetFaplFamily">h5pset_fapl_family_f</a>
+    <br />
+    <a href="#Property-GetFaplFamily">h5pget_fapl_family_f</a>
+    <br />
+    <a href="#Property-SetFamilyOffset">h5pset_family_offset_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-<!--<li><a href="#Property-GetMdcConfig">h5pget_mdc_config_f</a></li>   -->
-<!--<li><a href="#Property-SetMdcConfig">h5pset_mdc_config_f</a></li>   -->
+    <!--<br />
+    <a href="#Property-GetFamilyOffset">h5pget_family_offset_f</a> -->   
+    <!--<br />
+    <a href="#Property-SetFaplLog">h5pset_fapl_log_f</a>--> 
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-SetGCReferences">h5pset_gc_references_f</a>
-    <li><a href="#Property-GetGCReferences">h5pget_gc_references_f</a>
-    <li><a href="#Property-SetSmallData">h5pset_small_data_block_size_f</a>
-    <li><a href="#Property-GetSmallData">h5pget_small_data_block_size_f</a>
-    <li><a href="#Property-SetLibverBounds">h5pset_libver_bounds_f</a>
+    <br />
+    <a href="#Property-SetFaplMpio">h5pset_fapl_mpio_f</a>   ||
+    <br />
+    <a href="#Property-GetFaplMpio">h5pget_fapl_mpio_f</a>   ||
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetFaplMpiPosix">h5pset_fapl_mpiposix_f</a>   ||
+    <br />
+    <a href="#Property-GetFaplMpiPosix">h5pget_fapl_mpiposix_f</a>   ||
+    <br />
+    <a href="#Property-SetFaplMulti">h5pset_fapl_multi_f</a>
+    <br />
+    <a href="#Property-GetFaplMulti">h5pget_fapl_multi_f</a>
+<!--    <br />
+    <a href="#Property-SetMultiType">h5pset_multi_type_f</a>    -->
+<!--    <br />
+    <a href="#Property-GetMultiType">h5pget_multi_type_f</a>    -->
+    <br />
+    <a href="#Property-SetFaplSplit">h5pset_fapl_split_f</a>
+    <br />
+    <a href="#Property-SetFaplSec2">h5pset_fapl_sec2_f</a>
+    <br />
+    <a href="#Property-SetFaplStdio">h5pset_fapl_stdio_f</a>
+    <br />
+    <a href="#Property-SetFileImage">h5pset_file_image_f</a>
+    <br />
+    <a href="#Property-GetFileImage">h5pget_file_image_f</a>
+    <br />
+    <a href="#Property-GetDriver">h5pget_driver_f</a>
+    <br />
+    <a href="#Property-SetMetaBlockSize">h5pset_meta_block_size_f</a>
+    <br />
+    <a href="#Property-GetMetaBlockSize">h5pget_meta_block_size_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetSieveBufSize">h5pset_sieve_buf_size_f</a>
+    <br />
+    <a href="#Property-GetSieveBufSize">h5pget_sieve_buf_size_f</a>
+    <br />
+    <a href="#Property-SetAlignment">h5pset_alignment_f</a>
+    <br />
+    <a href="#Property-GetAlignment">h5pget_alignment_f</a>
+    <br />
+    <a href="#Property-SetCache">h5pset_cache_f</a>
+    <br />
+    <a href="#Property-GetCache">h5pget_cache_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-<!--    <li><a href="#Property-GetLibverBounds">h5pget_libver_bounds_f</a>-->
+<!--<br />
+    <a href="#Property-GetMdcConfig">h5pget_mdc_config_f</a></li>   -->
+<!--<br />
+    <a href="#Property-SetMdcConfig">h5pset_mdc_config_f</a></li>   -->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-  </ul>
+    <br />
+    <a href="#Property-SetGCReferences">h5pset_gc_references_f</a>
+    <br />
+    <a href="#Property-GetGCReferences">h5pget_gc_references_f</a>
+    <br />
+    <a href="#Property-SetSmallData">h5pset_small_data_block_size_f</a>
+    <br />
+    <a href="#Property-GetSmallData">h5pget_small_data_block_size_f</a>
+    <br />
+    <a href="#Property-SetLibverBounds">h5pset_libver_bounds_f</a>
+<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
+<!--    <br />
+    <a href="#Property-GetLibverBounds">h5pget_libver_bounds_f</a>-->
+<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
+    </td></tr>
+</table>
 
-  <i>String Properties</i>
-   <ul>
-     <li><a href="#Property-SetCharEncoding">h5pset_char_encoding_f</a>
-<!--     <li><a href="#Property-GetCharEncoding">h5pget_char_encoding_f</a> -->
-  </ul>
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="GroupCreatePropFuncs_f">
+    <i>Group Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetLocalHeapSizeHint">h5pset_local_heap_size_hint_f</a>
+    <br />
+    <a href="#Property-GetLocalHeapSizeHint">h5pget_local_heap_size_hint_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetLinkCreationOrder">h5pset_link_creation_order_f</a>
+    <br />
+    <a href="#Property-GetLinkCreationOrder">h5pget_link_creation_order_f</a>
+    <br />
+    <a href="#Property-SetEstLinkInfo">h5pset_est_link_info_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetEstLinkInfo">h5pget_est_link_info_f</a>
+    <br />
+    <a href="#Property-SetLinkPhaseChange">h5pset_link_phase_change_f</a>
+    <br />
+    <a href="#Property-GetLinkPhaseChange">h5pget_link_phase_change_f</a>
+    </td></tr>
+</table>
 
 
-</td><td>   </td><td valign=top>
+<!--
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="GroupAccessPropFuncs_f">
+    <i>Group Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+-->
 
 
-    <p><i>Dataset Creation Properties</i>
-    <ul>
-    <li><a href="#Property-SetLayout">h5pset_layout_f</a>
-    <li><a href="#Property-GetLayout">h5pget_layout_f</a>
-    <li><a href="#Property-SetChunk">h5pset_chunk_f</a>
-    <li><a href="#Property-GetChunk">h5pget_chunk_f</a>
-    <li><a href="#Property-SetDeflate">h5pset_deflate_f</a>
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="LinkCreatePropFuncs_f">
+    <i>Link Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     <a href="#Property-SetCharEncoding">h5pset_char_encoding_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetCharEncoding">h5pget_char_encoding_f</a> 
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="LinkAccessPropFuncs_f">
+    <i>Link Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetNLinks">h5pset_nlinks_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetNLinks">h5pget_nlinks_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+     
+<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
+    <!--<br />
+    <a href="#Property-SetELinkPrefix">h5pset_elink_prefix_f</a>-->
+    <!--<br />
+    <a href="#Property-GetELinkPrefix">h5pget_elink_prefix_f</a>-->
+<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatasetCreatePropFuncs_f">
+    <i>Dataset Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetLayout">h5pset_layout_f</a>
+    <br />
+    <a href="#Property-GetLayout">h5pget_layout_f</a>
+    <br />
+    <a href="#Property-SetChunk">h5pset_chunk_f</a>
+    <br />
+    <a href="#Property-GetChunk">h5pget_chunk_f</a>
+    <br />
+    <a href="#Property-SetDeflate">h5pset_deflate_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
 <!--
-    <li><a href="#Property-GetDeflate">h5pget_deflate</a>
-    <li><a href="#Property-SetCompression">h5pset_compression_f</a>
-    <li><a href="#Property-GetCompression">h5pget_compression_f</a>
+    <br />
+    <a href="#Property-GetDeflate">h5pget_deflate</a>
+    <br />
+    <a href="#Property-SetCompression">h5pset_compression_f</a>
+    <br />
+    <a href="#Property-GetCompression">h5pget_compression_f</a>
 -->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-SetFillValue">h5pset_fill_value_f</a>
-    <li><a href="#Property-GetFillValue">h5pget_fill_value_f</a>
+    <br />
+    <a href="#Property-SetFillValue">h5pset_fill_value_f</a>
+    <br />
+    <a href="#Property-GetFillValue">h5pget_fill_value_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-<!--    <li><a href="#Property-FillValueDefined">h5pfill_value_defined_f</a> -->
+<!--    <br />
+    <a href="#Property-FillValueDefined">h5pfill_value_defined_f</a> -->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-SetFillTime">h5pset_fill_time_f</a>
-    <li><a href="#Property-GetFillTime">h5pget_fill_time_f</a>
-    <li><a href="#Property-SetAllocTime">h5pset_alloc_time_f</a>
-    <li><a href="#Property-GetAllocTime">h5pget_alloc_time_f</a>
-    <li><a href="#Property-SetFilter">h5pset_filter_f</a>
+    <br />
+    <a href="#Property-SetFillTime">h5pset_fill_time_f</a>
+    <br />
+    <a href="#Property-GetFillTime">h5pget_fill_time_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetAllocTime">h5pset_alloc_time_f</a>
+    <br />
+    <a href="#Property-GetAllocTime">h5pget_alloc_time_f</a>
+    <br />
+    <a href="#Property-SetFilter">h5pset_filter_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-<!--    <li><a href="#Property-AllFiltersAvail">h5pall_filters_avail_f</a> -->
+<!--    <br />
+    <a href="#Property-AllFiltersAvail">h5pall_filters_avail_f</a> -->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-GetNFilters">h5pget_nfilters_f</a>
-    <li><a href="#Property-GetFilter">h5pget_filter_f</a>
-    <li><a href="#Property-GetFilterById">h5pget_filter_by_id_f</a>
-    <li><a href="#Property-ModifyFilter">h5pmodify_filter_f</a>
-    <li><a href="#Property-RemoveFilter">h5premove_filter_f</a>
-    <li><a href="#Property-SetFletcher32">h5pset_fletcher32_f</a>
-    <li><a href="#Property-SetNbit">h5pset_nbit_f</a>
-    <li><a href="#Property-SetScaleoffset">h5pset_scaleoffset_f</a>
-    <li><a href="#Property-SetShuffle">h5pset_shuffle_f</a>
-    <li><a href="#Property-SetSzip">h5pset_szip_f</a>
-    <li><a href="#Property-SetExternal">h5pset_external_f</a>
-    <li><a href="#Property-GetExternalCount">h5pget_external_count_f</a>
-    <li><a href="#Property-GetExternal">h5pget_external_f</a>
-    </ul>
-  <i>Dataset Access, Memory, and <br> Transfer Properties</i>
-  <ul>
-    <li><a href="#Property-SetBuffer">h5pset_buffer_f</a>
-    <li><a href="#Property-GetBuffer">h5pget_buffer_f</a>
-    <li><a href="#Property-SetPreserve">h5pset_preserve_f</a>
+    <br />
+    <a href="#Property-GetNFilters">h5pget_nfilters_f</a>
+    <br />
+    <a href="#Property-GetFilter">h5pget_filter_f</a>
+    <br />
+    <a href="#Property-GetFilterById">h5pget_filter_by_id_f</a>
+    <br />
+    <a href="#Property-ModifyFilter">h5pmodify_filter_f</a>
+    <br />
+    <a href="#Property-RemoveFilter">h5premove_filter_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetFletcher32">h5pset_fletcher32_f</a>
+    <br />
+    <a href="#Property-SetNbit">h5pset_nbit_f</a>
+    <br />
+    <a href="#Property-SetScaleoffset">h5pset_scaleoffset_f</a>
+    <br />
+    <a href="#Property-SetShuffle">h5pset_shuffle_f</a>
+    <br />
+    <a href="#Property-SetSzip">h5pset_szip_f</a>
+    <br />
+    <a href="#Property-SetExternal">h5pset_external_f</a>
+    <br />
+    <a href="#Property-GetExternalCount">h5pget_external_count_f</a>
+    <br />
+    <a href="#Property-GetExternal">h5pget_external_f</a>
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatasetAccessPropFuncs_f">
+    <i>Dataset Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetChunkCache">h5pset_chunk_cache_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetChunkCache">h5pget_chunk_cache_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatasetTransferPropFuncs_f">
+    <i>Dataset Transfer Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetBuffer">h5pset_buffer_f</a>
+    <br />
+    <a href="#Property-GetBuffer">h5pget_buffer_f</a>
+    <br />
+    <a href="#Property-SetPreserve">h5pset_preserve_f</a>
      *
-    <li><a href="#Property-GetPreserve">h5pget_preserve_f</a>
+    <br />
+    <a href="#Property-GetPreserve">h5pget_preserve_f</a>
      *
-    <li><a href="#Property-SetChunkCache">h5pset_chunk_cache_f</a>
-    <li><a href="#Property-GetChunkCache">h5pget_chunk_cache_f</a>
-    <li><a href="#Property-SetEdcCheck">h5pset_edc_check_f</a>
-    <li><a href="#Property-GetEdcCheck">h5pget_edc_check_f</a>
-    <li><a href="#Property-SetDataTransform">h5pset_data_transform_f</a>
-    <li><a href="#Property-GetDataTransform">h5pget_data_transform_f</a>
+    <br />
+    <a href="#Property-SetEdcCheck">h5pset_edc_check_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetEdcCheck">h5pget_edc_check_f</a>
+    <br />
+    <a href="#Property-SetDataTransform">h5pset_data_transform_f</a>
+    <br />
+    <a href="#Property-GetDataTransform">h5pget_data_transform_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <!--<li><a href="#Property-SetFilterCallback">h5pset_filter_callback_f</a>-->
+    <!--<br />
+    <a href="#Property-SetFilterCallback">h5pset_filter_callback_f</a>-->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-SetHyperVectorSize">h5pset_hyper_vector_size_f</a>
-    <li><a href="#Property-GetHyperVectorSize">h5pget_hyper_vector_size_f</a>
-    <li><a href="#Property-SetBTreeRatios">h5pset_btree_ratios_f</a>
-    <li><a href="#Property-GetBTreeRatios">h5pget_btree_ratios_f</a>
+    <br />
+    <a href="#Property-SetHyperVectorSize">h5pset_hyper_vector_size_f</a>
+    <br />
+    <a href="#Property-GetHyperVectorSize">h5pget_hyper_vector_size_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetBTreeRatios">h5pset_btree_ratios_f</a>
+    <br />
+    <a href="#Property-GetBTreeRatios">h5pget_btree_ratios_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <!--<li><a href="#Property-SetVLMemManager">h5pset_vlen_mem_manager_f</a>-->
-    <!--<li><a href="#Property-GetVLMemManager">h5pget_vlen_mem_manager_f</a>-->
+    <!--<br />
+    <a href="#Property-SetVLMemManager">h5pset_vlen_mem_manager_f</a>-->
+    <!--<br />
+    <a href="#Property-GetVLMemManager">h5pget_vlen_mem_manager_f</a>-->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-SetDxplMpio">h5pset_dxpl_mpio_f</a>   ||
+    <br />
+    <a href="#Property-SetDxplMpio">h5pset_dxpl_mpio_f</a>   ||
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <!--<li><a href="#Property-SetDxplMpioChunkOpt">h5pset_dxpl_mpio_chunk_opt_f</a>   ||-->
-    <!--<li><a href="#Property-SetDxplMpioChunkOptNum">h5pset_dxpl_mpio_chunk_opt_num_f</a>   ||-->
-    <!--<li><a href="#Property-SetDxplMpioChunkOptRatio">h5pset_dxpl_mpio_chunk_opt_ratio_f</a>   ||-->
-    <!--<li><a href="#Property-SetDxplMpioCollectiveOpt">h5pset_dxpl_mpio_collective_opt_f</a>   ||-->
+    <!--<br />
+    <a href="#Property-SetDxplMpioChunkOpt">h5pset_dxpl_mpio_chunk_opt_f</a>   ||-->
+    <!--<br />
+    <a href="#Property-SetDxplMpioChunkOptNum">h5pset_dxpl_mpio_chunk_opt_num_f</a>   ||-->
+    <!--<br />
+    <a href="#Property-SetDxplMpioChunkOptRatio">h5pset_dxpl_mpio_chunk_opt_ratio_f</a>   ||-->
+    <!--<br />
+    <a href="#Property-SetDxplMpioCollectiveOpt">h5pset_dxpl_mpio_collective_opt_f</a>   ||-->
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
-    <li><a href="#Property-GetDxplMpio">h5pget_dxpl_mpio_f</a>   ||
-    <li><a href="#Property-GetMpioActualIoMode">h5pget_mpio_actual_io_mode_f</a>   ||
-  </ul>
+    <br />
+    <a href="#Property-GetDxplMpio">h5pget_dxpl_mpio_f</a>   ||
+    <br />
+    <a href="#Property-GetMpioActualIoMode">h5pget_mpio_actual_io_mode_f</a>   ||
+    </td></tr>
+</table>
 
 
-<br>
-    ||  
-  <i>Indicates functions <br> 
-           
-  available only in the<br>
-           
-  parallel HDF5 library.</i>
+<!--
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatatypeCreatePropFuncs_f">
+    <i>Datatype Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+-->
 
-<br> 
-<br>
-    *  
-  <i>Use of these functions <br> 
-           
-  is deprecated in <br>
-           
-  Release 1.8.0.</i>
 
+<!--
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="DatatypeAccessPropFuncs_f">
+    <i>Datatype Access Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+-->
 
 
-</td></tr>
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="ObjectCreatePropFuncs_f">
+    <i>Object Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetCreateIntermediateGroup">h5pset_create_inter_group_f</a>
+    <br />
+    <a href="#Property-GetCreateIntermediateGroup">h5pget_create_inter_group_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetAttrPhaseChange">h5pset_attr_phase_change_f</a>
+    <br />
+    <a href="#Property-GetAttrPhaseChange">h5pget_attr_phase_change_f</a>
+    <br />
+    <a href="#Property-SetAttrCreationOrder">h5pset_attr_creation_order_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetAttrCreationOrder">h5pget_attr_creation_order_f</a>
+    <br />
+    <a href="#Property-SetObjTrackTimes">h5pset_obj_track_times_f</a>
+    <br />
+    <a href="#Property-GetObjTrackTimes">h5pget_obj_track_times_f</a>
+    </td></tr>
 </table>
 
 
-<table border=0 width=90%>
-<tr><td valign=top>
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="ObjectCopyPropFuncs_f">
+    <i>Object Copy Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetCopyObject">h5pset_copy_object_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetCopyObject">h5pget_copy_object_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
 
-</td></tr>
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="AttributeCreatePropFuncs_f">
+    <i>Attribute Creation Properties</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+     <a href="#Property-SetCharEncoding">h5pset_char_encoding_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetCharEncoding">h5pget_char_encoding_f</a> 
+    </td>
+<td width="32%" align="left" valign="top">
+     
+    </td></tr>
+</table>
+
+
+<table width="100%" border="0">
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="1" />
+    <a name="GenericPropFuncs_f">
+    <i>Generic Property Operations (Advanced)</i>
+    </a>
+    </td></tr>
+<tr>
+<td width="4%" valign=top> </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-CreateClass">h5pcreate_class_f</a>
+    <br />
+    <a href="#Property-Register">h5pregister_f</a>
+    <br />
+    <a href="#Property-Insert">h5pinsert_f</a>
+    <br />
+    <a href="#Property-Set">h5pset_f</a>
+    <br />
+    <a href="#Property-Get">h5pget_f</a>
+    <br />
+    <a href="#Property-Exist">h5pexist_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-GetSize">h5pget_size_f</a>
+    <br />
+    <a href="#Property-GetNProps">h5pget_nprops_f</a>
+    <br />
+    <a href="#Property-GetClassName">h5pget_class_name_f</a>
+    <br />
+    <a href="#Property-GetClassParent">h5pget_class_parent_f</a>
+    <br />
+    <a href="#Property-IsAClass">h5pisa_class_f</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-Equal">h5pequal_f</a>
+<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
+<!--<br />
+    <a href="#Property-Iterate">h5piterate_f</a>           -->
+<!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
+    <br />
+    <a href="#Property-CopyProp">h5pcopy_prop_f</a>
+    <br />
+    <a href="#Property-Remove">h5premove_f</a>
+    <br />
+    <a href="#Property-Unregister">h5punregister_f</a>
+    <br />
+    <a href="#Property-CloseClass">h5pclose_class_f</a>
+    </td></tr>
+<tr><td colspan="4" align="left" valign="top">
+    <hr color="green" size="3" />
+    </td></tr>
 </table>
+
+
+
+<br>
+
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
 
 
@@ -1472,7 +3189,7 @@ as the corresponding C function.
     </ul>
 
 
-    <p><i>Generic Properties</i> 
+    <p><i>Generic Properties (Advanced)</i> 
     <ul>
     <li><a href="#Property-CreateClass">h5pcreate_class_f</a>
     <li><a href="#Property-Register">h5pregister_f</a>
@@ -1549,12 +3266,10 @@ as the corresponding C function.
     <li><a href="#Property-GetLinkPhaseChange">h5pget_link_phase_change_f</a>
     </ul>
 
-  <i>Object Copy and <br> Object Creation Properties</i>
+  <i>Object Creation Properties</i>
     <ul>
     <li><a href="#Property-SetCreateIntermediateGroup">h5pset_create_inter_group_f</a>
     <li><a href="#Property-GetCreateIntermediateGroup">h5pget_create_inter_group_f</a>
-    <li><a href="#Property-SetCopyObject">h5pset_copy_object_f</a>
-    <li><a href="#Property-GetCopyObject">h5pget_copy_object_f</a>
     <li><a href="#Property-SetAttrPhaseChange">h5pset_attr_phase_change_f</a>
     <li><a href="#Property-GetAttrPhaseChange">h5pget_attr_phase_change_f</a>
     <li><a href="#Property-SetAttrCreationOrder">h5pset_attr_creation_order_f</a>
@@ -1563,6 +3278,12 @@ as the corresponding C function.
     <li><a href="#Property-GetObjTrackTimes">h5pget_obj_track_times_f</a>
   </ul>
 
+  <i>Object Copy Properties</i>
+    <ul>
+    <li><a href="#Property-SetCopyObject">h5pset_copy_object_f</a>
+    <li><a href="#Property-GetCopyObject">h5pget_copy_object_f</a>
+    </ul>
+
 
 
 </td><td>   </td><td valign=top>
@@ -1671,6 +3392,10 @@ as the corresponding C function.
     <li><a href="#Property-GetSymK">h5pget_sym_k_f</a>
     <li><a href="#Property-SetIstoreK">h5pset_istore_k_f</a>
     <li><a href="#Property-GetIstoreK">h5pget_istore_k_f</a>
+<!-- FOR USE WITH PRINT VERSION ---------------------------------------->
+<!--<li><a href="#Property-SetFileSpace">h5pset_file_space_f</a>    -->
+<!--<li><a href="#Property-GetFileSpace">h5pget_file_space_f</a>    -->
+<!-- FOR USE WITH PRINT VERSION ----------------------------------------
     <li><a href="#Property-SetSharedMesgNIndexes">h5pset_shared_mesg_nindexes_f</a>
     <li><a href="#Property-SetSharedMesgIndex">h5pset_shared_mesg_index_f</a>
 <!-- FOR USE WITH PRINT VERSION ---------------------------------------->
@@ -1729,6 +3454,8 @@ as the corresponding C function.
     <li><a href="#Property-SetFaplSplit">h5pset_fapl_split_f</a>
     <li><a href="#Property-SetFaplSec2">h5pset_fapl_sec2_f</a>
     <li><a href="#Property-SetFaplStdio">h5pset_fapl_stdio_f</a>
+    <li><a href="#Property-SetFileImage">h5pset_file_image_f</a>
+    <li><a href="#Property-GetFileImage">h5pget_file_image_f</a>
     <li><a href="#Property-GetDriver">h5pget_driver_f</a>
     <li><a href="#Property-SetMetaBlockSize">h5pset_meta_block_size_f</a>
     <li><a href="#Property-GetMetaBlockSize">h5pget_meta_block_size_f</a>
@@ -1761,8 +3488,6 @@ as the corresponding C function.
 <!--       Include special topic files                       -->
 <!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
 
-<?php include("../_topic/filter_behavior.htm"); ?>
-
 <!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
 <!--       Include function files                            -->
 <!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
@@ -1775,7 +3500,10 @@ as the corresponding C function.
 <?php include("H5P/H5Pcopy_prop.htm"); ?>
 <?php include("H5P/H5Pcreate.htm"); ?>
 <?php include("H5P/H5Pcreate_class.htm"); ?>
-<?php include("H5P/H5Premove_filter.htm"); ?>
+<!-- ====== =====
+<?php include("H5P/H5Pdecode.htm"); ?>
+<?php include("H5P/H5Pencode.htm"); ?>
+-->
 <?php include("H5P/H5Pequal.htm"); ?>
 <?php include("H5P/H5Pexist.htm"); ?>
 <?php include("H5P/H5Pfill_value_defined.htm"); ?>
@@ -1795,6 +3523,7 @@ as the corresponding C function.
 <?php include("H5P/H5Pget_class_name.htm"); ?>
 <?php include("H5P/H5Pget_class_parent.htm"); ?>
 <?php include("H5P/H5Pget_copy_object.htm"); ?>
+<?php include("H5P/H5Pget_core_write_tracking.htm"); ?>
 <?php include("H5P/H5Pget_create_intermediate_group.htm"); ?>
 <?php include("H5P/H5Pget_data_transform.htm"); ?>
 <?php include("H5P/H5Pget_driver.htm"); ?>
@@ -1821,6 +3550,7 @@ as the corresponding C function.
 <?php include("H5P/H5Pget_fclose_degree.htm"); ?>
 <?php include("H5P/H5Pget_file_image.htm"); ?>
 <?php include("H5P/H5Pget_file_image_callbacks.htm"); ?>
+<!-- <?php include("H5P/H5Pget_file_space.htm"); ?> -->
 <?php include("H5P/H5Pget_fill_time.htm"); ?>
 <?php include("H5P/H5Pget_fill_value.htm"); ?>
 <?php include("H5P/H5Pget_filter.htm"); ?>
@@ -1871,6 +3601,7 @@ as the corresponding C function.
 <?php include("H5P/H5Pregister1.htm"); ?>
 <?php include("H5P/H5Pregister2.htm"); ?>
 <?php include("H5P/H5Premove.htm"); ?>
+<?php include("H5P/H5Premove_filter.htm"); ?>
 <?php include("H5P/H5Pset.htm"); ?>
 <?php include("H5P/H5Pset_alignment.htm"); ?>
 <?php include("H5P/H5Pset_alloc_time.htm"); ?>
@@ -1883,6 +3614,7 @@ as the corresponding C function.
 <?php include("H5P/H5Pset_chunk.htm"); ?>
 <?php include("H5P/H5Pset_chunk_cache.htm"); ?>
 <?php include("H5P/H5Pset_copy_object.htm"); ?>
+<?php include("H5P/H5Pset_core_write_tracking.htm"); ?>
 <?php include("H5P/H5Pset_create_intermediate_group.htm"); ?>
 <?php include("H5P/H5Pset_data_transform.htm"); ?>
 <?php include("H5P/H5Pset_deflate.htm"); ?>
@@ -1917,6 +3649,7 @@ as the corresponding C function.
 <?php include("H5P/H5Pset_fclose_degree.htm"); ?>
 <?php include("H5P/H5Pset_file_image.htm"); ?>
 <?php include("H5P/H5Pset_file_image_callbacks.htm"); ?>
+<!-- <?php include("H5P/H5Pset_file_space.htm"); ?> -->
 <?php include("H5P/H5Pset_fill_time.htm"); ?>
 <?php include("H5P/H5Pset_fill_value.htm"); ?>
 <?php include("H5P/H5Pset_filter.htm"); ?>
@@ -1970,7 +3703,8 @@ as the corresponding C function.
 <td valign=top align=right>
 In the 
 <a href="RM_H5Front.html">HDF5 Reference Manual</a> 
-<font size="-1"><br>
+<font size=-1>
+<br>
 <a href="../HL/RM_H5DS.html">H5DS</a>  
 <a href="../HL/RM_H5IM.html">H5IM</a>  
 <a href="../HL/RM_H5LT.html">H5LT</a>  
@@ -2000,12 +3734,11 @@ In the
 <a href="APICompatMacros.html">Compatibility Macros</a> 
 <br>
 <a href="CollectiveCalls.html">Collective Calls in Parallel</a> 
-</font>
 <!--
 <br>
 <i><font size=-1>(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i> 
 -->
-
+</font>
 </td></tr>
 </table>
 </center>
@@ -2018,7 +3751,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
@@ -2032,7 +3765,7 @@ In the
 </address>
 <!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 16 July 2013");
+document.writeln("Last modified: 6 May 2014");
 -->
 </SCRIPT>
  
diff --git a/html/RM/RM_H5R.html b/html/RM/RM_H5R.html
index 66bedbb..6f07fdf 100644
--- a/html/RM/RM_H5R.html
+++ b/html/RM/RM_H5R.html
@@ -267,7 +267,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5S.html b/html/RM/RM_H5S.html
index 99a88c8..5132e58 100644
--- a/html/RM/RM_H5S.html
+++ b/html/RM/RM_H5S.html
@@ -363,7 +363,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5T.html b/html/RM/RM_H5T.html
index dfbd026..6970468 100644
--- a/html/RM/RM_H5T.html
+++ b/html/RM/RM_H5T.html
@@ -588,7 +588,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/RM_H5Z.html b/html/RM/RM_H5Z.html
index 71773c4..3d4558d 100644
--- a/html/RM/RM_H5Z.html
+++ b/html/RM/RM_H5Z.html
@@ -30,8 +30,8 @@ HDF5/H5Z API Specification
 <!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
 <hr>
 <center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
+<table border="0" width="98%">
+<tr><td valign="top" align="left">
 <a href="../index.html">HDF5 documents and links</a> <br>
 <a href="../H5.intro.html">Introduction to HDF5</a> <br>
 <a href="../UG/index.html">HDF5 User Guide</a> <br>
@@ -39,10 +39,11 @@ HDF5/H5Z API Specification
 <a href="Glossary.html">Glossary</a><br>
 -->
 </td>
-<td valign=top align=right>
+<td valign="top" align="right">
 In the 
 <a href="RM_H5Front.html">HDF5 Reference Manual</a> 
-<font size="-1"><br>
+<font size="-1">
+<br>
 <a href="../HL/RM_H5DS.html">H5DS</a>  
 <a href="../HL/RM_H5IM.html">H5IM</a>  
 <a href="../HL/RM_H5LT.html">H5LT</a>  
@@ -75,7 +76,7 @@ In the
 </font>
 <!--
 <br>
-<i><font size=-1>(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i> 
+<i><font size="-1">(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i> 
 -->
 
 </td></tr>
@@ -88,20 +89,23 @@ In the
 
 <h2>Filter and Compression API Functions</h2>
 
+<br>
+<strong>The C Interface:</strong>
+<br>
 These functions enable the user to configure new filters
 for the local environment.
 
-<table border=0 width=80%>
-<tr><td valign=top width="30%">
+<table border="0" width="80%">
+<tr><td valign="top" width="30%">
 <ul>
     <li><a href="#Compression-FilterAvail">H5Zfilter_avail</a><br>
     <li><a href="#Compression-GetFilterInfo">H5Zget_filter_info</a>
 </ul>
-</td><td>      </td><td valign=top width="30%">
+</td><td>      </td><td valign="top" width="30%">
 <ul>
     <li><a href="#Compression-Register">H5Zregister</a>
 </ul>
-</td><td>      </td><td valign=top width="30%">
+</td><td>      </td><td valign="top" width="30%">
 <ul>
     <li><a href="#Compression-Unregister">H5Zunregister</a>
 </ul>
@@ -115,17 +119,17 @@ In general, each Fortran subroutine performs exactly the same task
 as the corresponding C function.  
 <br>
 
-<table border=0 width=80%>
-<tr><td valign=top width="30%">
+<table border="0" width="80%">
+<tr><td valign="top" width="30%">
     <ul>
     <li><a href="#Compression-FilterAvail">h5zfilter_avail_f</a>
     </ul>
-</td><td>      </td><td valign=top width="30%">
+</td><td>      </td><td valign="top" width="30%">
     <ul>
 <!--<li><a href="#Compression-Register">h5zregister_f</a><br>    -->
     <li><a href="#Compression-GetFilterInfo">h5zget_filter_info_f</a>
     </ul>
-</td><td>      </td><td valign=top width="30%">
+</td><td>      </td><td valign="top" width="30%">
     <ul>
     <li><a href="#Compression-Unregister">h5zunregister_f</a>
     </ul>
@@ -153,15 +157,15 @@ A filter
     <li>is applied independently to each chunk of the dataset.
   </ul>
 <p>
-The HDF5 library does not support filters for contiguous datasets 
+The HDF5 Library does not support filters for contiguous datasets 
 because of the difficulty of implementing random access for partial I/O. 
 Compact dataset filters are not supported because it would not produce 
 significant results.
 <p>
 Filter identifiers for the filters distributed with the HDF5 Library
 are as follows:
-<table align=center border=0>
-  <tr valign=top align=left>
+<table align="center" border="0">
+  <tr valign="top" align="left">
   <td>
     <code>H5Z_FILTER_DEFLATE</code></td><td>The gzip compression,
           or deflation, filter
@@ -183,9 +187,25 @@ are as follows:
 Custom filters that have been registered with the library will have
 additional unique identifiers.
 <p>
+<!--
 See <a href="../H5.user/Datasets.html"><cite>The Dataset Interface (H5D)</cite></a> 
 in the <cite>HDF5 User's Guide</cite> for further information regarding 
 data compression.
+-->
+
+See <em>
+<a href="../Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">
+HDF5 Dynamically Loaded Filters</a></em> for more information on how an HDF5 
+application can apply a filter that is not registered with the HDF5 Library.
+</p>
+
+
+
+
+
+
+
+
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT " " -->
@@ -209,8 +229,8 @@ data compression.
 <!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
 <hr>
 <center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
+<table border="0" width="98%">
+<tr><td valign="top" align="left">
 <a href="../index.html">HDF5 documents and links</a> <br>
 <a href="../H5.intro.html">Introduction to HDF5</a> <br>
 <a href="../UG/index.html">HDF5 User Guide</a> <br>
@@ -218,10 +238,11 @@ data compression.
 <a href="Glossary.html">Glossary</a><br>
 -->
 </td>
-<td valign=top align=right>
+<td valign="top" align="right">
 In the 
 <a href="RM_H5Front.html">HDF5 Reference Manual</a> 
-<font size="-1"><br>
+<font size="-1">
+<br>
 <a href="../HL/RM_H5DS.html">H5DS</a>  
 <a href="../HL/RM_H5IM.html">H5IM</a>  
 <a href="../HL/RM_H5LT.html">H5LT</a>  
@@ -254,7 +275,7 @@ In the
 </font>
 <!--
 <br>
-<i><font size=-1>(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i> 
+<i><font size="-1">(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i> 
 -->
 
 </td></tr>
@@ -269,7 +290,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/Tools.html b/html/RM/Tools.html
index cf9fd15..8dcf257 100644
--- a/html/RM/Tools.html
+++ b/html/RM/Tools.html
@@ -331,7 +331,7 @@ In the
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/RM/Tools/h5diff.htm b/html/RM/Tools/h5diff.htm
index e208999..29ec5b5 100644
--- a/html/RM/Tools/h5diff.htm
+++ b/html/RM/Tools/h5diff.htm
@@ -102,7 +102,7 @@
         have the following output modes:
         <dir>
         <table border=0>
-          <tr valign=top><td>Default</td>
+          <tr valign="top"><td>Default</td>
               <td><code>      </code></td>
               <td>Prints the number of differences found 
                   and where they occurred.
@@ -113,15 +113,15 @@
                   This <i>normal</i> behavior is achieved by using 
                   none of the following output mode options.
           </td></tr>
-          <tr valign=top><td>Report mode</td>
+          <tr valign="top"><td>Report mode</td>
               <td><code>-r</code></td>
               <td>Prints the above plus the differences.
           </td></tr>
-          <tr valign=top><td>Verbose mode    </td>
+          <tr valign="top"><td>Verbose mode    </td>
               <td><code>-v</code></td>
               <td>Prints all of the above plus a list of objects and warnings.
           </td></tr>
-          <tr valign=top><td>Verbose mode    
+          <tr valign="top"><td>Verbose mode    
                          <br>
                              with levels</td>
               <td><code>-v<i>n</i></code></td>
@@ -129,7 +129,7 @@
                   <br>
                   For details, see “Options and Parameters” below.
           </td></tr>
-          <tr valign=top><td>Quiet mode</td>
+          <tr valign="top"><td>Quiet mode</td>
               <td><code>-q</code></td>
               <td>Prints no output. 
                   <br>
@@ -447,24 +447,29 @@
                 to be compared, expressed as absolute paths 
                 from the respective file’s root group.</td></tr>
     </table></ul>
-    <p>
-<dt><strong>Exit Status:</strong></dt>
-    <dd><table border=0>
-        <tr valign=top align=left>
-            <td>0</td>
-            <td>No differences were found.</td>
+    <br />
+<dt><strong>Exit Status for h5diff:</strong></dt>
+    <dd><table border="0" width="100%">
+        <tr valign="top" align="left">
+            <td width="5%">0</td>
+            <td width="95%">No differences were found.</td>
         </tr>
-        <tr valign=top align=left>
+        <tr valign="top" align="left">
             <td>1</td>
             <td>Some differences were found.</td>
         </tr>
-        <tr valign=top align=left>
+        <tr valign="top" align="left">
             <td>>1    </td>
             <td>An error occurred.</td>
         </tr>
-    </table>
+    </table></dd>
+    <br />
+<dt><strong>Exit Status for ph5diff:</strong></dt>
+    <dd>Because of the limitations in the MPI standard, the return value 
+    is not defined. </dd>
+
 
-    <p>
+    <br />
 <dt><strong>Examples:</strong>
     <dd>Compare the object <code>/a/b</code> in <code>file1</code> 
         with the object <code>/a/c</code> in <code>file2</code>:<br>
diff --git a/html/RM/Tools/h5perf.htm b/html/RM/Tools/h5perf.htm
index ecdac24..5c9fcf6 100644
--- a/html/RM/Tools/h5perf.htm
+++ b/html/RM/Tools/h5perf.htm
@@ -24,7 +24,7 @@
 <dl>
 
 <dt><div align=right><font color=999999 size=-1><i>
-    Last modified: 27 March 2012
+    Last modified: 24 April 2014
     </i></font></div>
 
 <dt><strong>Tool Name:</strong> <a name="Tools-Perf">h5perf</a>
@@ -403,10 +403,15 @@
       </table>
       <table width="100%">
         <tr> 
-          <td valign="top"><code>-m</code>, <code>--mpi-posix</code></td>
+          <td valign="top" width="20%"><code>-m</code>, 
+          <code>--mpi-posix</code></td>
+          <td valign="top" width="80%">This option is no longer 
+          available.</td>
+          <!-- mpi-posix vfd removed 3.28.2014.
           <td valign="top">Sets use of MPI-posix driver for HDF5 I/O. 
             <br>
-            (<i>Default:</i> MPI-I/O driver)</td>
+            (<i>Default:</i> MPI-I/O driver)</td>
+            -->
         </tr>
         <tr> 
           <td valign="top"><code>-n</code>, <code>--no-fill</code></td>
@@ -458,9 +463,9 @@
 
       <table width="100%">
         <tr> 
-          <td valign="top"><code>-x</code> <em>size</em>, 
+          <td valign="top" width="20%"><code>-x</code> <em>size</em>, 
             <code>--min-xfer-size=</code><em>size</em></td>
-          <td valign="top">Sets the minimum transfer buffer size. 
+          <td valign="top" width="80%">Sets the minimum transfer buffer size. 
             <br>
             (<i>Default:</i> Half the number of bytes per processor 
             per dataset)
diff --git a/html/TechNotes.html b/html/TechNotes.html
index e1a5780..cdb1ef2 100644
--- a/html/TechNotes.html
+++ b/html/TechNotes.html
@@ -403,7 +403,7 @@ HDF5 Technical Notes  
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/UG/08_TheFile.html b/html/UG/08_TheFile.html
index a7f66a9..7ebdfda 100755
--- a/html/UG/08_TheFile.html
+++ b/html/UG/08_TheFile.html
@@ -763,7 +763,7 @@ document.writeln ("
         <td>
         <code>H5Fget_file_image</code>
         <br />
-        <code>(none)</code></td><td> </td>
+        <code>h5fget_file_image_f</code></td><td> </td>
         <td>
         Retrieves a copy of the image of an existing, open file. 
         </td>
@@ -1026,7 +1026,7 @@ document.writeln ("
         <td>
         <code>H5Pget_file_image</code>
         <br />
-        <code>(none)</code></td><td> </td>
+        <code>h5pget_file_image_f</code></td><td> </td>
         <td>
         Retrieves a copy of the file image designated as the initial 
         content and structure of a file. </td></tr>
@@ -1035,7 +1035,7 @@ document.writeln ("
         <td>
         <code>H5Pset_file_image</code>
         <br />
-        <code>(none)</code></td><td> </td>
+        <code>h5pset_file_image_f</code></td><td> </td>
         <td>
         Sets an initial file image in a memory buffer. </td></tr>
     <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
@@ -1367,8 +1367,14 @@ document.writeln ("
         <br />
         <code>h5pset_fapl_mpiposix_f</code></td><td> </td>
         <td>
+        No longer available.
+        </td>
+        <!-- vfd no longer available. 3.28.2014.
+        <td>
         Stores MPI IO communicator information to a file access property list.
-        </td></tr>
+        </td>
+        -->
+        </tr>
     <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
     <tr valign="top">
         <td>
@@ -1376,8 +1382,13 @@ document.writeln ("
         <br />
         <code>h5pget_fapl_mpiposix_f</code></td><td> </td>
         <td>
+        No longer available.
+        </td>
+        <!-- vfd no longer available. 3.28.2014.
+        <td>
         Returns MPI communicator information.
-        </td></tr>
+        </td>
+        -->
     <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
     <tr valign="top">
         <td>
@@ -2371,8 +2382,13 @@ File Drivers</h3></a>
 
 <p>See the “<a href=
 "../Advanced/FileImageOperations/HDF5FileImageOperations.pdf">HDF5 
-File Image Operations</a></td>” section for information on more 
-advanced usage of the Memory file driver.
+File Image Operations</a>” section for information on more 
+advanced usage of the Memory file driver, and see the 
+“<a href=
+"../Advanced/ModifiedRegionWrites/ModifiedRegionWrites.pdf">
+Modified Region Writes</a>” section for information on how to 
+set write operations so that only modified regions are written to 
+storage.
 </p>
 
 
@@ -2672,7 +2688,8 @@ advanced usage of the Memory file driver.
   <p>Additional parameters may be added to these functions in the future. </p>
 
 
-
+<!-- as of 3.24.2014, the parallel posix driver, mpi-posix, is no longer 
+available.
 <h4>3.8.12. The Parallel POSIX Driver</h4>
 
   <p>In addition to the Parallel driver, <code>H5FD_MPIO</code>, HDF5 
@@ -2726,7 +2743,7 @@ advanced usage of the Memory file driver.
   the parallel HDF5 Library.</p>
 
   <p>Additional parameters may be added to these functions in the future. </p>
-
+-->
 <br />
 
 
diff --git a/html/UG/14_PropertyLists.html b/html/UG/14_PropertyLists.html
new file mode 100755
index 0000000..9ea3109
--- /dev/null
+++ b/html/UG/14_PropertyLists.html
@@ -0,0 +1,2702 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
+<html>
+<head>
+<title>Chapter 10: Properties and Property Lists in HDF5</title>
+
+<!--(Meta)==========================================================-->
+
+
+<!--(Links)=========================================================-->
+
+<!--( Begin styles definition )=====================================-->
+<link href="ed_styles/NewUGelect.css" rel="stylesheet" type="text/css">
+<!--( End styles definition )=======================================-->
+
+</head>
+
+<body>
+
+<!-- CONTENT STARTS AT LINE 162 -->
+
+
+<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * 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://www.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.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+<!-- #EndLibraryItem --><!-- HEADER LEFT "HDF5 User's Guide" -->
+<!-- HEADER RIGHT "Property Lists in HDF5" -->
+
+<!--( TOC )=========================================================-->
+<!--<SCRIPT language="JavaScript">                                  -->
+<!--
+document.writeln ('\
+<table x-use-null-cells\
+                align="right"\
+		width="240"\
+		cellspacing="0"\
+		class="tocTable">\
+  <tr valign="top"> \
+    <td class="tocTableHeaderCell" colspan="2"> \
+        <span class="TableHead">Chapter Contents</span></td>\
+  </tr>\
+-->
+<!-- Table Version 3 --><!--\-->
+<!--
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#Intro">1.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#Intro">Introduction</a></td> \
+  </tr>\
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#ProgModel">2.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#ProgModel">Programming Model</a></td>\
+  </tr>\
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#H5Dump">3.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#H5Dump">Using <code>h5dump</code></a></td> \
+  </tr>\
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#FunctionSumms">4.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#FunctionSumms">File Function Summaries</a></td>\
+  </tr>\
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#CrOpen">5.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#CrOpen">Create or Open a File</a></td> \
+  </tr>\
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#Close">6.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#Close">Close a File</a></td>\
+  </tr>\
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#PLists">7.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#PLists">File Property Lists</a>\
+\
+<br />\
+   \
+Creating a list\
+\
+<br />\
+   \
+Creation properties\
+\
+<br />\
+   \
+Access properties\
+\
+	  </td>\
+  </tr>\
+  <tr valign="top"> \
+    <td class="tocTableContentCell2"> \
+      <a href="#Drivers">8.</a></td>\
+    <td class="tocTableContentCell3">\
+	  <a href="#Drivers">Storage Layouts and Drivers</a>\
+\
+<br />\
+   \
+<span class="smallcaps">SEC2</span>, \
+<span class="smallcaps">STDIO</span>,\
+<br />\
+   \
+<span class="smallcaps">FAMILY</span>, \
+<span class="smallcaps">MULTI</span>,\
+<br />\
+   \
+<span class="smallcaps">SPLIT</span>, \
+<span class="smallcaps">MPI</span>, \
+<span class="smallcaps">CORE</span>,\
+<br />\
+   \
+--><!--<span class=code>STREAM</span>, --><!--\
+<span class="smallcaps">LOG</span>\
+\
+	  </td>\
+  </tr>\
+\
+  <tr valign="top"> \
+    <td class="tocTableContentCell"> \
+-->
+<!-- editingComment -- "tocTableContentCell" and "tocTableContentCell4" \
+--><!--\-->
+<!-- are the table-closing cell class.\
+    <td class="tocTableContentCell2"> \
+--><!--\
+      <a href="#Examples">9.</a></td>\
+    <td class="tocTableContentCell4">\
+	  <a href="#Examples">Code Examples</a>\
+  </td></tr>\
+</table>\
+')
+-->
+<!-- </SCRIPT> -->
+<!--(End TOC)=======================================================-->
+
+<!-- editingComment
+-->
+
+
+<div align="center">
+<a name="TOP">
+<h2>Chapter 10<br /><font size="7">Properties and Property Lists 
+    in HDF5</font></h2>
+</a>
+</div>
+
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+
+<font color="red">
+<i>
+
+<h3>10.0. Background</h3>
+<p>
+This document will answer the following questions:
+<ul>
+    <li>What should new users know about property lists?</li>
+    <li>Is there a key idea?</li>
+    <li>What are the principles of property lists so to speak?</li>
+    <li>What would help new users get started?</li>
+    <li>What might help them use property lists fully and effectively?</li>
+</ul>
+
+</i>
+</font>
+
+===== END REDACTION ============== -->
+
+
+
+<a name="Intro">
+<h3>10.1. Introduction</h3>
+</a>
+
+    <p>
+    HDF5 properties and property lists make it possible to shape or modify
+    an HDF5 file, group, or object, or even an I/O stream, in a number of ways.
+    For example, you can do any of the following:
+    <ul>
+        <li>Create a chunked dataset.</li>
+        <li>Customize the storage layout of a file to suit
+            a project or task.</li>
+        <li>Apply compression or filters to raw data.</li>
+        <li>use either ASCII or UTF-8 character encodings.</li>
+        <li>Create missing groups on the fly.</li>
+        <li>Switch between serial and parallel I/O.</li>
+        <li>Create consistency within a single file or 
+            across an international project.</li>
+    </ul>
+    Some properties enable an HDF5 application 
+    to take advantage of the capabilities of a specific computing environment 
+    while others make a file more compact;
+    some speed the reading or writing of data 
+    while others enable more record-keeping at a per-object level.
+    HDF5 offers nearly a hundred specific properties that can be used
+    in literally thousands of combinations to maximize the usability
+    of HDF5-stored data.
+
+    <br /> 
+    </p>
+    <p>
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ==== Restart on Introduction           ====
+
+    HDF5 properties and property lists make it possible to shape or modify
+    an HDF5 file, group, or object, or even an I/O stream, in a number of ways.
+    Consider the case of an HDF5 dataset, which has creation, access, and 
+    transfer properties.
+    <pre>
+    New dataset 
+        Size, growth rate & pattern, etc
+        ==> Creation property requirements
+        Acc
+    </pre>
+
+    </p>
+    <p> 
+    </p>
+    <p>
+
+===== END REDACTION ============== -->
+
+    More prosaically,
+    
+    <a name="PListEcosystem"> </a>
+
+    <table border="0" cellspacing="10" align="right"><tr><td>
+    <table border="0" cellspacing="0">
+        <tr valign="top"> 
+            <td align="center">
+            <hr color="green" size="3"/>
+            <img src="Images/PropListEcosystem.png" width="150" 
+                 alt="Graphic illustration of property list ecosystem">
+            </td>
+            </tr>
+        <tr><td><hr color="green" size="1" /></td></tr>
+        <tr valign="top">
+            <td align="left" width="200">
+            <b>Figure 1. 
+               The HDF5 property list ecosystem</b>
+            <hr color="green" size="3"/></td>
+            </tr>
+    </table>
+    </td></tr></table>
+
+    a property list is a collection of name/value pairs that can be
+    passed to various HDF5 functions, usually modifying default settings.  
+    Certain kinds of property lists can be created by one application 
+    and used by an application that later operates on the same file.
+    A property list may contain separate values for each of several
+    properties, or characteristics, of an object; 
+    without property lists, each of these values would have to be 
+    passed to each function as a separate parameter.
+    </p>
+    <p>
+    For instance, a file creation operation needs to know several
+    things about a file, such as the size of the user-block at the 
+    beginning of the file, or the sizes of various file data structures.  
+    Bundling this information in a property list simplifies the 
+    interface by reducing the number of parameters to the function
+    <code>H5Fcreate</code>.
+    </p>
+    <p>
+    One can think of the basic HDF5 property list classes as templates
+    for building the property lists that you will use in an
+    application.
+    </p>
+    <p>
+    HDF5 property lists and the property list interface 
+    (<a href="../RM/RM_H5P.html">H5P</a>) provide a mechanism for
+    storing characteristics of objects in an HDF5 file and economically 
+    passing them around in an HDF5 application.  
+    In this capacity, property lists significantly reduce 
+    the burden of additional function parameters in the rest of 
+    the HDF5 application programming interface (the HDF5 API).
+    Another advantage of  property lists is that features can often 
+    be added to HDF5 by adding only property list functions to the API; 
+    all other requirements of the feature can be accomplished internally 
+    to the library.
+
+    <br />   
+    </p>
+    <p>
+
+    The remaining sections in this chapter discuss the following topics:
+    </p>
+
+    <ul>
+        <li>What are properties, property lists, 
+            and property list classes?</li>
+        <li>Property list programming model</li>
+	<li>Generic property functions</li>
+	<li>Summary listings of property list functions</li>
+	<li>Additional resources</li>
+    </ul>
+    </p>
+
+    <p>
+    The discussions and function listings in this chapter focus on
+    general property operations, 
+    object and link properties, 
+    generic properties, 
+    and related functions.  
+    </p>
+    <p>
+    Property lists and property list functions that apply only to 
+    specific types of HDF5 objects are generally listed and discussed 
+    in the chapter discussing those objects, where that information 
+    will be most convenient to users.
+    For example, the <a href="10_Datasets.html">Datasets</a> chapter 
+    discusses dataset creation property lists and functions, 
+    dataset access property lists and functions, and 
+    dataset transfer property lists and functions. 
+    This chapter does not duplicate those discussions.
+    </p>
+    <p>
+    This chapter assumes an understanding of the following chapters
+    of this <cite>HDF5 User’s Guide</cite>:
+    <ul>
+        <li><a href="UG_frame03DataModel.html" 
+            target="_TOP">HDF5 Data Model and File Structure</a>
+        <li><a href="UG_frame04ProgModel.html" 
+            target="_TOP">HDF5 Library and Programming Model</a>
+    </ul>
+
+
+    </p>
+
+
+<a name="PListHierarchy">
+<h3 class="pagebefore">10.2. Properties, Property Lists, and 
+    Property List Classes</h3>
+</a>
+
+    As illustrated in <a href="#PListEcosystem">Figure 1</a> above, 
+    the property list environment in a three-level hierarchy: 
+    <ul>
+        <li>Property list classes</li>
+        <li>Property lists</li>
+        <li>Properties</li>
+    </ul>
+    </p>
+    <p>
+    A <i>property list class</i> defines the roles that property lists 
+    of that class can play.
+    This is accomplished by means of a property list template that 
+    includes all properties that are valid in that class.
+    In that template, each property is set to its default value.
+    </p>
+    <p>
+    A <i>property list</i> is a collection of related properties 
+    that are used together in specific circumstances.  
+    A new property list created from a property list class inherits 
+    the properties of the property list class 
+    and each property’s default value.  
+    A fresh dataset creation property list, for example, 
+    includes HDF5 properties relevant to the creation of a new dataset.  
+    </p>
+    <p>
+    The preset default property values are intended to be reasonable 
+    for general use cases, so an application can often use the 
+    property list without further modification.
+    On the other hand, adjusting these settings is a routine action
+    as there are many reasons for an application to do so.
+    </p>
+    <p>
+    A <i>property</i> is the basic element of the property list hierarchy
+    (the <i>atomic</i> element, if you will).  Properties control things 
+    like access rights to a file, the storage layout of a dataset, or
+    whether missing intervening groups will be automatically created 
+    when a new object is created. 
+    </p>
+    <p>
+    </p>
+
+
+<a name="PListClasses">
+<h4 class="pagebefore">10.2.1. Property List Classes</h4>
+</a>
+
+    HDF5 offers several classes of property lists, 
+    as listed in the table below.
+    <a name="T1_PListClasses"> </a>
+    <p />
+
+    <table border="0">
+    <tr><th> </th>
+        <th colspan="4" align="left">Table 1: 
+            Property list classes in HDF5</th></tr>
+    <tr><td> </td>
+        <td colspan="4"><hr color="green" size="3" /></td></tr>
+    <tr align="left" valign="bottom">
+        <th width="5%"> </th>
+        <th colspan="2">Property List Class
+            <hr color="green" size="1" />
+            </th>
+        <th>      </th>
+        <th>Notes
+            <hr color="green" size="1" />
+            </th>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>File creation (<small>FCPL</small>)</td>
+        <td><code>H5P_FILE_CREATE</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="08_TheFile.html">The HDF5 File</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>File access (<small>FAPL</small>)</td>
+        <td><code>H5P_FILE_ACCESS</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="08_TheFile.html">The HDF5 File</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>File mount (<small>FMPL</small>)</td>
+        <td><code>H5P_FILE_MOUNT</code> </td>
+        <td> </td>
+        <td>
+        Used only as <code>H5P_DEFAULT</code>
+        (see <a href="#H5P_FILE_MOUNT">footnote 1</a>). 
+        </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Object creation (<small>OCPL</small>)</td>
+        <td><code>H5P_OBJECT_CREATE</code> </td>
+        <td> </td>
+        <td>
+             
+            <!-- 
+            Discussed below in 
+            “<a href="">__</a>”.
+            -->
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Object copy (<small>OCPYPL</small>)</td>
+        <td><code>H5P_OBJECT_COPY</code> </td>
+        <td> </td>
+        <td>
+             
+            <!-- 
+            Discussed below in 
+            “<a href="">__</a>”.
+            -->
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Group creation (<small>GCPL</small>)</td>
+        <td><code>H5P_GROUP_CREATE</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="09_Groups.html">HDF5 Groups</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Group access (<small>GAPL</small>)</td>
+        <td><code>H5P_GROUP_ACCESS</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="09_Groups.html">HDF5 Groups</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Link creation (<small>LCPL</small>)</td>
+        <td><code>H5P_LINK_CREATE</code> </td>
+        <td> </td>
+        <td>
+             
+            <!-- 
+            Discussed below in the
+            <a href="#LinkCreationTable">link creation property
+            functions</a> table.
+            -->
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Link access (<small>LAPL</small>)</td>
+        <td><code>H5P_LINK_ACCESS</code> </td>
+        <td> </td>
+        <td>
+             
+            <!-- 
+            Discussed below in 
+            “<a href="">__</a>”.
+            -->
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Dataset creation (<small>DCPL</small>)</td>
+        <td><code>H5P_DATASET_CREATE</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="10_Datasets.html">HDF5 Datasets</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Dataset access (<small>DAPL</small>)</td>
+        <td><code>H5P_DATASET_ACCESS</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="10_Datasets.html">HDF5 Datasets</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Dataset transfer (<small>DXPL</small>)</td>
+        <td><code>H5P_DATASET_XFER</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="10_Datasets.html">HDF5 Datasets</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Datatype creation (<small>TCPL</small>)</td>
+        <td><code>H5P_DATATYPE_CREATE</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="11_Datatypes.html">HDF5 Datatypes</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Datatype access (<small>TAPL</small>)</td>
+        <td><code>H5P_DATATYPE_ACCESS</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="11_Datatypes.html">HDF5 Datatypes</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>String creation (<small>STRCPL</small>)</td>
+        <td><code>H5P_STRING_CREATE</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="10_Datasets.html">HDF5 Datasets</a>”
+            and
+            “<a href="11_Datatypes.html">HDF5 Datatypes</a>”.
+            </td>
+        </tr>
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>Attribute creation (<small>ACPL</small>)<code>  </code></td>
+        <td><code>H5P_ATTRIBUTE_CREATE</code> </td>
+        <td> </td>
+        <td>Discussed in
+            “<a href="13_Attributes.html">HDF5 Attributes</a>”.
+            </td>
+        </tr>
+
+<!-- DISCUSSION OF H5P_ROOT will not be included in the chapter.            -->
+<!-- Yes, it's the root of the property list structure, but there's not     -->
+<!-- much (maybe nothing?) interesting that the user can do with it.        -->
+<!--                                                                        -->
+<!-- Also note that the root of this structure was originally H5P_NO_CLASS; -->
+<!-- when that was changed to H5P_ROOT, code was added to set               -->
+<!-- H5P_NO_CLASS = H5P_ROOT solely to maintain backward compatibility.     -->
+<!--                                                                        -->
+<!-- To clean up the public interface, Quincey may move H5P_ROOT out of     -->
+<!-- H5Ppublic.h.                                                           -->
+<!--
+
+
+    <tr align="left" valign="top">
+        <td> </td>
+        <td>No property list class    </td>
+        <td><code>H5P_ROOT</code> </td>
+        <td> </td>
+        <td>Represents the root of the property list class hierarchy.</td>
+        </tr>
+-->
+    <tr><td> </td>
+        <td colspan="4"><hr color="green" size="1" /></td></tr>
+    <tr><td> </td>
+        <td colspan="4">
+        <font size="-1">
+        The abbreviations to the right of each property list class name 
+        in this table are widely used in both HDF5 programmer documentation 
+        and HDF5 source code.  
+        For example, 
+        FCPL is file creation property list,
+        OCPL is object creation property list,
+        OCPYPL is object copy property list, and
+        STRCPL is string creation property list.
+        These abbreviations may appear in either uppercase or lowercase.
+        </font>
+        <hr color="green" size="3" />
+        </td></tr>
+    </table>
+
+
+    <p>
+    The following figure graphically presents the inheritance hierarchy
+    of HDF5’s property list classes.
+    </p>
+    <p>
+   
+    <table width="90%" cellspacing="0" align="center" border="0">
+        <tr valign="top"> 
+            <td align="center">
+            <hr color="green" size="3"/>
+            <img src="Images/PropListClassInheritance.png" width="100%" 
+                 alt="Graphic illustration of property list class 
+                 inheritance hierarchy">
+            </td>
+            </tr>
+        <tr><td><hr color="green" size="1" /></td></tr>
+        <tr valign="top">
+            <td align="left">
+            <b>Figure 2. HDF5 property list class inheritance hierarchy</b>
+            <br />
+            <font size="-1">
+            Entries above in <u>black</u> are property list classes that
+            are directly accessible through the programming interface;
+            entries in <font color="888888"><u>gray</u></font> are HDF5 
+            internal entities and are not user-accessible.
+            <br />
+            The red <i>empty set</i> symbol (<font color="red">∅</font>)
+            below <small>FMPL</small> indicates that the file mount property
+            list class is an empty class; that is, it has no settable properties
+            (see <a href="#H5P_FILE_MOUNT">footnote 1</a>). 
+            </font>
+            <hr color="green" size="3"/>
+            </td>
+            </tr>
+    </table>
+
+    </p>
+    <p>
+    To illustrate the inheritance diagrammed above, 
+    consider the following prose example 
+    (coding examples appear in later sections of this chapter):
+    Before creating an HDF5 dataset, you will need to determine the 
+    creation properties the dataset must have.  
+    That is, you must establish the dataset’s DCPL.
+    This DCPL will be derived from the dataset creation property list class
+    and will inherit all of the appropriate properties, each set to a
+    default value.
+    If necessary, you may then change any of those default values 
+    in the new DCPL with the appropriate H5P calls, such as 
+    <code>H5Pset_layout</code> and <code>H5Pset_chunk</code>.
+    You can now use the newly-created and modified DCPL to create 
+    any dataset that has the same creation property requirements.
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ==== AS BEING REDUNDANT IN THE CURRENT DISCUSSION. ====
+     ==== THEY MAY, HOWEVER, BE USEFUL ELSEWHERE.       ====
+<font color="AAAAAA">
+    </p>
+    <p>
+    A dataset creation property list is used when a dataset is created
+    and may govern features of the dataset or how it is to be created.
+    For example, if a dataset is to be chunked, 
+    chunking (<code>H5Pset_layout</code>) and 
+    chunk size (<code>H5Pset_chunk</code>)
+    must be set in the dataset creation property list used to create 
+    the dataset.
+    </p>
+    <p>
+    Creation properties are permanent and <i>immutable</i>; 
+    they cannot be changed during the life of the dataset.
+    </p>
+    <p>
+    A dataset access property list governs access to the dataset.
+    For example, a user may wish to tune the chunk cache to optimize
+    the use of the system on which an analysis is to be run.
+    This optimization might be different on every system.
+    Chunk cache optimization parameters are set in the 
+    dataset access property list with <code>H5Pset_chache</code>.
+    </p>
+    <p>
+    Access properties are <i>transient</i> and can be changed.
+    In fact, applications do not generally have any knowledge
+    of access properties used in the past.
+</font>
+==== ==== -->
+    </p>
+
+<a name="PropertyLists">
+<h4 class="pagebefore">10.2.2. Property Lists</h4>
+</a>
+
+    A <i>property list</i> is a container holding a collection of 
+    name/value pairs specifying a set of properties that are always 
+    used together.  
+    A property list contains information for one to many properties.
+    </p>
+    <p>
+    A new property list is derived from a property list class.
+    When a property list is created, it contains all of the properties
+    that are relevant to the parent property list class 
+    with each property set to its default value.
+    </p>
+    <p>
+    An HDF5 property list is a mechanism for passing values into 
+    HDF5 Library calls. Property lists were created to allow HDF5 calls 
+    to be extended with the equivalent of new parameters without changing 
+    the actual API or breaking existing code. 
+    The <i>call by value</i> nature of property lists means that
+    property lists can be copied, reused, and discarded with ease.  
+    </p>
+    <p>
+    Property lists can also be freely reused to create consistency.
+    For example, a single set of file, group, and dataset 
+    creation property lists might be created at the beginning of a 
+    project and used to create hundreds, thousands, even millions, of
+    consistent files, file structures, and datasets over the 
+    project’s life.
+    When such consistency is important to a project, this is an
+    economical means of providing it.
+    </p>
+    <p>
+    Note that the HDF5 property list functions generate fully populated 
+    property lists and that additional properties are rarely added 
+    by an application.
+    If customized properties and property lists are required by an
+    application or project, they can be created through the use HDF5’s
+    <a href="#GenericPLists">generic property</a> functionality.
+    </p>
+
+
+<a name="Properties">
+<h4 class="pagebefore">10.2.3. Properties</h4>
+</a>
+
+    HDF5 <i>properties</i> each describe a specific characteristic 
+    of an object or aspect of its access or creation.
+    Examples include the following:</p>
+
+    <table border="0">
+    <tr valign="bottom" align="left">
+        <th><code>    </code></th>
+        <th>Purpose</td>
+        <th><code>  </code></th>
+        <th>Examples</th>
+        <th><code>  </code></th>
+        <th>Property List</th>
+        </tr>
+    <tr valign="top">
+        <td> </td>
+        <td>Specify the driver to be used to open  to a file</td>
+        <td> </td>
+        <td>A <small>POSIX</small> driver or an MPI IO driver</td>
+        <td> </td>
+        <td>FAPL</td>
+        </tr>
+    <tr valign="top">
+        <td> </td>
+        <td>Specify filters to be applied to a dataset</td>
+        <td> </td>
+        <td>Gzip compression or checksum evaluation</td>
+        <td> </td>
+        <td>DCPL</td>
+        </tr>
+    <tr valign="top">
+        <td> </td>
+        <td>Specify whether to record key times associated with an 
+            object</td>
+        <td> </td>
+        <td>Creation time and last-modified time</td>
+        <td> </td>
+        <td>OCPL</td>
+        </tr>
+    <tr valign="top">
+        <td> </td>
+        <td>Specify the access mode for a file opened via an external 
+            link</td>
+        <td> </td>
+        <td>Read-only or read-write</td>
+        <td> </td>
+        <td>LAPL</td>
+        </tr>
+    </table>
+
+    </p>
+    <p>
+    A property can be used in many property lists while a property list 
+    must belong to exactly one property list class.
+    </p>
+    <p>
+    As stated above, each property is initialized with a default value.
+    For each property, there are one or more dedicated <code>H5Pset_*</code> 
+    calls that can be used to change that value.
+    </p>
+    <p>
+
+<!--
+    <b><i>Creation, access, and transfer properties:</i></b>
+-->
+    <b><i>Creation and access properties:</i></b>
+    <br>
+    Properties fall into one of several major categories: 
+    creation properties, access properties, and transfer properties.
+    </p>
+    <p>
+    <i>Creation properties</i> control <i>permanent</i> object 
+    characteristics.  These characteristics must be established when an 
+    object is created and are <i>immutable</i>; 
+    they cannot change through the life of the object.
+    </p>
+    <p>
+    Examples of creation properties include:
+    <ul>
+        <li>Whether a dataset is stored in a compact, contiguous,
+            or chunked layout.
+            </p>
+            <p>
+            The default for this dataset creation property 
+            (<code>H5Pset_layout</code>) is that a dataset is stored 
+            in a contiguous block.
+            This works well for datasets with a known size limit that will 
+            fit easily in system memory.
+            </p>
+            <p>
+            A chunked layout is important if a dataset is to be compressed, 
+            to enable extending the dataset’s size,
+            or to enable caching during I/O.
+            </p>
+            <p>
+            A compact layout is suitable only for very small datasets 
+            as the raw data is stored in the object header.
+<!--
+            Some datasets, when analyzed later in their lifetime,
+            will be accessed by means of hyperslabs or subsetting; 
+            such datasets will often enable better performance if they 
+            are stored in a chunked layout so that the entire dataset
+            does not have to be read into memory every time it is accessed.
+            Many HDF5 datasets are either sparse or very large (or both)
+            and application performance will benefit from compression.
+            All of these datasets must be stored in a chunked layout.
+            (Such chunks can also be optimized to facilitate anticipated
+            access patterns.)
+<font color="red">
+<p>
+Things you can do with chunked but not contiguous datasets:
+<br>
+-- Compression and other filters
+<br>
+-- Caching
+<br>
+-- Extension (very limited, and non-existent behind the curtain, for contiguous;
+             unlimited for chunked)
+</font>
+-->
+            </li>
+        <li>Creation of intermediate groups when adding an object 
+            to an HDF5 file.
+            </p>
+            <p>
+            This link creation property 
+           (<code>H5Pset_create_intermediate_group</code>)
+            enables an application to add an object in a file without 
+            having to know that the group or group hierarchy containing 
+            that object already exists. 
+            With this property set, HDF5 automatically creates missing groups.
+            If this property is not set, an application must verify that each
+            group in the path exists, and create those that do not,
+            before creating the new object; if any group is missing, 
+            the create operation will fail.
+            </p>
+            <p>
+            Note that this property is an exception to the general rule.
+            It is a creation property not because it is immutable
+            but because it is used only in the creation process.
+            </li>
+        <li>Whether an HDF5 file is a single file
+            or a set of tightly related files that form a virtual HDF5 file.
+            </p>
+            <p>
+            Several file creation properties enable the application 
+            to select one of several available file layouts. 
+            Examples of the available layouts include
+            a standard <small>POSIX</small>-compliant layout 
+            (<code>H5Pset_fapl_sec2</code>),
+            a family of files (<code>H5Pset_fapl_family</code>), 
+            and a split file layout that separates raw data and metadata 
+            into separate files (<code>H5Pset_fapl_split</code>).
+            These and other file layout options are discussed in the 
+            “Storage Layouts and Drivers” section of the
+            “<a href="UG_frame08TheFile.html" target="_top">HDF5
+            File</a>” chapter of this <cite>HDF5 User’s 
+            Guide</cite>.
+            </li>
+    </ul>
+
+    </p>
+    <p>
+    <i>Access properties</i> control <i>transient</i> object characteristics.
+    These characteristics may change with the circumstances under which an 
+    object is accessed.
+    </p>
+    <p>
+    Examples of access properties include:
+    <ul>
+        <li>The driver used to open a file
+            <p>
+            For example, a file might be created with the MPI I/O driver
+            (<code>H5Pset_fapl_mpio</code>) during high-speed 
+            data acquisition in a parallel computing environment.
+            The same file might later be analyzed in a serial computing 
+            environment with I/O access handled through the serial 
+            POSIX driver (<code>H5Pset_fapl_sec2</code>).
+            </li>
+        <li>Optimization settings in specialized environments
+            <p>
+            Optimizations differ across computing environments and
+            according to the needs of the task being performed,
+            so are transient by nature.
+            </li>
+    </ul>
+
+    </p>
+    <p>
+<!-- ==== REDACTED FOR REVIEW & PUBLICATION ====
+     ==== Questions for QK:                                  ====
+     ====     Only 2 DAPL calls? (1 get, 1 set)              ====
+     ====     All others are labelled DXPL.                  ====
+     ====     Yet opaque to me why there are both types.     ====
+
+    <i>Dataset transfer properties:</i>
+
+<font color="red">
+<i>
+Similar discussion of DXPLs.
+</i>
+</font>
+    </p>
+    <p>
+
+===== END REDACTION ============== -->
+
+
+
+
+<!-- NEW PAGE -->
+<a name="ProgModel">
+<h3 class="pagebefore">10.3. Programming Model</h3>
+</a>
+    <p>
+    The programming model for HDF5 property lists is actually quite simple:
+    <ol>
+        <li>Create a property list.</li>
+        <li>Modify the property list, if required.</li>
+        <li>Use the property list.</li>
+        <li>Close the property list.</li>
+    </ol>
+    There are nuances, of course, but that is the basic process.
+    </p>
+    <p>
+    In some cases, you will not have to define property lists at all.  
+    If the default property settings are sufficient for your application, 
+    you can tell HDF5 to use the default property list.
+    </p>
+    <p>
+    The following sections 
+    first discuss the use of default property lists,
+    then each step of the programming model, 
+    and finally a few less frequently used property list operations.
+
+
+
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ==== Restart on Introduction           ====
+
+
+  <p>
+  This section describes the programming model for 
+  creating, populating, and using HDF5 property lists.
+  </p>
+    
+  <h4>10.3.1. Creating a New Property List</h4>
+
+  <p>
+  The programming model for creating, populating, and using 
+  a new HDF5 property list can be summarized as follows:
+
+  <ul>
+	<li>Create the property list</li>
+	<li>Populate the property list with the required properties</li>
+	<li>Use the property list when creating or accessing
+            the relevant kinds of objects
+            </li>
+  </ul>
+
+  </p>
+  <p>
+  Consider the simple case of creating _ _ _
+  See the example below.</p>
+
+
+
+
+<font color="red">
+<i>
+<p>
+<u>From notes:</u>
+<ul>
+<li>How do property lists work?</li>
+<li>How are property lists used? Include sample code. 
+    Diagrams can also be included.</li>
+<li>How are property lists configured? How are they set up? 
+    How are they changed?</li>
+<li>When can a property list be changed and when is it immutable?</li>
+<li>Which property lists are recorded in the file and which are transient?</li>
+<li>What property lists are available, and what does each do? 
+    See the “Available Property Lists” section below for more information.</li>
+<li>What are the most used property lists? </li>
+<li>What property lists seem to make the most difference when they are used?</li>
+</ul>
+</i>
+</font>
+
+    
+  <h4>10.3.2. Adding Properties to a  Property List</h4>
+
+    
+  <h4>10.3.3. Using Property Lists</h4>
+
+
+===== END REDACTION ============== -->
+
+</i>
+
+<a name="UsingH5P_DEFAULT">
+<h4 class="pagebefore">10.3.1. Using Default Property Lists</h4>
+</a>
+
+    Default property lists can simplify many routine HDF5 tasks because
+    you do not always have to create every property list you use.
+    </p>
+    <p>
+    An application that would be well-served by HDF5’s default
+    property settings can use the default property lists simply by
+    substituting the value <code>H5P_DEFAULT</code> 
+    for a property list identifier.  HDF5 will then apply the 
+    default property list for the appropriate property list class.
+    </p>
+    <p>
+    For example, the function <code>H5Dcreate2</code> calls for 
+    a link creation property list,
+    a dataset creation property list, and 
+    a dataset access property list.
+    If the default properties are suitable for a dataset, 
+    this call can be made as
+
+    <dir>
+    <dl>
+      <dt><code>dset_id = H5Dcreate2( <i>loc_id</i>, <i>name</i>, <i>dtype_id</i>, <i>space_id</i></code>;
+          </dt>
+      <dt><code>      
+          H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT );
+</code>
+          </dt>
+    </dl>
+    </dir>
+    
+    HDF5 will then apply the default link creation, dataset creation, 
+    and dataset access property lists correctly.
+    </p>
+    <p>
+    Of course, you would not want to do this without considering where 
+    it is appropriate, as there may be unforeseen consequences.
+    Consider, for example, the use of chunked datasets.  
+    Optimal chunking is quite dependent on the makeup of the dataset 
+    and the most common access patterns, both of which must be 
+    taken into account in setting up the size and shape of chunks.  
+    </p>
+
+
+<a name="BasicProgModSteps">
+<h4 class="pagebefore">10.3.2. Basic Steps of the Programming Model</h4>
+</a>
+
+    The steps of the property list programming model are described 
+    in the sub-sections below.
+
+<a name="CreatePList">
+<h5 class="pagebefore">10.3.2.1. Create a Property List</h5>
+</a>
+
+    A new property list can be created either as an instance of
+    a property list class or by copying an existing property list.
+    Consider the following examples.
+    A new dataset creation property list is first created 
+    “from scratch” with <code>H5Pcreate</code>.
+    A second dataset creation property list is then created
+    by copying the first one with <code>H5Pcopy</code>.
+    
+    <dir>
+    <dl>
+      <dt><code>dcplA_id = H5Pcreate (H5P_DATASET_CREATE)</code>;
+          <br /> 
+          </dt>
+          <dd>
+          The new dataset creation property list is created as an instance 
+	  of the property list class <code>H5P_DATASET_CREATE</code>.
+          <p>
+          The new dataset creation  property list’s identifier
+          is returned in <code>dcplA_id</code> and the 
+          property list is initialized with default dataset creation 
+          property values.
+          <p>
+          A list of valid  classes appears above in 
+          “<a href="#T1_PListClasses">Table 1: Property List Classes 
+          in HDF5</a>”.
+          </dd>
+      <dt><code>dcplB_id = H5Pcopy (dcplA_id)</code>;
+          <br /> 
+          </dt>
+          <dd>
+          A new dataset creation property list, <code>dcplB_id</code>, 
+          is created as a copy of <code>dcplA_id</code> and is 
+          initialized with dataset creation property values currently 
+          in <code>dcplA_id</code>.
+          </dd>
+    </dl>
+    </dir>
+    At this point, <code>dcplA_id</code> and <code>dcplB_id</code>
+    are identical; they will both contain any modified property values 
+    that were changed in <code>dcplA_id</code> before <code>dcplB_id</code> 
+    was created.  They may, however, diverge as additional property values 
+    are reset in each.
+
+    </p>
+    <p>
+    While we are creating property lists, let’s 
+    create a link creation property list;  
+    we will need this property list when the new dataset 
+    is linked into the file below:
+    <dir>
+    <dl>
+      <dt><code>lcplAB_id = H5Pcreate (H5P_LINK_CREATE)</code>;
+          </dt>
+    </dl>
+    </dir>
+    </p>
+
+<a name="ChangeProperty">
+<h5 class="pagebefore">10.3.2.2. Change Property Values</h5>
+</a>
+
+    This section describes how to set property values.
+    </p>
+    <p>
+    Later in this section, the dataset creation property lists
+    <code>dcplA_id</code> and <code>dcplB_id</code> created in the 
+    section above will be used respectively to create 
+    chunked and contiguous datasets.
+    To set this up, we must set the layout property in each property list.
+    The following example sets 
+    <code>dcplA_id</code> for chunked datasets and
+    <code>dcplB_id</code> for contiguous datasets:
+
+    <dir>
+    <dl>
+      <dt><code>error = H5Pset_layout (dcplA_id, H5D_CHUNKED)</code>;
+          </dt>
+      <dt><code>error = H5Pset_layout (dcplB_id, H5D_CONTIGUOUS)</code>;
+          </dt>
+    </dl>
+    </dir>
+    
+    <p>
+    Since <code>dcplA_id</code> specifies a chunked layout, 
+    we must also set the number of dimensions and the size of the chunks.  
+    Th example below specifies that datasets created with 
+    <code>dcplA_id</code> will be 3-dimensional and 
+    that the chunk size will be 100 in each dimension:
+    <dir>
+    <dl>
+      <dt><code>error = H5Pset_chunk (dcplA_id, 3, [100,100,100])</code>;
+          </dt>
+    </dl>
+    </dir>
+
+    </p>
+    <p>
+    These datasets will be created with UTF-8 encoded names.
+    To accomplish that, the following example sets the character encoding 
+    property in the link creation property list to create link names
+    with UTF-8 encoding:
+    <dir>
+    <dl>
+      <dt><code>error = H5Pset_char_encoding (lcplAB_id, H5T_CSET_UTF8)</code>;
+          </dt>
+    </dl>
+    </dir>
+    <code>dcplA_id</code> can now be used to create chunked datasets 
+    and <code>dcplB_id</code> to create contiguous datasets. 
+    And with the use of <code>lcplAB_id</code>, they will be created
+    with UTF-8 encoded names.
+
+
+<a name="UsePropertyList">
+<h5 class="pagebefore">10.3.2.3. Use the Property List</h5>
+</a>
+
+    Once the required property lists have been created, they can be used 
+    to control various HDF5 processes.
+    For illustration, consider dataset creation.
+    </p>
+    <p>
+    Assume that the datatype <code>dtypeAB</code> and the 
+    dataspaces <code>dspaceA</code> and <code>dspaceB</code>
+    have been defined 
+    and that the location identifier <code>locAB_id</code> specifies
+    the group <code>AB</code> in the current HDF5 file.
+    We have already created the required link creation and dataset creation 
+    property lists.  For the sake of illustration, we assume that the
+    default dataset access property list meets our application requirements.
+    The following calls would create the datasets <code>dsetA</code>
+    and <code>dsetB</code> in the group <code>AB</code>.
+    The raw data in <code>dsetA</code> will be contiguous 
+    while <code>dsetB</code> raw data will be chunked; 
+    both datasets will have UTF-8 encoded link names:
+<pre>
+    dsetA_id = H5Dcreate2( locAB_id, dsetA, dtypeAB, dspaceA_id, 
+                        lcplAB_id, dcplA_id, H5P_DEFAULT );
+    dsetB_id = H5Dcreate2( locAB_id, dsetB, dtypeAB, dspaceB_id, 
+                        lcplAB_id, dcplB_id, H5P_DEFAULT ); 
+</pre>
+
+
+
+<a name="ClosePList">
+<h5 class="pagebefore">10.3.2.4. Close the Property List</h5>
+</a>
+
+    Generally, creating or opening anything in an HDF5 file 
+    results in an HDF5 identifier.  These identifiers are of 
+    HDF5 type <code>hid_t</code> and include things like
+    file identifiers, often expressed as <code><i>file_id</i></code>;
+    dataset identifiers, <code><i>dset_id</i></code>; and
+    property list identifiers, <code><i>plist_id</i></code>.
+    To reduce the risk of memory leaks, all of these identifiers must 
+    be closed once they are no longer needed.
+    </p>
+    <p>
+    Property list identifiers are no exception to this rule,
+    and <code>H5Pclose</code> is used for this purpose.
+    The calls immediately following would close the 
+    property lists created and used in the examples above.
+    <dir>
+    <dl>
+      <dt><code>error = H5Pclose (dcplA_id)</code>;
+          </dt>
+      <dt><code>error = H5Pclose (dcplB_id)</code>;
+          </dt>
+      <dt><code>error = H5Pclose (lcplAB_id)</code>;
+          </dt>
+    </dl>
+    </dir>
+    </p>
+
+
+<a name="AdditionalPListOps">
+<h4 class="pagebefore">10.3.3. Additional Property List Operations</h4>
+</a>
+
+    A few property list operations fall outside of the programming model 
+    described above.  This section describes those operations.
+
+<a name="QueryPListClass">
+<h5 class="pagebefore">10.3.3.1. Query the Class of an Existing 
+    Property List</h5>
+</a>
+
+    Occasionally an application will have a property list
+    but not know the corresponding property list class.
+    A call such as in the following example will retrieve
+    the unknown class of a known property list:
+    
+    <dir>
+    <dl>
+      <dt><code><em>PList_Class</em> = H5Pget_class (dcplA_id)</code>;
+          </dt>
+    </dl>
+    </dir>
+    Upon this function’s return, <code><em>PList_Class</em></code>
+    will contain the value <code>H5P_DATASET_CREATE</code>
+    indicating that <code>dcplA_id</code> is a dataset creation property list.
+
+
+<a name="GetCreationPValues">
+<h5 class="pagebefore">10.3.3.2. Determine Current Creation Property List 
+    Settings in an Existing Object</h5>
+</a>
+
+    After a file has been created, another application may work on the file
+    without knowing how the creation properties for the file were set up.
+    Retrieving these property values is often unnecessary; HDF5 can
+    read the data and knows how to deal with any properties it encounters.
+    </p>
+    <p>
+    But sometimes an application must do something that requires knowing 
+    the creation property settings.  HDF5 makes the acquisition of this
+    information fairly straight-forward;
+    for each property setting call, <code>H5Pset_*</code>,
+    there is a corresponding <code>H5Pget_*</code> call
+    to retrieve the property’s current setting.
+    </p>
+    <p>
+    Consider the following examples which illustrate the determination of
+    dataset layout and chunking settings:
+    
+    <dir>
+    <dl>
+        <dt>The application must first identify the creation property list
+            with the appropriate <i>get creation property list</i> call.
+            There is one such call for each kind of object.</dt>
+            </p>
+        <dd><code>H5Dget_create_plist</code> will return a property list
+            identifier for the creation property list that was used 
+            to create the dataset. Call it <code>DCPL1_id</code>.</dd>
+            </p>
+        <dt><code>H5Pset_layout</code> sets a dataset’s layout to be
+            compact, contiguous, or chunked.</dt>
+            </p>
+        <dd><code>H5Pget_layout</code> called with <code>DCPL1_id</code> 
+            will return the dataset’s layout, either
+            <code>H5D_COMPACT</code>, <code>H5D_CONTIGUOUS</code>, 
+            or <code>H5D_CHUNKED</code>.</dd>
+            </p>
+        <dt><code>H5Pset_chunk</code> sets the rank of a dataset, 
+            that is the number of dimensions it will have, 
+            and the maximum size of each dimension.</dt>
+            </p>
+        <dd><code>H5Pget_chunk</code>, also called with <code>DCPL1_id</code>,
+            will return the rank of the dataset
+            and the maximum size of each dimension.</dd>
+            </p>
+    </dl>
+    </dir>
+    If a creation property value has not been explicitly set,
+    these <code>H5Pget_</code> calls will return the property’s 
+    default value.
+    
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ==== REMOVE H5Piterate DISCUSSION; GENERIC PROP FUNCTIONS BEYOND SCOPE ==== 
+    </p>
+    <p>
+    A more comprehensive approach is to perform a 
+    systematic analysis of the properties in a property list.
+    This approach could be based on <code>H5Piterate</code>, which
+    enables an application discover all the properties in a property list 
+    (or all the property lists in a property list class).
+    The application can then assess each property (or property list)
+    that is of interest.  Further discussion of this function 
+    is beyond the current scope of this document.
+===== END REDACTION ============== -->
+    </p>
+
+
+
+<a name="GetAccessPValues">
+<h5 class="pagebefore">10.3.3.3. Determine Access Property Settings</h5>
+</a>
+
+     Access property settings are quite different from creation properties.
+     Since access property settings are not retained in an HDF5 file
+     or object, there is normally no knowledge of the settings that 
+     were used in the past.
+     On the other hand, since access properties do not affect 
+     characteristics of the file or object, this is not normally an issue.
+     (See <a href="#APL,CPLexceptions">footnote 2</a> for exceptions.) 
+     </p>
+     <p>
+     One circumstance under which an application might need
+     to determine access property settings might be when a file or object
+     is already open but the application does not know the property list 
+     settings.
+     In that case, the application can use the appropriate 
+     <i>get access property list</i> call to retrieve a property list
+     identifier.  For example, if the dataset <code>dsetA</code>
+     from the earlier examples is still open, the following call 
+     would return an identifier for the dataset access property list
+     in use:
+<pre>
+    dsetA_dacpl_id = H5Dget_access_plist( dsetA_id ); 
+</pre>
+    The application could then use the returned property list identifier
+    to analyze the property settings.
+
+<!-- ==== REDACTED FOR REVIEW & PUBLICATION                    ====
+
+<font color="red">
+<i>
+</p>
+<p>
+Before putting more time into this subsection,
+under what circumstance might an application need to do this?
+If never or exceedingly rare, this can be dropped.
+</p>
+</i>
+</font>
+
+===== END REDACTION ============== -->
+
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ==== This is a 1.10 feature.           ====
+    
+<a name="EncodeDecodePList">
+<h5 class="pagebefore">10.3.3.4. Encode and Decode Property Lists</h5>
+</a>
+
+<font color="red">
+<i>
+
+A discussion of property list encoding and decoding,
+<code>H5Pencode</code> and <code>H5Pdecode</code>, 
+will be added when these functions appear in a public release,
+anticipated to be HDF5 Release 1.10.
+    </p>
+
+</i>
+</font>
+
+===== END REDACTION ============== -->
+     
+  
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+
+<a name="GeneralPListOps">
+<h3 class="pagebefore">10.4. General Property List Operations</h3>
+</a>
+
+    In many ways, property lists are handled much like objects in HDF5.
+    Property lists can be created and modified,
+    and information for many creation properties is retained in the file.
+    On the other hand, while access properties can be created, changed 
+    as needed, and discarded, access property information is not generally 
+    retained in the file or object.
+    <sup size="-1"><a href="#APL,CPLexceptions">1</a></sup>
+    </p>
+    <p>
+    The following sections provide general instructions for creating
+    and using property lists.
+    </p>
+
+
+<a name="CharEncoding">
+<h4 class="pagebefore">10.4.1. Set Object and Attribute Name 
+    Character Encoding</h4>
+</a>
+
+    Object and attribute names can be created with either ASCII or UTF-8 
+    character encoding. 
+    The relevant HDF5 property functions are:
+    <dir>
+    <dl>
+        <dt><code>H5Pset_char_encoding</code></dt>
+        <dt><code>H5Pget_char_encoding</code></dt>
+    </dl>
+    </dir>
+    </p>
+    <p>
+    ASCII and UTF-8 encodings and the use of these functions are discussed 
+    in the “Object and Attribute Names” section of
+    “<a href="../Advanced/UsingUnicode/index.html">Using UTF-8 Encoding 
+    in HDF5 Applications</a>”.
+
+===== END REDACTION ============== -->
+
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ==== Section isn't quite right.        ====
+     ====                                   ====
+     ==== Is there an actual OCPL?          ====
+     ==== Is is it always a DCPL or GCPL?   ====
+     ====       and possibly TCPL?          ====
+ 
+
+<a name="Object+LinkOps">
+<h3 class="pagebefore">10.4. Object Properties and Property Lists</h5>
+</a>
+
+    The HDF5 <i>object creation properties</i> govern certain aspects of 
+    object creation and can be used with several types of objects.
+    Object creation properties include setting the recording of times
+    associated with a file (<code>H5Pset_obj_track_times</code>)
+    and setting the tracking of attribute creation order and indexing
+    an object’s attributes on that creation order
+    (<code>H5Pset_attr_creation_order</code>).
+    </p>
+    <p>
+    Object creation properties are set in an object creation property list,
+    often represented by <code><i>ocpl_id</i></code>), 
+    and can be used in any create or open call that accepts an
+    object creation property list.
+    </p>
+    <p>
+    <i>Object copy properties</i> govern aspects of copying objects 
+    and, like object creation properties, can be used with several types 
+    of objects.
+    Object copying properties include setting various aspects of copying
+    an object (<code>H5Pset_copy_object</code>) and 
+    managing the duplication of copied committed datatypes 
+    (<code>H5Padd_merge_committed_dtype_path</code> and
+    <code>H5Pfree_merge_committed_dtype_paths</code>)
+    to ensure that committed datatypes used commonly by several data objects 
+    before a copy operation remain shared after the copy operation.
+    whether to copy recursively when copying a group.
+    </p>
+    <p>
+    Object copy properties are set in an object copy property list,
+    often represented by <code><i>ocpypl_id</i></code>), and
+    can be used in any call that accepts an object copy property list.
+    </p>
+
+===== END REDACTION ============== -->
+
+
+<a name="GenericPLists">
+<h3 class="pagebefore">10.4. Generic Properties Interface and 
+    User-defined Properties</h3>
+</a>
+
+    HDF5’s generic property functions provide tools for 
+    managing the entire property hierarchy and for the creation 
+    and management of user-defined property lists and properties.
+    The generic property functions also enable an application or a 
+    driver to create, modify, and manage custom properties, 
+    property lists, and property list classes. 
+    A comprehensive list of generic property functions appears 
+    below in the 
+    <a href="#GenericPropFunctions">generic property list functions</a>
+    table.
+    <p>
+    </p>
+    Property names beginning with ‘<code>H5</code>’ 
+    are reserved for HDF5 Library use and should not be used for
+    user-defined properties.
+    <p>
+    </p>
+    Beyond these comments and the 
+    <a href="#GenericPropFunctions">function listing</a>
+    below, discussions of HDF5’s generic property interface
+    and user-defined properties and property lists are beyond 
+    the current scope of this document.
+
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ===== BEGIN MORE SERIOUS Generic Properties TEXT ============
+     ===== But it's beyond scope for this version     ============
+
+    </p>
+    <p>
+    HDF5’s generic property functions provide a general foundation
+    for managing the entire property hierarchy.
+    The generic property functions enable an application or a driver to 
+    create, modify, and manage custom properties, property lists, 
+    and property list classes.
+    In fact, the HDF5 Library itself uses private versions of these 
+    functions to some extent when initializing the basic properties, 
+    property lists, and property list classes described elsewhere. 
+    </p>
+    <p>
+    Applications and drivers (the virtual file layer (VFL) and 
+    datatype conversion, for example) can use the generic property
+    functions to create properties that control features they add 
+    in an HDF5 environment. 
+    The ability of a driver to create properties when installed at 
+    run-time enables new features to be easily created and controlled 
+    while localizing changes to the code being added or modified.
+    This facilitates software maintainence and the evolution of 
+    both the application or driver's properties and HDF5’s 
+    properties ecosystem. 
+    </p>
+    <p>
+    The generic property functions also enable users to create and set 
+    properties which are temporary in nature and do not need to be stored 
+    longer than the application is active. This would allow users to 
+    set and query application-specific properties during an 
+    application’s execution without impacting another application 
+    or leaving unnecessary “residue” in the file.
+    </p>
+
+<a name="UsingGenericPLists">
+<h4 class="pagebefore">10.541. Using Generic Property List Functions</h4>
+</a>
+
+    Generic property functions can be used to do anything that
+    the more the focussed property list functions do.  For example, 
+    functionality of the function <code>H5Pset_fapl_mpio</code> 
+    could be completely implemented with generic function calls.  
+    Of course, these tasks can be more simply performed with the 
+    existing functions.
+    </p>
+    <p>
+    The value of the generic property functions comes into play 
+    when an application requires a property not included with HDF5.
+    For exmaple, 
+
+<font color="red">
+<i>
+< example needed >
+</i>
+</font>.
+
+    </p>
+    <p>
+    A new property list class can be derived from an existing class 
+    by calling <code>H5Pcreate_class</code> with the 
+    <em><code>parent_class</code></em> parameter set to the existing class
+    that the new class is to inherit from.
+    Properties that differentiate the new class can then be added and set
+    with <code>H5Pregister</code> and, if necessary, <code>H5Pset</code>.
+    </p>
+    <p>
+    If the new property list class is unlike any existing class and 
+    is being created from scratch, the new class is created with 
+    <code>H5Pcreate_class</code> with the 
+    <em><code>parent_class</code></em> parameter set to <code>NULLL</code>.
+    At this point, an <i>empty</i> property list class exists.
+    The new empty property list class can then be populated with 
+    a set of properties using <code>H5Pregister</code> and, 
+    if necessary, <code>H5Pset</code>.
+
+<font color="red">
+<i>
+< Correct?  >
+</i>
+</font>
+
+    </p>
+    <p>
+    Additional new property list classes can be derived from 
+    any existing property list class, including a new <i>empty</i>
+    property list class, other user-derived property list classes,
+    or a property list class defined by the HDF5 Library. 
+    User-derived property list classes which are derived from the 
+    HDF5 Library-defined classes may be passed to HDF5 functions 
+    that expect library-defined property lists and the functions 
+    will traverse the inherited classes to find the correct class to 
+    retrieve information.
+    </p>
+    <p>
+    New properties can be added to a property list class with 
+    <code>H5Pregister</code>.
+    The property will become a permanent part of the property list 
+    and will be present in new property lists subsequently created 
+    with that class.
+    Registered properties can have default values for 
+    each new property list created for that class.
+    </p>
+    <p>
+    New properties can be added to a property list with 
+    <code>H5Pinsert</code>.
+    Such a property can be temporary and will no longer exist once the 
+    application quits.
+    Properties inserted into a property list will not affect 
+    property lists created with the parent property list class.
+
+<font color="red">
+<i>
+<br>
+< Can inserted properties be temporary such that they 
+will no longer exist once the application quits?  
+This was proposed in the design, but was it implemented that way? >
+</i>
+</font>
+
+    </p>
+    <p>
+    Property names beginning with '<code>H5</code>' are reserved 
+    for HDF5 Library use and should not be used by third-party 
+    applications or libraries.
+    </p>
+    <p>
+    The names and sizes of property values for each property 
+    are local to each property list; changing them in a 
+    property list class does not affect existing property lists.
+    </p>
+    <p>
+    A comprehensive list of generic property functions appears
+    below in the “<a href="#GenericPropFunctions">generic 
+    property functions</a>” table.
+
+
+<font color="red">
+<i>
+    </p>
+    <p>
+This section will continue with discussions of 
+selected generic property functions to give the user 
+a better sense of how they can be used.
+</i>
+</font>
+
+<br>
+===== END "beyond scope" Generic Properties discussion ============== 
+===== END REDACTION ============== -->
+    </p>
+
+
+
+
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ====== MASK UNUSED TEMPLATES ======
+
+<a name="CodeSnip">
+<h3 class="pagebefore">10.6. Code Snippets</h3>
+</a>
+
+<font color="red">
+<i>
+This section simply provides templates; none of the text is apropos.
+</i>
+</font>
+
+<p>
+Consider the the short example below and the longer one immediately following.
+</p>
+
+
+
+<table width="600" cellspacing="0" align="center">
+    <tr valign="top"> 
+        <td align="left">
+        <hr color="green" size="3"/>
+    <pre>
+  file_id = H5Fcreate ("SampleFile.h5", H5F_ACC_EXCL,
+      H5P_DEFAULT, H5P_DEFAULT)</pre></td>
+        </tr>
+    <tr><td><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td align="left">
+        <b>Example 1. Creating an HDF5 file using property list defaults</b>
+        <hr color="green" size="3"/></td>
+        </tr>
+</table>
+<br />
+
+<p>
+And the more complex case.
+<p>
+In this more complex case, 
+we define file creation and access property lists (though we do not 
+assign any properties), specify that <code>H5Fcreate</code> should 
+fail if <code>SampleFile.h5</code> already exists, and create a 
+new file named <code>SampleFile.h5</code>. The example does not 
+specify a driver, so the default driver, 
+<code>H5FD_SEC2</code>, will be used.</p>
+
+
+
+<table width="600" cellspacing="0" align="center">
+    <tr valign="top"> 
+        <td align="left">
+        <hr color="green" size="3"/>
+    <pre>
+  fcplist_id = H5Pcreate (H5P_FILE_CREATE)
+    <...<em>set desired file creation properties</em>...>
+  faplist_id = H5Pcreate (H5P_FILE_ACCESS)
+    <...<em>set desired file access properties</em>...>
+  file_id = H5Fcreate ("SampleFile.h5", H5F_ACC_EXCL, fcplist_id, faplist_id)</pre></td>
+        </tr>
+    <tr><td><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td align="left">
+        <b>Example 2. Creating an HDF5 file using property lists</b>
+        <hr color="green" size="3"/></td>
+        </tr>
+     <tr valign="top" align="left">
+     <td>
+     <font size="-1">
+     Notes: 
+     <br>
+     A root group is automatically created in a file when the file 
+     is first created.
+     <br>
+     File property lists, once defined, can be reused when another 
+     file is created within the same application.
+     </font>
+     </td>
+     </tr>
+</table>
+<br />
+
+<dir>
+    <p>Notes: 
+    <br>A root group is automatically created in a file when the file 
+    is first created.
+    <br>File property lists, once defined, can be reused when another 
+    file is created within the same application.
+    </p>
+</dir>
+
+===== END UNUSED TEMPLATES MASK =====
+===== END REDACTION ============== -->
+
+
+<!-- NEW PAGE -->
+<a name="FunctionSumms">
+<h3 class="pagebefore">10.5. Property List Function Summaries</h3>
+</a>
+
+    <p>
+    General property functions, 
+    generic property functions and macros, 
+    property functions that are used with multiple types of objects,
+    and object and link property functions
+    are listed below.
+    </p>
+    <p>
+    Property list functions that apply to a specific type of object
+    are listed in the chapter that discusses that object.
+    For example, the Datasets chapter has two property list function listings: 
+    one for dataset creation property list functions and
+    one for dataset access property list functions. 
+    As has been stated, this chapter is not intended to describe 
+    every property list function.
+    </p>
+
+   
+    <table width="600" cellspacing="0" align="center" cellpadding="0">
+    <tr valign="bottom" align="left">
+        <th colspan="3" valign="bottom">
+        Function Listing 1. General property list functions (H5P)
+        </th>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    <tr valign="top" align="left"> 
+        <th>
+        C Function<br />Fortran Subroutine    
+        </th>
+        <th> </th>
+        <th>
+        Purpose</th>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pcreate</code>
+        <br />
+        <code>h5pcreate_f   </code>
+        </td>
+        <td> </td>
+        <td>
+        Creates a new property list as an instance of a specified 
+        parent property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5copy</code>
+        <br />
+        <code>h5copy_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Creates a new property list by copying the specified 
+        existing property list.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_class</code>
+        <br />
+        <code>h5pget_class_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Retrieves the parent property list class of the specified 
+        property list.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pclose</code>
+        <br />
+        <code>h5pclose_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Closes the specified property list.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    </table>
+    </p>
+    <p>
+
+
+    Object property functions can be used with several kinds of objects.
+
+    <a name="ObjectPropFunctions"> </a>
+
+    </p>
+    <p>
+   
+    <table width="600" cellspacing="0" align="center" cellpadding="0">
+    <tr valign="bottom">
+        <th colspan="3" align="left" valign="bottom">
+        Function Listing 2. Object property functions (H5P)
+        </th>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    <tr valign="top"> 
+        <th align="left">
+        C Function
+        <br />
+        Fortran Subroutine    </b>
+        </th>
+        <th> </th>
+        <th align="left">
+        Purpose</td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr><th colspan="3" align="left">
+        Object Creation Properties
+        </th></tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_attr_creation_order</code>
+        <br />
+        <code>h5pget_attr_creation_order_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Retrieves tracking and indexing settings for attribute creation order. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_attr_phase_change</code>
+        <br />
+        <code>h5pget_attr_phase_change_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Retrieves attribute storage phase change thresholds.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_obj_track_times</code>
+        <br />
+        <code>h5pget_obj_track_times_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Determines whether times associated with an object are being recorded.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset_attr_creation_order</code>
+        <br />
+        <code>h5pset_attr_creation_order_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Sets tracking and indexing of attribute creation order.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset_attr_phase_change</code>
+        <br />
+        <code>h5pset_attr_phase_change_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Sets attribute storage phase change thresholds.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset_obj_track_times</code>
+        <br />
+        <code>h5pset_obj_track_times_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Sets the recording of times associated with an object.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr><th colspan="3" align="left">
+        Object Copy Properties
+        </th></tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Padd_merge_committed_dtype_path</code>
+        <br />
+        <code>(none)</code>
+        </td>
+        <td> </td>
+        <td>
+        Adds a path to the list of paths that will be searched in 
+        the destination file for a matching committed datatype.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pfree_merge_committed_dtype_paths   </code>
+        <br />
+        <code>(none)</code>
+        </td>
+        <td> </td>
+        <td>
+        Clears the list of paths stored in an object copy property list. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_copy_object</code>
+        <br />
+        <code>h5pget_copy_object_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Retrieves the properties to be used when an object is copied.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_mcdt_search_cb</code>
+        <br />
+        <code>(none)</code>
+        </td>
+        <td> </td>
+        <td>
+        Retrieves the callback function from the 
+        specified object copy property list.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset_copy_object</code>
+        <br />
+        <code>h5pset_copy_object_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Sets the properties to be used when an object is copied.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset_mcdt_search_cb</code>
+        <br />
+        <code>(none)</code>
+        </td>
+        <td> </td>
+        <td>
+        Sets the callback function that H5Ocopy will invoke 
+        before searching the entire destination file 
+        for a matching committed datatype.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    </table>
+    </p>
+    <p>
+
+
+    <a name="LinkCreationTable">
+    The following table lists link creation properties.</a>
+    Since the creation of a link is almost always a step in the 
+    creation of an object, these properties may also be set in 
+    group creation property lists, 
+    dataset creation property lists, 
+    datatype creation property lists, 
+    and the more generic object creation property lists. 
+    Some are also applicable to the attribute creation property lists.
+    <a name="WidelyUsedProps"> </a>
+    <a name="LinkCreateProps"> </a>
+    </p>
+    <p>
+
+    <table width="600" cellspacing="0" align="center" cellpadding="0">
+    <tr valign="bottom">
+        <th colspan="3" align="left" valign="bottom">
+        Function Listing 3. Link creation property functions (H5P)
+        </th>
+        </tr>
+    <tr valign="bottom">
+        <td colspan="3" align="left" valign="bottom">
+        <font size="-1"><i>
+        These properties can be used with any of the indicated 
+        property lists.
+        </i></font>
+        </th>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    <tr valign="top" align="left"> 
+        <th>
+        C Function
+           <br />
+           Fortran Subroutine    
+        </th>
+        <th> </th>
+        <th>
+        Purpose</th>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_char_encoding</code>
+        <br />
+        <code>h5pget_char_encoding_f   </code>
+        </td>
+        <td> </td>
+        <td>
+        Queries the character encoding used to encode link or attribute names. 
+        <br>
+        <font size="-1"><i>
+        Any link, object, dataset, datatype, group, or attribute 
+        creation property list
+        </i></font>
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset_char_encoding</code>
+        <br />
+        <code>h5pset_char_encoding_f   </code>
+        </td>
+        <td> </td>
+        <td>
+        Sets the character encoding used to encode link and attribute names. 
+        <br>
+        <font size="-1"><i>
+        Any link, object, dataset, datatype, group, or attribute 
+        creation property list
+        </i></font>
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_create_intermediate_group</code>
+        <br />
+        <code>h5pget_create_intermediate_group_f   </code>
+        </td>
+        <td> </td>
+        <td>
+        Queries setting for creation of intermediate groups.
+        <br>
+        <font size="-1"><i>
+        Link creation property list, which in turn can be used in the
+        create call for any dataset, datatype, or group 
+        </i></font>
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset_create_intermediate_group</code>
+        <br />
+        <code>h5pset_create_intermediate_group_f   </code>
+        </td>
+        <td> </td>
+        <td>
+        Specifies whether to create intermediate groups 
+        when they do not already exist.
+        <br>
+        <font size="-1"><i>
+        Link creation property list, which in turn can be used in the
+        create call for any dataset, datatype, or group 
+        </i></font>
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    </table>
+    </p>
+    <p>
+
+
+    Generic property functions allow an application to create 
+    properties, property lists, and property list classes 
+    beyond those provided by HDF5.
+    <a name="GenericPropFunctions"> </a>
+    Beyond this function listing and the 
+    <a href="#GenericPLists">generic and user-defined properties</a>
+    section above, discussions of HDF5’s generic property interface
+    and user-defined properties and property lists are beyond 
+    the current scope of this document.
+
+    <a name="GenericPropFunctions"> </a>
+
+    </p>
+    <p>
+   
+    <table width="600" cellspacing="0" align="center" cellpadding="0">
+    <tr valign="bottom">
+        <th colspan="3" align="left" valign="bottom">
+        Function Listing 4. Generic property functions (H5P)
+        </th>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    <tr valign="top" align="left" valign="top"> 
+        <th>
+        C Function or Macro
+           <br />
+           Fortran Subroutine    
+        </th>
+        <th> </th>
+        <th>
+        Purpose</th>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pclose_class</code>
+        <br />
+        <code>h5pclose_class_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Closes an existing property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pcopy_prop</code>
+        <br />
+        <code>h5pcopy_prop_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Copies a property from one property list or property list class 
+        to another.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pcreate_class</code>
+        <br />
+        <code>h5pcreate_class_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Creates a new property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pequal</code>
+        <br />
+        <code>h5pequal_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Compares two property lists or property list classes for equality. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pexist</code>
+        <br />
+        <code>h5pexist_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Queries whether a property name exists in a property list 
+        or property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget</code>
+        <br />
+        <code>h5pget_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Queries the value of a property. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_class_name</code>
+        <br />
+        <code>h5pget_class_name_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Retrieves the name of a property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_class_parent</code>
+        <br />
+        <code>h5pget_class_parent_f   </code>
+        </td>
+        <td> </td>
+        <td>
+        Retrieves the parent class of a property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_nprops</code>
+        <br />
+        <code>h5pget_nprops_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Queries the number of properties in a property list or 
+        property list class. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pget_size</code>
+        <br />
+        <code>h5pget_size_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Queries the size of a property value in bytes. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pinsert</code>
+        <br />
+        <code>h5pinsert_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Registers a temporary property with a property list.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pisa_class</code>
+        <br />
+        <code>h5pisa_class_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Determines whether a property list is a member of a class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Piterate</code>
+        <br />
+        <code>h5piterate_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Iterates over the properties in a property list or
+        property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pregister</code>
+        <br />
+        <code>h5pregister_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Registers a permanent property with a property list class.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Premove</code>
+        <br />
+        <code>h5premove_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Removes a property from a property list. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Pset</code>
+        <br />
+        <code>h5pset_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Sets a property list value.
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="1" /></td></tr>
+    <tr valign="top">
+        <td>
+        <code>H5Punregister</code>
+        <br />
+        <code>h5punregister_f</code>
+        </td>
+        <td> </td>
+        <td>
+        Removes a property from a property list class. 
+        </td>
+        </tr>
+    <tr><td colspan="3"><hr color="green" size="3" /></td></tr>
+    </table>
+    </p>
+
+
+
+<a name="AddlPListResources">
+<h3 class="pagebefore">10.6. Additional Property List Resources</h3>
+</a>
+
+    Property lists are ubiquitous in an HDF5 environment and are therefore 
+    discussed in many places in HDF5 documentation.
+    The following sections and listings in the
+    <a href="UG_frame.html"><cite>HDF5 User’s Guide</cite></a> 
+    are of particular interest: 
+    <dir>
+    <dl>
+    <dt>In the “<a href="UG_frame03DataModel.html" target="_top">HDF5
+        Data Model and File Structure</a>” chapter, 
+        see the “Property List” section.
+            <br /> 
+    <dt>In the “<a href="UG_frame08TheFile.html" target="_top">HDF5
+        File</a>” chapter, see the following sections and listings:
+        <dd>File Creation and File Access Properties
+        <dd>File Property Lists and its sub-sections
+        <dd>Example with the File Creation Property List
+        <dd>Example with File Access Property List
+        <dd>File creation property list functions
+        <dd>File access property list functions
+        <dd>File driver functions
+            <br /> 
+    <dt>In the “<a href="UG_frame13Attributes.html" target="_top">HDF5
+        Attributes</a>” chapter, see the “Attribute creation 
+        property list functions” listing.
+            <br /> 
+    <dt>In the “<a href="UG_frame09Groups.html" target="_top">HDF5
+        Groups</a>” chapter, see the “Group creation 
+        property list functions” listing.
+            <br /> 
+    <dt>Property lists are discussed throughout the 
+            “<a href="UG_frame10Datasets.html" 
+            target="_top">HDF5 Datasets</a>” chapter.
+    </dl>
+    </dir>
+    </p>
+    <p>
+
+    All property list functions are described in the
+    “<a href="../RM/RM_H5P.html">H5P: Property List 
+    Interface</a>” section of the 
+    <a href="../RM/RM_H5Front.html"><cite>HDF5 Reference Manual</cite></a>.
+    The function index at the top of the page provides a categorized listing 
+    grouped by property list class.  Those classes are listed below:
+    <ul>
+        <ul>
+            <li>File creation properties
+            <li>File access properties
+            <li>Group creation properties
+            <li>Dataset creation properties
+            <li>Dataset access properties
+            <li>Dataset transfer properties
+            <li>Link creation properties
+            <li>Link access properties
+            <li>Object creation properties
+            <li>Object copy properties
+            <li>String creation property
+                <br /> 
+        </ul>
+        <li>Additional categories not related to the class structure 
+            are as follows:
+        <ul>
+            <li>General property list operations
+            <li>Generic property list functions
+        </ul>
+        The general property functions can be used with any property list;
+        the generic property functions constitute an advanced feature.
+    </ul>
+    </p>
+    <p>
+
+    The in-memory file image feature of HDF5 uses property lists 
+    in a manner that differs substantially from their use elsewhere in HDF5.
+    Whose who plan to use in-memory file images must study “<a href=
+    "../Advanced/FileImageOperations/HDF5FileImageOperations.pdf">File 
+    Image Operations</a>” (PDF) in the
+    <a href="../Advanced.html"><cite>Advanced Topics in HDF5</cite></a>
+    collection. 
+    </ul>
+    </p>
+
+
+<hr>
+
+<a name="Footnotes">
+<h3 class="pagebefore">Footnotes</h3>
+</a>
+
+    <a name="H5P_FILE_MOUNT">
+    <dl>
+    <dt>1. File mount properties
+        </dt></a>
+        <dd>While the file mount property list class 
+            <code>H5P_FILE_MOUNT</code> is a valid HDF5 property list class,
+            no file mount properties are defined by the HDF5 Library.
+            References to a file mount property list should always be
+            expressed as <code>H5P_DEFAULT</code>, meaning the 
+            default file mount property list.
+    </dl>
+
+    </p>
+    <p>
+
+    <a name="APL,CPLexceptions">
+    <dl>
+    <dt>2. Access and creation property exceptions
+        </dt></a>  
+        <dd>There are a small number of exceptions to the rule that 
+            creation properties are always retained in a file or object and 
+            access properties are never retained.
+            </p>
+            <p>
+            The following properties are file access properties
+            but they are not transient; 
+            they have permanent and different effects on a file. 
+            They could be validly classified as file creation properties 
+            as they must be set at creation time to properly create the file.
+            But they are access properties because they must also be set 
+            when a file is reopened to properly access the file.
+            <table>
+            <tr align="left" valign="top">
+                <th><code>    </code></th>
+                <th>Property</th>
+                <th><code>  </code></th>
+                <th>Related function</th>
+                </tr>
+            <tr align="left" valign="top">
+                <td><code>    </code></td>
+                <td>Family file driver</td>
+                <td><code> </code></td>
+                <td><code>H5Pset_fapl_family</code></td>
+                </tr>
+            <tr align="left" valign="top">
+                <td><code>    </code></td>
+                <td>Split file driver</td>
+                <td><code> </code></td>
+                <td><code>H5Pset_fapl_split</code></td>
+                </tr>
+            <tr align="left" valign="top">
+                <td><code>    </code></td>
+                <td>Core file driver</td>
+                <td><code> </code>
+                </p>
+                <p>
+                </td>
+                <td><code>H5Pset_fapl_core</code></td>
+                </tr>
+
+            <tr align="left" valign="top">
+                <td colspan="4">
+                    The following is a link creation property, but
+                    it is not relevant after an object has been created
+                    and is not retained in the file or object.
+            <tr align="left" valign="top">
+                <th><code>    </code></th>
+                <th>Property</th>
+                <th><code> </code></th>
+                <th>Related function</th>
+                </tr>
+            <tr align="left" valign="top">
+                <td><code>    </code></td>
+                <td>Create missing intermediate groups</td>
+                <td><code> </code></td>
+                <td><code>H5Pset_create_intermediate_groups</code></td>
+                </tr>
+            </table>
+    </dl>
+
+
+
+<!-- ==== REDACTED FOR REVIEW &/OR PUBLICATION ====
+     ==== NOT RELEVANT TO THE USER PUBLICATION =========
+<p>
+<u>Additional writing resources:</u>
+</p>
+<p>
+The <code>Topic-7.7-File Image Operations.pptx</code> file has a section titled “Digression: Property Lists” that includes slides 8-9. This might be a resource for the property lists chapter in the UG. 
+<br>
+This PowerPoint file is located in <code>C:\1 MEE\Working\hdf5_trunk\projects\PSI\Day 2</code>.
+
+<font color="red">
+<br>
+<i>
+This info is incorporated.
+</i>
+</font>
+
+</p>
+<p>
+See slide 48 of <code>Topic-6-HDF-Parallel.pptx</code> in <code>C:\1 MEE\Working\hdf5_trunk\projects\PSI\</code>Day 1. Parallel HDF5 programming model. 
+<br>
+Comment on slide: "HDF5 uses access template object (property list) to control the file access mechanism."
+
+<font color="red">
+<br>
+<i>
+May be useful if a Parallel I/O example is included.
+</i>
+</font>
+</p>
+
+===== END REDACTION ============== -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<br /><br />
+</body>
+</html>
diff --git a/html/UG/17_Additional.html b/html/UG/17_Additional.html
index 180b22c..c6340b2 100755
--- a/html/UG/17_Additional.html
+++ b/html/UG/17_Additional.html
@@ -42,17 +42,17 @@
 
 <div align="center">
 <a name="TOP">
-<h2>Chapter 10<br /><font size="7">Additional Resources</font></h2>
+<h2>Chapter 11<br /><font size="7">Additional Resources</font></h2>
 </a>
 </div>
 
 <!-- FOR USE WITH ELECTRONIC VERSION --------------------------------->
 
 <center>
-<table border=0 width=80%>
+<table border="0" width="80%">
 
     <tr>
-      <td valign=top colspan=3>
+      <td valign="top" colspan="3">
       <p>These documents supplement the <cite>HDF5 User’s Guide</cite>
       and provide additional detailed information for the use and tuning 
       of specific HDF5 features.</p></td>
@@ -65,118 +65,144 @@
       </tr>
 
     <tr>
-      <td valign=top>
+      <td valign="top">
       <a href="http://www.hdfgroup.org/ftp/HDF5/examples/examples-by-api/">
       HDF5 Examples</a></td>
       <td>   </td>
-      <td valign=top>Code examples by API. 
+      <td valign="top">Code examples by API. 
         <!-- 11.2.10, keep code examples at the top of the list of links -->
         </td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
 
     <tr>
-      <td valign=top>
+      <td valign="top">
       <a href="../Advanced/Chunking/index.html">Chunking in HDF5</a></td>
       <td>   </td>
-      <td valign=top>Structuring the use of chunking and tuning it for 
+      <td valign="top">Structuring the use of chunking and tuning it for 
       performance.</td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
 
     <tr>
-      <td valign=top>
+      <td valign="top">
       <a href="../Advanced/DirectChunkWrite/UsingDirectChunkWrite.pdf">
       Using the Direct Chunk Write Function</a></td>
       <td>   </td>
-      <td valign=top>Describes another way that chunks can be written 
+      <td valign="top">Describes another way that chunks can be written 
       to datasets.</td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
 
     <tr>
-      <td valign=top>
+      <td valign="top">
       <a href="../Advanced/CommittedDatatypeCopying/CopyingCommittedDatatypesWithH5Ocopy.pdf">
       Copying Committed Datatypes with H5Ocopy</a></td>
       <td>   </td>
-      <td valign=top>
+      <td valign="top">
       Describes how to copy to another file a dataset that uses a committed 
       datatype or an object with an attribute that uses a committed datatype 
       so that the committed datatype in the destination file can be used by 
       multiple objects.</td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
 
     <tr>
-      <td valign=top><a href="../Advanced/MetadataCache/index.html">
+      <td valign="top"><a href="../Advanced/MetadataCache/index.html">
       Metadata Caching in HDF5</a></td>
       <td>   </td>
-      <td valign=top>Managing the HDF5 metadata cache and tuning it for 
+      <td valign="top">Managing the HDF5 metadata cache and tuning it for 
       performance.</td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
 
-    <tr><td valign=top>
+    <tr><td valign="top">
       <a href="../Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">
       HDF5 Dynamically Loaded Filters</a>
       <td> </td>
-      <td valign=top>
-      Describes how an HDF5 application can apply a non-native HDF5 
-      filter during I/O operations at run-time. 
+      <td valign="top">
+      Describes how an HDF5 application can apply a filter that is not 
+      registered with the HDF5 Library.
       </td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
 
-    <tr><td valign=top>
+    <tr><td valign="top">
       <a href="../Advanced/FileImageOperations/HDF5FileImageOperations.pdf">
       HDF5 File Image Operations</a></td>
       <td> </td>
-      <td valign=top>
+      <td valign="top">
       Describes how to work with HDF5 files in memory. Disk I/O is not 
       required when file images are opened, created, read from, or 
       written to.</td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
 
-    <tr><td valign=top><a href="../Advanced/UsingIdentifiers/index.html">
+    <tr><td valign="top">
+      <a href="../Advanced/ModifiedRegionWrites/ModifiedRegionWrites.pdf">
+      Modified Region Writes</a></td>
+      <td> </td>
+      <td valign="top">
+      Describes how to set write operations for in-memory files so that 
+      only modified regions are written to storage. Available when 
+      the Core (Memory) VFD is used. 
+      </td>
+      </tr>
+
+    <tr><td colspan="3"> </td></tr>
+
+    <tr><td valign="top"><a href="../Advanced/UsingIdentifiers/index.html">
       Using Identifiers</a></td>
       <td>   </td>
-      <td valign=top>
+      <td valign="top">
       Describes how identifiers behave and how they should be treated.</td>
       </tr>
 
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
     
-    <tr><td valign=top><a href="../Advanced/UsingUnicode/index.html">
+    <tr><td valign="top"><a href="../Advanced/UsingUnicode/index.html">
       Using UTF-8 Encoding in </a>
       <br />
       <a href="../Advanced/UsingUnicode/index.html">HDF5 Applications</a>
       
       </td>
       <td>   </td>
-      <td valign=top>
+      <td valign="top">
       Describes the use of UTF-8 Unicode character encodings in HDF5 
       applications.</td>
       </tr>
       
-    <tr><td colspan=3> </td></tr>
+    <tr><td colspan="3"> </td></tr>
+    
+    <tr><td valign="top"><a href="../Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">
+      Freeing Memory Allocated</a>
+      <br />
+      <a href="../Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">by the HDF5 Library</a>
+      </td>
+      <td>   </td>
+      <td valign="top">
+      Describes how inconsistent memory management can cause heap 
+      corruption or resource leaks and possible solutions.</td>
+      </tr>
+      
+    <tr><td colspan="3"> </td></tr>
     
     <tr>
-      <td valign=top><a href="../Glossary.html">
+      <td valign="top"><a href="../Glossary.html">
       HDF5 Glossary</a></td>
       <td>   </td>
-      <td valign=top>A glossary of terms.
+      <td valign="top">A glossary of terms.
       <!-- 11.2.10, keep Glossary at the bottom of the list of links --></td>
       </tr>
 
-      <tr><td colspan=3> </td></tr>
+      <tr><td colspan="3"> </td></tr>
       
 
 
@@ -233,7 +259,7 @@
 <br />
 <!-- NEW PAGE -->
 <!-- PRINT VERSION CONTINUED --
-<h2>10.1. Using Identifiers</h2>
+<h2>11.1. Using Identifiers</h2>
 <p> The purpose of this section is to describe how identifiers behave 
     and how they should be treated by application programs.</p>
 
@@ -342,7 +368,7 @@
 
 <!-- NEW PAGE -->
 <!-- PRINT VERSION CONTINUED --
-<h2>10.2. Chunking in HDF5</h2>
+<h2>11.2. Chunking in HDF5</h2>
 
 <p> Datasets in HDF5 not only provide a convenient, structured, and 
     self-describing way to store data, but are also designed to do so with 
@@ -353,7 +379,7 @@
 ---------1---------2---------3---------4---------5---------6---------7---------8
 -->
 <!-- PRINT VERSION CONTINUED --
-<h3>10.2.1. What are Chunks?</h3>
+<h3>11.2.1. What are Chunks?</h3>
 
 <p> Datasets in HDF5 can represent arrays with any number of dimensions 
     (up to 32). However, in the file this dataset must be stored as part 
@@ -490,7 +516,7 @@ int main(void) {
 
 <!-- NEW PAGE -->
 <!-- PRINT VERSION CONTINUED --
-<h3>10.2.2. Data Storage Order</h3>
+<h3>11.2.2. Data Storage Order</h3>
 
 <p> To understand the effects of chunking on I/O performance it is 
     necessary to understand the order in which data is actually stored 
@@ -568,7 +594,7 @@ int main(void) {
     then the first element on disk would be A[0][0][0][0], the 
     second A[0][0][0][1], the third A[0][0][0][2], and so on.</p>
 
-<h3>10.2.3. Chunking and Partial I/O</h3>
+<h3>11.2.3. Chunking and Partial I/O</h3>
 
 <p> The issues outlined above regarding data storage order help to 
     illustrate one of the major benefits of dataset chunking, its 
@@ -693,7 +719,7 @@ H5P_DEFAULT);
 
 
 
-<h3>10.2.4. Chunk Caching</h3>
+<h3>11.2.4. Chunk Caching</h3>
 
 <p> Another major feature of the dataset chunking scheme is the chunk 
     cache.  As it sounds, this is a cache of the chunks in the dataset. 
@@ -820,7 +846,7 @@ H5P_DEFAULT);
     small amounts to many different chunks, if memory is not large 
     enough to hold all those chunks in cache at once.</p>
 
-<h3>10.2.5. I/O Filters and Compression</h3>
+<h3>11.2.5. I/O Filters and Compression</h3>
 
 <p> Dataset chunking also enables the use of I/O filters, including 
     compression. The filters are applied to each chunk individually, 
@@ -839,7 +865,7 @@ H5P_DEFAULT);
     size of the chunk cache, adjusting the size of the chunks, or 
     adjusting I/O patterns.</p>
 
-<h3>10.2.6. Pitfalls</h3>
+<h3>11.2.6. Pitfalls</h3>
 
 <p> Inappropriate chunk size and cache settings can dramatically reduce 
     performance. There are a number of ways this can happen. Some of 
@@ -930,7 +956,7 @@ H5P_DEFAULT);
           the dataset.</p>
     </ul>
 
-<h3>10.2.7. For More Information</h3>
+<h3>11.2.7. For More Information</h3>
 
 <!--
 ---------1---------2---------3---------4---------5---------6---------7---------8
@@ -974,11 +1000,11 @@ paragraph commented out. --
 
 
 <!-- FOR USE WITH ELECTRONIC VERSION --------------------------------->
-<!-- 11.19.10, section 10.2.8. is labeled for the electronic version, 
+<!-- 11.19.10, section 11.2.8. is labeled for the electronic version, 
 but doesn't seem to be appropriate for the page. I'm leaving it commented 
 out. --
 <!-- 
-<h3>10.2.8. Directions for Future Development</h3>
+<h3>11.2.8. Directions for Future Development</h3>
 
   As seen above, the HDF5 chunk cache currently requires careful control of the 
   parameters in order to achieve optimal performance. In the future, we plan to 
@@ -1023,7 +1049,7 @@ out. --
 <br />
 <!-- NEW PAGE -->
 <!-- PRINT VERSION CONTINUED --
-<h2>10.3. HDF5 Glossary and Terms</h2>
+<h2>11.3. HDF5 Glossary and Terms</h2>
 
 
 <dl>
diff --git a/html/UG/Images/PropListClassInheritance.png b/html/UG/Images/PropListClassInheritance.png
new file mode 100644
index 0000000..ea7bdc3
Binary files /dev/null and b/html/UG/Images/PropListClassInheritance.png differ
diff --git a/html/UG/Images/PropListEcosystem.png b/html/UG/Images/PropListEcosystem.png
new file mode 100644
index 0000000..01d5f81
Binary files /dev/null and b/html/UG/Images/PropListEcosystem.png differ
diff --git a/html/UG/UG_UpdateStatus.html b/html/UG/UG_UpdateStatus.html
index 4ad674b..2929357 100644
--- a/html/UG/UG_UpdateStatus.html
+++ b/html/UG/UG_UpdateStatus.html
@@ -9,14 +9,28 @@
 
 <br />
 <p>The <cite>HDF5 User’s Guide</cite> has been updated 
-for HDF5 Release 1.8.12. These updates have been made since the 1.8.11 
-version of this document was published in May 2013.</p>
+for HDF5 Release 1.8.13. These updates have been made since the 1.8.12 
+version of this document was published in November 2013.</p>
 
-<p>The main update is the following:</p>
+<p>The main updates are the following:</p>
     <ul>
-        <li>A comparison of ASCII and UTF-8 character encodings is made 
-        in the “Using UTF-8 Encoding in HDF5 Applications” topic 
-        in the “Additional Resources” chapter. </li>
+        <li>The “Properties and Property Lists in HDF5” 
+        chapter was added. This chapter gives a general overview of 
+        how property lists are used by the HDF5 Library.</li>
+        <li>The 
+        <a href="../Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">
+        <em>Freeing Memory Allocated by the HDF5 Library</em></a> 
+        topic was added to the “Additional Resources” chapter. 
+        This topic describes how inconsistent memory management can 
+        cause heap corruption or resource leaks and possible solutions.</li>
+        <li>The 
+        <a href="../Advanced/ModifiedRegionWrites/ModifiedRegionWrites.pdf">
+        <em>Modified Region Writes</em></a> topic was added to the 
+        “Additional Resources” chapter. This topic describes 
+        how to set write operations for in-memory files so that only 
+        modified regions are written to storage. This feature is 
+        available when the Core (Memory) VFD is used.</li>
+        
     </ul>
 
 <p>We welcome feedback on the documentation. Please send your comments to 
@@ -24,7 +38,7 @@ version of this document was published in May 2013.</p>
 </p>
 <br />
 <div align="left"><font color="999999" size="-1"><i>
-    Last modified: 12 November 2013
+    Last modified: 9 May 2014
     </i></font></div>
     
 
diff --git a/html/UG/UG_frame14PropertyLists.html b/html/UG/UG_frame14PropertyLists.html
new file mode 100755
index 0000000..b66ba8a
--- /dev/null
+++ b/html/UG/UG_frame14PropertyLists.html
@@ -0,0 +1,37 @@
+<html>
+<head>
+<title>HDF5 User's Guide</title>
+</head>
+
+
+<frameset cols="200,*" border=0>
+  <frame src="UG_nav14PropertyLists.html" scrolling="auto" name="BUTTONS">
+  <frame src="14_PropertyLists.html" scrolling="auto" name="CONTENT">
+</frameset>
+
+<noframes>
+  <b>HDF5 User's Guide</b>
+  <p>
+  This document is designed to be viewed via a frames-capable browser 
+  with frames enabled.
+  If you are reading this message, either your browser is not capable of
+  displaying framed data or its frames capability has been disabled.
+  <p>
+  Some readers may bypass frames deliberately.  If that is your case,
+  see the <cite>HDF5 User's Guide</cite> navigation bar; this file 
+  normally appears in a separate frame and provides links to 
+  current chapters and drafts:
+  <ul>
+    <li><a href="UG_nav00.html"><cite>HDF5 User's Guide</cite> 
+        navigation bar</a>
+  </ul>
+
+<!--
+  Release 4.0 or higher of either Netscape Communicator 
+  or Microsoft Internet Explorer or an equivalent browser.
+-->
+
+</noframes>
+
+
+</html>
diff --git a/html/UG/UG_front.html b/html/UG/UG_front.html
index 7bb4ea2..626b91f 100644
--- a/html/UG/UG_front.html
+++ b/html/UG/UG_front.html
@@ -8,7 +8,7 @@
 </head>
 <BODY>
 
-<div align=center>
+<div align="center">
 <br>
 <br>
 <br>
@@ -17,28 +17,28 @@
 <h1>HDF5 User's Guide</h1>
 <br>
 <br>
-<h3>HDF5 Release 1.8.12
+<h3>HDF5 Release 1.8.13
     <br>
-    <br>November 2013</h3>
+    <br>May 2014</h3>
 
  
 <hr>
 <br><br>
     <br> The HDF Group
     <br> 
-    <br><img src="../Graphics/help.png" align=top height=16>
+    <br><img src="../Graphics/help.png" align="top" height="16">
     <br>
     <br>
     <br>
 
-    <table align=right border="0">
-    <tr align=left><td>
+    <table align="right" border="0">
+    <tr align="left"><td>
         
     <!-- p class="editingComment" -->
     <p> 
     <p> 
     <p>
-    <font size=-2 face="Tahoma, Arial, Verdana, Helvetica, sans-serif">
+    <font size="-2" face="Tahoma, Arial, Verdana, Helvetica, sans-serif">
     The <cite>HDF5 User's Guide</cite> has been updated 
     to describe the HDF5 Release 1.8.x series; 
     <br>
diff --git a/html/UG/UG_nav00.html b/html/UG/UG_nav00.html
index e7dd707..c245abb 100644
--- a/html/UG/UG_nav00.html
+++ b/html/UG/UG_nav00.html
@@ -47,7 +47,8 @@
     <a href="UG_UseWith18.html" TARGET="CONTENT"><font size=-1><i>Using this Guide with 1.8.x</i></font></a>
 <br>
 -->
-    <a href="UG_UpdateStatus.html" TARGET="CONTENT"><font size=-1><i>Update Status</i></font></a>
+    <a href="UG_UpdateStatus.html" TARGET="CONTENT"><font size="-1">
+    <i>Update Status</i></font></a>
 </div>
 <p>
 
@@ -59,7 +60,7 @@
     -->
 
 <b>I. The Broad View</b>
-    <font color=#555555>
+    <font color="#555555">
 <!-- editingComment
       <br>  
     <a href="02_WhatIs.html" TARGET="CONTENT">What is HDF5?</a>
@@ -77,9 +78,9 @@
 <br>
 <b>II. Using HDF5 —<br>
              The Specifics</b>
-    <font color=#555555>
-      <br>  
+
 <!-- editingComment
+      <br>  
     <a href="05_Quick.html" TARGET="CONTENT">Quick Start</a>
       <br>  
     <a href="06_Naming.html" TARGET="CONTENT">API Struture &</a>
@@ -87,18 +88,22 @@
           <a href="06_Naming.html" TARGET="CONTENT">Naming Conventions</a>
       <br>  
     <a href="07_DocSet.html" TARGET="CONTENT">Document Set</a>
-      <br>  
 -->
+
+      <br>  
     <a href="UG_frame08TheFile.html" TARGET="_TOP">The File</a>
+
       <br>  
     <a href="UG_frame09Groups.html" TARGET="_TOP">Groups</a> 
+
       <br>  
     <a href="UG_frame10Datasets.html" TARGET="_TOP">Datasets</a> 
+
       <br>  
     <a href="UG_frame11Datatypes.html" TARGET="_TOP">Datatypes</a> 
 
       <br>  
-    <a href="UG_frame12Dataspaces.html" TARGET="_TOP">Dataspaces &</a>
+    <a href="UG_frame12Dataspaces.html" TARGET="_TOP">Dataspaces &</a>
           <br>     
           <a href="UG_frame12Dataspaces.html" TARGET="_TOP">Partial I/O</a> 
 
@@ -108,12 +113,13 @@
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a> 
      
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
+
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
@@ -244,37 +250,11 @@
 <hr>
 <hr>
 
-<font size=-2 face="tahoma,arial,sans-serif">
-</font><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" -->
-<address>
-<table width="100%" border="0">
-  <tr valign="top">
-      <td align="left">
-          <address>
-          The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
-          <p>
-          <font size="-1">
-          Describes HDF5 Release 1.8.12, November 2013.
-          </font>
-          </address>
-      </td></tr>
-<!--  <td width="5%"> </td> -->
-      <tr>
-      <td align="left">
-          <font size="-1">
-          <a href="../Copyright.html">Copyright</a> by
-          <a href="http://www.hdfgroup.org">The HDF Group</a>
-<!--      <br> -->
-          and the Board of Trustees of the University of Illinois
-          </font>
-      </td>   
-  </tr>   
-</table>
-<p>
-</address>
-<!-- #EndLibraryItem --><font size=-2 face="tahoma,arial,sans-serif"><SCRIPT LANGUAGE="JAVASCRIPT">
+<font size="-2" face="tahoma,arial,sans-serif">
+</font>
+<font size="-2" face="tahoma,arial,sans-serif"><SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 15 August 2013");
+document.writeln("Last modified: 14 May 2014");
 -->
 </SCRIPT>
 </font>
diff --git a/html/UG/UG_nav03DataModel.html b/html/UG/UG_nav03DataModel.html
index bf04a40..f9cadf5 100755
--- a/html/UG/UG_nav03DataModel.html
+++ b/html/UG/UG_nav03DataModel.html
@@ -122,13 +122,14 @@
     
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
      
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav04ProgModel.html b/html/UG/UG_nav04ProgModel.html
index b2e8023..0cc4f9d 100755
--- a/html/UG/UG_nav04ProgModel.html
+++ b/html/UG/UG_nav04ProgModel.html
@@ -153,13 +153,14 @@
     
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
     
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav08TheFile.html b/html/UG/UG_nav08TheFile.html
index 51e2199..de8e55c 100755
--- a/html/UG/UG_nav08TheFile.html
+++ b/html/UG/UG_nav08TheFile.html
@@ -143,13 +143,14 @@
     
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
      
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav09Groups.html b/html/UG/UG_nav09Groups.html
index 709727a..ffbb7ca 100755
--- a/html/UG/UG_nav09Groups.html
+++ b/html/UG/UG_nav09Groups.html
@@ -143,6 +143,9 @@
     
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
      
     </font>
 <br />
diff --git a/html/UG/UG_nav10Datasets.html b/html/UG/UG_nav10Datasets.html
index c0c2eb4..162adee 100755
--- a/html/UG/UG_nav10Datasets.html
+++ b/html/UG/UG_nav10Datasets.html
@@ -137,13 +137,14 @@
 
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
     
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav11Datatypes.html b/html/UG/UG_nav11Datatypes.html
index da93ba2..98972c9 100755
--- a/html/UG/UG_nav11Datatypes.html
+++ b/html/UG/UG_nav11Datatypes.html
@@ -145,13 +145,14 @@
     
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
      
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav12Dataspaces.html b/html/UG/UG_nav12Dataspaces.html
index fb9b001..cbc6a32 100755
--- a/html/UG/UG_nav12Dataspaces.html
+++ b/html/UG/UG_nav12Dataspaces.html
@@ -133,13 +133,14 @@
 
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
     
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav13Attributes.html b/html/UG/UG_nav13Attributes.html
index 388babe..88c987d 100755
--- a/html/UG/UG_nav13Attributes.html
+++ b/html/UG/UG_nav13Attributes.html
@@ -125,12 +125,13 @@
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
   
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
+  
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav13ErrorHandling.html b/html/UG/UG_nav13ErrorHandling.html
index 6d210aa..a5f26ad 100755
--- a/html/UG/UG_nav13ErrorHandling.html
+++ b/html/UG/UG_nav13ErrorHandling.html
@@ -134,12 +134,13 @@
           Operations</a>
       </font>
   
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
+  
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav13Attributes.html b/html/UG/UG_nav14PropertyLists.html
similarity index 87%
copy from html/UG/UG_nav13Attributes.html
copy to html/UG/UG_nav14PropertyLists.html
index 388babe..ea5ed4a 100755
--- a/html/UG/UG_nav13Attributes.html
+++ b/html/UG/UG_nav14PropertyLists.html
@@ -94,6 +94,14 @@
       <br>  
     <a href="UG_frame10Datasets.html" TARGET="_TOP">Datasets</a> 
       <br>  
+<!--
+    <a href="UG_frameObjectsIdentifiers.html" TARGET="_TOP">Objects and 
+      Identifiers</a> 
+          <br>     
+          <font size="-1">
+          <i>(unpublished)</i></font>
+      <br>  
+-->
     <a href="UG_frame11Datatypes.html" TARGET="_TOP">Datatypes</a> 
 
       <br>  
@@ -103,34 +111,42 @@
 
       <br>  
     <a href="UG_frame13Attributes.html" TARGET="_TOP">Attributes</a>
+
+      <br>  
+    <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
   
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
+      
       <font size="-1">
       <br>        
-        <a href="13_Attributes.html#Intro" TARGET="CONTENT">
+        <a href="14_PropertyLists.html#Intro" TARGET="CONTENT">
           Introduction</a>
       <br>      
-        <a href="13_Attributes.html#Model" TARGET="CONTENT">
+        <a href="14_PropertyLists.html#PListHierarchy" TARGET="CONTENT">
+          Properties, Lists, & Classes</a>
+      <br>      
+        <a href="14_PropertyLists.html#ProgModel" TARGET="CONTENT">
           Programming Model</a>
       <br>      
-        <a href="13_Attributes.html#Functions" TARGET="CONTENT">
-          Function Summaries</a>
+        <a href="14_PropertyLists.html#GenericPLists" TARGET="CONTENT">
+          Generic Operation &</a>
+      <br>        
+        <a href="14_PropertyLists.html#GenericPLists" TARGET="CONTENT">
+          User-defined Properties</a>
       <br>      
-        <a href="13_Attributes.html#Working1" TARGET="CONTENT">
-          Attribute Usage</a>
+        <a href="14_PropertyLists.html#FunctionSumms" TARGET="CONTENT">
+          Function Summaries</a>
       <br>      
-        <a href="13_Attributes.html#SpecIssues" TARGET="CONTENT">
-          Special Issues</a>
+        <a href="14_PropertyLists.html#AddlPListResources" TARGET="CONTENT">
+          Additional Resources</a>
       </font>
-      
-      <br>  
-    <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+    
   
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_nav17SpecialTopics.html b/html/UG/UG_nav17SpecialTopics.html
index 000fdb9..000627d 100755
--- a/html/UG/UG_nav17SpecialTopics.html
+++ b/html/UG/UG_nav17SpecialTopics.html
@@ -106,13 +106,14 @@
     
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
      
 <!--
       <br>  
     Images & Palettes
       <br>  
-    <a href="15_PLists.html" TARGET="CONTENT">Property Lists</a>
-      <br>  
     Discarding Objects
       <br>  
     <a href="17_Filters.html" TARGET="CONTENT">Filters</a>
diff --git a/html/UG/UG_navObjectsIdentifiers.html b/html/UG/UG_navObjectsIdentifiers.html
index dd8b69a..6c4ab52 100644
--- a/html/UG/UG_navObjectsIdentifiers.html
+++ b/html/UG/UG_navObjectsIdentifiers.html
@@ -151,6 +151,9 @@
     
       <br>  
     <a href="UG_frame13ErrorHandling.html" TARGET="_TOP">Error Handling</a>
+  
+      <br>  
+    <a href="UG_frame14PropertyLists.html" TARGET="_TOP">Property Lists</a> 
      
     </font>
 <br />
diff --git a/html/_topic/Chunking/index.html b/html/_topic/Chunking/index.html
index 36152db..cb66344 100644
--- a/html/_topic/Chunking/index.html
+++ b/html/_topic/Chunking/index.html
@@ -537,7 +537,7 @@ Example 2: Writing part of a column to a chunked dataset
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/_topic/DriversTable.htm b/html/_topic/DriversTable.htm
index 01e2f80..93ff3c7 100644
--- a/html/_topic/DriversTable.htm
+++ b/html/_topic/DriversTable.htm
@@ -132,10 +132,16 @@
         <td> </td>
         <td><code>H5FD_MPIPOSIX</code></td>
         <td> </td>
+        <td>This driver is no longer available.</td>
+        <!-- Removed from service by Quincey 3.28.2014.
         <td>This parallel file system driver uses MPI for communication 
         and POSIX file-system calls for file I/O.</td>
+        -->
         <td> </td>
-        <td><code>H5Pset_fapl_mpiposix</code></td></tr>
+        <!-- 
+        <td><code>H5Pset_fapl_mpiposix</code></td>
+        -->
+        <td> </td></tr>
     <tr><td colspan="7"><hr color="green" size="1" /></td></tr>
     <tr valign="top">
         <td>Stream</td>
diff --git a/html/_topic/filter_behavior.htm b/html/_topic/filter_behavior.htm
index 8206735..03f7c6e 100644
--- a/html/_topic/filter_behavior.htm
+++ b/html/_topic/filter_behavior.htm
@@ -19,8 +19,17 @@
 
 
 
+    <p>
+    Filters can be applied only to chunked datasets; 
+    they cannot be used with other dataset storage methods, 
+    such as contiguous, compact, or external datasets. 
+    <p>
+    Dataset elements of variable-length and dataset region reference datatypes
+    are stored in separate structures in the file called heaps.
+    Filters cannot currently be applied to these heaps. 
+    </p>
+    <p>
 <!-- NEW PAGE -->
-<p>
 <a name="Property-FilterBehavior">
 <strong>Filter Behavior in HDF5:</strong></a>
 <br>
@@ -145,14 +154,6 @@
     (The SZIP filter is an exception to this rule; see 
     <a href="#Property-SetSzip"><code>H5Pset_szip</code></a> for details.)
     <p>
-    <b>Notes:</b>
-    <br>
-    Filters can be applied only to chunked datasets; 
-    they cannot be used with other dataset storage methods, 
-    such as contiguous, compact, or external datasets. 
-    <p>
-    Dataset elements of variable-length and dataset region reference datatypes
-    are stored in separate structures in the file called heaps.
-    Filters cannot currently be applied to these heaps. 
-    </p>
+<!--    <b>Notes:</b>  -->
+<!--    <br>           -->
 
diff --git a/html/cpplus/CppInterfaces.html b/html/cpplus/CppInterfaces.html
index e861ebe..1d942f8 100644
--- a/html/cpplus/CppInterfaces.html
+++ b/html/cpplus/CppInterfaces.html
@@ -1432,7 +1432,7 @@ void resetIdComponent(
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ddl.html b/html/ddl.html
index 5dfa8be..55ec17b 100644
--- a/html/ddl.html
+++ b/html/ddl.html
@@ -641,7 +641,7 @@ GROUP "/" {
           <address>
           The HDF Group Help Desk: <img src="Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/doc-info.html b/html/doc-info.html
index 4b61a16..440dd55 100644
--- a/html/doc-info.html
+++ b/html/doc-info.html
@@ -19,14 +19,14 @@
 
 
 <?php
-$page_title = "HDF5 Documentation: Releases 1.6.10 and 1.8.12"; 
+$page_title = "HDF5 Documentation: Releases 1.6.10 and 1.8.13"; 
 include ("../../links.php"); 
 include ("../../includes/header.html"); 
 ?>
 <fieldset><h1>HDF5 Documentation</H1></fieldset>
 
 <p align=left>
-    <A HREF="./index.html">Release 1.8.12</A>
+    <A HREF="./index.html">Release 1.8.13</A>
     <code>  </code>
     <A HREF="../doc1.6/index.html">Release 1.6.10</A>
 
@@ -45,14 +45,14 @@ enables users to locate the desired documentation set.
 </p>
 <hr>
 
-<h2>HDF5 Release 1.8.12</h2>
+<h2>HDF5 Release 1.8.13</h2>
 
 
-<p>Release 1.8.12 is the current release.  
+<p>Release 1.8.13 is the current release.  
    New projects are strongly encouraged to use this release as it contains 
    many new features, file optimizations, and performance enhancements.</p>
 
-<p><h4>Release 1.8.12 Documentation (latest release):</h4></p>
+<p><h4>Release 1.8.13 Documentation (latest release):</h4></p>
 <p>
     <ul>
       <ul>
diff --git a/html/ed_libs/Footer-THGonly.lbi b/html/ed_libs/Footer-THGonly.lbi
index 7256673..19c9a7a 100644
--- a/html/ed_libs/Footer-THGonly.lbi
+++ b/html/ed_libs/Footer-THGonly.lbi
@@ -6,7 +6,7 @@
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ed_libs/Footer.lbi b/html/ed_libs/Footer.lbi
index bd49513..17aa6f0 100644
--- a/html/ed_libs/Footer.lbi
+++ b/html/ed_libs/Footer.lbi
@@ -6,7 +6,7 @@
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 2014.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/fortran/FortranFlags.html b/html/fortran/FortranFlags.html
index 6e84fa7..c6bc12f 100644
--- a/html/fortran/FortranFlags.html
+++ b/html/fortran/FortranFlags.html
@@ -482,7 +482,7 @@ the development of HDF5 Fortran applications.
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.8.12, November 2013.
+          Describes HDF5 Release 1.8.13, May 20114.
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/index.html b/html/index.html
index 8522de8..50243ab 100644
--- a/html/index.html
+++ b/html/index.html
@@ -256,7 +256,7 @@
 <td bgcolor="#FFFFFF" valign="top" align="center" colspan="3">
     <br />
     <font size="5" color="#004488">HDF5 Library</font>
-    <br /><font size="4" color="#004488">Release 1.8.12, November 2013
+    <br /><font size="4" color="#004488">Release 1.8.13, May 2014
     </font>
 </td>
 </tr>
@@ -401,7 +401,7 @@
 -->
         <br />
         <!-- hhmts start -->
-        Last modified: 18 March 2014
+        Last modified: 14 May 2014
         <!-- hhmts end -->
 
         <p>
diff --git a/perform/CMakeLists.txt b/perform/CMakeLists.txt
index 0a6fa10..df7526e 100644
--- a/perform/CMakeLists.txt
+++ b/perform/CMakeLists.txt
@@ -1,10 +1,10 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_PERFORM )
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Setup include Directories
@@ -16,125 +16,125 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib )
 # Add the executables
 # --------------------------------------------------------------------
 #-- Adding test for h5perf_serial
-SET (h5perf_serial_SRCS
+set (h5perf_serial_SRCS
     ${HDF5_PERFORM_SOURCE_DIR}/sio_timer.c
     ${HDF5_PERFORM_SOURCE_DIR}/sio_perf.c
     ${HDF5_PERFORM_SOURCE_DIR}/sio_engine.c
 )
-ADD_EXECUTABLE (h5perf_serial ${h5perf_serial_SRCS})
+add_executable (h5perf_serial ${h5perf_serial_SRCS})
 TARGET_NAMING (h5perf_serial ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5perf_serial " " " ")
-TARGET_LINK_LIBRARIES (h5perf_serial ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5perf_serial PROPERTIES FOLDER perform)
+target_link_libraries (h5perf_serial ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (h5perf_serial PROPERTIES FOLDER perform)
 
-IF (HDF5_BUILD_PERFORM_STANDALONE)
+if (HDF5_BUILD_PERFORM_STANDALONE)
   #-- Adding test for h5perf_serial_alone
-  SET (h5perf_serial_alone_SRCS
+  set (h5perf_serial_alone_SRCS
       ${HDF5_PERFORM_SOURCE_DIR}/sio_timer.c
       ${HDF5_PERFORM_SOURCE_DIR}/sio_perf.c
       ${HDF5_PERFORM_SOURCE_DIR}/sio_engine.c
   )
-  ADD_EXECUTABLE (h5perf_serial_alone ${h5perf_serial_alone_SRCS})
-  SET_PROPERTY (TARGET h5perf_serial_alone 
+  add_executable (h5perf_serial_alone ${h5perf_serial_alone_SRCS})
+  set_property (TARGET h5perf_serial_alone 
       APPEND PROPERTY COMPILE_DEFINITIONS STANDALONE
   )
   TARGET_NAMING (h5perf_serial_alone ${LIB_TYPE})
   TARGET_C_PROPERTIES (h5perf_serial_alone " " " ")
-  TARGET_LINK_LIBRARIES (h5perf_serial_alone ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-  SET_TARGET_PROPERTIES (h5perf_serial_alone PROPERTIES FOLDER perform)
-ENDIF (HDF5_BUILD_PERFORM_STANDALONE)
+  target_link_libraries (h5perf_serial_alone ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (h5perf_serial_alone PROPERTIES FOLDER perform)
+endif (HDF5_BUILD_PERFORM_STANDALONE)
 
 #-- Adding test for chunk
-SET (chunk_SRCS
+set (chunk_SRCS
     ${HDF5_PERFORM_SOURCE_DIR}/chunk.c
 )
 ADD_EXECUTABLE(chunk ${chunk_SRCS})
 TARGET_NAMING (chunk ${LIB_TYPE})
 TARGET_C_PROPERTIES (chunk " " " ")
 TARGET_LINK_LIBRARIES(chunk ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (chunk PROPERTIES FOLDER perform)
+set_target_properties (chunk PROPERTIES FOLDER perform)
 
 #-- Adding test for iopipe
-SET (iopipe_SRCS
+set (iopipe_SRCS
     ${HDF5_PERFORM_SOURCE_DIR}/iopipe.c
 )
-ADD_EXECUTABLE (iopipe ${iopipe_SRCS})
+add_executable (iopipe ${iopipe_SRCS})
 TARGET_NAMING (iopipe ${LIB_TYPE})
 TARGET_C_PROPERTIES (iopipe " " " ")
-TARGET_LINK_LIBRARIES (iopipe ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (iopipe PROPERTIES FOLDER perform)
+target_link_libraries (iopipe ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (iopipe PROPERTIES FOLDER perform)
 
 #-- Adding test for overhead
-SET (overhead_SRCS
+set (overhead_SRCS
     ${HDF5_PERFORM_SOURCE_DIR}/overhead.c
 )
-ADD_EXECUTABLE (overhead ${overhead_SRCS})
+add_executable (overhead ${overhead_SRCS})
 TARGET_NAMING (overhead ${LIB_TYPE})
 TARGET_C_PROPERTIES (overhead " " " ")
-TARGET_LINK_LIBRARIES (overhead ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (overhead PROPERTIES FOLDER perform)
+target_link_libraries (overhead ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (overhead PROPERTIES FOLDER perform)
 
 #-- Adding test for perf_meta
-SET (perf_meta_SRCS
+set (perf_meta_SRCS
     ${HDF5_PERFORM_SOURCE_DIR}/perf_meta.c
 )
-ADD_EXECUTABLE (perf_meta ${perf_meta_SRCS})
+add_executable (perf_meta ${perf_meta_SRCS})
 TARGET_NAMING (perf_meta ${LIB_TYPE})
 TARGET_C_PROPERTIES (perf_meta " " " ")
-TARGET_LINK_LIBRARIES (perf_meta ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-SET_TARGET_PROPERTIES (perf_meta PROPERTIES FOLDER perform)
+target_link_libraries (perf_meta ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (perf_meta PROPERTIES FOLDER perform)
 
 #-- Adding test for zip_perf
-SET (zip_perf_SRCS
+set (zip_perf_SRCS
     ${HDF5_PERFORM_SOURCE_DIR}/zip_perf.c
 )
-ADD_EXECUTABLE (zip_perf ${zip_perf_SRCS})
+add_executable (zip_perf ${zip_perf_SRCS})
 TARGET_NAMING (zip_perf ${LIB_TYPE})
 TARGET_C_PROPERTIES (zip_perf " " " ")
-TARGET_LINK_LIBRARIES (zip_perf ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (zip_perf PROPERTIES FOLDER perform)
+target_link_libraries (zip_perf ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (zip_perf PROPERTIES FOLDER perform)
 
-IF (H5_HAVE_PARALLEL)
+if (H5_HAVE_PARALLEL)
   #-- Adding test for h5perf
-  SET (h5perf_SRCS
+  set (h5perf_SRCS
       ${HDF5_PERFORM_SOURCE_DIR}/pio_timer.c
       ${HDF5_PERFORM_SOURCE_DIR}/pio_perf.c
       ${HDF5_PERFORM_SOURCE_DIR}/pio_engine.c
   )
-  ADD_EXECUTABLE (h5perf ${h5perf_SRCS})
+  add_executable (h5perf ${h5perf_SRCS})
   TARGET_NAMING (h5perf ${LIB_TYPE})
   TARGET_C_PROPERTIES (h5perf " " " ")
-  TARGET_LINK_LIBRARIES (h5perf ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-  SET_TARGET_PROPERTIES (h5perf PROPERTIES FOLDER perform)
+  target_link_libraries (h5perf ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+  set_target_properties (h5perf PROPERTIES FOLDER perform)
 
-  IF (HDF5_BUILD_PERFORM_STANDALONE)
+  if (HDF5_BUILD_PERFORM_STANDALONE)
     #-- Adding test for h5perf
-    SET (h5perf_alone_SRCS
+    set (h5perf_alone_SRCS
         ${HDF5_PERFORM_SOURCE_DIR}/pio_timer.c
         ${HDF5_PERFORM_SOURCE_DIR}/pio_perf.c
         ${HDF5_PERFORM_SOURCE_DIR}/pio_engine.c
     )
-    ADD_EXECUTABLE (h5perf_alone ${h5perf_alone_SRCS})
-    SET_PROPERTY (TARGET h5perf_alone 
+    add_executable (h5perf_alone ${h5perf_alone_SRCS})
+    set_property (TARGET h5perf_alone 
         APPEND PROPERTY COMPILE_DEFINITIONS STANDALONE
     )
     TARGET_NAMING (h5perf_alone ${LIB_TYPE})
     TARGET_C_PROPERTIES (h5perf_alone " " " ")
-    TARGET_LINK_LIBRARIES (h5perf_alone ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-    SET_TARGET_PROPERTIES (h5perf_alone PROPERTIES FOLDER perform)
-  ENDIF (HDF5_BUILD_PERFORM_STANDALONE)
+    target_link_libraries (h5perf_alone ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+    set_target_properties (h5perf_alone PROPERTIES FOLDER perform)
+  endif (HDF5_BUILD_PERFORM_STANDALONE)
 
-  IF (HDF5_BUILD_PARALLEL_ALL)
+  if (HDF5_BUILD_PARALLEL_ALL)
     #-- Adding test for benchpar
-    SET (benchpar_SRCS
+    set (benchpar_SRCS
         ${HDF5_PERFORM_SOURCE_DIR}/benchpar.c
     )
-    ADD_EXECUTABLE (benchpar ${benchpar_SRCS})
+    add_executable (benchpar ${benchpar_SRCS})
     TARGET_NAMING (benchpar ${LIB_TYPE})
     TARGET_C_PROPERTIES (benchpar " " " ")
-    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)
+    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)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/perform/CMakeTests.cmake b/perform/CMakeTests.cmake
index fab6ab2..f8a5846 100644
--- a/perform/CMakeTests.cmake
+++ b/perform/CMakeTests.cmake
@@ -5,7 +5,7 @@
 ##############################################################################
 ##############################################################################
 
-ADD_CUSTOM_COMMAND (
+add_custom_command (
     TARGET     zip_perf
     POST_BUILD
     COMMAND    ${CMAKE_COMMAND}
@@ -17,7 +17,7 @@ ADD_CUSTOM_COMMAND (
 #-----------------------------------------------------------------------------
 
 # Remove any output file left over from previous test run
-ADD_TEST (
+add_test (
     NAME PERFORM_h5perform-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
@@ -31,31 +31,31 @@ ADD_TEST (
         x-gnuplot
 )
 
-ADD_TEST (NAME PERFORM_h5perf_serial COMMAND $<TARGET_FILE:h5perf_serial>)
+add_test (NAME PERFORM_h5perf_serial COMMAND $<TARGET_FILE:h5perf_serial>)
 
-IF (HDF5_BUILD_PERFORM_STANDALONE)
-  ADD_TEST (NAME PERFORM_h5perf_serial_alone COMMAND $<TARGET_FILE:h5perf_serial_alone>)
-ENDIF (HDF5_BUILD_PERFORM_STANDALONE)
+if (HDF5_BUILD_PERFORM_STANDALONE)
+  add_test (NAME PERFORM_h5perf_serial_alone COMMAND $<TARGET_FILE:h5perf_serial_alone>)
+endif (HDF5_BUILD_PERFORM_STANDALONE)
 
-ADD_TEST (NAME PERFORM_chunk COMMAND $<TARGET_FILE:chunk>)
+add_test (NAME PERFORM_chunk COMMAND $<TARGET_FILE:chunk>)
 
-ADD_TEST (NAME PERFORM_iopipe COMMAND $<TARGET_FILE:iopipe>)
+add_test (NAME PERFORM_iopipe COMMAND $<TARGET_FILE:iopipe>)
 
-ADD_TEST (NAME PERFORM_overhead COMMAND $<TARGET_FILE:overhead>)
+add_test (NAME PERFORM_overhead COMMAND $<TARGET_FILE:overhead>)
 
-ADD_TEST (NAME PERFORM_perf_meta COMMAND $<TARGET_FILE:perf_meta>)
+add_test (NAME PERFORM_perf_meta COMMAND $<TARGET_FILE:perf_meta>)
 
-ADD_TEST (NAME PERFORM_zip_perf_help COMMAND $<TARGET_FILE:zip_perf> "-h")
-ADD_TEST (NAME PERFORM_zip_perf COMMAND $<TARGET_FILE:zip_perf> tfilters.h5)
+add_test (NAME PERFORM_zip_perf_help COMMAND $<TARGET_FILE:zip_perf> "-h")
+add_test (NAME PERFORM_zip_perf COMMAND $<TARGET_FILE:zip_perf> tfilters.h5)
 
-IF (H5_HAVE_PARALLEL)
-  ADD_TEST (NAME PERFORM_h5perf COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:h5perf>)
+if (H5_HAVE_PARALLEL)
+  add_test (NAME PERFORM_h5perf COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:h5perf>)
 
-  IF (HDF5_BUILD_PERFORM_STANDALONE)
-    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)
+  if (HDF5_BUILD_PERFORM_STANDALONE)
+    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)
 
-  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)
+  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 988ec63..59c598a 100644
--- a/perform/Makefile.am
+++ b/perform/Makefile.am
@@ -21,7 +21,7 @@
 
 include $(top_srcdir)/config/commence.am
 
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
 
 # bin_PROGRAMS will be installed.
 if BUILD_PARALLEL_CONDITIONAL
diff --git a/perform/Makefile.in b/perform/Makefile.in
index 4cc5b2b..8698c46 100644
--- a/perform/Makefile.in
+++ b/perform/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,10 +95,11 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver \
+	COPYING
 @BUILD_PARALLEL_CONDITIONAL_FALSE at bin_PROGRAMS =  \
 @BUILD_PARALLEL_CONDITIONAL_FALSE@	h5perf_serial$(EXEEXT)
 @BUILD_PARALLEL_CONDITIONAL_TRUE at bin_PROGRAMS =  \
@@ -174,15 +203,230 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
 am__EXEEXT_3 = iopipe$(EXEEXT) chunk$(EXEEXT) overhead$(EXEEXT) \
 	zip_perf$(EXEEXT) perf_meta$(EXEEXT) h5perf_serial$(EXEEXT) \
 	$(am__EXEEXT_2)
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -194,7 +438,8 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -254,7 +499,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -462,7 +706,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # .chklog files are output from those tests.
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
 
 # Add h5perf and h5perf_serial specific linker flags here
 h5perf_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
@@ -520,7 +763,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -561,10 +804,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -585,7 +830,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -607,27 +853,35 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
+
 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) $(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) $(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) $(EXTRA_iopipe_DEPENDENCIES) 
 	@rm -f iopipe$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(iopipe_OBJECTS) $(iopipe_LDADD) $(LIBS)
+
 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) $(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) $(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) $(EXTRA_zip_perf_DEPENDENCIES) 
 	@rm -f zip_perf$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(zip_perf_OBJECTS) $(zip_perf_LDADD) $(LIBS)
@@ -656,14 +910,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -678,26 +932,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -709,15 +952,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -726,9 +965,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -744,6 +984,193 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+iopipe.log: iopipe$(EXEEXT)
+	@p='iopipe$(EXEEXT)'; \
+	b='iopipe'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+chunk.log: chunk$(EXEEXT)
+	@p='chunk$(EXEEXT)'; \
+	b='chunk'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+overhead.log: overhead$(EXEEXT)
+	@p='overhead$(EXEEXT)'; \
+	b='overhead'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+zip_perf.log: zip_perf$(EXEEXT)
+	@p='zip_perf$(EXEEXT)'; \
+	b='zip_perf'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+perf_meta.log: perf_meta$(EXEEXT)
+	@p='perf_meta$(EXEEXT)'; \
+	b='perf_meta'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+h5perf_serial.log: h5perf_serial$(EXEEXT)
+	@p='h5perf_serial$(EXEEXT)'; \
+	b='h5perf_serial'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -803,6 +1230,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -887,20 +1317,21 @@ 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-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-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
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 recheck tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/perform/benchpar.c b/perform/benchpar.c
index 24146e4..b75006a 100644
--- a/perform/benchpar.c
+++ b/perform/benchpar.c
@@ -44,7 +44,6 @@
 /* defines for type of VFL driver to use */
 #define FACC_DEFAULT    0
 #define FACC_MPIO       1
-#define FACC_MPIPOSIX   2
 
 /* Defines for computing performance information */
 #define ONE_KB              1024
@@ -78,7 +77,7 @@ char mpi_name[MPI_MAX_PROCESSOR_NAME];
 static void usage(void)
 {
     printf("usage: benchpar [-d <# of dims>] [-s <dim_size>] [-f <file name>] [-h]\n");
-    printf("            [-S <slice dim>] [-p] [-I] [-c] [-i <# of iterations>\n");
+    printf("            [-S <slice dim>] [-I] [-c] [-i <# of iterations>\n");
     printf("    -c              - Use chunked storage for dataset with 1-1 exact\n");
     printf("                      mapping of chunks to hyperslabs\n");
     printf("                      Default: off (i.e. contiguous storage)\n");
@@ -91,8 +90,6 @@ static void usage(void)
     printf("                      Default: 3\n");
     printf("    -I              - Use independent parallel I/O\n");
     printf("                      Default: use collective parallel I/O\n");
-    printf("    -p              - Use MPI-posix VFL driver\n");
-    printf("                      Default: use MPI-I/O VFL driver\n");
     printf("    -s <dim_size>   - Set the size of each of the dataset's dimensions\n");
     printf("                      Default: 1024\n");
     printf("    -S <slice dim>  - Set the dimension to slice the dataset along\n");
@@ -114,7 +111,6 @@ static hid_t create_fcpl(void)
 static hid_t create_fapl(MPI_Comm comm, MPI_Info info, int acc_type )
 {
     hid_t fapl;                 /* File access property list    */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints               */
     herr_t ret;                 /* Generic return value         */
 
     fapl = H5Pcreate (H5P_FILE_ACCESS);
@@ -122,13 +118,7 @@ static hid_t create_fapl(MPI_Comm comm, MPI_Info info, int acc_type )
 
     /* set parallel access with communicator, using MPI-I/O driver */
     if (acc_type == FACC_MPIO) {
-    ret = H5Pset_fapl_mpio(fapl, comm, info);
-        assert(ret>=0);
-    } /* end if */
-
-    /* set parallel access with communicator, using MPI-posix driver */
-    if (acc_type == FACC_MPIPOSIX) {
-      ret = H5Pset_fapl_mpiposix(fapl, comm, use_gpfs);
+        ret = H5Pset_fapl_mpio(fapl, comm, info);
         assert(ret>=0);
     } /* end if */
 
@@ -279,10 +269,6 @@ int main(int argc, char *argv[])
                     par_mode=H5FD_MPIO_INDEPENDENT;
                     break;
 
-                case 'p':       /* Use MPI-posix VFL driver */
-                    vfl_type=FACC_MPIPOSIX;
-                    break;
-
                 case 's':       /* Change dimension size */
                     /* Get new dimension size */
                     dim_size=atoi(argv[curr_arg]);
@@ -469,7 +455,7 @@ int main(int argc, char *argv[])
     /* Only print information from one node */
     if(mpi_rank==0) {
         /* Print information about test */
-        printf("File driver used: %s\n",vfl_type==FACC_MPIO ? "MPI-I/O" : "MPI-posix");
+        printf("File driver used: %s\n",vfl_type==FACC_MPIO ? "MPI-I/O" : "Unknown");
         printf("Type of parallel access: %s\n",par_mode==H5FD_MPIO_COLLECTIVE ? "Collective" : "Independent");
         printf("Type of dataset storage: %s\n",use_chunks ? "Chunked" : "Contiguous");
         printf("Number of processes: %d\n",mpi_size);
diff --git a/perform/perf_meta.c b/perform/perf_meta.c
index 8c3b06f..b52871e 100644
--- a/perform/perf_meta.c
+++ b/perform/perf_meta.c
@@ -29,7 +29,6 @@
 /* File_Access_type bits */
 #define FACC_DEFAULT	0x0	/* serial as default */
 #define FACC_MPIO	0x1	/* MPIO */
-#define FACC_MPIPOSIX   0x8	/* MPIPOSIX */
 
 /* Which test to run */
 int RUN_TEST = 0x0;     /* all tests as default */
@@ -129,11 +128,7 @@ parse_options(int argc, char **argv)
 			    }
 			    break;
 
-		case 'p':   /* Use the MPI-POSIX driver access */
-			    facc_type = FACC_MPIPOSIX;
-			    break;
-
-		case 'm':   /* Use the MPI-POSIX driver access */
+		case 'm':   /* Use the MPI-IO driver */
 			    facc_type = FACC_MPIO;
 			    break;
 
@@ -171,7 +166,7 @@ parse_options(int argc, char **argv)
 
     /* Check valid values */
 #ifndef H5_HAVE_PARALLEL
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+    if(facc_type == FACC_MPIO)
     {
         nerrors++;
         return(1);
@@ -215,19 +210,15 @@ parse_options(int argc, char **argv)
 static void
 usage(void)
 {
-    printf("Usage: perf_meta [-h] [-m] [-p] [-d<num_datasets>]"
+    printf("Usage: perf_meta [-h] [-m] [-d<num_datasets>]"
            "[-a<num_attributes>]\n"
            "\t[-n<batch_attributes>] [-f<option>] [-t<test>]\n");
     printf("\t-h"
 	"\t\t\thelp page.\n");
     printf("\t-m"
 	"\t\t\tset MPIO as the file driver when parallel HDF5\n"
-        "\t\t\t\tis enabled.  Either -m or -p has be to \n"
-        "\t\t\t\tspecified when running parallel program.\n");
-    printf("\t-p"
-	"\t\t\tset MPI POSIX as the file driver when parallel \n"
-	"\t\t\t\tHDF5 is enabled.  Either -m or -p has be to \n"
-        "\t\t\t\tspecified when running parallel program.\n");
+        "\t\t\t\tis enabled.  -m must be specified\n"
+        "\t\t\t\twhen running parallel program.\n");
     printf("\t-d<num_datasets>"
 	"\tset number of datasets for meta data \n"
         "\t\t\t\tperformance test\n");
@@ -372,7 +363,7 @@ create_attrs_1(void)
 #ifdef H5_HAVE_PARALLEL
     /* need the rank for printing data */
     int         mpi_rank;
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+    if(facc_type == FACC_MPIO)
         MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
 #endif /*H5_HAVE_PARALLEL*/
 
@@ -416,7 +407,7 @@ create_attrs_1(void)
             goto error;
     } /* end for */
 
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
+    if(facc_type == FACC_MPIO) {
 #ifdef H5_HAVE_PARALLEL
         MPI_Barrier(MPI_COMM_WORLD);
 #endif /*H5_HAVE_PARALLEL*/
@@ -478,7 +469,7 @@ create_attrs_2(void)
 #ifdef H5_HAVE_PARALLEL
     /* need the rank for printing data */
     int         mpi_rank;
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+    if(facc_type == FACC_MPIO)
         MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
 #endif /*H5_HAVE_PARALLEL*/
 
@@ -519,11 +510,10 @@ create_attrs_2(void)
             goto error;
     } /* end for */
 
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
 #ifdef H5_HAVE_PARALLEL
-    MPI_Barrier(MPI_COMM_WORLD);
+    if(facc_type == FACC_MPIO)
+        MPI_Barrier(MPI_COMM_WORLD);
 #endif /*H5_HAVE_PARALLEL*/
-    }
 
 #ifdef H5_HAVE_PARALLEL
     /* only process 0 reports if parallel */
@@ -584,7 +574,7 @@ create_attrs_3(void)
 #ifdef H5_HAVE_PARALLEL
     /* need the rank for printing data */
     int         mpi_rank;
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+    if(facc_type == FACC_MPIO)
         MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
 #endif /*H5_HAVE_PARALLEL*/
 
@@ -633,11 +623,10 @@ create_attrs_3(void)
     	} /* end for */
     } /* end for */
 
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
 #ifdef H5_HAVE_PARALLEL
+    if(facc_type == FACC_MPIO)
         MPI_Barrier(MPI_COMM_WORLD);
 #endif /*H5_HAVE_PARALLEL*/
-    }
 
 #ifdef H5_HAVE_PARALLEL
     /* only process 0 reports if parallel */
@@ -709,8 +698,8 @@ void perf(p_time *perf_t, double start_t, double end_t)
 {
 	double t = end_t - start_t;
 
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
 #ifdef H5_HAVE_PARALLEL
+    if(facc_type == FACC_MPIO) {
         double reduced_t;
         double t_max, t_min;
         int    mpi_size, mpi_rank;
@@ -736,8 +725,9 @@ void perf(p_time *perf_t, double start_t, double end_t)
 	    if(t_min < perf_t->min)
 		perf_t->min = t_min;
         }
+    } else
 #endif /*H5_HAVE_PARALLEL*/
-    } else {
+    {
 	perf_t->total += t;
 
 	if(t > perf_t->max)
@@ -796,17 +786,17 @@ main(int argc, char **argv)
 #endif /*H5_HAVE_PARALLEL*/
 
     if(parse_options(argc, argv) != 0) {
-	   usage();
-	   return 0;
+       usage();
+       return 0;
     }
 
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
 #ifdef H5_HAVE_PARALLEL
+    if(facc_type == FACC_MPIO) {
         MPI_Init(&argc, &argv);
         MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
         MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
-#endif /*H5_HAVE_PARALLEL*/
     }
+#endif /*H5_HAVE_PARALLEL*/
 
 #ifdef H5_HAVE_PARALLEL
     if (facc_type == FACC_DEFAULT || (facc_type != FACC_DEFAULT && MAINPROCESS))
@@ -814,14 +804,10 @@ main(int argc, char **argv)
         fprintf(stderr, "\t\tPerformance result of metadata for datasets and attributes\n\n");
 
     fapl = H5Pcreate (H5P_FILE_ACCESS);
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
 #ifdef H5_HAVE_PARALLEL
-        if(facc_type == FACC_DEFAULT || facc_type == FACC_MPIO)
-            H5Pset_fapl_mpio(fapl, MPI_COMM_WORLD, MPI_INFO_NULL);
-        else if(facc_type == FACC_MPIPOSIX)
-            H5Pset_fapl_mpiposix(fapl, MPI_COMM_WORLD, FALSE);
+    if(facc_type == FACC_MPIO)
+        H5Pset_fapl_mpio(fapl, MPI_COMM_WORLD, MPI_INFO_NULL);
 #endif /*H5_HAVE_PARALLEL*/
-    }
 
     nerrors += create_dspace() < 0 	?1:0;
 
@@ -837,12 +823,11 @@ main(int argc, char **argv)
 
     h5_cleanup(FILENAME, fapl);
 
-    if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
 #ifdef H5_HAVE_PARALLEL
+    if(facc_type == FACC_MPIO)
         /* MPI_Finalize must be called AFTER H5close which may use MPI calls */
         MPI_Finalize();
 #endif /*H5_HAVE_PARALLEL*/
-    }
 
     if (nerrors) goto error;
 #ifdef H5_HAVE_PARALLEL
diff --git a/perform/pio_engine.c b/perform/pio_engine.c
index 87fa82c..3535fb4 100644
--- a/perform/pio_engine.c
+++ b/perform/pio_engine.c
@@ -37,10 +37,6 @@
 #   include <mpio.h>
 #endif  /* !MPI_FILE_NULL */
 
-#ifdef H5_HAVE_GPFS
-#   include <gpfs_fcntl.h>
-#endif  /* H5_HAVE_GPFS */
-
 #include "pio_perf.h"
 #include "pio_timer.h"
 
@@ -135,19 +131,6 @@ static herr_t do_fopen(parameters *param, char *fname, file_descr *fd /*out*/,
 static herr_t do_fclose(iotype iot, file_descr *fd);
 static void do_cleanupfile(iotype iot, char *fname);
 
-/* GPFS-specific functions */
-#ifdef H5_HAVE_GPFS
-static void gpfs_access_range(int handle, off_t start, off_t length, int is_write);
-static void gpfs_free_range(int handle, off_t start, off_t length);
-static void gpfs_clear_file_cache(int handle);
-static void gpfs_cancel_hints(int handle);
-static void gpfs_start_data_shipping(int handle, int num_insts);
-static void gpfs_start_data_ship_map(int handle, int partition_size,
-    int agent_count, int *agent_node_num);
-static void gpfs_stop_data_shipping(int handle);
-static void gpfs_invalidate_file_cache(const char *filename);
-#endif /* H5_HAVE_GPFS */
-
 /*
  * Function:        do_pio
  * Purpose:         PIO Engine where Parallel IO are executed.
@@ -189,22 +172,22 @@ do_pio(parameters param)
     iot = param.io_type;
 
     switch (iot) {
-    case MPIO:
-        fd.mpifd = MPI_FILE_NULL;
-        res.timers = pio_time_new(MPI_TIMER);
-        break;
-    case POSIXIO:
-        fd.posixfd = -1;
-        res.timers = pio_time_new(MPI_TIMER);
-        break;
-    case PHDF5:
-        fd.h5fd = -1;
-        res.timers = pio_time_new(MPI_TIMER);
-        break;
-    default:
-        /* unknown request */
-        fprintf(stderr, "Unknown IO type request (%d)\n", iot);
-        GOTOERROR(FAIL);
+        case MPIO:
+            fd.mpifd = MPI_FILE_NULL;
+            res.timers = pio_time_new(MPI_TIMER);
+            break;
+        case POSIXIO:
+            fd.posixfd = -1;
+            res.timers = pio_time_new(MPI_TIMER);
+            break;
+        case PHDF5:
+            fd.h5fd = -1;
+            res.timers = pio_time_new(MPI_TIMER);
+            break;
+        default:
+            /* unknown request */
+            fprintf(stderr, "Unknown IO type request (%d)\n", iot);
+            GOTOERROR(FAIL);
     }
 
     ndsets = param.num_dsets;       /* number of datasets per file          */
@@ -379,18 +362,18 @@ done:
     /* close any opened files */
     /* no remove(fname) because that should have happened normally. */
     switch (iot) {
-    case POSIXIO:
-        if (fd.posixfd != -1)
-        hrc = do_fclose(iot, &fd);
-        break;
-    case MPIO:
-        if (fd.mpifd != MPI_FILE_NULL)
-        hrc = do_fclose(iot, &fd);
-        break;
-    case PHDF5:
-        if (fd.h5fd != -1)
-        hrc = do_fclose(iot, &fd);
-        break;
+        case POSIXIO:
+            if (fd.posixfd != -1)
+            hrc = do_fclose(iot, &fd);
+            break;
+        case MPIO:
+            if (fd.mpifd != MPI_FILE_NULL)
+            hrc = do_fclose(iot, &fd);
+            break;
+        case PHDF5:
+            if (fd.h5fd != -1)
+            hrc = do_fclose(iot, &fd);
+            break;
     }
 
     /* release generic resources */
@@ -423,15 +406,15 @@ pio_create_filename(iotype iot, const char *base_name, char *fullname, size_t si
     HDmemset(fullname, 0, size);
 
     switch (iot) {
-    case POSIXIO:
-        suffix = ".posix";
-        break;
-    case MPIO:
-        suffix = ".mpio";
-        break;
-    case PHDF5:
-        suffix = ".h5";
-        break;
+        case POSIXIO:
+            suffix = ".posix";
+            break;
+        case MPIO:
+            suffix = ".mpio";
+            break;
+        case PHDF5:
+            suffix = ".h5";
+            break;
     }
 
     /* First use the environment variable and then try the constant */
@@ -454,7 +437,7 @@ pio_create_filename(iotype iot, const char *base_name, char *fullname, size_t si
         subdir = (user ? user : login);
 
         if (subdir) {
-            for (i = 0; i < size && prefix[i]; i++)
+            for (i = 0; i < size-1 && prefix[i]; i++)
                 fullname[i] = prefix[i];
 
             fullname[i++] = '/';
@@ -464,7 +447,8 @@ pio_create_filename(iotype iot, const char *base_name, char *fullname, size_t si
         }
         else {
             /* We didn't append the prefix yet */
-            HDstrncpy(fullname, prefix, MIN(HDstrlen(prefix), size));
+            HDstrncpy(fullname, prefix, size);
+            fullname[size - 1] = '\0';
         }
 
         if ((HDstrlen(fullname) + HDstrlen(base_name) + 1) < size) {
@@ -885,60 +869,59 @@ do_write(results *res, file_descr *fd, parameters *parms, long ndsets,
     switch (parms->io_type) {
         case POSIXIO:
         case MPIO:
-        /* both posix and mpi io just need dataset offset in file*/
-        dset_offset = (ndset - 1) * nbytes;
-        break;
+            /* both posix and mpi io just need dataset offset in file*/
+            dset_offset = (ndset - 1) * nbytes;
+            break;
 
         case PHDF5:
-        h5dcpl = H5Pcreate(H5P_DATASET_CREATE);
-        if (h5dcpl < 0) {
-            fprintf(stderr, "HDF5 Property List Create failed\n");
-            GOTOERROR(FAIL);
-        }
-        /* 1D dataspace */
-        if (!parms->dim2d){
-            /* Make the dataset chunked if asked */
-            if(parms->h5_use_chunks) {
-            /* Set the chunk size to be the same as the buffer size */
-            h5dims[0] = blk_size;
-            hrc = H5Pset_chunk(h5dcpl, 1, h5dims);
-            if (hrc < 0) {
-                fprintf(stderr, "HDF5 Property List Set failed\n");
-                GOTOERROR(FAIL);
-            } /* end if */
-            } /* end if */
-        }/* end if */
-        else{
-            /* 2D dataspace */
-            if(parms->h5_use_chunks) {
-            /* Set the chunk size to be the same as the block size */
-            h5dims[0] = blk_size;
-            h5dims[1] = blk_size;
-            hrc = H5Pset_chunk(h5dcpl, 2, h5dims);
-            if (hrc < 0) {
-                fprintf(stderr, "HDF5 Property List Set failed\n");
+            h5dcpl = H5Pcreate(H5P_DATASET_CREATE);
+            if (h5dcpl < 0) {
+                fprintf(stderr, "HDF5 Property List Create failed\n");
                 GOTOERROR(FAIL);
-            } /* end if */
-            } /* end if */
-        }/* end else */
-
-        sprintf(dname, "Dataset_%ld", ndset);
-        h5ds_id = H5DCREATE(fd->h5fd, dname, ELMT_H5_TYPE,
-            h5dset_space_id, h5dcpl);
+            }
+            /* 1D dataspace */
+            if (!parms->dim2d){
+                /* Make the dataset chunked if asked */
+                if(parms->h5_use_chunks) {
+                /* Set the chunk size to be the same as the buffer size */
+                h5dims[0] = blk_size;
+                hrc = H5Pset_chunk(h5dcpl, 1, h5dims);
+                if (hrc < 0) {
+                    fprintf(stderr, "HDF5 Property List Set failed\n");
+                    GOTOERROR(FAIL);
+                } /* end if */
+                } /* end if */
+            }/* end if */
+            else{
+                /* 2D dataspace */
+                if(parms->h5_use_chunks) {
+                /* Set the chunk size to be the same as the block size */
+                h5dims[0] = blk_size;
+                h5dims[1] = blk_size;
+                hrc = H5Pset_chunk(h5dcpl, 2, h5dims);
+                if (hrc < 0) {
+                    fprintf(stderr, "HDF5 Property List Set failed\n");
+                    GOTOERROR(FAIL);
+                } /* end if */
+                } /* end if */
+            }/* end else */
 
-        if (h5ds_id < 0) {
-            fprintf(stderr, "HDF5 Dataset Create failed\n");
-            GOTOERROR(FAIL);
-        }
+            sprintf(dname, "Dataset_%ld", ndset);
+            h5ds_id = H5DCREATE(fd->h5fd, dname, ELMT_H5_TYPE,
+                h5dset_space_id, h5dcpl);
 
-        hrc = H5Pclose(h5dcpl);
-        /* verifying the close of the dcpl */
-        if (hrc < 0) {
-            fprintf(stderr, "HDF5 Property List Close failed\n");
-            GOTOERROR(FAIL);
-        }
+            if (h5ds_id < 0) {
+                fprintf(stderr, "HDF5 Dataset Create failed\n");
+                GOTOERROR(FAIL);
+            }
 
-        break;
+            hrc = H5Pclose(h5dcpl);
+            /* verifying the close of the dcpl */
+            if (hrc < 0) {
+                fprintf(stderr, "HDF5 Property List Close failed\n");
+                GOTOERROR(FAIL);
+            }
+            break;
     }
 
     /* The task is to transfer bytes_count bytes, starting at
@@ -2461,119 +2444,96 @@ done:
 do_fopen(parameters *param, char *fname, file_descr *fd /*out*/, int flags)
 {
     int ret_code = SUCCESS, mrc;
-    herr_t hrc;
     hid_t acc_tpl = -1;         /* file access templates */
-    hbool_t use_gpfs = FALSE;   /* use GPFS hints        */
 
     switch (param->io_type) {
-    case POSIXIO:
-        if (flags & (PIO_CREATE | PIO_WRITE))
-        fd->posixfd = POSIXCREATE(fname);
-        else
-        fd->posixfd = POSIXOPEN(fname, O_RDONLY);
-
-        if (fd->posixfd < 0 ) {
-        fprintf(stderr, "POSIX File Open failed(%s)\n", fname);
-        GOTOERROR(FAIL);
-        }
-
-
-        /* The perils of POSIX I/O in a parallel environment. The problem is:
-         *
-         *      - Process n opens a file with truncation and then starts
-         *        writing to the file.
-         *      - Process m also opens the file with truncation, but after
-         *        process n has already started to write to the file. Thus,
-         *        all of the stuff process n wrote is now lost.
-         */
-        MPI_Barrier(pio_comm_g);
-
-        break;
-
-    case MPIO:
-        if (flags & (PIO_CREATE | PIO_WRITE)) {
-        MPI_File_delete(fname, h5_io_info_g);
-        mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_CREATE | MPI_MODE_RDWR,
-            h5_io_info_g, &fd->mpifd);
+        case POSIXIO:
+            if (flags & (PIO_CREATE | PIO_WRITE))
+                fd->posixfd = POSIXCREATE(fname);
+            else
+                fd->posixfd = POSIXOPEN(fname, O_RDONLY);
 
-        if (mrc != MPI_SUCCESS) {
-            fprintf(stderr, "MPI File Open failed(%s)\n", fname);
-            GOTOERROR(FAIL);
-        }
+            if (fd->posixfd < 0 ) {
+                fprintf(stderr, "POSIX File Open failed(%s)\n", fname);
+                GOTOERROR(FAIL);
+            }
 
-        /*since MPI_File_open with MPI_MODE_CREATE does not truncate  */
-        /*filesize , set size to 0 explicitedly.    */
-        mrc = MPI_File_set_size(fd->mpifd, (MPI_Offset)0);
 
-        if (mrc != MPI_SUCCESS) {
-            fprintf(stderr, "MPI_File_set_size failed\n");
-            GOTOERROR(FAIL);
-        }
-        } else {
-        mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_RDONLY,
-            h5_io_info_g, &fd->mpifd);
+            /* The perils of POSIX I/O in a parallel environment. The problem is:
+             *
+             *      - Process n opens a file with truncation and then starts
+             *        writing to the file.
+             *      - Process m also opens the file with truncation, but after
+             *        process n has already started to write to the file. Thus,
+             *        all of the stuff process n wrote is now lost.
+             */
+            MPI_Barrier(pio_comm_g);
 
-        if (mrc != MPI_SUCCESS) {
-            fprintf(stderr, "MPI File Open failed(%s)\n", fname);
-            GOTOERROR(FAIL);
-        }
-        }
+            break;
 
-        break;
+        case MPIO:
+            if (flags & (PIO_CREATE | PIO_WRITE)) {
+                MPI_File_delete(fname, h5_io_info_g);
+                mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_CREATE | MPI_MODE_RDWR,
+                    h5_io_info_g, &fd->mpifd);
+
+                if (mrc != MPI_SUCCESS) {
+                    fprintf(stderr, "MPI File Open failed(%s)\n", fname);
+                    GOTOERROR(FAIL);
+                }
 
-    case PHDF5:
-        acc_tpl = H5Pcreate(H5P_FILE_ACCESS);
-        if (acc_tpl < 0) {
-        fprintf(stderr, "HDF5 Property List Create failed\n");
-        GOTOERROR(FAIL);
-        }
+                /*since MPI_File_open with MPI_MODE_CREATE does not truncate  */
+                /*filesize , set size to 0 explicitedly.    */
+                mrc = MPI_File_set_size(fd->mpifd, (MPI_Offset)0);
+                if (mrc != MPI_SUCCESS) {
+                    fprintf(stderr, "MPI_File_set_size failed\n");
+                    GOTOERROR(FAIL);
+                }
+            } else {
+                mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_RDONLY, h5_io_info_g, &fd->mpifd);
+                if (mrc != MPI_SUCCESS) {
+                    fprintf(stderr, "MPI File Open failed(%s)\n", fname);
+                    GOTOERROR(FAIL);
+                }
+            }
 
-        /* Use the appropriate VFL driver */
-        if(param->h5_use_mpi_posix) {
-        /* Set the file driver to the MPI-posix driver */
-        hrc = H5Pset_fapl_mpiposix(acc_tpl, pio_comm_g, use_gpfs);
-        if (hrc < 0) {
-            fprintf(stderr, "HDF5 Property List Set failed\n");
-            GOTOERROR(FAIL);
-        }
-        } /* end if */
-        else {
-        /* Set the file driver to the MPI-I/O driver */
-        hrc = H5Pset_fapl_mpio(acc_tpl, pio_comm_g, h5_io_info_g);
-        if (hrc < 0) {
-            fprintf(stderr, "HDF5 Property List Set failed\n");
-            GOTOERROR(FAIL);
-        }
-        } /* end else */
+            break;
 
-        /* Set the alignment of objects in HDF5 file */
-        hrc = H5Pset_alignment(acc_tpl, param->h5_thresh, param->h5_align);
-        if (hrc < 0) {
-        fprintf(stderr, "HDF5 Property List Set failed\n");
-        GOTOERROR(FAIL);
-        }
+        case PHDF5:
+            if ((acc_tpl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
+                fprintf(stderr, "HDF5 Property List Create failed\n");
+                GOTOERROR(FAIL);
+            }
 
-        /* create the parallel file */
-        if (flags & (PIO_CREATE | PIO_WRITE)) {
-        fd->h5fd = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
-        } else {
-        fd->h5fd = H5Fopen(fname, H5F_ACC_RDONLY, acc_tpl);
-        }
+            /* Set the file driver to the MPI-IO driver */
+            if (H5Pset_fapl_mpio(acc_tpl, pio_comm_g, h5_io_info_g) < 0) {
+                fprintf(stderr, "HDF5 Property List Set failed\n");
+                GOTOERROR(FAIL);
+            }
 
-        hrc = H5Pclose(acc_tpl);
+            /* Set the alignment of objects in HDF5 file */
+            if (H5Pset_alignment(acc_tpl, param->h5_thresh, param->h5_align) < 0) {
+                fprintf(stderr, "HDF5 Property List Set failed\n");
+                GOTOERROR(FAIL);
+            }
 
-        if (fd->h5fd < 0) {
-        fprintf(stderr, "HDF5 File Create failed(%s)\n", fname);
-        GOTOERROR(FAIL);
-        }
+            /* create the parallel file */
+            if (flags & (PIO_CREATE | PIO_WRITE))
+                fd->h5fd = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
+            else
+                fd->h5fd = H5Fopen(fname, H5F_ACC_RDONLY, acc_tpl);
+            if (fd->h5fd < 0) {
+                fprintf(stderr, "HDF5 File Create failed(%s)\n", fname);
+                GOTOERROR(FAIL);
+            }
 
-        /* verifying the close of the acc_tpl */
-        if (hrc < 0) {
-        fprintf(stderr, "HDF5 Property List Close failed\n");
-        GOTOERROR(FAIL);
-        }
+            /* verifying the close of the acc_tpl */
+            if (H5Pclose(acc_tpl) < 0) {
+                fprintf(stderr, "HDF5 Property List Close failed\n");
+                GOTOERROR(FAIL);
+            }
 
-        break;
+            break;
     }
 
 done:
@@ -2664,449 +2624,6 @@ do_cleanupfile(iotype iot, char *fname)
     }
 }
 
-#ifdef H5_HAVE_GPFS
-
-/* Descriptions here come from the IBM GPFS Manual */
-
-/*
- * Function:    gpfs_access_range
- * Purpose:     Declares an access range within a file for an
- *              application.
- *
- *              The application will access file offsets within the given
- *              range, and will not access offsets outside the range.
- *              Violating this hint may produce worse performance than if
- *              no hint was specified.
- *
- *              This hint is useful in situations where a file is
- *              partitioned coarsely among several nodes. If the ranges
- *              do not overlap, each node can specify which range of the
- *              file it will access, with a performance improvement in
- *              some cases, such as for sequential writing within a
- *              range.
- *
- *              Subsequent GPFS_ACCESS_RANGE hints will replace a hint
- *              passed earlier.
- *
- *                  START    - The start of the access range offset, in
- *                             bytes, from the beginning of the file
- *                  LENGTH   - Length of the access range. 0 indicates to
- *                             the end of the file
- *                  IS_WRITE - 0 indicates READ access, 1 indicates WRITE access
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_access_range(int handle, off_t start, off_t length, int is_write)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsAccessRange_t access;
-    } access_range;
-
-    access_range.hdr.totalLength = sizeof(access_range);
-    access_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    access_range.hdr.fcntlReserved = 0;
-    access_range.access.structLen = sizeof(gpfsAccessRange_t);
-    access_range.access.structType = GPFS_ACCESS_RANGE;
-    access_range.access.start = start;
-    access_range.access.length = length;
-    access_range.access.isWrite = is_write;
-
-    if (gpfs_fcntl(handle, &access_range) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
-        errno, access_range.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_free_range
- * Purpose:     Undeclares an access range within a file for an
- *              application.
- *
- *              The application will no longer access file offsets within
- *              the given range. GPFS flushes the data at the file
- *              offsets and removes it from the cache.
- *
- *              Multi-node applications that have finished one phase of
- *              their computation may wish to use this hint before the
- *              file is accessed in a conflicting mode from another node
- *              in a later phase. The potential performance benefit is
- *              that GPFS can avoid later synchronous cache consistency
- *              operations.
- *
- *                  START  - The start of the access range offset, in
- *                           bytes from the beginning of the file.
- *                  LENGTH - Length of the access range. 0 indicates to
- *                           the end of the file.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_free_range(int handle, off_t start, off_t length)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsFreeRange_t range;
-    } free_range;
-
-    /* Issue the invalidate hint */
-    free_range.hdr.totalLength = sizeof(free_range);
-    free_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    free_range.hdr.fcntlReserved = 0;
-    free_range.range.structLen = sizeof(gpfsFreeRange_t);
-    free_range.range.structType = GPFS_FREE_RANGE;
-    free_range.range.start = start;
-    free_range.range.length = length;
-
-    if (gpfs_fcntl(handle, &free_range) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl free range failed for range %d:%d. errno=%d errorOffset=%d\n",
-        start, length, errno, free_range.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_clear_file_cache
- * Purpose:     Indicates file access in the near future is not expected.
- *
- *              The application does not expect to make any further
- *              accesses to the file in the near future, so GPFS removes
- *              any data or metadata pertaining to the file from its
- *              cache.
- *
- *              Multi-node applications that have finished one phase of
- *              their computation may wish to use this hint before the
- *              file is accessed in a conflicting mode from another node
- *              in a later phase. The potential performance benefit is
- *              that GPFS can avoid later synchronous cache consistency
- *              operations.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_clear_file_cache(int handle)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsClearFileCache_t clear;
-    } clear_cache;
-
-    clear_cache.hdr.totalLength = sizeof(clear_cache);
-    clear_cache.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    clear_cache.hdr.fcntlReserved = 0;
-    clear_cache.clear.structLen = sizeof(gpfsClearFileCache_t);
-    clear_cache.clear.structType = GPFS_CLEAR_FILE_CACHE;
-
-    if (gpfs_fcntl(handle, &clear_cache) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl clear file cache directive failed. errno=%d errorOffset=%d\n",
-        errno, clear_cache.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_cancel_hints
- * Purpose:     Indicates to remove any hints against the open file
- *              handle.
- *
- *              GPFS removes any hints that may have been issued against
- *              this open file handle:
- *
- *                  - The hint status of the file is restored ot what it
- *                    would have been immediately after being opened, but
- *                    does not affect the contents of the GPFS file
- *                    cache. Cancelling an earlier hint that resulted in
- *                    data being removed from the GPFS file cache does
- *                    not bring that data back int othe cache; data
- *                    re-enters the cache only pon access by the
- *                    application or by user-driven or automatic
- *                    prefetching.
- *                  - Only the GPFS_MULTIPLE_ACCESS_RANGE hint has a
- *                    state that might be removed by the
- *                    GPFS_CANCEL_HINTS directive.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_cancel_hints(int handle)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsCancelHints_t cancel;
-    } cancel_hints;
-
-    cancel_hints.hdr.totalLength = sizeof(cancel_hints);
-    cancel_hints.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    cancel_hints.hdr.fcntlReserved = 0;
-    cancel_hints.cancel.structLen = sizeof(gpfsCancelHints_t);
-    cancel_hints.cancel.structType = GPFS_CANCEL_HINTS;
-
-    if (gpfs_fcntl(handle, &cancel_hints) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl cancel hints directive failed. errno=%d errorOffset=%d\n",
-        errno, cancel_hints.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_start_data_shipping
- * Purpose:     Initiates data shipping mode.
- *
- *              Once all participating threads have issued this directive
- *              for a file, GPFS enters a mode where it logically
- *              partitions the blocks of the file among a group of agent
- *              nodes. The agents are those nodes on which one or more
- *              threads have issued the GPFS_DATA_SHIP_START directive.
- *              Each thread that has issued a GPFS_DATA_SHIP_START
- *              directive and the associated agent nodes are referred to
- *              as the data shipping collective.
- *
- *              The second parameter is the total number of open
- *              instances on all nodes that will be operating on the
- *              file. Must be called for every such instance with the
- *              same value of NUM_INSTS.
- *
- *                  NUM_INSTS - The number of open file instances, on all
- *                              nodes, collaborating to operate on the file
- * Return:      Nothing
- * Programmer:  Bill Wendling, 28. May 2002
- * Modifications:
- */
-    static void
-gpfs_start_data_shipping(int handle, int num_insts)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsDataShipStart_t start;
-    } ds_start;
-
-    ds_start.hdr.totalLength = sizeof(ds_start);
-    ds_start.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    ds_start.hdr.fcntlReserved = 0;
-    ds_start.start.structLen = sizeof(gpfsDataShipStart_t);
-    ds_start.start.structType = GPFS_DATA_SHIP_START;
-    ds_start.start.numInstances = num_insts;
-    ds_start.start.reserved = 0;
-
-    if (gpfs_fcntl(handle, &ds_start) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
-        errno, ds_start.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_start_data_ship_map
- * Purpose:     Indicates which agent nodes are to be used for data
- *              shipping. GPFS recognizes which agent nodes to use for
- *              data shipping.
- *
- *                  PARTITION_SIZE - The number of contiguous bytes per
- *                                   server. This value must be a
- *                                   multiple of the number of bytes in a
- *                                   single file system block
- *                  AGENT_COUNT    - The number of entries in the
- *                                   agentNodeNumber array
- *                  AGENT_NODE_NUM - The data ship agent node numbers as
- *                                   listed in the SDT or the global ODM
- *
- * Return:      Nothing
- * Programmer:  Bill Wendling, 10. Jul 2002
- * Modifications:
- */
-    static void
-gpfs_start_data_ship_map(int handle, int partition_size, int agent_count,
-    int *agent_node_num)
-{
-    int i;
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsDataShipMap_t map;
-    } ds_map;
-
-    ds_map.hdr.totalLength = sizeof(ds_map);
-    ds_map.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    ds_map.hdr.fcntlReserved = 0;
-    ds_map.map.structLen = sizeof(gpfsDataShipMap_t);
-    ds_map.map.structType = GPFS_DATA_SHIP_MAP;
-    ds_map.map.partitionSize = partition_size;
-    ds_map.map.agentCount = agent_count;
-
-    for (i = 0; i < agent_count; ++i)
-    ds_map.map.agentNodeNumber[i] = agent_node_num[i];
-
-    if (gpfs_fcntl(handle, &ds_map) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl DS map directive failed. errno=%d errorOffset=%d\n",
-        errno, ds_map.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_stop_data_shipping
- * Purpose:     Takes a file out of the data shipping mode.
- *
- *              - GPFS waits for all threads that issued the
- *                GPFS_DATA_SHIP_START directive to issue this directive,
- *                then flushes the dirty file data to disk.
- *
- *              - While a gpfs_cntl() call is blocked for other threads,
- *                the call can be interrupted by any signal. If a signal
- *                is delivered to any of the waiting calls, all waiting
- *                calls on every node will be interrupted and will return
- *                EINTR. GPFS will not cancel data shipping mode if such
- *                a signal occurs. It is the responsibility of the
- *                application to mask off any signals that might normally
- *                occur while waiting for another node in the data
- *                shipping collective. Several libraries use SIGALRM; the
- *                thread that makes the gpfs_fcntl() call should use
- *                sigthreadmask to mask off delivery of this signal while
- *                inside the call.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 28. May 2002
- * Modifications:
- */
-    static void
-gpfs_stop_data_shipping(int handle)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsDataShipStop_t stop;
-    } ds_stop;
-
-    ds_stop.hdr.totalLength = sizeof(ds_stop);
-    ds_stop.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    ds_stop.hdr.fcntlReserved = 0;
-    ds_stop.stop.structLen = sizeof(ds_stop.stop);
-    ds_stop.stop.structType = GPFS_DATA_SHIP_STOP;
-
-    if (gpfs_fcntl(handle, &ds_stop) != 0)
-    fprintf(stderr,
-        "gpfs_fcntl DS stop directive failed. errno=%d errorOffset=%d\n",
-        errno, ds_stop.hdr.errorOffset);
-}
-
-/*
- * Function:    gpfs_invalidate_file_cache
- * Purpose:     Invalidate all cached data held on behalf of a file on
- *              this node.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_invalidate_file_cache(const char *filename)
-{
-    int handle;
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsClearFileCache_t inv;
-    } inv_cache_hint;
-
-    /* Open the file.  If the open fails, the file cannot be cached. */
-    handle = open(filename, O_RDONLY, 0);
-
-    if (handle == -1)
-    return;
-
-    /* Issue the invalidate hint */
-    inv_cache_hint.hdr.totalLength = sizeof(inv_cache_hint);
-    inv_cache_hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    inv_cache_hint.hdr.fcntlReserved = 0;
-    inv_cache_hint.inv.structLen = sizeof(gpfsClearFileCache_t);
-    inv_cache_hint.inv.structType = GPFS_CLEAR_FILE_CACHE;
-
-    if (gpfs_fcntl(handle, &inv_cache_hint) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl clear cache hint failed for file '%s'.",
-        filename);
-    fprintf(stderr, " errno=%d errorOffset=%d\n",
-        errno, inv_cache_hint.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-
-    /* Close the file */
-    if (close(handle) == -1) {
-    fprintf(stderr,
-        "could not close file '%s' after flushing file cache, ",
-        filename);
-    fprintf(stderr, "errno=%d\n", errno);
-    exit(EXIT_FAILURE);
-    }
-}
-
-#else
-
-/* turn the stubs off since some compilers are warning they are not used */
-#if 0
-/* H5_HAVE_GPFS isn't defined...stub functions */
-
-    static void
-gpfs_access_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length,
-    int UNUSED is_write)
-{
-    return;
-}
-
-    static void
-gpfs_free_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length)
-{
-    return;
-}
-
-    static void
-gpfs_clear_file_cache(int UNUSED handle)
-{
-    return;
-}
-
-    static void
-gpfs_cancel_hints(int UNUSED handle)
-{
-    return;
-}
-
-    static void
-gpfs_start_data_shipping(int UNUSED handle, int UNUSED num_insts)
-{
-    return;
-}
-
-    static void
-gpfs_stop_data_shipping(int UNUSED handle)
-{
-    return;
-}
-
-    static void
-gpfs_start_data_ship_map(int UNUSED handle, int UNUSED partition_size,
-    int UNUSED agent_count, int UNUSED *agent_node_num)
-{
-    return;
-}
-
-    static void
-gpfs_invalidate_file_cache(const char UNUSED *filename)
-{
-    return;
-}
-
-#endif  /* 0 */
-
-#endif  /* H5_HAVE_GPFS */
-
 #ifdef TIME_MPI
 /* instrument the MPI_File_wrirte_xxx and read_xxx calls to measure
  * pure time spent in MPI_File code.
diff --git a/perform/pio_perf.c b/perform/pio_perf.c
index a47754b..cf41cbe 100644
--- a/perform/pio_perf.c
+++ b/perform/pio_perf.c
@@ -216,14 +216,6 @@ static struct long_options l_opts[] = {
     { "min-xfe", require_arg, 'x' },
     { "min-xf", require_arg, 'x' },
     { "min-x", require_arg, 'x' },
-    { "mpi-posix", no_arg, 'm' },
-    { "mpi-posi", no_arg, 'm' },
-    { "mpi-pos", no_arg, 'm' },
-    { "mpi-po", no_arg, 'm' },
-    { "mpi-p", no_arg, 'm' },
-    { "mpi-", no_arg, 'm' },
-    { "mpi", no_arg, 'm' },
-    { "mp", no_arg, 'm' },
     { "num-bytes", require_arg, 'e' },
     { "num-byte", require_arg, 'e' },
     { "num-byt", require_arg, 'e' },
@@ -294,7 +286,6 @@ struct options {
     off_t h5_threshold;         /* threshold for alignment in HDF5 file */
     int h5_use_chunks;     	/* Make HDF5 dataset chunked            */
     int h5_write_only;        	/* Perform the write tests only         */
-    unsigned h5_use_mpi_posix;  /* Use MPI-posix VFD for HDF5 I/O (instead of MPI-I/O VFD) */
     int verify;        		/* Verify data correctness              */
 };
 
@@ -444,7 +435,6 @@ run_test_loop(struct options *opts)
     parms.h5_thresh = opts->h5_threshold;
     parms.h5_use_chunks = opts->h5_use_chunks;
     parms.h5_write_only = opts->h5_write_only;
-    parms.h5_use_mpi_posix = opts->h5_use_mpi_posix;
     parms.verify = opts->verify;
 
     /* start with max_num_procs and decrement it by half for each loop. */
@@ -562,18 +552,15 @@ run_test(iotype iot, parameters parms, struct options *opts)
     output_report("IO API = ");
 
     switch (iot) {
-    case POSIXIO:
-        output_report("POSIX\n");
-        break;
-    case MPIO:
-        output_report("MPIO\n");
-        break;
-    case PHDF5:
-        if(parms.h5_use_mpi_posix)
-            output_report("PHDF5 (w/MPI-posix driver)\n");
-        else
-            output_report("PHDF5 (w/MPI-I/O driver)\n");
-        break;
+        case POSIXIO:
+            output_report("POSIX\n");
+            break;
+        case MPIO:
+            output_report("MPIO\n");
+            break;
+        case PHDF5:
+            output_report("PHDF5 (w/MPI-IO driver)\n");
+            break;
     }
 
     MPI_Comm_size(pio_comm_g, &comm_size);
@@ -1232,11 +1219,7 @@ report_parameters(struct options *opts)
     else
         HDfprintf(output, "1D\n");
 
-    HDfprintf(output, "rank %d: VFL used for HDF5 I/O=", rank);
-    if(opts->h5_use_mpi_posix)
-        HDfprintf(output, "MPI-posix driver\n");
-    else
-        HDfprintf(output, "MPI-I/O driver\n");
+    HDfprintf(output, "rank %d: VFL used for HDF5 I/O=%s\n", rank, "MPI-IO driver");
 
     HDfprintf(output, "rank %d: Data storage method in HDF5=", rank);
     if(opts->h5_use_chunks)
@@ -1295,7 +1278,6 @@ parse_command_line(int argc, char *argv[])
     cl_opts->h5_threshold = 1;      /* No threshold for aligning HDF5 objects by default */
     cl_opts->h5_use_chunks = FALSE; /* Don't chunk the HDF5 dataset by default */
     cl_opts->h5_write_only = FALSE; /* Do both read and write by default */
-    cl_opts->h5_use_mpi_posix = FALSE; /* Don't use MPI-posix VFD for HDF5 I/O by default */
     cl_opts->verify = FALSE;        /* No Verify data correctness by default */
 
     while ((opt = get_option(argc, (const char **)argv, s_opts, l_opts)) != EOF) {
@@ -1428,10 +1410,6 @@ parse_command_line(int argc, char *argv[])
         case 'I':
             cl_opts->interleaved = 1;
             break;
-        case 'm':
-            /* Turn on MPI-posix VFL driver for HDF5 I/O */
-            cl_opts->h5_use_mpi_posix = TRUE;
-            break;
         case 'o':
             cl_opts->output_file = opt_arg;
             break;
@@ -1604,8 +1582,6 @@ usage(const char *prog)
         printf("     -I, --interleaved           Interleaved access pattern\n");
         printf("                                 (see below for example)\n");
         printf("                                 [default: Contiguous access pattern]\n");
-        printf("     -m, --mpi-posix             Use MPI-posix driver for HDF5 I/O\n");
-        printf("                                 [default: use MPI-I/O driver]\n");
         printf("     -o F, --output=F            Output raw data into file F [default: none]\n");
         printf("     -p N, --min-num-processes=N Minimum number of processes to use [default: 1]\n");
         printf("     -P N, --max-num-processes=N Maximum number of processes to use\n");
diff --git a/perform/pio_perf.h b/perform/pio_perf.h
index 094b31d..3295e2b 100644
--- a/perform/pio_perf.h
+++ b/perform/pio_perf.h
@@ -54,7 +54,6 @@ typedef struct parameters_ {
     hsize_t 	h5_thresh;      /* HDF5 object alignment threshold      */
     int 	h5_use_chunks;  /* Make HDF5 dataset chunked            */
     int    	h5_write_only;  /* Perform the write tests only         */
-    unsigned    h5_use_mpi_posix;   /* Use MPI-posix VFD for HDF5 I/O (instead of MPI-I/O VFD) */
     int 	verify;    	/* Verify data correctness              */
 } parameters;
 
diff --git a/perform/sio_engine.c b/perform/sio_engine.c
index 8539f75..07e6b16c 100644
--- a/perform/sio_engine.c
+++ b/perform/sio_engine.c
@@ -28,32 +28,20 @@
 
 #include "hdf5.h"
 
-#ifdef H5_HAVE_GPFS
-#   include <gpfs_fcntl.h>
-#endif  /* H5_HAVE_GPFS */
-
 #include "sio_perf.h"
 #include "sio_timer.h"
 
 /* Macro definitions */
 
 /* sizes of various items. these sizes won't change during program execution */
-/* The following three must have the same type */
-#define ELMT_SIZE           (sizeof(unsigned char))     /* we're doing bytes */
 #define ELMT_H5_TYPE        H5T_NATIVE_UCHAR
 
 #define GOTOERROR(errcode)  { ret_code = errcode; goto done; }
-#define GOTODONE        { goto done; }
 #define ERRMSG(mesg) {                                                  \
     fprintf(stderr, "*** Assertion failed (%s) at line %4d in %s\n",    \
         mesg, (int)__LINE__, __FILE__);                             \
 }
 
-#define MSG(mesg) {                                     \
-    fprintf(stderr, "(%s) at line %4d in %s\n",         \
-        mesg, (int)__LINE__, __FILE__);             \
-}
-
 /* verify: if val is false (0), print mesg. */
 #define VRFY(val, mesg) do {                            \
     if (!val) {                                         \
@@ -81,10 +69,6 @@ static int  clean_file_g = -1;  /*whether to cleanup temporary test     */
 /*files. -1 is not defined;             */
 /*0 is no cleanup; 1 is do cleanup      */
 
-#ifndef MIN
-#   define MIN(a,b) ((a) < (b) ? (a) : (b))
-#endif  /* !MIN */
-
 /* the different types of file descriptors we can expect */
 typedef union _file_descr {
     int         posixfd;    /* POSIX file handle*/
@@ -106,19 +90,6 @@ hid_t set_vfd(parameters *param);
 static herr_t do_fclose(iotype iot, file_descr *fd);
 static void do_cleanupfile(iotype iot, char *fname);
 
-/* GPFS-specific functions */
-#ifdef H5_HAVE_GPFS
-static void gpfs_access_range(int handle, off_t start, off_t length, int is_write);
-static void gpfs_free_range(int handle, off_t start, off_t length);
-static void gpfs_clear_file_cache(int handle);
-static void gpfs_cancel_hints(int handle);
-static void gpfs_start_data_shipping(int handle, int num_insts);
-static void gpfs_start_data_ship_map(int handle, int partition_size,
-    int agent_count, int *agent_node_num);
-static void gpfs_stop_data_shipping(int handle);
-static void gpfs_invalidate_file_cache(const char *filename);
-#endif /* H5_HAVE_GPFS */
-
 /* global variables */
 static off_t offset[MAX_DIMS];       /* dataset size in bytes     */
 static size_t buf_offset[MAX_DIMS];   /* dataset size in bytes     */
@@ -362,7 +333,7 @@ sio_create_filename(iotype iot, const char *base_name, char *fullname, size_t si
     subdir = (user ? user : login);
 
     if (subdir) {
-        for (i = 0; i < size && prefix[i]; i++)
+        for (i = 0; i < size-1 && prefix[i]; i++)
         fullname[i] = prefix[i];
 
         fullname[i++] = '/';
@@ -371,7 +342,8 @@ sio_create_filename(iotype iot, const char *base_name, char *fullname, size_t si
         fullname[i] = subdir[j];
     } else {
         /* We didn't append the prefix yet */
-        HDstrncpy(fullname, prefix, MIN(HDstrlen(prefix), size));
+        HDstrncpy(fullname, prefix, size);
+        fullname[size - 1] = '\0';
     }
 
     if ((HDstrlen(fullname) + HDstrlen(base_name) + 1) < size) {
@@ -1336,447 +1308,3 @@ do_cleanupfile(iotype iot, char *filename)
     }
 }
 
-#ifdef H5_HAVE_GPFS
-
-/* Descriptions here come from the IBM GPFS Manual */
-
-/*
- * Function:    gpfs_access_range
- * Purpose:     Declares an access range within a file for an
- *              application.
- *
- *              The application will access file offsets within the given
- *              range, and will not access offsets outside the range.
- *              Violating this hint may produce worse performance than if
- *              no hint was specified.
- *
- *              This hint is useful in situations where a file is
- *              partitioned coarsely among several nodes. If the ranges
- *              do not overlap, each node can specify which range of the
- *              file it will access, with a performance improvement in
- *              some cases, such as for sequential writing within a
- *              range.
- *
- *              Subsequent GPFS_ACCESS_RANGE hints will replace a hint
- *              passed earlier.
- *
- *                  START    - The start of the access range offset, in
- *                             bytes, from the beginning of the file
- *                  LENGTH   - Length of the access range. 0 indicates to
- *                             the end of the file
- *                  IS_WRITE - 0 indicates READ access, 1 indicates WRITE access
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_access_range(int handle, off_t start, off_t length, int is_write)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsAccessRange_t access;
-    } access_range;
-
-    access_range.hdr.totalLength = sizeof(access_range);
-    access_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    access_range.hdr.fcntlReserved = 0;
-    access_range.access.structLen = sizeof(gpfsAccessRange_t);
-    access_range.access.structType = GPFS_ACCESS_RANGE;
-    access_range.access.start = start;
-    access_range.access.length = length;
-    access_range.access.isWrite = is_write;
-
-    if (gpfs_fcntl(handle, &access_range) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
-        errno, access_range.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_free_range
- * Purpose:     Undeclares an access range within a file for an
- *              application.
- *
- *              The application will no longer access file offsets within
- *              the given range. GPFS flushes the data at the file
- *              offsets and removes it from the cache.
- *
- *              Multi-node applications that have finished one phase of
- *              their computation may wish to use this hint before the
- *              file is accessed in a conflicting mode from another node
- *              in a later phase. The potential performance benefit is
- *              that GPFS can avoid later synchronous cache consistency
- *              operations.
- *
- *                  START  - The start of the access range offset, in
- *                           bytes from the beginning of the file.
- *                  LENGTH - Length of the access range. 0 indicates to
- *                           the end of the file.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_free_range(int handle, off_t start, off_t length)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsFreeRange_t range;
-    } free_range;
-
-    /* Issue the invalidate hint */
-    free_range.hdr.totalLength = sizeof(free_range);
-    free_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    free_range.hdr.fcntlReserved = 0;
-    free_range.range.structLen = sizeof(gpfsFreeRange_t);
-    free_range.range.structType = GPFS_FREE_RANGE;
-    free_range.range.start = start;
-    free_range.range.length = length;
-
-    if (gpfs_fcntl(handle, &free_range) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl free range failed for range %d:%d. errno=%d errorOffset=%d\n",
-        start, length, errno, free_range.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_clear_file_cache
- * Purpose:     Indicates file access in the near future is not expected.
- *
- *              The application does not expect to make any further
- *              accesses to the file in the near future, so GPFS removes
- *              any data or metadata pertaining to the file from its
- *              cache.
- *
- *              Multi-node applications that have finished one phase of
- *              their computation may wish to use this hint before the
- *              file is accessed in a conflicting mode from another node
- *              in a later phase. The potential performance benefit is
- *              that GPFS can avoid later synchronous cache consistency
- *              operations.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_clear_file_cache(int handle)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsClearFileCache_t clear;
-    } clear_cache;
-
-    clear_cache.hdr.totalLength = sizeof(clear_cache);
-    clear_cache.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    clear_cache.hdr.fcntlReserved = 0;
-    clear_cache.clear.structLen = sizeof(gpfsClearFileCache_t);
-    clear_cache.clear.structType = GPFS_CLEAR_FILE_CACHE;
-
-    if (gpfs_fcntl(handle, &clear_cache) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl clear file cache directive failed. errno=%d errorOffset=%d\n",
-        errno, clear_cache.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_cancel_hints
- * Purpose:     Indicates to remove any hints against the open file
- *              handle.
- *
- *              GPFS removes any hints that may have been issued against
- *              this open file handle:
- *
- *                  - The hint status of the file is restored ot what it
- *                    would have been immediately after being opened, but
- *                    does not affect the contents of the GPFS file
- *                    cache. Cancelling an earlier hint that resulted in
- *                    data being removed from the GPFS file cache does
- *                    not bring that data back int othe cache; data
- *                    re-enters the cache only pon access by the
- *                    application or by user-driven or automatic
- *                    prefetching.
- *                  - Only the GPFS_MULTIPLE_ACCESS_RANGE hint has a
- *                    state that might be removed by the
- *                    GPFS_CANCEL_HINTS directive.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_cancel_hints(int handle)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsCancelHints_t cancel;
-    } cancel_hints;
-
-    cancel_hints.hdr.totalLength = sizeof(cancel_hints);
-    cancel_hints.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    cancel_hints.hdr.fcntlReserved = 0;
-    cancel_hints.cancel.structLen = sizeof(gpfsCancelHints_t);
-    cancel_hints.cancel.structType = GPFS_CANCEL_HINTS;
-
-    if (gpfs_fcntl(handle, &cancel_hints) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl cancel hints directive failed. errno=%d errorOffset=%d\n",
-        errno, cancel_hints.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_start_data_shipping
- * Purpose:     Initiates data shipping mode.
- *
- *              Once all participating threads have issued this directive
- *              for a file, GPFS enters a mode where it logically
- *              partitions the blocks of the file among a group of agent
- *              nodes. The agents are those nodes on which one or more
- *              threads have issued the GPFS_DATA_SHIP_START directive.
- *              Each thread that has issued a GPFS_DATA_SHIP_START
- *              directive and the associated agent nodes are referred to
- *              as the data shipping collective.
- *
- *              The second parameter is the total number of open
- *              instances on all nodes that will be operating on the
- *              file. Must be called for every such instance with the
- *              same value of NUM_INSTS.
- *
- *                  NUM_INSTS - The number of open file instances, on all
- *                              nodes, collaborating to operate on the file
- * Return:      Nothing
- * Programmer:  Bill Wendling, 28. May 2002
- * Modifications:
- */
-    static void
-gpfs_start_data_shipping(int handle, int num_insts)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsDataShipStart_t start;
-    } ds_start;
-
-    ds_start.hdr.totalLength = sizeof(ds_start);
-    ds_start.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    ds_start.hdr.fcntlReserved = 0;
-    ds_start.start.structLen = sizeof(gpfsDataShipStart_t);
-    ds_start.start.structType = GPFS_DATA_SHIP_START;
-    ds_start.start.numInstances = num_insts;
-    ds_start.start.reserved = 0;
-
-    if (gpfs_fcntl(handle, &ds_start) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
-        errno, ds_start.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_start_data_ship_map
- * Purpose:     Indicates which agent nodes are to be used for data
- *              shipping. GPFS recognizes which agent nodes to use for
- *              data shipping.
- *
- *                  PARTITION_SIZE - The number of contiguous bytes per
- *                                   server. This value must be a
- *                                   multiple of the number of bytes in a
- *                                   single file system block
- *                  AGENT_COUNT    - The number of entries in the
- *                                   agentNodeNumber array
- *                  AGENT_NODE_NUM - The data ship agent node numbers as
- *                                   listed in the SDT or the global ODM
- *
- * Return:      Nothing
- * Programmer:  Bill Wendling, 10. Jul 2002
- * Modifications:
- */
-    static void
-gpfs_start_data_ship_map(int handle, int partition_size, int agent_count,
-    int *agent_node_num)
-{
-    int i;
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsDataShipMap_t map;
-    } ds_map;
-
-    ds_map.hdr.totalLength = sizeof(ds_map);
-    ds_map.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    ds_map.hdr.fcntlReserved = 0;
-    ds_map.map.structLen = sizeof(gpfsDataShipMap_t);
-    ds_map.map.structType = GPFS_DATA_SHIP_MAP;
-    ds_map.map.partitionSize = partition_size;
-    ds_map.map.agentCount = agent_count;
-
-    for (i = 0; i < agent_count; ++i)
-    ds_map.map.agentNodeNumber[i] = agent_node_num[i];
-
-    if (gpfs_fcntl(handle, &ds_map) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl DS map directive failed. errno=%d errorOffset=%d\n",
-        errno, ds_map.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-}
-
-/*
- * Function:    gpfs_stop_data_shipping
- * Purpose:     Takes a file out of the data shipping mode.
- *
- *              - GPFS waits for all threads that issued the
- *                GPFS_DATA_SHIP_START directive to issue this directive,
- *                then flushes the dirty file data to disk.
- *
- *              - While a gpfs_cntl() call is blocked for other threads,
- *                the call can be interrupted by any signal. If a signal
- *                is delivered to any of the waiting calls, all waiting
- *                calls on every node will be interrupted and will return
- *                EINTR. GPFS will not cancel data shipping mode if such
- *                a signal occurs. It is the responsibility of the
- *                application to mask off any signals that might normally
- *                occur while waiting for another node in the data
- *                shipping collective. Several libraries use SIGALRM; the
- *                thread that makes the gpfs_fcntl() call should use
- *                sigthreadmask to mask off delivery of this signal while
- *                inside the call.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 28. May 2002
- * Modifications:
- */
-    static void
-gpfs_stop_data_shipping(int handle)
-{
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsDataShipStop_t stop;
-    } ds_stop;
-
-    ds_stop.hdr.totalLength = sizeof(ds_stop);
-    ds_stop.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    ds_stop.hdr.fcntlReserved = 0;
-    ds_stop.stop.structLen = sizeof(ds_stop.stop);
-    ds_stop.stop.structType = GPFS_DATA_SHIP_STOP;
-
-    if (gpfs_fcntl(handle, &ds_stop) != 0)
-    fprintf(stderr,
-        "gpfs_fcntl DS stop directive failed. errno=%d errorOffset=%d\n",
-        errno, ds_stop.hdr.errorOffset);
-}
-
-/*
- * Function:    gpfs_invalidate_file_cache
- * Purpose:     Invalidate all cached data held on behalf of a file on
- *              this node.
- * Return:      Nothing
- * Programmer:  Bill Wendling, 03. June 2002
- * Modifications:
- */
-    static void
-gpfs_invalidate_file_cache(const char *filename)
-{
-    int handle;
-    struct {
-    gpfsFcntlHeader_t hdr;
-    gpfsClearFileCache_t inv;
-    } inv_cache_hint;
-
-    /* Open the file.  If the open fails, the file cannot be cached. */
-    handle = open(filename, O_RDONLY, 0);
-
-    if (handle == -1)
-    return;
-
-    /* Issue the invalidate hint */
-    inv_cache_hint.hdr.totalLength = sizeof(inv_cache_hint);
-    inv_cache_hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-    inv_cache_hint.hdr.fcntlReserved = 0;
-    inv_cache_hint.inv.structLen = sizeof(gpfsClearFileCache_t);
-    inv_cache_hint.inv.structType = GPFS_CLEAR_FILE_CACHE;
-
-    if (gpfs_fcntl(handle, &inv_cache_hint) != 0) {
-    fprintf(stderr,
-        "gpfs_fcntl clear cache hint failed for file '%s'.",
-        filename);
-    fprintf(stderr, " errno=%d errorOffset=%d\n",
-        errno, inv_cache_hint.hdr.errorOffset);
-    exit(EXIT_FAILURE);
-    }
-
-    /* Close the file */
-    if (close(handle) == -1) {
-    fprintf(stderr,
-        "could not close file '%s' after flushing file cache, ",
-        filename);
-    fprintf(stderr, "errno=%d\n", errno);
-    exit(EXIT_FAILURE);
-    }
-}
-
-#else
-
-/* turn the stubs off since some compilers are warning they are not used */
-#if 0
-/* H5_HAVE_GPFS isn't defined...stub functions */
-
-    static void
-gpfs_access_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length,
-    int UNUSED is_write)
-{
-    return;
-}
-
-    static void
-gpfs_free_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length)
-{
-    return;
-}
-
-    static void
-gpfs_clear_file_cache(int UNUSED handle)
-{
-    return;
-}
-
-    static void
-gpfs_cancel_hints(int UNUSED handle)
-{
-    return;
-}
-
-    static void
-gpfs_start_data_shipping(int UNUSED handle, int UNUSED num_insts)
-{
-    return;
-}
-
-    static void
-gpfs_stop_data_shipping(int UNUSED handle)
-{
-    return;
-}
-
-    static void
-gpfs_start_data_ship_map(int UNUSED handle, int UNUSED partition_size,
-    int UNUSED agent_count, int UNUSED *agent_node_num)
-{
-    return;
-}
-
-    static void
-gpfs_invalidate_file_cache(const char UNUSED *filename)
-{
-    return;
-}
-
-#endif  /* 0 */
-
-#endif  /* H5_HAVE_GPFS */
-
-
diff --git a/perform/sio_perf.c b/perform/sio_perf.c
index 7df9337..26cec6d 100644
--- a/perform/sio_perf.c
+++ b/perform/sio_perf.c
@@ -210,14 +210,6 @@ static struct long_options l_opts[] = {
     { "min-xfe", require_arg, 'x' },
     { "min-xf", require_arg, 'x' },
     { "min-x", require_arg, 'x' },
-    { "mpi-posix", no_arg, 'm' },
-    { "mpi-posi", no_arg, 'm' },
-    { "mpi-pos", no_arg, 'm' },
-    { "mpi-po", no_arg, 'm' },
-    { "mpi-p", no_arg, 'm' },
-    { "mpi-", no_arg, 'm' },
-    { "mpi", no_arg, 'm' },
-    { "mp", no_arg, 'm' },
     { "num-bytes", require_arg, 'e' },
     { "num-byte", require_arg, 'e' },
     { "num-byt", require_arg, 'e' },
@@ -302,7 +294,6 @@ struct options {
     int h5_use_chunks;     	/* Make HDF5 dataset chunked            */
     int h5_write_only;        	/* Perform the write tests only         */
     int h5_extendable;        	/* Perform the write tests only         */
-    unsigned h5_use_mpi_posix;  /* Use MPI-posix VFD for HDF5 I/O (instead of MPI-I/O VFD) */
     int verify;        		/* Verify data correctness              */
     vfdtype     vfd;            /* File driver */
 
@@ -411,7 +402,6 @@ run_test_loop(struct options *opts)
     parms.h5_use_chunks = opts->h5_use_chunks;
     parms.h5_extendable = opts->h5_extendable;
     parms.h5_write_only = opts->h5_write_only;
-    parms.h5_use_mpi_posix = opts->h5_use_mpi_posix;
     parms.verify = opts->verify;
     parms.vfd = opts->vfd;
 
@@ -982,7 +972,6 @@ parse_command_line(int argc, char *argv[])
     cl_opts->h5_use_chunks = FALSE; /* Don't chunk the HDF5 dataset by default */
     cl_opts->h5_write_only = FALSE; /* Do both read and write by default */
     cl_opts->h5_extendable = FALSE; /* Use extendable dataset */
-    cl_opts->h5_use_mpi_posix = FALSE; /* Don't use MPI-posix VFD for HDF5 I/O by default */
     cl_opts->verify = FALSE;        /* No Verify data correctness by default */
 
     while ((opt = get_option(argc, (const char **)argv, s_opts, l_opts)) != EOF) {
@@ -1144,10 +1133,6 @@ parse_command_line(int argc, char *argv[])
         case 'i':
             cl_opts->num_iters = atoi(opt_arg);
             break;
-        case 'm':
-            /* Turn on MPI-posix VFL driver for HDF5 I/O */
-            cl_opts->h5_use_mpi_posix = TRUE;
-            break;
         case 'o':
             cl_opts->output_file = opt_arg;
             break;
diff --git a/perform/sio_perf.h b/perform/sio_perf.h
index 3e4456a..b40fed3 100644
--- a/perform/sio_perf.h
+++ b/perform/sio_perf.h
@@ -66,7 +66,6 @@ typedef struct parameters_ {
     int   h5_use_chunks;  /* Make HDF5 dataset chunked            */
     int   h5_extendable;  /* Make HDF5 dataset chunked            */
     int      h5_write_only;  /* Perform the write tests only         */
-    unsigned    h5_use_mpi_posix;   /* VFD for HDF5 I/O  */
     int   verify;      /* Verify data correctness              */
 } parameters;
 
diff --git a/perform/zip_perf.c b/perform/zip_perf.c
index f76e10b..edd5b0f 100644
--- a/perform/zip_perf.c
+++ b/perform/zip_perf.c
@@ -32,19 +32,13 @@
 
 #ifdef VMS
 #  define unlink        delete
-#  define GZ_SUFFIX     "-gz"
 #endif  /* VMS */
 
 #ifdef RISCOS
 #  define unlink        remove
-#  define GZ_SUFFIX     "-gz"
 #  define fileno(file)  file->__file
 #endif  /* RISCOS */
 
-#ifndef GZ_SUFFIX
-#  define GZ_SUFFIX     ".gz"
-#endif  /* GZ_SUFFIX */
-
 #define ONE_KB              1024
 #define ONE_MB              (ONE_KB * ONE_KB)
 #define ONE_GB              (ONE_MB * ONE_KB)
diff --git a/release_docs/HISTORY-1_8.txt b/release_docs/HISTORY-1_8.txt
index 1d98352..f176cb3 100644
--- a/release_docs/HISTORY-1_8.txt
+++ b/release_docs/HISTORY-1_8.txt
@@ -3,6 +3,7 @@ HDF5 History
 
 This file contains development history of HDF5 1.8 branch
 
+14.      Release Information for hdf5-1.8.12
 13.      Release Information for hdf5-1.8.11
 12.      Release Information for hdf5-1.8.10-patch1
 11.      Release Information for hdf5-1.8.10
@@ -19,6 +20,597 @@ This file contains development history of HDF5 1.8 branch
 
 [Search on the string '%%%%' for section breaks of each release.]
 
+%%%%1.8.12%%%%   
+
+HDF5 version 1.8.12 released on 2013-11-04
+================================================================================
+
+INTRODUCTION
+============
+
+This document describes the differences between HDF5-1.8.11 and 
+HDF5-1.8.12, and contains information on the platforms tested and 
+known problems in HDF5-1.8.12. 
+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.12 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.12 release can be obtained from:
+
+     http://www.hdfgroup.org/HDF5/release/obtain5.html
+
+User documentation for 1.8.12 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.12 (current 
+release) versus Release 1.8.11":
+
+     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.11
+- Supported Platforms
+- Supported Configuration Features Summary
+- More Tested Platforms
+- Known Problems
+
+
+New Features
+============
+
+    Configuration
+    -------------
+    - Added a configuration option to change the default plugin path.
+      The configure option is --with-default-plugindir=location.
+      The cmake option is -DH5_DEFAULT_PLUGINDIR:PATH=location.
+      HDFFV-8513.  (ADB 2013/09/04)
+    - Renamed FFLAGS to FCFLAGS in configure. (ADB 2013/08/13)
+    - CMake can now package a compressed examples file, the default for 
+      Windows binaries from HDF Group.  (ADB  - 2013/07/22)
+    
+    Library
+    -------
+    - None
+ 
+    Parallel Library
+    ----------------
+    - None
+ 
+    Tools
+    -----
+    - h5repack: Added the ability to use plugin filters to read and write 
+              files. The option uses the filter number. HDFFV-8345 
+              (ADB - 2013/09/04).
+    - h5dump: Added the option -N --any_path, which searches the file for 
+              paths that match the search path. HDFFV-7989 (ADB - 2013/08/12).
+    - h5dump: Added the optional arg 0 to -A, which excludes attributes 
+              from display. HDFFV-8134 (ADB - 2013/08/01).
+
+    High-Level APIs
+    ---------------
+    - None
+
+    Fortran API
+    -----------
+    - None
+
+    C++ API
+    -------
+    - Added tutorial examples to C++/examples.  They can be installed by
+      "make install-examples" and, in the installed directory, they can be
+      executed by running the script file run-c++-ex.sh. (BMR - 2013/09/28)
+    - A new class, H5::H5Location, is added to represent the location concept
+      in the C library.  It is a base class to H5::H5File and H5::H5Ojbect,
+      whose member functions are moved into H5::H5Location.  H5::H5File can
+      now inherent those functions.  As a result, an H5::H5File object can have
+      an attribute. (BMR - 2013/09/27)
+    - Added wrappers for H5Rget_obj_type2 to retrieve the type of the object
+      that an object reference points to. (BMR - 2013/09/27)
+	H5O_type_t H5Location::getRefObjType(void *ref, H5R_type_t ref_type)
+    - Added wrappers for H5Aexist to check whether an attribute exists given
+      a name. (BMR - 2013/09/27)
+	bool H5::H5Location::attrExists(const char* name)
+	bool H5::H5Location::attrExists(const H5std_string& name)
+    - Added a number of overloaded functions for convenience. (BMR - 2013/09/27)
+
+
+Support for New Platforms, Languages, and Compilers
+===================================================
+    - None
+
+Bug Fixes since HDF5-1.8.11
+===========================
+
+    Configuration
+    -------------
+    - Modified H5detect.c to scan floating point types for padding bits before
+      analyzing the type further.  This should fix problems with gcc 4.8. 
+      (NAF - 2013/09/19 - HDFFV-8523/HDFFV-8500)
+    - HDF5 rpaths are no longer encoded in the library files when configured
+      with --disable-sharedlib-rpath. (LRK-2013-09-23 - HDFFV-8276)
+
+    Library
+    -------
+    - Added const qualifier to source buffer parameters in H5Dgather and
+      H5D_scatter_func_t (H5Dscatter callback).  (NAF - 2013/7/09)
+
+    - CMake now creates *.so.{lt_version} files with the same version as 
+      configure.  (ADB  - 2013/06/05 HDFFV-8437)
+
+    Parallel Library
+    ----------------
+    - None
+
+    Performance
+    -------------
+    - None
+
+    Tools
+    -----
+    - h5dump: Added the option -N --any_path, which searches the file for 
+              paths that match the search path. HDFFV-7989 (ADB - 2013/08/12).
+    - h5dump: Added the optional arg 0 to -A, which excludes attributes 
+              from display. HDFFV-8134 (ADB - 2013/08/01).
+    - h5dump correctly exports subsetted data to a file, using the --output
+      option.  (ADB  - 2013/06/07 HDFFV-8447)
+    - h5cc and other compile scripts now default to linking shared libraries
+      when HDF5 is configured with the --disable-static option.  
+      (LRK - 2013-09-23 - HDFFV-8141)
+
+    F90 API
+    -------
+    - None
+
+    C++ API
+    ------
+    - None
+
+    High-Level APIs:
+    ------
+    - None
+
+    Fortran High-Level APIs:
+    ------
+    - None
+
+    Testing
+    -------
+    - test/big sometimes failed with the message of "file selection+offset not
+      within extent". This has been fixed. (AKC - 2013/09/28 HDFFV-8271).
+    - tools/h5diff/testh5diff.sh is run in every "make check", even after it
+      has passed in the previous run. It should not run again if there are no
+      code changes. Fixed. (AKC - 2013/07/19 HDFFV-8392)
+
+Supported Platforms
+===================
+The following platforms are supported and have been tested for this release.
+They are built with the configure process unless specified otherwise.
+
+    AIX 5.3                       xlc 10.1.0.5
+    (NASA G-ADA)                  xlC 10.1.0.5
+                                  xlf90 12.1.0.6
+
+    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-54)
+                                      Version 4.8.1
+                                  PGI C, Fortran, C++ Compilers for 32-bit
+                                  applications;
+                                      Version 13.7-0
+                                  Intel(R) C, C++, Fortran Compiler for 32-bit
+                                  applications;
+                                      Version 13.1.3 (Build 20130607)
+
+    Linux 2.6.18-308.16.1.el5     GNU C (gcc), Fortran (gfortran), C++ (g++)
+    #1 SMP x86_64 GNU/Linux       compilers for 64-bit applications;
+    (koala)                           Version 4.1.2 20080704 (Red Hat 4.1.2-54)
+                                      Version 4.8.1
+                                  PGI C, Fortran, C++ for 64-bit target on 
+                                  x86-64;
+                                      Version 13.7-0 
+                                  Intel(R) C, C++, Fortran Compilers for 
+                                  applications running on Intel(R) 64; 
+                                      Version 13.1.3 (Build 20130607)
+
+    Linux 2.6.32-358.18.1.el6      GNU C (gcc), Fortran (gfortran), C++ (g++)
+    #1 SMP x86_64 GNU/Linux       compilers:
+    (platypus)                       Version 4.4.7 20120313
+                                     Version 4.8.1
+                                  PGI C, Fortran, C++ for 64-bit target on 
+                                  x86-64;
+                                      Version 13.7-0 
+                                  Intel(R) C (icc), C++ (icpc), Fortran (icc)
+                                  compilers:
+                                     Version 13.1.3 (Build 20130607)
+
+    Linux 2.6.32-358.18.1.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
+    #1 SMP ppc64 GNU/Linux        g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
+    (ostrich)                     GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
+                                  IBM XL C/C++ V11.1
+                                  IBM XL Fortran V13.1
+
+    SunOS 5.11 32- and 64-bit     Sun C 5.12 SunOS_sparc
+    (emu)                         Sun Fortran 95 8.6 SunOS_sparc
+                                  Sun C++ 5.12 SunOS_sparc
+
+    Windows 7                     Visual Studio 2008 w/ Intel Fortran 11 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
+                                  Visual Studio 2012 w/ Intel Fortran 13 (cmake)
+                                  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 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
+                                  Visual Studio 2012 w/ Intel Fortran 13 (cmake)
+
+    Windows 8.1                   Visual Studio 2012 w/ Intel Fortran 13 (cmake)
+
+    Windows 8.1 x64               Visual Studio 2012 w/ Intel Fortran 13 (cmake)
+
+    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
+    64-bit                        gfortran GNU Fortran (GCC) 4.6.2
+    (fred)                        Intel C (icc), Fortran (ifort), C++ (icpc)
+                                      12.1 Build 20120928
+
+    Mac OS X Lion 10.7.3          Apple clang/clang++ version 3.0 from Xcode 4.6.1
+    64-bit                        gfortran GNU Fortran (GCC) 4.6.2
+    (duck)                        Intel icc/icpc/ifort version 13.0.3
+
+    Mac OS X Mountain Lion 10.8.1 Apple clang/clang++ version 4.2 from Xcode 4.6.1
+    64-bit                        gfortran GNU Fortran (GCC) 4.6.2
+    (wren)                        Intel icc/icpc/ifort version 13.0.3
+
+    OpenVMS  IA64 V8.4            HP C V7.3-018         
+                                  HP Fortran V8.2-104939-50H96
+                                  HP C++ V7.4-004 
+
+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  F2003  parallel
+Solaris2.11 32-bit                      n        y/y    n        y    y     y
+Solaris2.11 64-bit                      n        y/y    n        y    y     y
+Windows 7                               y        y/y    n        y    y     y
+Windows 7 x64                           y        y/y    n        y    y     y
+Windows 7 Cygwin                        n        y/n    n        y    y     y
+Windows 8.1                             n        y/y    n        y    y     y
+Windows 8.1   x64                       n        y/y    n        y    y     y
+Mac OS X Snow Leopard 10.6.8 64-bit     n        y/y    n        y    y     y
+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/y    n        y    y     y
+AIX 5.3 32- and 64-bit                  n        y/n    n        y    y     y
+CentOS 5.9 Linux 2.6.18-308 i686 GNU    y        y/y    y        y    y     y
+CentOS 5.9 Linux 2.6.18-308 i686 Intel  n        y/y    n        y    y     y
+CentOS 5.9 Linux 2.6.18-308 i686 PGI    n        y/y    n        y    y     y
+CentOS 5.9 Linux 2.6.18 x86_64 GNU      y        y/y    y        y    y     y
+CentOS 5.9 Linux 2.6.18 x86_64 Intel    n        y/y    n        y    y     y
+CentOS 5.9 Linux 2.6.18 x86_64 PGI      n        y/y    n        y    y     y
+CentOS 6.4 Linux 2.6.32 x86_64 GNU      n        y/y    n        y    y     y
+CentOS 6.4 Linux 2.6.32 x86_64 Intel    n        y/y    n        y    y     y
+Linux 2.6.32-358.2.1.el6.ppc64          n        y/n    n        y    y     y
+OpenVMS IA64 V8.4                       n        y/n    n        y    y     n
+
+Platform                                 Shared  Shared    Shared    Thread-  
+                                         C libs  F90 libs  C++ libs  safe     
+Solaris2.11 32-bit                         y       y         y         y        
+Solaris2.11 64-bit                         y       y         y         y        
+Windows 7                                  y       y         y         y
+Windows 7 x64                              y       y         y         y
+Windows 7 Cygwin                           n       n         n         y
+Windows 8.1                                y       y         y         y
+Windows 8.1 x64                            y       y         y         y
+Mac OS X Snow Leopard 10.6.8 64-bit        y       n         y         n        
+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                     y       n         n         y        
+CentOS 5.9 Linux 2.6.18-308 i686 GNU       y       y         y         y        
+CentOS 5.9 Linux 2.6.18-308 i686 Intel     y       y         y         n        
+CentOS 5.9 Linux 2.6.18-308 i686 PGI       y       y         y         n        
+CentOS 5.9 Linux 2.6.18 x86_64 GNU         y       y         y         y        
+CentOS 5.9 Linux 2.6.18 x86_64 Intel       y       y         y         n        
+CentOS 5.9 Linux 2.6.18 x86_64 PGI         y       y         y         n     
+CentOS 6.4 Linux 2.6.32 x86_64 GNU         y       y         y         n
+CentOS 6.4 Linux 2.6.32 x86_64 Intel       y       y         y         n
+Linux 2.6.32-358.2.1.el6.ppc64             y       y         y         n 
+OpenVMS IA64 V8.4                          n       n         n         n
+
+Compiler versions for each platform are listed in the preceding
+"Supported Platforms" table.
+
+
+More Tested Platforms
+=====================
+The following platforms are not supported but have been tested for this release.
+
+    Linux 2.6.18-308.13.1.el5PAE  MPICH mpich2-1.4.1p1 compiled with
+    #1 SMP i686 i686 i386             gcc 4.1.2 and gfortran 4.1.2
+    (jam)                         g95 (GCC 4.0.3 (g95 0.94!)
+
+    Linux 2.6.18-308.16.1.el5     MPICH mpich2-1.4.1p1 compiled with
+    #1 SMP x86_64 GNU/Linux           gcc 4.1.2 and gfortran 4.1.2
+    (koala)                       g95 (GCC 4.0.3 (g95 0.94!)
+                                  
+    FreeBSD 8.2-STABLE i386       gcc 4.5.4 [FreeBSD] 20110526
+    (loyalty)                     gcc 4.6.1 20110527
+                                  g++ 4.6.1 20110527
+                                  gfortran 4.6.1 20110527
+
+    FreeBSD 8.2-STABLE amd64      gcc 4.5.4 [FreeBSD] 20110526
+    (freedom)                     gcc 4.6.1 20110527
+                                  g++ 4.6.1 20110527
+                                  gfortran 4.6.1 20110527
+
+    Debian7.1.0 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux
+                                  gcc (Debian 4.7.2-5) 4.7.2
+                                  GNU Fortran (Debian 4.7.2-5) 4.7.2
+                                  (cmake and autotools)
+
+    Fedora19 3.11.1-200.fc19.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (GCC) 4.8.1 20130603 (Red Hat 4.8.1-1)
+                                  GNU Fortran (GCC) 4.8.1 20130603 (Red Hat 4.8.1-1)
+                                  (cmake and autotools)
+
+    SUSE 12.3 3.7.10-1.16-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (SUSE Linux) 4.7.2
+                                  GNU Fortran (SUSE Linux) 4.7.2 
+                                  (cmake and autotools)
+
+    Ubuntu 13.04 3.8.0-30-generic #44-Ubuntu SMP x86_64 GNU/Linux
+                                  gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
+                                  GNU Fortran (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
+                                  (cmake and autotools)
+    
+    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
+
+
+Known Problems
+==============
+* Several HDF5 command-line tools and tests leave behind generated files
+  that are not cleaned up with "make clean" or "make distclean" when software
+  is built in place. The issue will be addressed in the 1.8.13 release. We
+  recommend to use build directory to compile and test HDF5 as described
+  in the INSTALL file, section 4.2.
+ 
+* Source directory names with spaces in them will cause failures in configure
+  or make on Mac (HDFFV-8152), Linux, and probably all other platforms.  If a 
+  configure command with a space is run from a build directory, it will exit 
+  with an error message:  "checking whether build environment is sane... 
+  configure: error: unsafe srcdir value: '/scr/lrknox/hdf5 v1.8.12'".  If 
+  configure is run inside or below the directory with the space in the name, 
+  libtool will get the directory path from the system, put the part of the 
+  path before the space in the libdir variable in .../src/libhdf5.la, and 
+  then fail to find the nonexistent directory.  This is a known libtool issue 
+  and the suggested workaround is to rename the directory without spaces. 
+  (LRK - 2013/10/22)
+
+* CLANG compiler with the options -fcatch-undefined-behavior and -ftrapv
+  catches some undefined behavior in the alignment algorithm of the macro 
+  DETECT_I in H5detect.c (HDFFV-8147). This issue will be addressed in the 
+  next release.  (SLU - 2013/10/16)
+
+* Running make check for the tools can fail in the tools tests if make was not
+  run prior. The tests for the tools use other tools in the tests, therefore
+  all the tools should be built before testing the tools. (ADB - 2013/10/09)
+
+* Make provided by Solaris fails in "make check". Solaris users should use
+  gmake to build and install HDF5 software. (AKC - 2013/10/08 - HDFFV-8534)
+
+* On OpenVMS, two soft conversion functions (H5T__conv_i_f and H5T__conv_f_i)
+  have bugs.  They convert data between floating-point numbers and integers.
+  But the library's default is hard conversion.  The user should avoid
+  explicitly enabling soft conversion between floating-point numbers and
+  integers. (Issue VMS-8; SLU - 2013/09/19)
+
+* On OpenVMS, ZLIB 1.2.8 library doesn't work properly.  ZLIB 1.2.5 works
+  fine.  So please use ZLIB 1.2.5 to build HDF5 library. (Issue VMS-5;
+  SLU 2013/09/19)  
+
+* When building using the Cray compilers on Cray machines, HDF5
+  configure mistakenly thinks the compiler is an intel compiler and
+  sets the -std=c99 flag which breaks configure on Cray. To build HDF5
+  properly on a Cray machine, please consult with the instructions in
+  INSTALL_parallel for building on Hopper.
+  (MSC - 2013/04/26 - HDFFV-8429)
+
+* The h5dump and h5diff utilities occasionally produce different output
+  between Linux and Windows systems. This is caused by lower-level library
+  routines that fail to write fill values to the user's buffer when reading
+  unallocated chunks from datasets that have a fill value set to
+  H5D_FILL_VALUE_DEFAULT. Due to platform differences the return of
+  spurious data values has only been encountered on Windows 32-bit systems.
+  (Issue HDFFV-8247; JP - 2013/03/27)
+
+* The 5.9 C++ compiler on Sun failed to compile a C++ test ttypes.cpp.  It 
+  complains with this message:
+      "/home/hdf5/src/H5Vprivate.h", line 130: Error: __func__ is not defined.
+  
+  The reason is that __func__ is a predefined identifier in C99 standard.  The
+  HDF5 C library uses it in H5private.h.  The test ttypes.cpp includes 
+  H5private.h (H5Tpkg.h<-H5Fprivate.h<-H5Vprivate.h<-H5private.h).  Sun's 5.9
+  C++ compiler doesn't support __func__, thus fails to compile the C++ test.
+  But Sun's 5.11 C++ compiler does.  To check whether your Sun C++ compiler 
+  knows this identifier, try to compile the following simple C++ program:
+      #include<stdio.h>
+
+      int main(void)
+      {
+          printf("%s\n", __func__);
+          return 0;
+      }
+  (SLU - 2012/11/5)
+
+* 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):
+
+   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)
+
+* 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 is 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 kernel) with GCC 4.6.1 if the library
+  is built with optimization -O3 or -O2.  The older GCC (4.5) or newer kernel
+  (3.2.2 on Fedora) do not 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)
+  This issue is no longer present on Ubuntu 12.10 (3.5.0 kernel) with 
+  gcc 4.7.2.
+
+* 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 - 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
+  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)
+
+* 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)
+
+* 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)
+  
+* 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)
+
+* 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. 
+
+* 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)
+
 %%%%1.8.11%%%%   
 
 HDF5 version 1.8.11 released on 2013-05-08
diff --git a/release_docs/INSTALL b/release_docs/INSTALL
index 54cf705..8e8f46c 100644
--- a/release_docs/INSTALL
+++ b/release_docs/INSTALL
@@ -515,8 +515,8 @@ CONTENTS
 
             $ bin/deploy NEW_DIR
 
-        This will install HDF5 in NEW_DIR.  Alternately, if shared libraries 
-        were disabled, you can do this manually by issuing the command:
+        This will install HDF5 in NEW_DIR.  Alternately, you can do this
+        manually by issuing the command:
 
             $ make install prefix=NEW_DIR
 
@@ -525,11 +525,6 @@ CONTENTS
         NEW_DIR/bin directory.  This utility will fix the h5cc, h5fc and
         h5c++ scripts to reflect the new NEW_DIR location.
 
-        If shared libraries were enabled, configure must be run with 
-        --prefix=<final install directory>.  HDF5 can then be installed 
-        directly with "make install" or using a stage directory with 
-        "make install DESTDIR=STAGE_DIR".
-
         The library can be used without installing it by pointing the
         compiler at the `src' and 'src/.libs' directory for include files and
         libraries. However, the minimum which must be installed to make
diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt
index e2dd68c..36e8380 100644
--- a/release_docs/INSTALL_CMake.txt
+++ b/release_docs/INSTALL_CMake.txt
@@ -1,103 +1,252 @@
 ************************************************************************
-* Build and Install HDF5 C/C++ Library with CMake                      *
+* Build and Install HDF5 C, C++, Fortran and High-Level Libraries      *
+* and tools with CMake                                                 *
 ************************************************************************
 
                      Table of Contents
                      
-Section I:   Quick Step Building HDF5 Libraries with CMake 
-Section II:  Preconditions
-Section III: Building HDF5 C/C++ Libraries with CMake
-Section IV:  All Options for HDF5 C/C++ Libraries with CMake
-Section V:   User Defined Options for HDF5 Libraries with CMake
-Section VI:  APPENDIX
+Section I:    Preconditions
+Section II:   Quick Step Building HDF5 Libraries with CMake Script Mode 
+Section III:  Quick Step Building HDF5 Libraries with CMake Command Mode
+Section IV:   Further considerations                                                           
+Section V:    Options for building HDF5 Libraries with CMake command line
+Section VI:   CMake option defaults for HDF5
+Section VII:  User Defined Options for HDF5 Libraries with CMake
+Section VIII: Options for platform configuration files
 
 ************************************************************************
 
 
+========================================================================
+I. Preconditions
+========================================================================
+Obtaining HDF5 source code 
+   1. Create a directory for your development; for example, "myhdfstuff".
+
+   2. Obtain compressed (*.tar or *.zip) HDF5 source from
+        http://www.hdfgroup.org/ftp/HDF5/current/src/
+      and put it in "myhdfstuff".
+      Do not uncompress.
+
+CMake version
+   1. We suggest you obtain the latest CMake from the Kitware web site. 
+      The HDF5 1.8."X" product requires a minimum CMake version 2.8.12,
+      where "X" is the current HDF5 release version.                     
+
 
 ========================================================================
-I. Quick Step Building HDF5 Libraries with CMake
+II. Quick Step Building HDF5 Libraries with CMake Script Mode
 ========================================================================
-Notes: This short set of instructions is written for users who want to 
-       quickly build the HDF5 Library and tools from the HDF5 source code 
-       package using the CMake tools.
+This short set of instructions is written for users who want to quickly 
+build the HDF5 C, C++, Fortran, and High-level shared libraries and tools
+from the HDF5 source code package using the CMake tools. This procedure 
+will use the default settings in the config/cmake/cacheinit.cmake file.
+HDF Group recommends using the ctest script mode to build HDF5.
+
+The following files referenced below are available at the HDF web site:
+    http://www.hdfgroup.org/HDF5/release/cmakebuild.html
+
+CMake build script:
+    CTestScript.cmake
+
+External compression szip and zlib libraries:
+    SZip.tar.gz
+    ZLib.tar.gz
+    
+Platform configuration files:
+    HDF518Windows64CMake.cmake
+    HDF518Windows32CMake.cmake
+    HDF518LinuxCMake.cmake
+    HDF518MacCMake.cmake
+
+To build HDF5 with the SZIP and ZLIB external libraries you will need to:
+
+   1. Change to the development directory "myhdfstuff".
+    
+   2. Download the SZip.tar.gz and ZLib.tar.gz to "myhdfstuff".
+      Do not uncompress the files.
+       
+   3. Download the CTestScript.cmake file to "myhdfstuff".
+      CTestScript.cmake file should not be modified.    
        
-   A. Windows Quick Step Building HDF5 Libraries with CMake Using VS2010
+   4. Download a platform configuration file to "myhdfstuff".
+      Do not modify the file unless you want to change default build 
+      environment.
 
-      Go through these steps:
+   5. From the "myhdfstuff" directory execute the CTest Script with the 
+      following options:
 
-      1. Locate the source files in:
-         c:\MyHDFstuff\hdf5
-      
-      2. Create a build folder at:
-         c:\MyHDFstuff\hdf5\build
-      
-      3. Open a command prompt at:
-         c:\MyHDFstuff\hdf5\build
-      
-      4. Configure the C library, tools, and tests with this command:
-         cmake -G "Visual Studio 10" -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..
-      
-      3. Build the C library, tools, and tests with this command:
-         cmake --build . --config Release
-      
-      4. Test the C library and tools with this command:
-         ctest . -C Release
-      
-      5. Create an install image with this command:
-         cpack -C Release CPackConfig.cmake
-      
-      6. Install with this command:
-         HDF5-1.8.12-win32.exe
-        
-   B. Linux Quick Step Building HDF5 Libraries with CMake Using GCC
+         ctest -S <configuration file> -C Release -VV -O hdf5.log
 
-      Go through these steps:
+      The command above will configure, build, test, and create an install 
+      package in the myhdfstuff/hdf5-1.8/build folder.
 
-      1. Locate the source files in:
-         ~\MyHDFstuff\hdf5
+      The -S option uses the script version of ctest.
+        
+      The value for the -C option (as shown above, "-C Release") must 
+      match the setting for CTEST_BUILD_CONFIGURATION in the platform 
+      configuration file.
+        
+      The -VV option is for verbose; use -V for less verbose.
+        
+      The "-O hdf5.log" option saves the output to a log file hdf5.log.
+
+   6. To install, "X" is the current release version
+ 
+      On Windows, execute:
+                HDF5-1.8."X"-win32.exe or HDF5-1.8."X"-win64.exe
+      By default this program will install the hdf5 library into the
+      "C:\Program Files" directory and will create the following 
+      directory structure:
+         HDF_Group
+         --HDF5
+         ----1.8."X"
+         ------bin
+         ------include
+         ------lib
+         ------cmake
+
+      On Linux, change to the install destination directory 
+      (create it if doesn't exist) and execute:
+                <path-to>/myhdfstuff/hdf5-1.8/build/HDF5-1.8."X"-Linux.sh
+      After accepting the license, the script will prompt:
+        By default the HDF5 will be installed in:
+        "<current directory>/HDF5-1.8."X"-Linux"
+        Do you want to include the subdirectory HDF5-1.8."X"-Linux?
+        Saying no will install in: "<current directory>" [Yn]: 
+      Note that the script will create the following directory structure
+      relative to the install point:
+         HDF_Group
+         --HDF5
+         ----1.8."X"
+         ------bin
+         ------include
+         ------lib
+         ------share
+                
+      On Mac you will find HDF5-1.8."X"-Darwin.dmg in the build folder. Click
+      on the dmg file to proceed with installation. After accepting the license,
+      there will be a folder with the following structure:      
+         HDF_Group
+         --HDF5
+         ----1.8."X"
+         ------bin
+         ------include
+         ------lib
+         ------share
       
-      2. Create a build folder at:
-         ~\MyHDFstuff\hdf5\build
+      By default the installation will create the bin, include, lib and cmake
+      folders in the <install destination directory>/HDF_Group/HDF5/1.8.
+
+
+========================================================================
+III. Quick Step Building HDF5 C Static Libraries and Tools with CMake
+========================================================================
+Notes: This short set of instructions is written for users who want to 
+       quickly build the just the HDF5 C static library and tools from 
+       the HDF5 source code package using the CMake command line tools.
+       
+   Go through these steps:
+
+      1. Change to the development directory "myhdfstuff".
+
+      2. Uncompress the HDF5 source file
       
-      3. Open a command prompt at:
-         ~\MyHDFstuff\hdf5\build
+      3. Create a folder  "build" in the "myhdfstuff" directory.
       
-      4. Configure the C library, tools, and tests with this command:
-         cmake -G "Unix Makefiles" -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..
+      4. Change into the "build" folder. 
       
-      3. Build the C library, tools, and tests with this command:
-         cmake --build . --config Release
+      5. Configure the C library, tools and tests with one of the following commands:
+
+         On Windows 32 bit
+           cmake -G "Visual Studio 11" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.8."X"
+
+         On Windows 64 bit
+           cmake -G "Visual Studio 11 Win64" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.8."X"
       
-      4. Test the C library and tools with this command:
-         ctest . -C Release
+         On Linux and Mac
+           cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ../hdf5-1.8."X"
+
+         where "X" is the current release version.
+         
+      6. Build the C library, tools and tests with this command:
+           cmake --build . --config Release
       
-      5. Create an install image with this command:
-         cpack -C Release CPackConfig.cmake
+      7. Test the C library and tools with this command:
+           ctest . -C Release
       
-      6. Install with this command:
-         HDF5-1.8.12-Linux.sh
+      8. Create an install image with this command:
+           cpack -C Release CPackConfig.cmake
       
-
+      9. To install 
+         On Windows, execute:
+                HDF5-1.8."X"-win32.exe or HDF5-1.8."X"-win64.exe
+         By default this program will install the hdf5 library into the
+         "C:\Program Files" directory and will create the following 
+         directory structure:
+            HDF_Group
+            --HDF5
+            ----1.8."X"
+            ------bin
+            ------include
+            ------lib
+            ------cmake
+
+         On Linux, change to the install destination directory 
+         (create if doesn't exist) and execute:
+                <path-to>/myhdfstuff/build/HDF5-1.8."X"-Linux.sh
+         After accepting the license, the script will prompt:
+           By default the HDF5 will be installed in:
+           "<current directory>/HDF5-1.8."X"-Linux"
+           Do you want to include the subdirectory HDF5-1.8."X"-Linux?
+           Saying no will install in: "<current directory>" [Yn]: 
+         Note that the script will create the following directory structure
+         relative to the install point:
+            HDF_Group
+            --HDF5
+            ----1.8."X"
+            ------bin
+            ------include
+            ------lib
+            ------share
+                
+         On Mac you will find HDF5-1.8."X"-Darwin.dmg in the build folder. Click
+         on the dmg file to proceed with installation. After accepting the license,
+         there will be a folder with the following structure:      
+            HDF_Group
+            --HDF5
+            ----1.8."X"
+            ------bin
+            ------include
+            ------lib
+            ------share
 
 
 ========================================================================
-II. Preconditions                                                           
+IV. Further considerations                                                           
 ========================================================================
 
    1. We suggest you obtain the latest CMake for windows from the Kitware
-      web site. The HDF5 1.8.x product requires a minimum CMake version 2.8.10.                     
+      web site. The HDF5 1.8."X" product requires a minimum CMake version 2.8.12.                     
                                                                          
    2. If you plan to use Zlib or Szip:
-      A. Download the packages and install them in a central location. 
+      A. Download the binary packages and install them in a central location. 
          For example on Windows, create a folder extlibs and install the 
-         packages there.
+         packages there. Add the following CMake options:
+            -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib
+            -DZLIB_INCLUDE_DIR:PATH=some_location/include
+            -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib
+            -DSZIP_INCLUDE_DIR:PATH=some_location/include
+         where "some_location" is the full path to the extlibs folder. 
+
       B. Use source packages from an SVN server by adding the following CMake 
          options:
             HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="SVN"
             ZLIB_SVN_URL:STRING="http://some_location/zlib/trunk"
             SZIP_SVN_URL:STRING="http://some_location/szip/trunk"
-         where "some_location" is the URL to the SVN repository.
+         where "some_location" is the URL to the SVN repository. Also set
+         CMAKE_BUILD_TYPE to the configuration type.
+         
       C. Use source packages from a compressed file by adding the following 
          CMake options:
             HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ"
@@ -105,14 +254,15 @@ II. Preconditions
             SZIP_TGZ_NAME:STRING="szip_src.ext"
             TGZPATH:STRING="some_location"
          where "some_location" is the URL or full path to the compressed 
-         file and ext is the type of compression file.
+         file and ext is the type of compression file. Also set CMAKE_BUILD_TYPE
+         to the configuration type during configuration
                                     
    3. If you are building on Apple Darwin platforms, you should add the 
       following options:
-         Compiler choice - use xcode by setting the ENV variables of CC and CXX
-         Shared fortran is not supported, build static:
+          Compiler choice - use xcode by setting the ENV variables of CC and CXX
+          Shared fortran is not supported, build static:
             BUILD_SHARED_LIBS:BOOL=OFF
-         Additional options:
+          Additional options:
             CMAKE_ANSI_CFLAGS:STRING=-fPIC
             CTEST_USE_LAUNCHERS:BOOL=ON
             CMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF         
@@ -121,56 +271,57 @@ II. Preconditions
       Visual Studio Express users will not be able to package HDF5 into
       an install image executable.
    
-   5. Developers should copy the config/cmake/cacheinit.cmake file and alter the
+   5. Developers can copy the config/cmake/cacheinit.cmake file and alter the
       the settings for the developers' environment. Then the only options needed
       on the command line are those options that are different. Example using HDF
       default cache file:
-               cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 10" \
-               -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF ..
+           cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 11" \
+               -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF \
+               -DCMAKE_BUILD_TYPE:STRING=Release ..
 
+Notes: CMake and HDF5
 
-Notes: More information about using CMake can be found at the KitWare site, 
-       www.cmake.org.
-         
-       CMake uses the command line; however, the visual CMake tool is 
-       available for the configuration step. The steps are similar for
-       all the operating systems supported by CMake.
-       
-       NOTES:
-         1. Using CMake for building and using HDF5 is under active development. 
-            While we have attempted to provide error-free files, please 
-            understand that development with CMake has not been extensively 
-            tested outside of HDF. The CMake specific files may change
-            before the next release.
+   1. Using CMake for building and using HDF5 is under active development. 
+      While we have attempted to provide error-free files, please 
+      understand that development with CMake has not been extensively 
+      tested outside of HDF. The CMake specific files may change
+      before the next release.
             
-         2. CMake support for HDF5 development should be usable on any 
-            system where CMake is supported. Please send us any comments on 
-            how CMake support can be improved on any system. Visit the 
-            KitWare site for more information about CMake.
+   2. CMake support for HDF5 development should be usable on any 
+      system where CMake is supported. Please send us any comments on 
+      how CMake support can be improved on any system. Visit the 
+      KitWare site for more information about CMake.
             
-         3. Build and test results can be submitted to our CDash server at:
+   3. Build and test results can be submitted to our CDash server at:
                  cdash.hdfgroup.uiuc.edu. 
-            Please read the HDF and CDash document at:
+      Please read the HDF and CDash document at:
                  www.hdfgroup.org/CDash/HowToSubmit. 
             
-         4. See the appendix at the bottom of this file for examples of using
-            a ctest script for building and testing. Using a ctest script is
-            preferred because of its flexibility.
+   4. See the appendix at the bottom of this file for examples of using
+      a ctest script for building and testing. Using a ctest script is
+      preferred because of its flexibility.
             
+Notes: CMake in General
 
+   1. More information about using CMake can be found at the KitWare site at 
+         www.cmake.org.
+         
+   2. CMake uses the command line; however, the visual CMake tool is 
+      available for the configuration step. The steps are similar for
+      all the operating systems supported by CMake.
 
 
 ========================================================================
-III. Building HDF5 C/C++ Libraries with CMake
+V. Options for Building HDF5 Libraries with the CMake Command Line
 ========================================================================
 
-To build the HDF5 C/C++ Libraries with CMake, go through these five steps:
+To build the HDF5 Libraries with CMake, go through these five steps:
 
    1. Run CMake
    2. Configure the cache settings
    3. Build HDF5
    4. Test HDF5
-   5. Packaging HDF5 (create install image)
+   5. Package HDF5 (create install image)
 
 These five steps are described in detail below.
 
@@ -191,32 +342,25 @@ These five steps are described in detail below.
       then use c:\MyHDFstuff\hdf5\build or c:\MyHDFstuff\build\hdf5 as the 
       build directory.
       
-      PREFERRED:
+      RECOMMENDED:
         Users can perform the configuration step without using the visual 
         cmake-gui program. We use the file cacheinit.cmake in the 
-        config/cmake folder for our testing. This file enables all the 
+        config/cmake source folder for our testing. This file enables all of the 
         basic options and we turn specific options on or off for testing 
         using the following command line within the build directory:
         
         cmake -C <sourcepath>/config/cmake/cacheinit.cmake -G "<generator>"  [-D<options>]  <sourcepath>
         
         Where <generator> is    
-            * Borland Makefiles
-            * MSYS Makefiles
             * MinGW Makefiles
             * NMake Makefiles
             * Unix Makefiles
+            * Visual Studio 12
+            * Visual Studio 12 Win64
             * Visual Studio 11
             * Visual Studio 11 Win64
             * Visual Studio 10
             * Visual Studio 10 Win64
-            * Visual Studio 6
-            * Visual Studio 7
-            * Visual Studio 7 .NET 2003
-            * Visual Studio 8 2005
-            * Visual Studio 8 2005 Win64
-            * Visual Studio 9 2008
-            * Visual Studio 9 2008 Win64
 
         <options> is:
             * SZIP_INCLUDE_DIR:PATH=<path to szip includes directory>
@@ -230,48 +374,47 @@ These five steps are described in detail below.
                 ########################
                 # EXTERNAL cache entries
                 ########################
-                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)
-                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)
-                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)
-                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_USE_18_API_DEFAULT OFF CACHE BOOL "Use the HDF5 1.8.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)
-                SET (SZIP_SVN_URL "http://svn.hdfgroup.uiuc.edu/szip/trunk" CACHE STRING "Use SZip from HDF repository" FORCE)
-                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)
+                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)
+                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)
+                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)
+                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)
+                set (SZIP_SVN_URL "http://svn.hdfgroup.uiuc.edu/szip/trunk" CACHE STRING "Use SZip from HDF repository" FORCE)
+                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)
 
    2. Configure the cache settings
 
       2.1  Visual CMake users, click the Configure button. If this is the first time you are 
            running cmake-gui in this directory, you will be prompted for the 
-           generator you wish to use (for example on Windows, Visual Studio 9 2008). 
+           generator you wish to use (for example on Windows, Visual Studio 11). 
            CMake will read in the CMakeLists.txt files from the source directory and 
            display options for the HDF5 project. After the first configure you 
            can adjust the cache settings and/or specify the locations of other programs.
@@ -289,8 +432,9 @@ These five steps are described in detail below.
 
       2.2  Preferred command line example on Windows in c:\MyHDFstuff\hdf5\build directory:
       
-               cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 10" \
-               -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF ..
+               cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 11" \
+               -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF \
+               -DCMAKE_BUILD_TYPE:STRING=Release ..
 
       2.3  On Windows, if you are using a Visual Studio Express version you must 
            be sure that the following two options are correctly set/unset:
@@ -301,8 +445,8 @@ These five steps are described in detail below.
    3. Build HDF5
    
       On Windows, you can build HDF5 using either the Visual Studio Environment 
-      or the command line. The command line can be used on all platforms:
-      Windows, Linux, Unix, and Mac.
+      or the command line. The command line can be used on all platforms;
+      Windows, linux, Unix, and Mac.
 
       To build from the command line, navigate to your build directory and
       execute the following:
@@ -325,7 +469,8 @@ These five steps are described in detail below.
            The options to control the SVN URL (config/cmake/cacheinit.cmake file) are:
                ZLIB_SVN_URL:STRING="http://svn.hdfgroup.uiuc.edu/zlib/trunk"
                SZIP_SVN_URL:STRING="http://svn.hdfgroup.uiuc.edu/szip/trunk"
-           These should be changed to your location.
+           These should be changed to your location. Also define CMAKE_BUILD_TYPE
+           to be the configuration type.
            
       3.2.2  Or the external libraries (zlib and szip) can be configured
            to allow building the libraries by using a compressed file.
@@ -340,7 +485,8 @@ These five steps are described in detail below.
                TGZPATH:STRING="some_location"
             where "some_location/xxxx_src.ext" is the URL or full path to 
             the compressed file and where ext is the type of the compression 
-            file such as .bz2, .tar, .tar.gz, .tgz, or .zip.
+            file such as .bz2, .tar, .tar.gz, .tgz, or .zip. Also define
+            CMAKE_BUILD_TYPE to be the configuration type.
 
    4. Test HDF5
 
@@ -375,7 +521,7 @@ These five steps are described in detail below.
       installation and needs.
 
    7. More information about using CMake can be found at the KitWare site, 
-      www.cmake.org.
+         www.cmake.org.
       
    8. Nullsoft Scriptable Install System
       The Nullsoft Scriptable Install System (NSIS) is an open source installation 
@@ -388,11 +534,12 @@ These five steps are described in detail below.
 
 
 ========================================================================
-IV. All Options for HDF5 C/C++ Libraries with CMake
+VI. CMake Option Defaults for HDF5
 ========================================================================
 
 In the options listed below, there are three columns of information: 
-Option Name, Option Description, and Option Default.
+Option Name, Option Description, and Option Default. 
+The config/cmake/cacheinit.cmake file overrides the following values.
 
 ---------------- General Build Options ---------------------
 BUILD_SHARED_LIBS  "Build Shared Libraries"    OFF
@@ -406,7 +553,7 @@ HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples"    OFF
 HDF5_BUILD_FORTRAN  "Build FORTRAN support"          OFF
 HDF5_BUILD_HL_LIB   "Build HIGH Level HDF5 Library"  OFF
 HDF5_BUILD_TOOLS    "Build HDF5 Tools"               OFF
-IF (HDF5_BUILD_FORTRAN) 
+if (HDF5_BUILD_FORTRAN) 
     HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" OFF
 
 ---------------- HDF5 Advanced Options ---------------------
@@ -417,7 +564,6 @@ HDF5_ENABLE_CODESTACK          "Enable the function stack tracing (for developer
 HDF5_ENABLE_COVERAGE           "Enable code coverage for Libraries and Programs"              OFF
 HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols"                         ON
 HDF5_ENABLE_EMBEDDED_LIBINFO   "embed library info into executables"                          ON
-HDF5_ENABLE_GPFS               "Enable GPFS hints for the MPI/POSIX file driver"              OFF
 HDF5_ENABLE_HSIZET             "Enable datasets larger than memory"                           ON
 HDF5_ENABLE_LARGE_FILE         "Enable support for large (64-bit) files on Linux."            ON
 HDF5_ENABLE_PARALLEL           "Enable parallel build (requires MPI)"                         OFF
@@ -429,19 +575,16 @@ HDF5_PACKAGE_EXTLIBS           "CPACK - include external libraries"
 HDF5_STRICT_FORMAT_CHECKS      "Whether to perform strict file format checks"                 OFF
 HDF5_TEST_VFD                  "Execute tests with different VFDs"                            OFF
 HDF5_USE_16_API_DEFAULT        "Use the HDF5 1.6.x API by default"                            OFF
-HDF5_USE_18_API_DEFAULT        "Use the HDF5 1.8.x API by default"                            OFF
 HDF5_USE_FOLDERS               "Enable folder grouping of projects in IDEs."                  OFF
 HDF5_WANT_DATA_ACCURACY        "IF data accuracy is guaranteed during data conversions"       ON
 HDF5_WANT_DCONV_EXCEPTION      "exception handling functions is checked during data conversions" ON
 HDF5_ENABLE_THREADSAFE         "Enable Threadsafety"                                          OFF
-IF (APPLE) 
+if (APPLE) 
     HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path"  OFF
-IF (CMAKE_BUILD_TYPE MATCHES Debug) 
+if (CMAKE_BUILD_TYPE MATCHES Debug) 
     HDF5_ENABLE_TRACE          "Enable API tracing capability"               ON
-IF (HDF5_TEST_VFD) 
+if (HDF5_TEST_VFD) 
     HDF5_TEST_FHEAP_VFD        "Execute fheap test with different VFDs"      ON
-IF (WIN32 AND NOT CYGWIN) 
-    HDF_LEGACY_NAMING          "Use Legacy Names for Libraries and Programs" OFF
 
 ---------------- External Library Options ---------------------
 HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building"        "NO"
@@ -453,382 +596,151 @@ HDF5_USE_FILTER_FLETCHER32  "Use the FLETCHER32 Filter"              ON
 HDF5_USE_FILTER_NBIT        "Use the NBIT Filter"                    ON
 HDF5_USE_FILTER_SCALEOFFSET "Use the SCALEOFFSET Filter"             ON
 HDF5_USE_FILTER_SHUFFLE     "Use the SHUFFLE Filter"                 ON
-IF (HDF5_ENABLE_SZIP_SUPPORT) 
+if (HDF5_ENABLE_SZIP_SUPPORT) 
     HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding"      OFF
-IF (WINDOWS)
+if (WINDOWS)
     H5_DEFAULT_PLUGINDIR    "%ALLUSERSPROFILE%/hdf5/lib/plugin"
-ELSE (WINDOWS)
+else (WINDOWS)
     H5_DEFAULT_PLUGINDIR    "/usr/local/hdf5/lib/plugin"
-ENDIF (WINDOWS)
+endif (WINDOWS)
 
 
 
 ========================================================================
-V. User Defined Options for HDF5 Libraries with CMake
+VII. User Defined Options for HDF5 Libraries with CMake
 ========================================================================
 
 Support for User Defined macros and options has been added. The file
-UserMacros.cmake has an example of the technique. In the folder 
-config/cmake/UserMacros is an implementation for Windows Visual Studio
+UserMacros.cmake has an example of the technique. In the folder,
+config/cmake/UserMacros, is an implementation for Windows Visual Studio
 users for linking libraries to the static CRT - Windows_MT.cmake. 
 
 Copy the contents of the file, both macro and option, into the 
 UserMacros.cmake file. Then enable the option to the CMake configuration,
-build, and test process.
+build and test process.
 
 ========================================================================
-VI. APPENDIX
+VIII. Options for Platform Configuration Files
 ========================================================================
 
-Below are examples of the ctest scripts used by The HDF Group.
-See the script, cmakehdf5, in the bin folder for a smaller and limited 
-function shell script version of the following general scripts.
+Below is the HDF518LinuxCmake.cmake ctest script with extra comments.
 The example is for a linux machine, but the same scripts can be used on 
 a Windows machine by adjusting the CTEST_CMAKE_GENERATOR option in the
-product specific script.
-
-NOTE: these files are available at the HDF web site:
-    http://www.hdfgroup.org/HDF5/release/cmakebuild.html
-
-    CTestScript.cmake
-    SZip.tar.gz
-    ZLib.tar.gz
-    
-    HDF518WindowsRWDICMake.cmake
-    HDF518LinuxRWDICMake.cmake
-
-
-========================================================================
-CTestScript.cmake                                                       
-========================================================================
-
-The CTestScript.cmake script, shown below, is a common ctest script that 
-is used to build, test, and package HDF5 Library files.
-
-
-
-cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
-########################################################
-# This dashboard is maintained by The HDF Group
-# For any comments please contact cdashhelp at hdfgroup.org
-#
-########################################################
-# ----------------------------------------------------------- 
-# -- Get environment
-# ----------------------------------------------------------- 
-if(NOT SITE_OS_NAME)
-  ## machine name not provided - attempt to discover with uname
-  ## -- set hostname
-  ## --------------------------
-  find_program(HOSTNAME_CMD NAMES hostname)
-  exec_program(${HOSTNAME_CMD} ARGS OUTPUT_VARIABLE HOSTNAME)
-  set(CTEST_SITE  "${HOSTNAME}${CTEST_SITE_EXT}")
-  find_program(UNAME NAMES uname)
-  macro(getuname name flag)
-    exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}")
-  endmacro(getuname)
- 
-  getuname(osname -s)
-  getuname(osrel  -r)
-  getuname(cpu    -m)
-  message("Dashboard script uname output: ${osname}-${osrel}-${cpu}\n")
-
-  set(CTEST_BUILD_NAME  "${osname}-${osrel}-${cpu}")
-  if(USE_AUTOTOOLS)
-    set(CTEST_BUILD_NAME  "AT-${CTEST_BUILD_NAME}")
-  endif(USE_AUTOTOOLS)
-  if(SITE_BUILDNAME_SUFFIX)
-    set(CTEST_BUILD_NAME  "${CTEST_BUILD_NAME}-${SITE_BUILDNAME_SUFFIX}")
-  endif(SITE_BUILDNAME_SUFFIX)
-  set(BUILD_OPTIONS "${ADD_BUILD_OPTIONS}")
-else(NOT SITE_OS_NAME)
-  ## machine name provided
-  ## --------------------------
-  if(CMAKE_HOST_UNIX)
-    set(CTEST_BUILD_NAME "${SITE_OS_NAME}-${SITE_OS_VERSION}-${SITE_OS_BITS}-${SITE_COMPILER_NAME}-${SITE_COMPILER_VERSION}")
-  else(CMAKE_HOST_UNIX)
-    set(CTEST_BUILD_NAME "${SITE_OS_NAME}-${SITE_OS_VERSION}-${SITE_COMPILER_NAME}")
-  endif(CMAKE_HOST_UNIX)
-  if(SITE_BUILDNAME_SUFFIX)
-    set(CTEST_BUILD_NAME ${CTEST_BUILD_NAME}-${SITE_BUILDNAME_SUFFIX})
-  endif()
-  set(BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSITE:STRING=${CTEST_SITE} -DBUILDNAME:STRING=${CTEST_BUILD_NAME}")
-endif(NOT SITE_OS_NAME)
- 
-#-----------------------------------------------------------------------------
-# MAC machines need special option
-#-----------------------------------------------------------------------------
-if(APPLE)
-  # Compiler choice
-  execute_process(COMMAND xcrun --find cc OUTPUT_VARIABLE XCODE_CC OUTPUT_STRIP_TRAILING_WHITESPACE)
-  execute_process(COMMAND xcrun --find c++ OUTPUT_VARIABLE XCODE_CXX OUTPUT_STRIP_TRAILING_WHITESPACE)
-  SET(ENV{CC} "${XCODE_CC}")
-  SET(ENV{CXX} "${XCODE_CXX}")
-  # Shared fortran is not supported, build static 
-  set (BUILD_OPTIONS "${BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_ANSI_CFLAGS:STRING=-fPIC")
-  set(BUILD_OPTIONS "${BUILD_OPTIONS} -DCTEST_USE_LAUNCHERS:BOOL=ON -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF")
-endif(APPLE)
-
-#-----------------------------------------------------------------------------
-## cygwin does not handle the find_package() call
-## --------------------------
-if(NOT SITE_CYGWIN})
-  find_package (Subversion)
-  set(CTEST_UPDATE_COMMAND "${Subversion_SVN_EXECUTABLE}")
-else(NOT SITE_CYGWIN})
-  set(CTEST_UPDATE_COMMAND "/usr/bin/svn")
-endif(NOT SITE_CYGWIN})
- 
-#-----------------------------------------------------------------------------
-set(NEED_REPOSITORY_CHECKOUT 0)
-set(CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"")
-if (CTEST_USE_TAR_SOURCE)
-  ## Uncompress source if tar file provided
-  ## --------------------------
-  if(WIN32)
-    set(CTEST_7Z_COMMAND "C:/Program Files/7-Zip/7z.exe")
-    message("extracting... [${CTEST_7Z_COMMAND} x ${CTEST_USE_TAR_SOURCE}.zip]")
-    execute_process(COMMAND ${CTEST_7Z_COMMAND} x ${CTEST_USE_TAR_SOURCE}.zip RESULT_VARIABLE rv)
-  else(WIN32)
-    message("extracting... [${CTEST_CMAKE_COMMAND} -E tar -xvf ${CTEST_USE_TAR_SOURCE}.tar]")
-    execute_process(COMMAND tar -xvf ${CTEST_USE_TAR_SOURCE}.tar RESULT_VARIABLE rv)
-  endif(WIN32)
- 
-  if(NOT rv EQUAL 0)
-    message("extracting... [error-(${rv}) clean up]")
-    file(REMOVE_RECURSE "${CTEST_SOURCE_DIRECTORY}")
-    message(FATAL_ERROR "error: extract of ${CTEST_USE_TAR_SOURCE} failed")
-  endif(NOT rv EQUAL 0)
-     
-  file(RENAME ${CTEST_USE_TAR_SOURCE} ${CTEST_SOURCE_DIRECTORY})
-  set(LOCAL_SKIP_UPDATE "TRUE")
-else (CTEST_USE_TAR_SOURCE)
-  ## use subversion to get source
-  ## --------------------------
-  if (NOT EXISTS "${CTEST_SOURCE_DIRECTORY}")
-    set (NEED_REPOSITORY_CHECKOUT 1)
-  endif (NOT EXISTS "${CTEST_SOURCE_DIRECTORY}")
- 
-  if (${NEED_REPOSITORY_CHECKOUT})
-    set (CTEST_CHECKOUT_COMMAND
-      "${CTEST_UPDATE_COMMAND} co ${REPOSITORY_URL} \"${CTEST_SOURCE_DIRECTORY}\" -r HEAD")
-  else (${NEED_REPOSITORY_CHECKOUT})
-    set (CTEST_CHECKOUT_COMMAND "${CTEST_UPDATE_COMMAND} update")
-  endif (${NEED_REPOSITORY_CHECKOUT})
-endif (CTEST_USE_TAR_SOURCE)
- 
-#-----------------------------------------------------------------------------
-## Clear the build directory
-## --------------------------
-set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE)
-file(MAKE_DIRECTORY "${CTEST_BINARY_DIRECTORY}")
-#include(${CTEST_SOURCE_DIRECTORY}/CTestConfig.cmake)
-ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
-
-# Use multiple CPU cores to build
-include(ProcessorCount)
-ProcessorCount(N)
-if(NOT N EQUAL 0)
-  if(NOT WIN32)
-    set(CTEST_BUILD_FLAGS -j${N})
-  endif(NOT WIN32)
-  set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N})
-endif()
- 
-#-----------------------------------------------------------------------------
-# Send the main script as a note.
-if(USE_AUTOTOOLS)
-  ## autotools builds need to use make and does not use the cacheinit.cmake file
-  ## -- make command
-  ## -----------------
-  find_program(MAKE NAMES make)
- 
-  list(APPEND CTEST_NOTES_FILES
-    "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}"
-    "${CMAKE_CURRENT_LIST_FILE}"
-  )
-else(USE_AUTOTOOLS)
-  list(APPEND CTEST_NOTES_FILES
-    "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}"
-    "${CMAKE_CURRENT_LIST_FILE}"
-    "${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake"
-  )
-endif(USE_AUTOTOOLS)
- 
-#-----------------------------------------------------------------------------
-# Check for required variables.
-# --------------------------
-foreach(req
-    CTEST_CMAKE_GENERATOR
-    CTEST_SITE
-    CTEST_BUILD_NAME
-  )
-  if(NOT DEFINED ${req})
-    message(FATAL_ERROR "The containing script must set ${req}")
-  endif(NOT DEFINED ${req})
-endforeach(req)
- 
-#-----------------------------------------------------------------------------
-# Initialize the CTEST commands
-#------------------------------
-if(USE_AUTOTOOLS)
-  set(CTEST_CONFIGURE_COMMAND  "${CTEST_SOURCE_DIRECTORY}/configure ${ADD_BUILD_OPTIONS}")
-  set(CTEST_BUILD_COMMAND      "${MAKE} ${CTEST_BUILD_FLAGS}")
-  ## -- CTest Config
-  #configure_file($ENV{HOME}/CTestConfiguration/CTestConfig.cmake    ${CTEST_SOURCE_DIRECTORY}/CTestConfig.cmake)
-  configure_file(${CTEST_SOURCE_DIRECTORY}/config/cmake/CTestCustom.cmake ${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake)
-  ## -- CTest Testfile
-#  configure_file(${CTEST_SCRIPT_DIRECTORY}/CTestTestfile.cmake ${CTEST_BINARY_DIRECTORY}/CTestTestfile.cmake)
-  file(WRITE ${CTEST_BINARY_DIRECTORY}/CTestTestfile.cmake "ADD_TEST(makecheck \"${MAKE}\" \"${CTEST_BUILD_FLAGS}\" \"-i\" \"check\")")
-else(USE_AUTOTOOLS)
-  if(LOCAL_MEMCHECK_TEST)
-    find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
-    set (CTEST_CONFIGURE_COMMAND
-        "${CTEST_CMAKE_COMMAND} -C \"${CTEST_SOURCE_DIRECTORY}/config/cmake/mccacheinit.cmake\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\""
-    )
-  else(LOCAL_MEMCHECK_TEST)
-    find_program(CTEST_COVERAGE_COMMAND NAMES gcov)
-    set (CTEST_CONFIGURE_COMMAND
-        "${CTEST_CMAKE_COMMAND} -C \"${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\""
-    )
-  endif(LOCAL_MEMCHECK_TEST)
-endif(USE_AUTOTOOLS)
- 
-#-----------------------------------------------------------------------------
-## -- set output to english
-set($ENV{LC_MESSAGES}  "en_EN")
- 
-# Print summary information.
-foreach(v
-    CTEST_SITE
-    CTEST_BUILD_NAME
-    CTEST_SOURCE_DIRECTORY
-    CTEST_BINARY_DIRECTORY
-    CTEST_CMAKE_GENERATOR
-    CTEST_BUILD_CONFIGURATION
-    CTEST_GIT_COMMAND
-    CTEST_CHECKOUT_COMMAND
-    CTEST_CONFIGURE_COMMAND
-    CTEST_SCRIPT_DIRECTORY
-    CTEST_USE_LAUNCHERS
-  )
-  set(vars "${vars}  ${v}=[${${v}}]\n")
-endforeach(v)
-message("Dashboard script configuration:\n${vars}\n")
- 
-#-----------------------------------------------------------------------------
-## NORMAL process
-## -- LOCAL_UPDATE updates the source folder from svn
-## -- LOCAL_SUBMIT reports to CDash server
-## -- LOCAL_SKIP_TEST skips the test process (only builds)
-## -- LOCAL_MEMCHECK_TEST executes the Valgrind testing
-## -- LOCAL_COVERAGE_TEST executes code coverage process
-## --------------------------
-CTEST_START (${MODEL} TRACK ${MODEL})
-if(LOCAL_UPDATE)
-  CTEST_UPDATE (SOURCE "${CTEST_SOURCE_DIRECTORY}")
-endif(LOCAL_UPDATE)
-CTEST_CONFIGURE (BUILD "${CTEST_BINARY_DIRECTORY}")
-CTEST_READ_CUSTOM_FILES ("${CTEST_BINARY_DIRECTORY}")
-if(LOCAL_SUBMIT)
-  CTEST_SUBMIT (PARTS Update Configure Notes)
-endif(LOCAL_SUBMIT)
-  CTEST_BUILD (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND)
-if(LOCAL_SUBMIT)
-  CTEST_SUBMIT (PARTS Build)
-endif(LOCAL_SUBMIT)
-if(NOT LOCAL_SKIP_TEST)
-  if(NOT LOCAL_MEMCHECK_TEST)
-    CTEST_TEST (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args})
-    if(LOCAL_SUBMIT)
-      CTEST_SUBMIT (PARTS Test)
-    endif(LOCAL_SUBMIT)
-  else(NOT LOCAL_MEMCHECK_TEST)
-    CTEST_MEMCHECK (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args})
-    if(LOCAL_SUBMIT)
-      CTEST_SUBMIT (PARTS MemCheck)
-    endif(LOCAL_SUBMIT)
-  endif(NOT LOCAL_MEMCHECK_TEST)
-  if(LOCAL_COVERAGE_TEST)
-    CTEST_COVERAGE (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND)
-    if(LOCAL_SUBMIT)
-      CTEST_SUBMIT (PARTS Coverage)
-    endif(LOCAL_SUBMIT)
-  endif(LOCAL_COVERAGE_TEST)
-endif(NOT LOCAL_SKIP_TEST)
-if(NOT LOCAL_MEMCHECK_TEST)
-  ##-----------------------------------------------
-  ## Package the product
-  ##-----------------------------------------------
-  execute_process(COMMAND cpack -C ${CTEST_BUILD_CONFIGURATION} -V
-    WORKING_DIRECTORY ${CTEST_BINARY_DIRECTORY}
-    RESULT_VARIABLE cpackResult
-    OUTPUT_VARIABLE cpackLog
-    ERROR_VARIABLE cpackLog.err
-  )
-  file(WRITE ${CTEST_BINARY_DIRECTORY}/cpack.log "${cpackLog.err}" "${cpackLog}")
-endif(NOT LOCAL_MEMCHECK_TEST)
-#-----------------------------------------------------------------------------
-message("DONE:CTestScript")
-
-
-
-========================================================================
-ctest
-========================================================================
-
-Below is an example of the ctest script used by The HDF Group. The
-CTestScript.cmake file used by this script is shown above. Adjust the values 
-as necessary. Note that the source folder is entered on the command line 
-and the build folder is created as a sub-folder.
-
+platform configuration script.
 
 
 ############################################################################
-# Product specific script, HDF518Static.cmake, that uses the 
-# CTestScript.cmake file (see above). Usage:
-# "ctest -S HDF518Static.cmake,hdf518 -C Release -O hdf518static.log"
-# where hdf518 is the source folder relative to the location of these scripts
+# Product specific script, HDF518LinuxCmake.cmake, that uses the 
+# CTestScript.cmake file. Usage:
+# "ctest -S HDF518LinuxCmake.cmake -C Release -O hdf518shared.log"
 ############################################################################
-
 cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
 
-# CTEST_SCRIPT_ARG is the source folder passed on the command line
-set(CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY})
+# this is the location of the source hardcoded to hdf5-1.8.13
+set(CTEST_SOURCE_NAME hdf5-1.8.13)
+# this is the location of the source with ctest parameter hdf5src
+# "ctest -S HDF518LinuxCmake.cmake,hdf5src -C Release -O hdf518static.log"
 set(CTEST_SOURCE_NAME ${CTEST_SCRIPT_ARG})
-set(CTEST_BINARY_NAME ${CTEST_SOURCE_NAME}/buildstatic)
-set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_SOURCE_NAME}")
-set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}")
-set(CTEST_BUILD_CONFIGURATION "Release")
-set(MODEL "Experimental")
 
-# build generator name, see cmake generator list
-set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
+# this is the location of the build directory
+set(CTEST_BINARY_NAME ${CTEST_SOURCE_NAME}/build)
 
-# machine description, can be removed on linux
-set(CTEST_SITE "machine.domain")
-set(SITE_OS_NAME "os name")
-set(SITE_OS_VERSION "os version")
-set(SITE_OS_BITS "os size")
-set(SITE_COMPILER_NAME "compiler name")
-set(SITE_COMPILER_VERSION "compiler version")
+# this is the directory the script is executed from
+set(CTEST_DASHBOARD_ROOT "${CTEST_SCRIPT_DIRECTORY}")
 
-# extra CDash build name description
-set(SITE_BUILDNAME_SUFFIX "STATIC")
+# this is the full path of the source directory
+set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_SOURCE_NAME}")
 
-# needed for source updates, change as required
-set(REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8")
+# this is the  full path of the build directory
+set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}")
 
-# options to add/change from the cacheinit.cmake in the config/cmake folder
-set(ADD_BUILD_OPTIONS "-DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/hdf5.1.8_static")
-set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_ANSI_CFLAGS:STRING=-fPIC -DHDF5_PACKAGE_EXTLIBS:BOOL=ON")
-set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=\"SVN\"")
 
-# include common script file
-include(${CTEST_SCRIPT_DIRECTORY}/CTestScript.cmake)
+###################################################################
+### Following Line is one of [Release, RelWithDebInfo, Debug] #####
+set(CTEST_BUILD_CONFIGURATION "Release")
+###################################################################
 
-message("DONE")
+###################################################################
+#########       Following describes compiler           ############
+# this is for linux
+set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
+# this is for windows 32 bit
+#set(CTEST_CMAKE_GENERATOR "Visual Studio 11")
+# this is for windows 64 bit
+#set(CTEST_CMAKE_GENERATOR "Visual Studio 11 Win64")
+# Visual Studio 2013 is 12, Visual Studio 2012 is 11,  Visual Studio 2010 is 10
+###################################################################
+
+###################################################################
+#########       Following is for submission to CDash   ############
+###################################################################
+set(MODEL "Experimental")
+#########       Following describes computer           ############
+##  Set the following to unique id your computer  ##
+set(CTEST_SITE "LINUX.XXXX")
+##    following is optional to describe build     ##
+set(SITE_BUILDNAME_SUFFIX "SHARED")
+
+#########   Following controls CDash submission          ##########
+#set(LOCAL_SUBMIT "TRUE")
+#########   Following controls test process              ##########
+#set(LOCAL_SKIP_TEST "TRUE")
+#set(LOCAL_MEMCHECK_TEST "TRUE")
+#set(LOCAL_COVERAGE_TEST "TRUE")
+#########   Following controls cpack command             ##########
+#set(LOCAL_NO_PACKAGE "TRUE")
+#########   Following controls source update             ##########
+#set(LOCAL_UPDATE "TRUE")
+#########   Following controls source repository         ##########
+#set(REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8")
+#comment to use a uncompressed source folder
+set(CTEST_USE_TAR_SOURCE "hdf5-1.8.13")
+###################################################################
+
+###################################################################
+####  Change default configuration of options in config/cmake/cacheinit.cmake file ###
+####  format: set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DXXX:YY=ZZZZ")
+
+### uncomment/comment and change the following lines for configuration options
+
+### uncomment the following line to build static libraries
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF")
+
+####      ext libraries       ####
+### ext libs from tgz
+set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=TGZ -DTGZPATH:PATH=${CTEST_SCRIPT_DIRECTORY}")
+### ext libs from svn
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=SVN")
+### ext libs on system
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DZLIB_INCLUDE_DIR:PATH=some_location/include")
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DSZIP_INCLUDE_DIR:PATH=some_location/include")
+
+####      fortran       ####
+### enable Fortran 2003
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_F2003:BOOL=ON")
+### disable Fortran
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF")
+
+### Create install package with external libraries (szip, zlib)
+set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_PACKAGE_EXTLIBS:BOOL=ON")
+
+### disable test program builds
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_TESTING:BOOL=OFF")
+
+### disable packaging
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_NO_PACKAGES:BOOL=ON")
+
+### disable building examples
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_EXAMPLES:BOOL=OFF")
+
+### disable building tests
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_TESTING:BOOL=OFF")
+
+### change install prefix
+#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH=install")
+###################################################################
 
+include(${CTEST_SCRIPT_DIRECTORY}/CTestScript.cmake)
 
 
 ========================================================================
diff --git a/release_docs/INSTALL_Cygwin.txt b/release_docs/INSTALL_Cygwin.txt
index ced4fe1..a7e5f67 100644
--- a/release_docs/INSTALL_Cygwin.txt
+++ b/release_docs/INSTALL_Cygwin.txt
@@ -5,7 +5,7 @@
 Preconditions:
 --------------
 
-1. Installed Cygwin 1.7.15 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 
@@ -32,9 +32,9 @@ Preconditions:
 
    2.2 Using Compilers Not Supported
        
-       The compilers in 2.1 are supported and tested by The HDF 
-       Group. Other compilers may still work, but they are not 
-       guaranteed by The HDF Group.
+       The compilers in 2.1 are supported and tested by HDF 
+       group. Any other compilers may still work but they are not 
+       guaranteed by HDF group.
 
        If users want to use other compilers except those in 2.1,
        try to set the following variables to override the default 
@@ -43,7 +43,7 @@ Preconditions:
        CXX : C++ compiler command
        FC  : Fortran compiler command
 
-       For example, if users want to use pgf90 as the Fortran compiler, then 
+       For example, if users want to use pgf90 as fortran compiler, then 
 
             setenv FC pgf90
            
@@ -54,7 +54,7 @@ Preconditions:
        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
+       The HDF5 library has a predefined compression filter that uses
        the extended-Rice lossless compression algorithm for chunked
        datatsets. For more information about Szip compression and 
        license terms see 
@@ -62,15 +62,15 @@ Preconditions:
       
        The latest supported public release of SZIP is available from
        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.
+       found under ftp://ftp.hdfgroup.org/lib-external/szip/2.1/bin/cygwin
 
 
 Install HDF5 on Cygwin
 ----------------------
 
 1. Get HDF5 source code package
-   Users can download the HDF5 source code package from The HDF Group 
-   website (http://hdfgroup.org). 
+   Users can download HDF5 source code package from HDF website
+   (http://hdfgroup.org). 
      
 2. Unpacking the distribution
 
@@ -92,7 +92,7 @@ Install HDF5 on Cygwin
 
 2. Setup Environment
 
-    In Cygwin, most compilers and settings are automatically detected during
+    In Cygwin, most compilers and setting are automatically detected during
     the configure script.  However, if you are building Fortran we recommend 
     that you explicitly set the "FC" variable in your environment to use the 
     gfortran compiler.  For example, issue the command:
@@ -102,10 +102,10 @@ Install HDF5 on Cygwin
 4. Configuring 
      
    Notes: See detailed information in hdf5/release_docs/INSTALL, 
-          section "5. Full Installation Instructions for Source 
-          Sistributions."
+          part 5. Full installation instructions for source 
+          distributions
 
-   The host configuration file for Cygwin i686-pc-cygwin is located 
+   The host configuration file for cygwin i686-pc-cygwin is located 
    in the `config' directory and are based on architecture name, 
    vendor name, and operating system which are displayed near the 
    beginning of the `configure' output. The host config file influences
@@ -129,9 +129,9 @@ Install HDF5 on Cygwin
 
             $ ./configure  --with-szlib="path to szlib"
            
-       For example, if the szip library was installed in the directory 
-       /cygdrive/c/szip, which is the parent directory of "include" and
-       "lib", then the following command will configure the HDF5 C Library 
+       For example, if szip library was installed in the directory 
+       /cygdrive/c/szip, which is parent directory of "include" and
+       "lib", then the following command will configure HDF5 C library 
        with szip enabled:
            
             $ ./configure --with-szlib=/cygdrive/c/szip
@@ -157,7 +157,7 @@ Install HDF5 on Cygwin
       Through the CPPFLAGS and LDFLAGS Variables
            
        For example, if zlib was installed in the directory 
-       /cygdrive/c/usr, then using the following command to configure 
+       /cygdrive/c/usr then using the following command to configure 
        HDF5 with zib
 
            $ CPPFLAGS=-I/cygdrive/c/usr/include \
@@ -179,10 +179,10 @@ Install HDF5 on Cygwin
 
        All of the above switches can be combined together. For 
        example, if users want to configure HDF5 C/C++/Fortran 
-       library with the szip library enabled, with the zlib library at 
-       /cygdrive/c/usr/, and install HDF5 into the directory 
-       /cygdrive/c/hdf5 using gcc/g++ as the C/C++ compiler and gfortran
-       as the Fortran compiler
+       library with szip library enabled, with zlib library at 
+       /cygdrive/c/usr/, and install HDF5 into directory 
+       /cygdrive/c/hdf5 using gcc/g++ as C/C++ compiler and gfortran
+       as fortran compiler
      
            $ ./configure
              --with-szlib=/cygdrive/c/szip
@@ -192,11 +192,12 @@ Install HDF5 on Cygwin
              --enable-fortran 
              <"If no more switches, then hit Enter">
 
-            Notes: The command format above is for readability. In practice,
-                please type in the command above with at least one
-                space between each line, and do not hit "Enter" until you 
-                finish the switches and want to run the configure. 
+       Notes: The command format above is for readilibity. In practice,
+              please type in the command above with at least one
+              space between each line, No "Enter" until users finish 
+              the switches and want to run the configure. 
 
+ 
      or do it through CPPFLAGS and LDFLAGS variables:
      
            $ CPPFLAGS=-I/cygdrive/c/usr/include \
@@ -211,30 +212,30 @@ Install HDF5 on Cygwin
                           
 5. Make and Make Check
 
-   After configuration has completed successfully, run the following series of
-   commands to build, test, and install HDF5:
+   After configuration is done successfully, run the following series of
+   commands to build, test and install HDF5
     
             $ make          > "output file name"
             $ make check    > "output file name"
             
-   Before running "make install" below, check the output file for 
-   "make check". There should be no failures at all.
+   Before run "make install", check output file for "make check", there
+   should be no failures at all.
 
 6. Make Install
 
             $ make install  > "output file name"
    
      
-7. Check Installed HDF5 Library
+7. Check installed HDF5 library
 
-   After step 6, go to your installation directory. There should be 
-   three subdirectories: "bin", "include", and "lib".
+   After step 6, go to your installation directory, there should be 
+   three subdirectories: "bin" "include" and "lib".
 
 8. Known Problems 
    
    dt_arith tests may fail due to the use of fork. This is a known issue
-   with Cygwin on Windows.
+   with cygwin on Windows.
 
 -----------------------------------------------------------------------
 
-For further assistance, email help at hdfgroup.org
+Need Further assistance, email help at hdfgroup.org
diff --git a/release_docs/INSTALL_VMS.txt b/release_docs/INSTALL_VMS.txt
index f8cbcab..dbbab77 100644
--- a/release_docs/INSTALL_VMS.txt
+++ b/release_docs/INSTALL_VMS.txt
@@ -1,68 +1,61 @@
-        Building and Installation Instructions for Alpha Open VMS
+		Building and installation instructions for Alpha Open VMS
                               HDF5 1.8.12 release
                                18 September 2013
    
 
 
-        CONTENTS
-        --------
+		CONTENTS
+		--------
                 
-        1. Obtaining HDF5
-        2. Building and Testing HDF5 C, Fortran, and C++ Libraries
-           and Utilities
-        3. Installing HDF5 Libraries
-        4. Known Problems
+		1. Obtaining HDF5
+		2. Building and testing HDF5 C, Fortran and C++ libraries,
+                   and utilities
+		3. Installing HDF5 libraries
+		4. Known problems
 
 
-    1. Obtaining HDF5
+	1.Obtaining HDF5
 
-       Please see the INSTALL file in this directory for downloading 
-       instructions.
+	  Please see INSTALL file in this directory for downloading instructions.
 
-    2. Building and Testing HDF5 C, Fortran, and C++ Libraries and Utilities
+	2. Building and testing HDF5 C, Fortran and C++ libraries and utilities.
 
            IMPORTANT: This version REQUIRES GNU ZLIB library to be installed
                       on a system. You may download the source code from
                       http://www.zlib.net/
 
-                      The newest ZLIB 1.2.8 does not work properly on OpenVMS, 
-                      but ZLIB 1.2.5 works fine.
+                      The newest ZLIB 1.2.8 doesn't work properly on OpenVMS.
+                      But ZLIB 1.2.5 works fine.
 
-    -  Use the tar command to untar HDF5 source ball
+	 -  Use tar command to untar HDF5 source ball
 
-       tar -xvf <source>.tar
+		tar -xvf <source>.tar
 
-    -  Change the default directory to [.<source>.vms]
-         -  Specify the top HDF5 source directory in the build.com file where 
+	 -  Change default directory to [.<source>.vms]
+         -  Specify top HDF5 source directory in the build.com file where the 
             "hdf5top" is defined.
          -  Edit make.com:
-                - Specify the path to the ZLIB library
-                - If necessary, modify the compilation flags 
-        Do NOT REMOVE the /define=H5_VMS and /standard=strict_ansi qualifiers.
-         -  Run the build.com command file 
-         
-        @build
-        
-            We recommend using a batch queue to build and test this 
-            distribution. 
-            
-            The command file runs make.com and builds the C library, tests, 
-            and utilities, the Fortran library and tests, and the C++ 
-            library and tests. It also runs test scripts to test C, Fortran, 
-            and C++ libraries, and the h5dump, h5diff, h5ls, and h5repack 
-            utilities.
-
-    3. Installing HDF5 Libraries
-
-       Modify the install.com file to specify the installation directory 
-       (hdf5top) and run
-       
-        @install
-        
-        to install HDF5 C, Fortran, and C++ libraries, and utilities.
-        
-        The script will create the directories shown below in the
-        installation directory:
+         	specify path to ZLIB library
+        	if necessary, modify compilation flags 
+	    Do NOT REMOVE /define=H5_VMS and /standard=strict_ansi qualifiers.
+         -  Run build.com command file 
+		@build
+            We recommend using batch queue to build and test this distribution. 
+            The command file runs make.com and builds 
+			C library, tests, and utilities	
+			Fortran library and tests
+			C++ library and tests
+            It also runs test scripts to test C, Fortran and C++ libraries, and
+	    h5dump, h5diff, h5ls, and h5repack utilities.
+
+	3. Installing HDF5 libraries
+
+	   Modify install.com file to specify installation directory (hdf5top) 
+           and run
+	       @install
+           to install HDF5 C, Fortran, and C++ libraries, and utilities.
+           The script will create the directories shown below in the
+           installation directory:
 
            [.HDF5]...
            [.HDF5.INCLUDE]
@@ -77,13 +70,13 @@
            to build examples against the installed libraries and to verify 
            the installation.
 
-	4. Known Problems
+	4. Known problems
 
-           - There is no support for the szip compression filter.
+           - There is no support for szip compression filter.
            - Two soft conversion functions (H5T__conv_i_f and H5T__conv_f_i)
              have bugs.  They convert data between floating-point numbers and 
-             integers, but the library's default is hard conversion.  The user 
-             should avoid explicitly enabling soft conversion between 
-             floating-point numbers and integers. 
+             integers.  But the library's default is hard conversion.  The user 
+             should avoid explicitly enabling soft conversion between floating-point 
+             numbers and integers. 
 
-    For help, contact help at hdfgroup.org.
+	For help contact help at hdfgroup.org
diff --git a/release_docs/INSTALL_Windows.txt b/release_docs/INSTALL_Windows.txt
index 71a1c96..7873709 100644
--- a/release_docs/INSTALL_Windows.txt
+++ b/release_docs/INSTALL_Windows.txt
@@ -4,13 +4,13 @@
 *                         (Full Version)                              *
 ***********************************************************************
 
-We now recommend that users build, test, and install HDF5 using CMake.
+We now recommend that users build, test and install HDF5 using CMake.
 
 Instructions for building and testing HDF5 using CMake can be found in the
 INSTALL_CMake.txt file found in this folder.
 
-Instructions for building and testing an application with HDF5, can be 
-found in the USING_HDF5_CMake.txt file found in this folder.
+For instructions of building and testing an application with HDF5, see 
+USING_HDF5_CMake.txt file found in this folder.
 
 Users who want to build and run an application with HDF5 in Visual Studio
 without using CMake should consult the USING_HDF5_VS.txt file.
diff --git a/release_docs/INSTALL_parallel b/release_docs/INSTALL_parallel
index c9940a4..6f60165 100644
--- a/release_docs/INSTALL_parallel
+++ b/release_docs/INSTALL_parallel
@@ -4,13 +4,13 @@
 
 1. Overview
 -----------
-This file contains instructions for the installation of Parallel HDF5 (PHDF5).
+This file contains instructions for the installation of parallel HDF5 (PHDF5).
 It is assumed that you are familiar with the general installation steps as
 described in the INSTALL file.  Get familiar with that file before trying
-the Parallel HDF5 installation.
+the parallel HDF5 installation.
 
-The rest of this section explains the requirements to run PHDF5.
-Section 2 shows quick instructions for some well known systems.  Section 3
+The remaining of this section explains the requirements to run PHDF5.
+Section 2 shows quick instructions for some well know systems.  Section 3
 explains the details of the installation steps. Section 4 shows some details
 of running the parallel test suites.
 
@@ -19,12 +19,12 @@ of running the parallel test suites.
 -----------------
 PHDF5 requires an MPI compiler with MPI-IO support and a POSIX compliant
 (Ref. 1) parallel file system.  If you don't know yet, you should first consult
-with your system support staff for information on how to compile an MPI 
-program, how to run an MPI application, and how to access the parallel file 
-system. There are sample MPI-IO C and Fortran programs in the appendix section 
-of "Sample Programs".  You can use them to run simple tests of your MPI 
-compilers and parallel file system. Also, the t_posix_compliant test in 
-testpar verifies if the file system is POSIX compliant.
+with your system support staff of information how to compile an MPI program,
+how to run an MPI application, and how to access the parallel file system.
+There are sample MPI-IO C and Fortran programs in the appendix section of
+"Sample programs".  You can use them to run simple tests of your MPI compilers
+and the parallel file system. Also, the t_posix_compliant test in testpar
+verifies if the file system is POSIX compliant.
 
 
 1.2. Further Help
@@ -38,18 +38,18 @@ In your mail, please include the output of "uname -a". If you have run the
 the file "config.log".
 
 
-2. Quick Instruction for Known Systems
+2. Quick Instruction for known systems
 --------------------------------------
-The following shows particular steps to run the Parallel HDF5 configure for
+The following shows particular steps to run the parallel HDF5 configure for
 a few machines we've tested. If your particular platform is not shown or
 somehow the steps do not work for yours, please go to the next section for
 more detailed explanations.
 
 
-2.1. Known Parallel Compilers
+2.1. Know parallel compilers
 ----------------------------
 HDF5 knows several parallel compilers: mpicc, hcc, mpcc, mpcc_r.  To build
-Parallel HDF5 with one of the above, just set CC to it and configure.
+parallel HDF5 with one of the above, just set CC as it and configure.
 The "--enable-parallel" is optional in this case.
 
     $ CC=/usr/local/mpi/bin/mpicc ./configure --prefix=<install-directory>
@@ -61,13 +61,13 @@ The "--enable-parallel" is optional in this case.
 
 2.2. IBM SP
 -----------
-During the build stage, H5detect is compiled and executed to generate
+During the build stage, the H5detect is compiled and executed to generate
 the source file H5Tinit.c which is compiled as part of the HDF5 library. In
 parallel mode, make sure your environment variables are set correctly to
 execute a single process mpi application. Otherwise, multiple processes
 attempt to write to the same H5Tinit.c file, resulting in a scrambled
 source file.  Unfortunately, the setting varies from machine to machine.
-For example, the following works for the IBM SP machine at LLNL.
+E.g., the following works for the IBM SP machine at LLNL.
 
     setenv MP_PROCS     1
     setenv MP_NODES     1
@@ -75,7 +75,7 @@ For example, the following works for the IBM SP machine at LLNL.
     setenv MP_RMPOOL    0
     setenv LLNL_COMPILE_SINGLE_THREADED TRUE    # for LLNL site only
 
-The shared library configuration is problematic.  So, only the static library
+The shared library configuration is problematic.  So, only static library
 is supported.
 
 Then do the following steps:
@@ -86,18 +86,18 @@ Then do the following steps:
 			# Read the Details section about parallel tests.
     $ make install
 
-We also suggest that you add "-qxlf90=autodealloc" to FFLAGS when building
-parallel with Fortran enabled.  This can be done by invoking:
+We also suggest that you add "-qxlf90=autodealloc" to FCFLAGS when building
+parallel with fortran enabled.  This can be done by invoking:
 
-    setenv FFLAGS -qxlf90=autodealloc		# 32 bit build
+    setenv FCFLAGS -qxlf90=autodealloc		# 32 bit build
 or
-    setenv FFLAGS "-q64 -qxlf90=autodealloc"	# 64 bit build
+    setenv FCFLAGS "-q64 -qxlf90=autodealloc"	# 64 bit build
 
 prior to running configure.  Recall that the "-q64" is necessary for 64
 bit builds.
 
 
-2.3. Linux 2.4 and Greater
+2.3. Linux 2.4 and greater
 --------------------------
 Be sure that your installation of MPICH was configured with the following
 configuration command-line option:
@@ -112,9 +112,9 @@ Linux kernels 2.4 and greater.
 -------------------------
 Both serial and parallel HDF5 are supported in Red Storm.
 
-2.4.1 Building Serial HDF5 for Red Storm
+2.4.1 Building serial HDF5 for Red Storm
 ------------------------------------------
-The following steps are for building the Serial HDF5 for the Red Storm
+The following steps are for building the serial HDF5 for the Red Storm
 compute nodes.  They would probably work for other Cray XT3 systems but have
 not been verified.
 
@@ -132,7 +132,7 @@ $ make check
 # if all is well, install the binary.
 $ make install
 
-2.4.2 Building Parallel HDF5 for Red Storm
+2.4.2 Building parallel HDF5 for Red Storm
 ------------------------------------------
 The following steps are for building the Parallel HDF5 for the Red Storm
 compute nodes.  They would probably work for other Cray XT3 systems but have
@@ -153,11 +153,11 @@ $ make check
 # if all is well, install the binary.
 $ make install
 
-2.4.3 Red Storm Known Problems
+2.4.3 Red Storm known problems
 ------------------------------
 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.  To bypass this problem,
+test suites that do not expect seeing this message.  To bypass this problem,
 I launch the executables with a command shell script called "myyod" which
 consists of the following lines.  (You should set $RUNSERIAL and $RUNPARALLEL
 to use myyod instead of yod.)
@@ -197,11 +197,11 @@ not been verified.
 
 Obtain a copy from the HDF ftp server:
 http://www.hdfgroup.org/ftp/HDF5/current/src/
-(the link might change, so always doublecheck the HDF Group website).
+(link might change, so always double check the HDF group website).
 
 $ wget http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-x.x.x.tar.gz
 
-Unpack the tarball.
+unpack the tarball
 
 $ cd hdf5-x.x.x/
 $ CC=cc FC=ftn ./configure \
@@ -216,7 +216,7 @@ scripts and allocate nodes for your job. For Hopper, all the
 information can be found on:
 http://www.nersc.gov/systems/hopper-cray-xe6/
 
-Save the PBS script into your HDF5 build directory. The PBS script
+save the PBS script into your HDF5 build directory. The PBS script
 should contain (besides the PBS node allocation requests)the
 following:
 
@@ -234,7 +234,7 @@ make check
 Once the job runs and all is well, install the binary:
 $ make install
 
-2.5.2 Hopper Known Issues
+2.5.2 Hopper known issues
 ------------------------------
 Sometimes when building the library with make, you might get this problem:
 
@@ -254,12 +254,12 @@ If that happens, you are probable running with make -j <x>. In that
 case, you need to cleanup everything and start again as detailed above
 but use serial make (do not use -j <x>).
 
-3. Detailed Explanation
+3. Detail explanation
 ---------------------
 
-3.1. Installation Steps (Uni/Multiple Processes Modes)
+3.1. Installation steps (Uni/Multiple processes modes)
 -----------------------
-During the configure step, you must be running in the uni-process mode.
+During the step of configure, you must be running in the uni-process mode.
 If multiple processes are doing the configure simultaneously, they will
 incur errors.
 
@@ -267,40 +267,38 @@ In the build step (make), it depends on your make command whether it can
 run correctly in multiple processes mode.  If you are not sure, you should
 try running it in uni-process mode.
 
-In the test step (make check), if your system can control the number of 
-processes running in the MPI application, you can just use "make check".  
-But if your system (for example, IBM SP) has a fixed number of processes 
-for each batch run, you need to do the serial tests by "make check-s", 
-requesting 1 process and then do the parallel tests by "make check-p", 
-requesting n processes.
+In the test step (make check), if your system can control number of processes
+running in the MPI application, you can just use "make check".  But if your
+system (e.g., IBM SP) has a fixed number of processes for each batch run,
+you need to do the serial tests by "make check-s", requesting 1 process and
+then do the parallel tests by "make check-p", requesting n processes.
 
 Lastly, "make install" should be run in the uni-process mode.
 
 
-3.2. Configure Details
+3.2. Configure details
 ----------------------
-The HDF5 Library can be configured to use MPI and MPI-IO for parallelism on
+The HDF5 library can be configured to use MPI and MPI-IO for parallelism on
 a distributed multi-processor system. The easiest way to do this is to have
-a properly installed parallel compiler (for example, MPICH's mpicc or 
-IBM's mpcc_r) and supply the compiler name as the value of the CC 
-environment variable. For example,
+a properly installed parallel compiler (e.g., MPICH's mpicc or IBM's mpcc_r)
+and supply the compiler name as the value of the CC environment variable.
+For examples,
 
     $ CC=mpcc_r ./configure
     $ CC=/usr/local/mpi/bin/mpicc ./configure
 
-If no such compiler command is available then you must use your normal
-C compiler along with the location(s) of the MPI/MPI-IO files to be used.
+If no such a compiler command is available then you must use your normal
+C compiler along with the location(s) of MPI/MPI-IO files to be used.
 For example,
 
     $ CPPFLAGS=-I/usr/local/mpi/include \
       LDFLAGS=-L/usr/local/mpi/lib/LINUX/ch_p4 \
       ./configure --enable-parallel=mpich
 
-If a parallel library is being built, then configure attempts to determine how
+If a parallel library is being built then configure attempts to determine how
 to run a parallel application on one processor and on many processors. If the
-compiler is `mpicc' and the user has not specified values for RUNSERIAL and
-RUNPARALLEL, then configure chooses `mpiexec' from the same directory as 
-`mpicc':
+compiler is `mpicc' and the user hasn't specified values for RUNSERIAL and
+RUNPARALLEL then configure chooses `mpiexec' from the same directory as `mpicc':
 
     RUNSERIAL:    /usr/local/mpi/bin/mpiexec -np 1
     RUNPARALLEL:  /usr/local/mpi/bin/mpiexec -np $${NPROCS:=6}
@@ -309,45 +307,45 @@ The `$${NPROCS:=6}' will be substituted with the value of the NPROCS
 environment variable at the time `make check' is run (or the value 6).
 
 
-4. Parallel Test Suite
+4. Parallel test suite
 ----------------------
 The testpar/ directory contains tests for Parallel HDF5 and MPI-IO.  Here are
 some notes about some of the tests.
 
-t_mpi tests the basic functionalities of some MPI-IO features used by
+The t_mpi tests the basic functionalities of some MPI-IO features used by
 Parallel HDF5.  It usually exits with non-zero code if a required MPI-IO
 feature does not succeed as expected.  One exception is the testing of
-accessing files larger than 2GB.  If the underlying file system or the
+accessing files larger than 2GB.  If the underlying filesystem or if the
 MPI-IO library fails to handle file sizes larger than 2GB, the test will
 print informational messages stating the failure but will not exit with
 non-zero code.  Failure to support file size greater than 2GB is not a fatal
-error for HDF5 because HDF5 can use other file drivers such as families of
+error for HDF5 because HDF5 can use other file-drivers such as families of
 files to bypass the file size limit.
 
-t_posix_compliant tests if the file system is POSIX compliant when POSIX
+The t_posix_compliant tests if the file system is POSIX compliant when POSIX
 and MPI IO APIs are used.  This is for information only and it always exits
 with 0 even when non-compliance errors have occurred.  This is to prevent
-the test from aborting the remaining Parallel HDF5 tests unnecessarily.
+the test from aborting the remaining parallel HDF5 tests unnecessarily.
 
-t_cache does many small sized I/O requests and may not run well in a
+The t_cache does many small sized I/O requests and may not run well in a
 slow file system such as NFS disk. If it takes a long time to run it, try
-setting the environment variable $HDF5_PARAPREFIX to a file system more 
-suitable for MPI-IO requests before running t_cache.
+set the environment variable $HDF5_PARAPREFIX to a file system more suitable
+for MPI-IO requests before running t_cache.
 
 By default, the parallel tests use the current directory as the test directory.
-This can be changed by the environment variable $HDF5_PARAPREFIX. For example,
+This can be changed by the environment variable $HDF5_PARAPREFIX.  For example,
 if the tests should use directory /PFS/user/me, do
     HDF5_PARAPREFIX=/PFS/user/me
     export HDF5_PARAPREFIX
     make check
 
-(In some batch job systems, you many need to hardset HDF5_PARAPREFIX in the
+(In some batch job system, you many need to hardset HDF5_PARAPREFIX in the
 shell initial files like .profile, .cshrc, etc.)
 
 
 Reference
 ---------
-1. POSIX Compliant. A good explanation is by Donald Lewin.
+1. POSIX Compliant. A good explanation is by Donald Lewin,
     After a write() to a regular file has successfully returned, any
     successful read() from each byte position on the file that was modified
     by that write() will return the date that was written by the write(). A
@@ -359,11 +357,11 @@ Reference
 	& Associates.
 
 
-Appendix A. Sample Programs
+Appendix A. Sample programs
 ---------------------------
 Here are sample MPI-IO C and Fortran programs.  You may use them to run simple
 tests of your MPI compilers and the parallel file system.  The MPI commands
-used here are mpicc, mpif90, and mpiexec.  Replace them with the commands of
+used here are mpicc, mpif90 and mpiexec.  Replace them with the commands of
 your system.
 
 The programs assume they run in the parallel file system. Thus they create
@@ -382,8 +380,8 @@ Example compiling and running:
 
 ==> Sample_mpio.c <==
 /* Simple MPI-IO program testing if a parallel file can be created.
- * Default filename can be specified via the first program argument.
- * Each process writes something and then reads all data back.
+ * Default filename can be specified via first program argument.
+ * Each process writes something, then reads all data back.
  */
 
 #include <mpi.h>
@@ -500,7 +498,7 @@ main(int ac, char **av)
 ! file using MPI-IO calls.
 !
 ! USE MPI is the proper way to bring in MPI definitions but many
-! MPI Fortran compilers support the pseudo standard of INCLUDE.
+! MPI Fortran compiler supports the pseudo standard of INCLUDE.
 ! So, HDF5 uses the INCLUDE statement instead.
 ! 
 
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index f3dcbcd..9e9d8dd 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -1,25 +1,25 @@
-HDF5 version 1.8.12 released on 2013-11-21
+HDF5 version 1.8.13 released on 2014-05-05
 ================================================================================
 
 INTRODUCTION
 ============
 
-This document describes the differences between HDF5-1.8.11 and 
-HDF5-1.8.12, and contains information on the platforms tested and 
-known problems in HDF5-1.8.12. 
+This document describes the differences between HDF5-1.8.12 and 
+HDF5-1.8.13, and contains information on the platforms tested and 
+known problems in HDF5-1.8.13. 
 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.12 source code, documentation, and additional materials
+Links to the HDF5 1.8.13 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.12 release can be obtained from:
+The HDF5 1.8.13 release can be obtained from:
 
      http://www.hdfgroup.org/HDF5/release/obtain5.html
 
-User documentation for 1.8.12 can be accessed directly at this location: 
+User documentation for 1.8.13 can be accessed directly at this location: 
 
      http://www.hdfgroup.org/HDF5/doc/
 
@@ -30,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.12 (current 
-release) versus Release 1.8.11":
+from Release to Release" document, in the section "Release 1.8.13 (current 
+release) versus Release 1.8.12":
 
      http://www.hdfgroup.org/HDF5/doc/ADGuide/Changes.html
 
@@ -45,7 +45,7 @@ CONTENTS
 
 - New Features
 - Support for New Platforms, Languages, and Compilers
-- Bug Fixes since HDF5-1.8.11
+- Bug Fixes since HDF5-1.8.12
 - Supported Platforms
 - Supported Configuration Features Summary
 - More Tested Platforms
@@ -57,31 +57,54 @@ New Features
 
     Configuration
     -------------
-    - Added a configuration option to change the default plugin path.
-      The configure option is --with-default-plugindir=location.
-      The cmake option is -DH5_DEFAULT_PLUGINDIR:PATH=location.
-      HDFFV-8513.  (ADB 2013/09/04)
-    - Renamed FFLAGS to FCFLAGS in configure. (ADB 2013/08/13)
-    - CMake can now package a compressed examples file, the default for 
-      Windows binaries from HDF Group.  (ADB  - 2013/07/22)
+    - Autotools: Automake updated to 1.14.1 (ADB - 2014/04/08)
+
+    - CMake: Moved minimum CMake version to 2.8.11 which enables better library
+      include processing. (ADB - 2014/03/26)
     
+    - When configuring a thread-safe HDF5 Library it is no longer necessary 
+      to specify --enable-threadsafe with --with-pthreads if the Pthreads 
+      library is in a standard location.  (DER - 2014/04/11 HDFFV-8693)
+
     Library
     -------
-    - None
+    - Added an H5free_memory API call. This should be used to free memory 
+      that has been allocated by HDF5 API calls. H5Tget_member_name and 
+      H5Pget_class_name are two examples. The main motivation for this call 
+      is Windows, where it is common for application code and the HDF5 Library 
+      to be using different C run-time libraries (CRT). Using the new call 
+      ensures that the same CRT handles both the allocation and free. This 
+      new function can also be useful in any case where the library uses a 
+      different memory manager than the application, such as when a debug 
+      memory manager is in use or when the HDF5 Library is wrapped for use 
+      in a managed language like Python or Java. Fixes HDFFV-7710, 8519, 
+      and 8851. (DER - 2014/04/11)
+
+    - The Core VFD (aka Memory VFD) can now be configured to track dirty 
+      regions in the file and only write out the changed regions on 
+      flush/close. Additionally, a "page aggregation" size can be set that 
+      will aggregate small writes into larger writes. For example, setting 
+      a 1 MiB page aggregation size will logically partition the the 
+      in-memory file into 1 MiB pages that will be written out in their 
+      entirety if even a single byte is dirtied. The feature is controlled 
+      via the new H5Pset/get_core_write_tracking() API call. A new 
+      "core_paged" target has been added to the check-vfd target in 
+      test/Makefile.am that exercises the feature over all HDF5 VFD-aware
+      tests. (DER - 2014/04/12)
  
     Parallel Library
     ----------------
-    - None
+    - Removed MPI-POSIX VFD, as it wasn't helping anyone and was just
+      generating support questions. Application developers performing
+      parallel I/O should always use the MPI-IO VFD.
+     (QAK - 2014/03/28 HDFFV-8659)
+
+    - Improved parallel I/O support to allow collective I/O on point
+      selections. (QAK - 2014/03/15)
  
     Tools
     -----
-    - h5repack: Added the ability to use plugin filters to read and write 
-              files. The option uses the filter number. HDFFV-8345 
-              (ADB - 2013/09/04).
-    - h5dump: Added the option -N --any_path, which searches the file for 
-              paths that match the search path. HDFFV-7989 (ADB - 2013/08/12).
-    - h5dump: Added the optional arg 0 to -A, which excludes attributes 
-              from display. HDFFV-8134 (ADB - 2013/08/01).
+    - None
 
     High-Level APIs
     ---------------
@@ -89,59 +112,163 @@ New Features
 
     Fortran API
     -----------
-    - None
+    - Wrappers h5pset_file_image_f and h5pget_file_image_f were added to the 
+      library. (MSB - 2014/1/2014)
 
     C++ API
     -------
-    - Added tutorial examples to C++/examples.  They can be installed by
-      "make install-examples" and, in the installed directory, they can be
-      executed by running the script file run-c++-ex.sh. (BMR - 2013/09/28)
-    - A new class, H5::H5Location, is added to represent the location concept
-      in the C library.  It is a base class to H5::H5File and H5::H5Ojbect,
-      whose member functions are moved into H5::H5Location.  H5::H5File can
-      now inherent those functions.  As a result, an H5::H5File object can have
-      an attribute. (BMR - 2013/09/27)
-    - Added wrappers for H5Rget_obj_type2 to retrieve the type of the object
-      that an object reference points to. (BMR - 2013/09/27)
-	H5O_type_t H5Location::getRefObjType(void *ref, H5R_type_t ref_type)
-    - Added wrappers for H5Aexist to check whether an attribute exists given
-      a name. (BMR - 2013/09/27)
-	bool H5::H5Location::attrExists(const char* name)
-	bool H5::H5Location::attrExists(const H5std_string& name)
-    - Added a number of overloaded functions for convenience. (BMR - 2013/09/27)
+    - The following new features are added:
+      + Wrappers to class H5Object to get an object's name (HDFFV-8548).
+            ssize_t getObjName(char *obj_name, size_t buf_size = 0)
+            ssize_t getObjName(H5std_string& obj_name, size_t len = 0)
+            H5std_string getObjName()
+      + Wrappers to class H5CommonFG to get a child object's type from a
+        group or file (HDFFV-8367).
+            H5O_type_t childObjType(const H5std_string& objname)
+            H5O_type_t childObjType(const char* objname)
+            H5O_type_t childObjType(hsize_t index,
+                H5_index_t index_type=H5_INDEX_NAME,
+                H5_iter_order_t order=H5_ITER_INC, const char* objname=".")
+      + Wrappers to class DSetMemXferPropList for setting/getting a transform 
+        property list (HDFFV-7907).
+            DSetMemXferPropList(const char* expression);
+            void setDataTransform(const char* expression)
+            void setDataTransform(const H5std_string& expression)
+            ssize_t getDataTransform(char* exp, size_t buf_size=0)
+            H5std_string getDataTransform()
+      + Wrapper to CompType for setting size to compound datatype (HDFFV-8642).
+            void setSize(size_t size)
+      + Overloaded functions to provide prototypes that declare constant 
+        arguments const (HDFFV-3384).  These include:
+            DataSet::fillMemBuf
+            DataSet::getVlenBufSize
+            DataSpace::extentCopy
+            DataType::commit
+            FileAccPropList::setSplit
+            H5File::getVFDHandle
+      + Additional overload to class H5Location to get a comment as a char*
+            ssize_t getComment(const char* name, size_t buf_size, char* comment)
+      + Additional overloads to class Attribute to get an attribute's name for
+        convenience:
+            ssize_t getName(char* attr_name, size_t buf_size=0)
+            ssize_t getName(H5std_string& attr_name, size_t buf_size=0)
+            (BMR, 2014/04/15)
+      + A static wrapper to Exception for printing the error stack without an 
+	instance of Exception
+	    static void printErrorStack(FILE* stream = stderr,
+						hid_t err_stack = H5E_DEFAULT);
+	    (BMR, 2014/04/25)
 
 
 Support for New Platforms, Languages, and Compilers
 ===================================================
-    - None
+    Mac OS X 10.6 Snow Leopard is not supported by Apple any more. In view of
+    the added support of Mac OS X 10.9, Mac OS X 10.6 is retired from HDF5
+    supported platforms. (AKC - 2014/03/14 HDFFV-8704)
+
+    Mac OS X 10.9 Mavericks is supported. (AKC - 2014/03/04 HDFFV-8694)
+                                  
 
-Bug Fixes since HDF5-1.8.11
+Bug Fixes since HDF5-1.8.12
 ===========================
 
     Configuration
     -------------
-    - Modified H5detect.c to scan floating point types for padding bits before
-      analyzing the type further.  This should fix problems with gcc 4.8. 
-      (NAF - 2013/09/19 - HDFFV-8523/HDFFV-8500)
-    - HDF5 rpaths are no longer encoded in the library files when configured
-      with --disable-sharedlib-rpath. (LRK-2013-09-23 - HDFFV-8276)
+    - CMake: When CMake commands are executed individually on the command line
+      and the external filters are being built, the CMAKE_BUILD_TYPE define
+      must be set to the same value as the configuration
+      (-DCMAKE_BUILD_TYPE:STRING=Release if using -C Release). This is needed 
+      by the the szip and zlib filter build commands. (ADB - HDFFV-8695)
+
+    - CMake: Removed use of the XLATE_UTILITY program. 
+      (ADB - 2014/03/28 HDFFV-8640)
+
+    - CMake: Added missing quotes in setting the CMAKE_EXE_LINKER_FLAGS for the
+      MPI option. (ADB - 2014/02/27 HDFFV-8674)
+
+    - CMake: Configuration of the HDF5 C++ or Fortran libraries with the 
+      thread-safety feature.
+
+      C++ and/or Fortran + thread-safe is enforced as a non-supported
+      configuration. This matches the autotools. (DER - 2014/04/11)
+
+    - CMake: Configuration of static HDF5 C library with the thread-safety
+      feature. 
+
+      Static + thread-safe + Win32 threads is not a supported configuration
+      due to the inability to automatically clean up thread-local storage. 
+      This is expected to be fixed in a future release. In the meantime, a 
+      work-around that uses internal functionality may allow the combination 
+      to be used without resource leaks. Contact the help desk for more 
+      information. (DER - 2014/04/11)
+
+    - Autotools: Several changes were done to configure and installcheck. 
+
+      An export of LD_LIBRARY_PATH=<szip library location> was
+      removed from configure; make installcheck was revised to run
+      scripts installed in share/hdf5_examples to use the installed h5cc, etc. 
+      to compile and run example source files also installed there. 
+
+      Make installcheck will now fail when a shared szip or other external lib 
+      file cannot be found in the same manner that executables compiled and 
+      linked with h5cc will fail to run when those lib files cannot be found 
+      after install. Make installcheck should pass after setting 
+      LD_LIBRARY_PATH to the szip location. (LRK - 2014/04/16)
 
-    CMake
-    -----
-    - Fix installation problem for Mac OS X reported on FORUM.
-      (ADB - 2013/11/20)
- 
     Library
     -------
-    - Added const qualifier to source buffer parameters in H5Dgather and
-      H5D_scatter_func_t (H5Dscatter callback).  (NAF - 2013/7/09)
+    - A Gnu Make directive (.NOTPARALLEL) is added to fortran/test/Makefile.
+
+      AIX native make does not support this directive and would fail if
+      parallel make (e.g. make -j4) is used to build the library. AIX users
+      either do not use parallel make or install Gnu Make to build the library.
+      (AKC 2014/04/08 HDFFV-8738)
+
+    - H5R.c: H5Rget_name gave an assertion failure if the "name" parameter 
+      was NULL.
+
+      Fixed H5Rget_name to return the size of the buffer needed to read a
+      name of the referenced object in this case. The size doesn't include 
+      the NULL terminator. H5Rget_name returns negative on failure. 
+      (MSB - 2014/01/22 HDFFV-8620)
+
+    - H5Z.c: H5Zfilter_avail didn't check if a filter was available as a
+      dynamically loaded filter. The error manifested itself in the h5repack
+      tool when removing user-defined dynamically loaded filter.
+
+      Added a code to find the filter among the dynamically loaded filters 
+      after the function fails to find it among the registered filters. 
+      (ADB - 2014/03/03 HDFFV-8629)
+
+    - Memory leak: a memory leak was observed in conjunction to the 
+      H5TS_errstk_key_g thread-local variable allocated in the H5E_get_stack 
+      function in H5E.c. 
 
-    - CMake now creates *.so.{lt_version} files with the same version as 
-      configure.  (ADB  - 2013/06/05 HDFFV-8437)
+      The shared HDF5 thread-safe library now no longer leaks thread-local 
+      storage resources on Windows with Win32 threads. Currently, there is 
+      no solution for this problem when HDF5 is statically built. We 
+      disabled the build of the static HDF5 thread-safe library with 
+      Win32 threads. (DER - 2014/04/11 HDFFV-8518)
+
+    - H5Dio.c: Improved handling of NULL pointers to H5Dread/H5Dwrite 
+      calls. Credit to Jason Newton (nevion at gmail.com) for the original patch.
+
+      H5Dwrite/read failed when a NULL pointer was passed for a data buffer 
+      and 0 elements were selected. Fixed. (QAK - 2014/04/16 HDFFV-8705)
+
+    - Deprecated API (1_6 API): Improved handling of closing the library and
+      re-accessing it with a deprecated routine.
+
+      When a program used a deprecated API (for example, H5Gcreate1), 
+      closed the library, and reopened it again to access a group, dataset, 
+      datatype, dataspace, attribute, or property list, HDF5 failed to 
+      provide an identifier for the object. Fixed.
+      (NAF, QAK - 2014/04/16 HDFFV-8232)
 
     Parallel Library
     ----------------
-    - None
+    - Fixed a missing H5F_Provisional module in HDF5mpio.f90 
+      (MSB - 2014/2/7 HDFFV-8651)
 
     Performance
     -------------
@@ -149,23 +276,52 @@ Bug Fixes since HDF5-1.8.11
 
     Tools
     -----
-    - h5dump: Added the option -N --any_path, which searches the file for 
-              paths that match the search path. HDFFV-7989 (ADB - 2013/08/12).
-    - h5dump: Added the optional arg 0 to -A, which excludes attributes 
-              from display. HDFFV-8134 (ADB - 2013/08/01).
-    - h5dump correctly exports subsetted data to a file, using the --output
-      option.  (ADB  - 2013/06/07 HDFFV-8447)
-    - h5cc and other compile scripts now default to linking shared libraries
-      when HDF5 is configured with the --disable-static option.  
-      (LRK - 2013-09-23 - HDFFV-8141)
+    - The h5diff tool would report that a datafile compared with an exact
+      copy of the same datafile had differences. This was due to the issue
+      below of reading un-written chunks. This problem is also fixed.
+      (AKC - 2014/05/01 HDFFV-8637)
+
+    - The h5dump and h5diff utilities occasionally produced different output
+      between Linux and Windows systems. This has been fixed.
+ 
+      This happened to datasets that used chunked storage, with default fill 
+      values, and some of the chunks had not been written. 
+      When the dataset was read, the library failed to write the default fill 
+      values to parts of the use buffer that were associated with the unwritten 
+      chunks.  (JP - 2014/05/01 HDFFV-8247)
+
+    - The compress option is retired from bin/release.
+      (AKC - 2014/04/25 HDFFV-8755)
+
+    - bin/release has a new option "zip" that produces a release zip file for
+      the Windows platform. (AKC - 2014/04/24 HDFFV-8433)
+
+    - h5diff: Several failures relating to handling of strings attributes 
+      are fixed. 
+
+      The tool crashed or gave an error message when one of the strings had
+      fixed size type and another variable-length size type. h5diff now flags such
+      strings as "not comparable". We plan to enhance the tool to handle
+      strings of the different types in the future releases.
+      (AKC - 2014/04/18 HDFFV-8625, 8639, 8745)
+
+    - h5repack: h5repack would not remove user-defined filters.
+      Fixed by modifying h5repack to check if the filter is registered or 
+      can be dynamically loaded. (ADB - 2014/03/03 HDFFV-8629)
 
     F90 API
     -------
-    - None
+    - H5D_CHUNK_CACHE_NSLOTS_DFLT_F and H5D_CHUNK_CACHE_NBYTES_DFLT_F were 
+      changed from the default KIND for INTEGER to INTEGER of KIND size_t. 
+      (MSB - 2014/3/31 HDFFV-8689)
 
     C++ API
     ------
-    - None
+    - Added throw() to all exception destructors.  Credit to Jason Newton
+      (nevion at gmail.com) for the patch.  (BMR - 2014/4/15 HDFFV-8623)
+    - Changed the default value for H5Location::getComment from 256 to 0
+      to conform to C function and because it makes more sense.
+      (BMR - 2014/4/15)
 
     High-Level APIs:
     ------
@@ -177,11 +333,15 @@ Bug Fixes since HDF5-1.8.11
 
     Testing
     -------
-    - test/big sometimes failed with the message of "file selection+offset not
-      within extent". This has been fixed. (AKC - 2013/09/28 HDFFV-8271).
-    - tools/h5diff/testh5diff.sh is run in every "make check", even after it
-      has passed in the previous run. It should not run again if there are no
-      code changes. Fixed. (AKC - 2013/07/19 HDFFV-8392)
+    - testhdf5 now exits with EXIT_SUCCESS(0) if no errors, else 
+      EXIT_FAILURE(1). (AKC - 2014/01/27 HDFFV-8572)
+
+    - The big test now pays attention to the HDF5_DRIVER environment variable.
+      Previously, it would run all tests with the family, stdio, and sec2
+      virtual file drivers (VFDs) for each VFD in the check-vfd make target, 
+      regardless of the variable setting. It now checks the variable and 
+      either runs the appropriate VFD-specific tests or skips as needed. 
+      This saves much testing time. Fixes HDFFV-8554. (DER - 2014/04/11)
 
 Supported Platforms
 ===================
@@ -191,41 +351,42 @@ They are built with the configure process unless specified otherwise.
     AIX 5.3                       xlc 10.1.0.5
     (NASA G-ADA)                  xlC 10.1.0.5
                                   xlf90 12.1.0.6
+				  gmake v3.82
 
     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-54)
-                                      Version 4.8.1
+                                      Version 4.8.2
                                   PGI C, Fortran, C++ Compilers for 32-bit
                                   applications;
                                       Version 13.7-0
                                   Intel(R) C, C++, Fortran Compiler for 32-bit
                                   applications;
-                                      Version 13.1.3 (Build 20130607)
+                                      Version 14.0.2 (Build 20140120)
 
-    Linux 2.6.18-308.16.1.el5     GNU C (gcc), Fortran (gfortran), C++ (g++)
+    Linux 2.6.18-371.6.1.el5      GNU C (gcc), Fortran (gfortran), C++ (g++)
     #1 SMP x86_64 GNU/Linux       compilers for 64-bit applications;
     (koala)                           Version 4.1.2 20080704 (Red Hat 4.1.2-54)
-                                      Version 4.8.1
+                                      Version 4.8.2
                                   PGI C, Fortran, C++ for 64-bit target on 
                                   x86-64;
                                       Version 13.7-0 
                                   Intel(R) C, C++, Fortran Compilers for 
                                   applications running on Intel(R) 64; 
-                                      Version 13.1.3 (Build 20130607)
+                                      Version 14.0.2 (Build 20140120)
 
-    Linux 2.6.32-358.18.1.el6      GNU C (gcc), Fortran (gfortran), C++ (g++)
+    Linux 2.6.32-431.11.2.el6    GNU C (gcc), Fortran (gfortran), C++ (g++)
     #1 SMP x86_64 GNU/Linux       compilers:
     (platypus)                       Version 4.4.7 20120313
-                                     Version 4.8.1
+                                     Version 4.8.2
                                   PGI C, Fortran, C++ for 64-bit target on 
                                   x86-64;
                                       Version 13.7-0 
                                   Intel(R) C (icc), C++ (icpc), Fortran (icc)
                                   compilers:
-                                     Version 13.1.3 (Build 20130607)
+                                     Version 14.0.2 (Build 20140120)
 
-    Linux 2.6.32-358.18.1.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
+    Linux 2.6.32-431.11.2.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
     #1 SMP ppc64 GNU/Linux        g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
     (ostrich)                     GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
                                   IBM XL C/C++ V11.1
@@ -235,37 +396,32 @@ They are built with the configure process unless specified otherwise.
     (emu)                         Sun Fortran 95 8.6 SunOS_sparc
                                   Sun C++ 5.12 SunOS_sparc
 
-    Windows 7                     Visual Studio 2008 w/ Intel Fortran 11 (cmake)
-                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
-                                  Visual Studio 2012 w/ Intel Fortran 13 (cmake)
-                                  Cygwin(CYGWIN_NT-6.1 1.7.15(0.260/5/3) gcc(4.5.3) compiler and gfortran)
+    Windows 7                     Visual Studio 2008 w/ Intel Fortran 14 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 14 (cmake)
+                                  Visual Studio 2012 w/ Intel Fortran 14 (cmake)
+                                  Cygwin(CYGWIN_NT-6.1 1.7.28(0.271/5/3) gcc(4.8.2) compiler and gfortran)
                                   (cmake and autotools)
 
-    Windows 7 x64                 Visual Studio 2008 w/ Intel Fortran 11 (cmake)
-                                  Visual Studio 2010 w/ Intel Fortran 12 (cmake)
-                                  Visual Studio 2012 w/ Intel Fortran 13 (cmake)
-
-    Windows 8.1                   Visual Studio 2012 w/ Intel Fortran 13 (cmake)
+    Windows 7 x64                 Visual Studio 2008 w/ Intel Fortran 14 (cmake)
+                                  Visual Studio 2010 w/ Intel Fortran 14 (cmake)
+                                  Visual Studio 2012 w/ Intel Fortran 14 (cmake)
+                                  
+    Windows 8.1                   Visual Studio 2012 w/ Intel Fortran 14 (cmake)
 
-    Windows 8.1 x64               Visual Studio 2012 w/ Intel Fortran 13 (cmake)
-
-    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
-    64-bit                        gfortran GNU Fortran (GCC) 4.6.2
-    (fred)                        Intel C (icc), Fortran (ifort), C++ (icpc)
-                                      12.1 Build 20120928
+    Windows 8.1 x64               Visual Studio 2012 w/ Intel Fortran 14 (cmake)
 
     Mac OS X Lion 10.7.3          Apple clang/clang++ version 3.0 from Xcode 4.6.1
     64-bit                        gfortran GNU Fortran (GCC) 4.6.2
     (duck)                        Intel icc/icpc/ifort version 13.0.3
 
-    Mac OS X Mountain Lion 10.8.1 Apple clang/clang++ version 4.2 from Xcode 4.6.1
-    64-bit                        gfortran GNU Fortran (GCC) 4.6.2
-    (wren)                        Intel icc/icpc/ifort version 13.0.3
+    Mac OS X Mt. Lion 10.8.5      Apple clang/clang++ version 5.0 from Xcode 5.0.2
+    64-bit    			  gfortran GNU Fortran (GCC) 4.8.2
+    (swallow/kite)                Intel icc/icpc/ifort version 14.0.2
+
+    Mac OS X Mavericks 10.9.2     Apple clang/clang++ version 5.1 from Xcode 5.1
+    64-bit    			  gfortran GNU Fortran (GCC) 4.8.2
+    (wren/quail)                  Intel icc/icpc/ifort version 14.0.2
 
-    OpenVMS  IA64 V8.4            HP C V7.3-018         
-                                  HP Fortran V8.2-104939-50H96
-                                  HP C++ V7.4-004 
 
 Tested Configuration Features Summary
 =====================================
@@ -286,22 +442,22 @@ Solaris2.11 32-bit                      n        y/y    n        y    y     y
 Solaris2.11 64-bit                      n        y/y    n        y    y     y
 Windows 7                               y        y/y    n        y    y     y
 Windows 7 x64                           y        y/y    n        y    y     y
-Windows 7 Cygwin                        n        y/n    n        y    y     y
+Windows 7 Cygwin                        n        y/y    n        y    y     y
 Windows 8.1                             n        y/y    n        y    y     y
 Windows 8.1   x64                       n        y/y    n        y    y     y
-Mac OS X Snow Leopard 10.6.8 64-bit     n        y/y    n        y    y     y
 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/y    n        y    y     y
+Mac OS X Mavericks 10.9.1 64-bit        n        y/y    n        y    y     y
 AIX 5.3 32- and 64-bit                  n        y/n    n        y    y     y
 CentOS 5.9 Linux 2.6.18-308 i686 GNU    y        y/y    y        y    y     y
 CentOS 5.9 Linux 2.6.18-308 i686 Intel  n        y/y    n        y    y     y
 CentOS 5.9 Linux 2.6.18-308 i686 PGI    n        y/y    n        y    y     y
-CentOS 5.9 Linux 2.6.18 x86_64 GNU      y        y/y    y        y    y     y
+CentOS 5.9 Linux 2.6.18 x86_64 GNU      n        y/y    n        y    y     y
 CentOS 5.9 Linux 2.6.18 x86_64 Intel    n        y/y    n        y    y     y
-CentOS 5.9 Linux 2.6.18 x86_64 PGI      n        y/y    n        y    y     y
-CentOS 6.4 Linux 2.6.32 x86_64 GNU      n        y/y    n        y    y     y
+CentOS 6.4 Linux 2.6.32 x86_64 GNU      y        y/y    y        y    y     y
 CentOS 6.4 Linux 2.6.32 x86_64 Intel    n        y/y    n        y    y     y
-Linux 2.6.32-358.2.1.el6.ppc64          n        y/n    n        y    y     y
+CentOS 6.4 Linux 2.6.32 x86_64 PGI      n        y/y    n        y    y     y
+Linux 2.6.32-431.11.2.el6.ppc64         n        y/n    n        y    y     y
 OpenVMS IA64 V8.4                       n        y/n    n        y    y     n
 
 Platform                                 Shared  Shared    Shared    Thread-  
@@ -313,19 +469,19 @@ Windows 7 x64                              y       y         y         y
 Windows 7 Cygwin                           n       n         n         y
 Windows 8.1                                y       y         y         y
 Windows 8.1 x64                            y       y         y         y
-Mac OS X Snow Leopard 10.6.8 64-bit        y       n         y         n        
 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        
+Mac OS X Mavericks 10.9.1 64-bit           y       n         y         y
 AIX 5.3 32- and 64-bit                     y       n         n         y        
 CentOS 5.9 Linux 2.6.18-308 i686 GNU       y       y         y         y        
 CentOS 5.9 Linux 2.6.18-308 i686 Intel     y       y         y         n        
 CentOS 5.9 Linux 2.6.18-308 i686 PGI       y       y         y         n        
 CentOS 5.9 Linux 2.6.18 x86_64 GNU         y       y         y         y        
 CentOS 5.9 Linux 2.6.18 x86_64 Intel       y       y         y         n        
-CentOS 5.9 Linux 2.6.18 x86_64 PGI         y       y         y         n     
 CentOS 6.4 Linux 2.6.32 x86_64 GNU         y       y         y         n
 CentOS 6.4 Linux 2.6.32 x86_64 Intel       y       y         y         n
-Linux 2.6.32-358.2.1.el6.ppc64             y       y         y         n 
+CentOS 6.4 Linux 2.6.32 x86_64 PGI         y       y         y         n     
+Linux 2.6.32-431.11.2.el6.ppc64            y       y         y         n 
 OpenVMS IA64 V8.4                          n       n         n         n
 
 Compiler versions for each platform are listed in the preceding
@@ -336,14 +492,14 @@ More Tested Platforms
 =====================
 The following platforms are not supported but have been tested for this release.
 
-    Linux 2.6.18-308.13.1.el5PAE  MPICH mpich2-1.4.1p1 compiled with
-    #1 SMP i686 i686 i386             gcc 4.1.2 and gfortran 4.1.2
+    Linux 2.6.18-308.13.1.el5PAE  MPICH mpich 3.1 compiled with
+    #1 SMP i686 i686 i386             gcc 4.8.2 and gfortran 4.8.2
     (jam)                         g95 (GCC 4.0.3 (g95 0.94!)
 
-    Linux 2.6.18-308.16.1.el5     MPICH mpich2-1.4.1p1 compiled with
-    #1 SMP x86_64 GNU/Linux           gcc 4.1.2 and gfortran 4.1.2
-    (koala)                       g95 (GCC 4.0.3 (g95 0.94!)
-                                  
+    Linux 2.6.18-431.11.2.el6     MPICH mpich 3.1 compiled with
+    #1 SMP x86_64 GNU/Linux           gcc 4.8.2 and gfortran 4.8.2
+    (platypus)                    g95 (GCC 4.0.3 (g95 0.94!)   
+
     FreeBSD 8.2-STABLE i386       gcc 4.5.4 [FreeBSD] 20110526
     (loyalty)                     gcc 4.6.1 20110527
                                   g++ 4.6.1 20110527
@@ -354,24 +510,24 @@ The following platforms are not supported but have been tested for this release.
                                   g++ 4.6.1 20110527
                                   gfortran 4.6.1 20110527
 
-    Debian7.1.0 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux
+    Debian7.1.0 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
                                   gcc (Debian 4.7.2-5) 4.7.2
                                   GNU Fortran (Debian 4.7.2-5) 4.7.2
                                   (cmake and autotools)
 
-    Fedora19 3.11.1-200.fc19.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
-                                  gcc (GCC) 4.8.1 20130603 (Red Hat 4.8.1-1)
-                                  GNU Fortran (GCC) 4.8.1 20130603 (Red Hat 4.8.1-1)
+    Fedora20 3.11.10-301.fc20.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7)
+                                  GNU Fortran (GCC) 4.8.2 20130603 (Red Hat 4.8.2-7)
                                   (cmake and autotools)
 
-    SUSE 12.3 3.7.10-1.16-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
-                                  gcc (SUSE Linux) 4.7.2
-                                  GNU Fortran (SUSE Linux) 4.7.2 
+    SUSE 13.1 3.11.6-4-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
+                                  gcc (SUSE Linux) 4.8.1
+                                  GNU Fortran (SUSE Linux) 4.8.1
                                   (cmake and autotools)
 
-    Ubuntu 13.04 3.8.0-30-generic #44-Ubuntu SMP x86_64 GNU/Linux
-                                  gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
-                                  GNU Fortran (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
+    Ubuntu 13.10 3.11.0-13-generic #20-Ubuntu SMP x86_64 GNU/Linux
+                                  gcc (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1
+                                  GNU Fortran (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1
                                   (cmake and autotools)
     
     Cray Linux Environment (CLE)  PrgEnv-pgi/4.0.46
@@ -382,35 +538,47 @@ The following platforms are not supported but have been tested for this release.
 
 Known Problems
 ==============
-* Several HDF5 command-line tools and tests leave behind generated files
-  that are not cleaned up with "make clean" or "make distclean" when software
-  is built in place. The issue will be addressed in the 1.8.13 release. We
-  recommend to use build directory to compile and test HDF5 as described
-  in the INSTALL file, section 4.2.
- 
-* Source directory names with spaces in them will cause failures in configure
-  or make on Mac (HDFFV-8152), Linux, and probably all other platforms.  If a 
-  configure command with a space is run from a build directory, it will exit 
-  with an error message:  "checking whether build environment is sane... 
-  configure: error: unsafe srcdir value: '/scr/lrknox/hdf5 v1.8.12'".  If 
-  configure is run inside or below the directory with the space in the name, 
-  libtool will get the directory path from the system, put the part of the 
-  path before the space in the libdir variable in .../src/libhdf5.la, and 
-  then fail to find the nonexistent directory.  This is a known libtool issue 
-  and the suggested workaround is to rename the directory without spaces. 
-  (LRK - 2013/10/22)
+* When reading or writing a dataset (H5Dread/H5Dwrite) with a large selection
+  size (e.g., 2GB ~= 500 million of 4 bytes integers or floating point
+  numbers), some I/O systems may not be able to process it correctly.
+  We advise users to find out system limits before using large selections. If
+  I/O size limits exist, application should use HDF5 partial I/O capabilities
+  (e.g., H5Sselect_hyperslab(...)) to divide large requests into smaller sizes.
+  In this case we also advise users not to use chunk storage sizes larger that
+  2GB since the HDF5 library performs I/O on the entire chunk.  We will work
+  on the HDF5 library to divide large data requests to smaller I/O requests.
+  (AKC 2014/05/02 HDFFV-8479)
+
+* Due to an Intel compiler bug introduced in version 14.0.1, the HDF5 FORTRAN
+  wrappers do not work with configure option --enable-fortran2003. 
+  However, the option --enable-fortran works with Intel 14.0.1. The compiler 
+  bug was fixed in Intel version 14.0.2 and resolved the issue. 
+  (MSB - 2014/4/15)
+
+* Due to a PGI compiler bug introduced in versions before 13.3 and versions 
+  after 14.2, the FORTRAN test 'Testing get file image' will fail. 
+  (MSB - 2014/4/15)
+
+* On CYGWIN, when building the library dynamically, testing will fail on 
+  dynamically loaded filters. The test process will build dynamic filter 
+  libraries with the *.dll.a extension, and the HDF5 Library will be looking 
+  for *.so libraries. Entered as issue HDFFV-8736. (ADB - 2014/04/14)
+  
+* A Gnu Make directive (.NOTPARALLEL) is added to fortran/test/Makefile.
+  AIX native make does not support this directive and would fail if
+  parallel make (e.g. make -j4) is used to build the library. AIX users
+  either do not use parallel make or install Gnu Make to build the library.
+  (AKC 2014/04/08 HDFFV-8738)
 
 * CLANG compiler with the options -fcatch-undefined-behavior and -ftrapv
-  catches some undefined behavior in the alignment algorithm of the macro 
-  DETECT_I in H5detect.c (HDFFV-8147). This issue will be addressed in the 
-  next release.  (SLU - 2013/10/16)
-
-* Running make check for the tools can fail in the tools tests if make was not
-  run prior. The tests for the tools use other tools in the tests, therefore
-  all the tools should be built before testing the tools. (ADB - 2013/10/09)
+  catches some undefined behavior in the alignment algorithm of the macro
+  DETECT_I in H5detect.c. Since the algorithm is trying to detect the alignment
+  of integers, ideally the flag -fcatch-undefined-behavior should not to be
+  used for H5detect.c. In the future, we can separate flags for H5detect.c
+  from the rest of the library.  (SLU - 2013/10/16 HDFFV-8147)
 
 * Make provided by Solaris fails in "make check". Solaris users should use
-  gmake to build and install HDF5 software. (AKC - 2013/10/08 - HDFFV-8534)
+  gmake to build and install the HDF5 software. (AKC - 2013/10/08 - HDFFV-8534)
 
 * On OpenVMS, two soft conversion functions (H5T__conv_i_f and H5T__conv_f_i)
   have bugs.  They convert data between floating-point numbers and integers.
@@ -429,14 +597,6 @@ Known Problems
   INSTALL_parallel for building on Hopper.
   (MSC - 2013/04/26 - HDFFV-8429)
 
-* The h5dump and h5diff utilities occasionally produce different output
-  between Linux and Windows systems. This is caused by lower-level library
-  routines that fail to write fill values to the user's buffer when reading
-  unallocated chunks from datasets that have a fill value set to
-  H5D_FILL_VALUE_DEFAULT. Due to platform differences the return of
-  spurious data values has only been encountered on Windows 32-bit systems.
-  (Issue HDFFV-8247; JP - 2013/03/27)
-
 * The 5.9 C++ compiler on Sun failed to compile a C++ test ttypes.cpp.  It 
   complains with this message:
       "/home/hdf5/src/H5Vprivate.h", line 130: Error: __func__ is not defined.
@@ -476,14 +636,14 @@ Known Problems
 * 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 is a Cray system
+  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 kernel) with GCC 4.6.1 if the library
-  is built with optimization -O3 or -O2.  The older GCC (4.5) or newer kernel
-  (3.2.2 on Fedora) do not have the problem.  Users should lower the 
+  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:
 
diff --git a/release_docs/USING_CMake_Examples.txt b/release_docs/USING_CMake_Examples.txt
index 33c43a3..e6108d2 100644
--- a/release_docs/USING_CMake_Examples.txt
+++ b/release_docs/USING_CMake_Examples.txt
@@ -1,12 +1,81 @@
-The compressed examples file, located in the HDF5 install folder, 
-can be built and tested with CMake and the supplied 
-HDF518_Examples.cmake file. It is recommended that you copy those
-two files to your development location before continuing.
-
-The command line to be used is shown at the top of the file. Also,
-the location of the HDF5 installation should be verified and 
-changed if necessary.
-
-When executed, the ctest script will save the results to the log file
-indicated by the ctest command. If you wish the to see more build
-and test information, add "-VV" to the ctest command.
+************************************************************************
+* Build and Test HDF5 Examples with CMake                              *
+************************************************************************
+
+Notes: This short instruction is written for users who want to quickly 
+       test the installation of HDF5 by using the CMake tools to build
+       and test the HDF5 Examples. The following instructions will show
+       the default usage and then present common changes for non-default
+       installations.
+       For more information, see the USING_HDF5_CMake.txt file.
+       
+       More information about using CMake can be found at the KitWare 
+       site, www.cmake.org.
+         
+       CMake uses the command line and these instructions use the script
+       method of the ctest command.
+
+
+========================================================================
+I. Preconditions                                                           
+========================================================================
+
+   1. We suggest you obtain the latest CMake for windows from the Kitware
+      web site. The HDF5 1.8.x product requires a minimum CMake version 
+      of 2.8.12.                     
+                                                                         
+   2. You have installed the HDF5 library built with CMake, by executing 
+      the HDF Install Utility (the *.exe file in the binary package for 
+      Windows or the *.sh on Linux). If you are using a Windows platform, 
+      you can obtain a pre-built Windows binary from The HDF Group's website 
+      at www.hdfgroup.org. See Section "III. Common changes to the 
+      HDF518_Examples.cmake file", for the line to change the location.
+                                                                         
+   3. On Windows, you have installed the 7Zip package. See Section "III. 
+      Common changes to the HDF518_Examples.cmake file", for the line to 
+      change the command.
+
+
+
+========================================================================
+II. Building HDF5 Examples with CMake
+========================================================================
+
+Files in the HDF5 install directory:
+       HDF5Examples-0.1.1-Source.zip (or HDF5Examples-0.1.1-Source.tar.gz)
+       HDF518_Examples.cmake
+       
+Default installation process:
+       Create a directory to run the examples, i.e. \test_hdf5.
+       Copy HDF5Examples-0.1.1-Source.zip(.tar.gz) to this directory, do NOT unzip.
+       Copy HDF518_Examples.cmake to this directory.
+       Edit line 8 of the HDF518_Examples.cmake file and change the INSTALLDIR 
+           to the HDF5 install location.
+       
+       Execute from this directory:
+          ctest -S HDF518_Examples.cmake,HDF5Examples-0.1.1-Source -C Release -O test.log
+
+The script will uncompress the examples file HDF5Examples-0.1.1-Source.zip(.tar.gz),
+   and create a build directory inside the HDF5Examples-0.1.1-Source directory.
+   It will then configure, build, and execute the examples. All the log files
+   will be found under the build\Testing\Temporary directory, check these for
+   errors.
+   
+The amount of script information can be increased by adding -V to the ctest
+   command. Even more information can be shown by adding -VV instead of -V.
+
+
+========================================================================
+III. Common changes to the HDF518_Examples.cmake file
+========================================================================
+
+Line 8: change the INSTALLDIR to a different HDF5 install location.
+
+Line 14: uncomment to allow Mac machines to build shared examples.
+
+Line 15: uncomment to not build and test Fortran examples.
+
+Line 16: uncomment to build and test Fortran examples with F2003 option.
+
+Line 68: change the CTEST_7Z_COMMAND to a different unzip program.
+
diff --git a/release_docs/USING_HDF5_CMake.txt b/release_docs/USING_HDF5_CMake.txt
index 476da80..926b297 100644
--- a/release_docs/USING_HDF5_CMake.txt
+++ b/release_docs/USING_HDF5_CMake.txt
@@ -37,7 +37,7 @@ I. Preconditions
 
    1. We suggest you obtain the latest CMake for windows from the Kitware
       web site. The HDF5 1.8.x product requires a minimum CMake version 
-      of 2.8.10.                     
+      of 2.8.12.                     
                                                                          
    2. You have installed the HDF5 library built with CMake, by executing 
       the HDF Install Utility (the *.exe file in the binary package for 
@@ -78,7 +78,7 @@ These steps are described in more detail below.
    1. Run CMake
 
       The visual CMake executable is named "cmake-gui.exe" on Windows and should be
-      available in your Start menu. For Linux, UNIX, and Mac users, the
+      available in your Start menu. For Linux, UNIX, and Mac users the
       executable is named "cmake-gui" and can be found where CMake was 
       installed. 
       
@@ -95,22 +95,15 @@ These steps are described in more detail below.
         cmake -G "<generator>"  [-D<options>]  <sourcepath>
         
         Where <generator> is    
-            * Borland Makefiles
-            * MSYS Makefiles
             * MinGW Makefiles
             * NMake Makefiles
             * Unix Makefiles
+            * Visual Studio 12
+            * Visual Studio 12 Win64
             * Visual Studio 11
             * Visual Studio 11 Win64
             * Visual Studio 10
             * Visual Studio 10 Win64
-            * Visual Studio 6
-            * Visual Studio 7
-            * Visual Studio 7 .NET 2003
-            * Visual Studio 8 2005
-            * Visual Studio 8 2005 Win64
-            * Visual Studio 9 2008
-            * Visual Studio 9 2008 Win64
 
         <options> is:
             * BUILD_TESTING:BOOL=ON
@@ -138,7 +131,7 @@ These steps are described in more detail below.
 
       2.2  Alternative command line example on Windows in c:\MyHDFstuff\hdf5\build directory:
       
-           cmake -G "Visual Studio 10" -DBUILD_TESTING:BOOL=ON -DUSE_SHARED_LIBS:BOOL=ON ..
+           cmake -G "Visual Studio 11" -DBUILD_TESTING:BOOL=ON -DUSE_SHARED_LIBS:BOOL=ON ..
 
    3. Build HDF5 Applications
    
@@ -186,24 +179,24 @@ III. Minimum C Project Files for CMake
       following text in the file:
 
 ##########################################################
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.12)
 PROJECT (HDF5MyApp C CXX)
 
 FIND_PACKAGE (HDF5 NAMES hdf5)
 # FIND_PACKAGE (HDF5) # Find non-cmake built HDF5
 INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIR})
-SET (LINK_LIBS ${LINK_LIBS} ${HDF5_LIBRARIES})
+set (LINK_LIBS ${LINK_LIBS} ${HDF5_LIBRARIES})
 
-SET (example hdf_example)
+set (example hdf_example)
 
-ADD_EXECUTABLE (${example} ${PROJECT_SOURCE_DIR}/${example}.c)
+add_executable (${example} ${PROJECT_SOURCE_DIR}/${example}.c)
 TARGET_C_PROPERTIES (${example} " " " ")
-TARGET_LINK_LIBRARIES (${example} ${LINK_LIBS})
+target_link_libraries (${example} ${LINK_LIBS})
 
 ENABLE_TESTING ()
-INCLUDE (CTest)
+include (CTest)
 
-ADD_TEST (NAME test_example COMMAND ${example})
+add_test (NAME test_example COMMAND ${example})
 ##########################################################
 
 
@@ -239,7 +232,7 @@ ctest
 # where hdf518Examples is the source folder relative to the location of these scripts
 ############################################################################
 
-cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
 
 set(CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY})
 set(CTEST_SOURCE_NAME ${CTEST_SCRIPT_ARG})
diff --git a/release_docs/USING_HDF5_VS.txt b/release_docs/USING_HDF5_VS.txt
index 5ab68b2..9bf301e 100644
--- a/release_docs/USING_HDF5_VS.txt
+++ b/release_docs/USING_HDF5_VS.txt
@@ -13,17 +13,17 @@ The following two sections are helpful if you do not use CMake to build
 your applications.
                                                                         
 ========================================================================
-Using Visual Studio 2010 with HDF5 Libraries Built with Visual Studio 2010
+Using Visual Studio 2010 with HDF5 Libraries built with Visual Studio 2010
 ========================================================================
 
-   1. Set up the path for external libraries and headers
+   1. Set up path for external libraries and headers
 
-      The path settings will need to be in the project property sheets 
-      per project. Go to "Project" and select "Properties", find 
-      "Configuration Properties", and then "VC++ Directories".
+      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".
           
       1.1 If you are building on 64-bit Windows, find the "Platform" dropdown
-          and select "x64".
+              and select "x64".
               
       1.2 Add the header path to the "Include Directories" setting.
           
@@ -32,17 +32,17 @@ Using Visual Studio 2010 with HDF5 Libraries Built with Visual Studio 2010
       1.4 Select Linker->Input and beginning with the
           "Additional Dependencies" line, enter the library names. The
           external libraries should be listed first, followed by the HDF5
-          library, and then optionally the HDF5 High Level, Fortran, or C++
+          library, and then optionally the HDF5 High Level, Fortran or C++
           libraries. For example, to compile a C++ application, enter:
 
           szip.lib zlib.lib hdf5.lib hdf5_cpp.lib
 
                                                                          
 ==========================================================================
-Using Visual Studio 2008 with HDF5 Libraries Built with Visual Studio 2008
+Using Visual Studio 2008 with HDF5 Libraries built with Visual Studio 2008
 ==========================================================================
 
-   2. Set up the path for external libraries and headers
+   2. Set up path for external libraries and headers
 
       Invoke Microsoft Visual Studio and go to "Tools" and select "Options", 
       find "Projects", and then "VC++ Directories".
@@ -51,22 +51,20 @@ Using Visual Studio 2008 with HDF5 Libraries Built with Visual Studio 2008
           and select "x64".
 
       2.2 Find the box "Show directories for", choose "Include files", add the 
-          header path (in other words, 
-          c:\Program Files\HDF_Group\HDF5\1.8.x\include) to the included 
-          directories.
+          header path (i.e. c:\Program Files\HDF_Group\HDF5\1.8.x\include)
+          to the included directories.
 
       2.3 Find the box "Show directories for", choose "Library files", add the
-          library path (in other words, 
-          c:\Program Files\HDF_Group\HDF5\1.8.x\lib) to the library 
-          directories.
+          library path (i.e. c:\Program Files\HDF_Group\HDF5\1.8.x\lib)
+          to the library directories.
           
-      2.4 If using the Fortran libraries, you will also need to setup the path
+      2.4 If using Fortran libraries, you will also need to setup the path
           for the Intel Fortran compiler.
           
       2.5 Select Project->Properties->Linker->Input and beginning with the
           "Additional Dependencies" line, enter the library names. The
           external libraries should be listed first, followed by the HDF5
-          library, and then optionally the HDF5 High Level, Fortran, or C++
+          library, and then optionally the HDF5 High Level, Fortran or C++
           libraries. For example, to compile a C++ application, enter:
 
           szip.lib zlib.lib hdf5.lib hdf5_cpp.lib
@@ -77,14 +75,14 @@ Using Visual Studio 2008 with HDF5 Libraries Built with Visual Studio 2008
 
     3.1 FAQ
     
-    Many common questions and hints are located online in the HDF5 FAQ. 
-    For Windows-specific questions, please see:
+    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.org/HDF5/faq/windows.html
         
-    For all other general questions, look in the general FAQ:
+    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.
+ Please send email to help at hdfgroup.org for further assistance.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 64d5e87..2b562be 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,15 +1,15 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_SRC C CXX)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # List Source Files
 #-----------------------------------------------------------------------------
-SET (H5_SRCS
+set (H5_SRCS
     ${HDF5_SRC_DIR}/H5.c
     ${HDF5_SRC_DIR}/H5checksum.c
     ${HDF5_SRC_DIR}/H5dbg.c
@@ -18,7 +18,7 @@ SET (H5_SRCS
     ${HDF5_SRC_DIR}/H5trace.c
 )
 
-SET (H5_HDRS
+set (H5_HDRS
     ${HDF5_SRC_DIR}/hdf5.h
     ${HDF5_SRC_DIR}/H5api_adpt.h
     ${HDF5_SRC_DIR}/H5public.h
@@ -27,7 +27,7 @@ SET (H5_HDRS
 )
 IDE_GENERATED_PROPERTIES ("H5" "${H5_HDRS}" "${H5_SRCS}" )
 
-SET (H5A_SRCS
+set (H5A_SRCS
     ${HDF5_SRC_DIR}/H5A.c
     ${HDF5_SRC_DIR}/H5Abtree2.c
     ${HDF5_SRC_DIR}/H5Adense.c
@@ -36,23 +36,23 @@ SET (H5A_SRCS
     ${HDF5_SRC_DIR}/H5Atest.c
 )
 
-SET (H5A_HDRS
+set (H5A_HDRS
     ${HDF5_SRC_DIR}/H5Apkg.h
     ${HDF5_SRC_DIR}/H5Apublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5A" "${H5A_HDRS}" "${H5A_SRCS}" )
 
-SET (H5AC_SRCS
+set (H5AC_SRCS
     ${HDF5_SRC_DIR}/H5AC.c
 )
 
-SET (H5AC_HDRS
+set (H5AC_HDRS
     ${HDF5_SRC_DIR}/H5ACpkg.h
     ${HDF5_SRC_DIR}/H5ACpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5AC" "${H5AC_HDRS}" "${H5AC_SRCS}" )
 
-SET (H5B_SRCS
+set (H5B_SRCS
     ${HDF5_SRC_DIR}/H5B.c
     ${HDF5_SRC_DIR}/H5B2.c
     ${HDF5_SRC_DIR}/H5B2cache.c
@@ -65,7 +65,7 @@ SET (H5B_SRCS
     ${HDF5_SRC_DIR}/H5Bdbg.c
 )
 
-SET (H5B_HDRS
+set (H5B_HDRS
     ${HDF5_SRC_DIR}/H5B2pkg.h
     ${HDF5_SRC_DIR}/H5B2public.h
     ${HDF5_SRC_DIR}/H5Bpkg.h
@@ -73,7 +73,7 @@ SET (H5B_HDRS
 )
 IDE_GENERATED_PROPERTIES ("H5B" "${H5B_HDRS}" "${H5B_SRCS}" )
 
-SET (H5D_SRCS
+set (H5D_SRCS
     ${HDF5_SRC_DIR}/H5D.c
     ${HDF5_SRC_DIR}/H5Dcompact.c
     ${HDF5_SRC_DIR}/H5Dbtree.c
@@ -93,19 +93,19 @@ SET (H5D_SRCS
     ${HDF5_SRC_DIR}/H5Dtest.c
 )
 
-SET (H5D_HDRS
+set (H5D_HDRS
     ${HDF5_SRC_DIR}/H5Dpkg.h
     ${HDF5_SRC_DIR}/H5Dpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5D" "${H5D_HDRS}" "${H5D_SRCS}" )
 
-SET (H5E_SRCS
+set (H5E_SRCS
     ${HDF5_SRC_DIR}/H5E.c
     ${HDF5_SRC_DIR}/H5Edeprec.c
     ${HDF5_SRC_DIR}/H5Eint.c
 )
 
-SET (H5E_HDRS
+set (H5E_HDRS
     ${HDF5_SRC_DIR}/H5Edefin.h
     ${HDF5_SRC_DIR}/H5Einit.h
     ${HDF5_SRC_DIR}/H5Epkg.h
@@ -115,7 +115,7 @@ SET (H5E_HDRS
 )
 IDE_GENERATED_PROPERTIES ("H5E" "${H5E_HDRS}" "${H5E_SRCS}" )
 
-SET (H5F_SRCS
+set (H5F_SRCS
     ${HDF5_SRC_DIR}/H5F.c
     ${HDF5_SRC_DIR}/H5Faccum.c
     ${HDF5_SRC_DIR}/H5Fcwfs.c
@@ -132,13 +132,13 @@ SET (H5F_SRCS
     ${HDF5_SRC_DIR}/H5Ftest.c
 )
 
-SET (H5F_HDRS
+set (H5F_HDRS
     ${HDF5_SRC_DIR}/H5Fpkg.h
     ${HDF5_SRC_DIR}/H5Fpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5F" "${H5F_HDRS}" "${H5F_SRCS}" )
 
-SET (H5FD_SRCS
+set (H5FD_SRCS
     ${HDF5_SRC_DIR}/H5FD.c
     ${HDF5_SRC_DIR}/H5FDcore.c
     ${HDF5_SRC_DIR}/H5FDdirect.c
@@ -147,21 +147,19 @@ SET (H5FD_SRCS
     ${HDF5_SRC_DIR}/H5FDlog.c
     ${HDF5_SRC_DIR}/H5FDmpi.c
     ${HDF5_SRC_DIR}/H5FDmpio.c
-    ${HDF5_SRC_DIR}/H5FDmpiposix.c
     ${HDF5_SRC_DIR}/H5FDmulti.c
     ${HDF5_SRC_DIR}/H5FDsec2.c
     ${HDF5_SRC_DIR}/H5FDspace.c
     ${HDF5_SRC_DIR}/H5FDstdio.c
 )
 
-SET (H5FD_HDRS
+set (H5FD_HDRS
     ${HDF5_SRC_DIR}/H5FDcore.h
     ${HDF5_SRC_DIR}/H5FDdirect.h
     ${HDF5_SRC_DIR}/H5FDfamily.h
     ${HDF5_SRC_DIR}/H5FDlog.h
     ${HDF5_SRC_DIR}/H5FDmpi.h
     ${HDF5_SRC_DIR}/H5FDmpio.h
-    ${HDF5_SRC_DIR}/H5FDmpiposix.h
     ${HDF5_SRC_DIR}/H5FDmulti.h
     ${HDF5_SRC_DIR}/H5FDpkg.h
     ${HDF5_SRC_DIR}/H5FDpublic.h
@@ -170,7 +168,7 @@ SET (H5FD_HDRS
 )
 IDE_GENERATED_PROPERTIES ("H5FD" "${H5FD_HDRS}" "${H5FD_SRCS}" )
 
-SET (H5FS_SRCS
+set (H5FS_SRCS
     ${HDF5_SRC_DIR}/H5FS.c
     ${HDF5_SRC_DIR}/H5FScache.c
     ${HDF5_SRC_DIR}/H5FSdbg.c
@@ -179,13 +177,13 @@ SET (H5FS_SRCS
     ${HDF5_SRC_DIR}/H5FStest.c
 )
 
-SET (H5FS_HDRS
+set (H5FS_HDRS
     ${HDF5_SRC_DIR}/H5FSpkg.h
     ${HDF5_SRC_DIR}/H5FSpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5FS" "${H5FS_HDRS}" "${H5FS_SRCS}" )
 
-SET (H5G_SRCS
+set (H5G_SRCS
     ${HDF5_SRC_DIR}/H5G.c
     ${HDF5_SRC_DIR}/H5Gbtree2.c
     ${HDF5_SRC_DIR}/H5Gcache.c
@@ -206,13 +204,13 @@ SET (H5G_SRCS
     ${HDF5_SRC_DIR}/H5Gtraverse.c
 )
 
-SET (H5G_HDRS
+set (H5G_HDRS
     ${HDF5_SRC_DIR}/H5Gpkg.h
     ${HDF5_SRC_DIR}/H5Gpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5G" "${H5G_HDRS}" "${H5G_SRCS}" )
 
-SET (H5HF_SRCS
+set (H5HF_SRCS
     ${HDF5_SRC_DIR}/H5HF.c
     ${HDF5_SRC_DIR}/H5HFbtree2.c
     ${HDF5_SRC_DIR}/H5HFcache.c
@@ -231,60 +229,60 @@ SET (H5HF_SRCS
     ${HDF5_SRC_DIR}/H5HFtiny.c
 )
 
-SET (H5HF_HDRS
+set (H5HF_HDRS
     ${HDF5_SRC_DIR}/H5HFpkg.h
     ${HDF5_SRC_DIR}/H5HFpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5HF" "${H5HF_HDRS}" "${H5HF_SRCS}" )
 
-SET (H5HG_SRCS
+set (H5HG_SRCS
     ${HDF5_SRC_DIR}/H5HG.c
     ${HDF5_SRC_DIR}/H5HGcache.c
     ${HDF5_SRC_DIR}/H5HGdbg.c
     ${HDF5_SRC_DIR}/H5HGquery.c
 )
 
-SET (H5HG_HDRS
+set (H5HG_HDRS
     ${HDF5_SRC_DIR}/H5HGpkg.h
     ${HDF5_SRC_DIR}/H5HGpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5HG" "${H5HG_HDRS}" "${H5HG_SRCS}" )
 
-SET (H5HL_SRCS
+set (H5HL_SRCS
     ${HDF5_SRC_DIR}/H5HL.c
     ${HDF5_SRC_DIR}/H5HLcache.c
     ${HDF5_SRC_DIR}/H5HLdbg.c
     ${HDF5_SRC_DIR}/H5HLint.c
 )
 
-SET (H5HL_HDRS
+set (H5HL_HDRS
     ${HDF5_SRC_DIR}/H5HLpkg.h
     ${HDF5_SRC_DIR}/H5HLpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5HL" "${H5HL_HDRS}" "${H5HL_SRCS}" )
 
-SET (H5MF_SRCS
+set (H5MF_SRCS
     ${HDF5_SRC_DIR}/H5MF.c
     ${HDF5_SRC_DIR}/H5MFaggr.c
     ${HDF5_SRC_DIR}/H5MFdbg.c
     ${HDF5_SRC_DIR}/H5MFsection.c
 )
 
-SET (H5MF_HDRS
+set (H5MF_HDRS
 )
 IDE_GENERATED_PROPERTIES ("H5MF" "${H5MF_HDRS}" "${H5MF_SRCS}" )
 
-SET (H5MP_SRCS
+set (H5MP_SRCS
     ${HDF5_SRC_DIR}/H5MP.c
     ${HDF5_SRC_DIR}/H5MPtest.c
 )
 
-SET (H5MP_HDRS
+set (H5MP_HDRS
     ${HDF5_SRC_DIR}/H5MPpkg.h
 )
 IDE_GENERATED_PROPERTIES ("H5MP" "${H5MP_HDRS}" "${H5MP_SRCS}" )
 
-SET (H5O_SRCS
+set (H5O_SRCS
     ${HDF5_SRC_DIR}/H5O.c
     ${HDF5_SRC_DIR}/H5Oainfo.c
     ${HDF5_SRC_DIR}/H5Oalloc.c
@@ -319,14 +317,14 @@ SET (H5O_SRCS
     ${HDF5_SRC_DIR}/H5Ounknown.c
 )
 
-SET (H5O_HDRS
+set (H5O_HDRS
     ${HDF5_SRC_DIR}/H5Opkg.h
     ${HDF5_SRC_DIR}/H5Opublic.h
     ${HDF5_SRC_DIR}/H5Oshared.h
 )
 IDE_GENERATED_PROPERTIES ("H5O" "${H5O_HDRS}" "${H5O_SRCS}" )
 
-SET (H5P_SRCS
+set (H5P_SRCS
     ${HDF5_SRC_DIR}/H5P.c
     ${HDF5_SRC_DIR}/H5Pacpl.c
     ${HDF5_SRC_DIR}/H5Pdapl.c
@@ -346,49 +344,49 @@ SET (H5P_SRCS
     ${HDF5_SRC_DIR}/H5Ptest.c
 )
 
-SET (H5P_HDRS
+set (H5P_HDRS
     ${HDF5_SRC_DIR}/H5Ppkg.h
     ${HDF5_SRC_DIR}/H5Ppublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5P" "${H5P_HDRS}" "${H5P_SRCS}" )
 
-SET (H5PL_SRCS
+set (H5PL_SRCS
     ${HDF5_SRC_DIR}/H5PL.c
 )
 
-SET (H5PL_HDRS
+set (H5PL_HDRS
     ${HDF5_SRC_DIR}/H5PLextern.h
 )
 IDE_GENERATED_PROPERTIES ("H5PL" "${H5PL_HDRS}" "${H5PL_SRCS}" )
 
 
-SET (H5R_SRCS
+set (H5R_SRCS
     ${HDF5_SRC_DIR}/H5R.c
     ${HDF5_SRC_DIR}/H5Rdeprec.c
 )
-SET (H5R_HDRS
+set (H5R_HDRS
     ${HDF5_SRC_DIR}/H5Rpkg.h
     ${HDF5_SRC_DIR}/H5Rpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5R" "${H5R_HDRS}" "${H5R_SRCS}" )
 
 
-SET (H5RC_SRCS
+set (H5RC_SRCS
     ${HDF5_SRC_DIR}/H5RC.c
 )
-SET (H5RC_HDRS
+set (H5RC_HDRS
 )
 IDE_GENERATED_PROPERTIES ("H5RC" "${H5RC_HDRS}" "${H5RC_SRCS}" )
 
 
-SET (H5RS_SRCS
+set (H5RS_SRCS
     ${HDF5_SRC_DIR}/H5RS.c
 )
-SET (H5RS_HDRS
+set (H5RS_HDRS
 )
 IDE_GENERATED_PROPERTIES ("H5RS" "${H5RS_HDRS}" "${H5RS_SRCS}" )
 
-SET (H5S_SRCS
+set (H5S_SRCS
     ${HDF5_SRC_DIR}/H5S.c
     ${HDF5_SRC_DIR}/H5Sall.c
     ${HDF5_SRC_DIR}/H5Sdbg.c
@@ -400,13 +398,13 @@ SET (H5S_SRCS
     ${HDF5_SRC_DIR}/H5Stest.c
 )
 
-SET (H5S_HDRS
+set (H5S_HDRS
     ${HDF5_SRC_DIR}/H5Spkg.h
     ${HDF5_SRC_DIR}/H5Spublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5S" "${H5S_HDRS}" "${H5S_SRCS}" )
 
-SET (H5SM_SRCS
+set (H5SM_SRCS
     ${HDF5_SRC_DIR}/H5SM.c
     ${HDF5_SRC_DIR}/H5SMbtree2.c
     ${HDF5_SRC_DIR}/H5SMcache.c
@@ -414,12 +412,12 @@ SET (H5SM_SRCS
     ${HDF5_SRC_DIR}/H5SMtest.c
 )
 
-SET (H5SM_HDRS
+set (H5SM_HDRS
     ${HDF5_SRC_DIR}/H5SMpkg.h
 )
 IDE_GENERATED_PROPERTIES ("H5SM" "${H5SM_HDRS}" "${H5SM_SRCS}" )
 
-SET (H5T_SRCS
+set (H5T_SRCS
     ${HDF5_SRC_DIR}/H5T.c
     ${HDF5_SRC_DIR}/H5Tarray.c
     ${HDF5_SRC_DIR}/H5Tbit.c
@@ -445,13 +443,13 @@ SET (H5T_SRCS
     ${HDF5_SRC_DIR}/H5Tvlen.c
 )
 
-SET (H5T_HDRS
+set (H5T_HDRS
     ${HDF5_SRC_DIR}/H5Tpkg.h
     ${HDF5_SRC_DIR}/H5Tpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5T" "${H5T_HDRS}" "${H5T_SRCS}" )
 
-SET (H5Z_SRCS
+set (H5Z_SRCS
     ${HDF5_SRC_DIR}/H5Z.c
     ${HDF5_SRC_DIR}/H5Zdeflate.c
     ${HDF5_SRC_DIR}/H5Zfletcher32.c
@@ -461,19 +459,19 @@ SET (H5Z_SRCS
     ${HDF5_SRC_DIR}/H5Zszip.c
     ${HDF5_SRC_DIR}/H5Ztrans.c
 )
-IF (H5_ZLIB_HEADER)
+if (H5_ZLIB_HEADER)
   SET_PROPERTY(SOURCE ${HDF5_SRC_DIR}/H5Zdeflate.c PROPERTY
       COMPILE_DEFINITIONS H5_ZLIB_HEADER="${H5_ZLIB_HEADER}")
-ENDIF (H5_ZLIB_HEADER)
+endif (H5_ZLIB_HEADER)
 
 
-SET (H5Z_HDRS
+set (H5Z_HDRS
     ${HDF5_SRC_DIR}/H5Zpkg.h
     ${HDF5_SRC_DIR}/H5Zpublic.h
 )
 IDE_GENERATED_PROPERTIES ("H5Z" "${H5Z_HDRS}" "${H5Z_SRCS}" )
 
-SET (common_SRCS
+set (common_SRCS
     ${H5_SRCS}
     ${H5A_SRCS}
     ${H5AC_SRCS}
@@ -516,11 +514,11 @@ SET (common_SRCS
     ${HDF5_SRC_DIR}/H5SL.c
     ${HDF5_SRC_DIR}/H5ST.c
     ${HDF5_SRC_DIR}/H5TS.c
-    ${HDF5_SRC_DIR}/H5V.c
+    ${HDF5_SRC_DIR}/H5VM.c
     ${HDF5_SRC_DIR}/H5WB.c
 )
 
-SET (H5_PUBLIC_HEADERS
+set (H5_PUBLIC_HEADERS
     ${H5_HDRS}
     ${H5A_HDRS}
     ${H5AC_HDRS}
@@ -558,12 +556,12 @@ SET (H5_PUBLIC_HEADERS
 # --------------------------------------------------------------------
 # If we are compiling on Windows then add the windows specific files
 # --------------------------------------------------------------------
-IF (WIN32 AND NOT CYGWIN)
-  SET (common_SRCS  ${common_SRCS}  ${HDF5_SRC_DIR}/H5FDwindows.c)
-  SET (H5_PUBLIC_HEADERS ${H5_PUBLIC_HEADERS}  ${HDF5_SRC_DIR}/H5FDwindows.h)
-ENDIF (WIN32 AND NOT CYGWIN)
+if (WIN32)
+  set (common_SRCS  ${common_SRCS}  ${HDF5_SRC_DIR}/H5FDwindows.c)
+  set (H5_PUBLIC_HEADERS ${H5_PUBLIC_HEADERS}  ${HDF5_SRC_DIR}/H5FDwindows.h)
+endif (WIN32)
 
-SET (H5_PRIVATE_HEADERS
+set (H5_PRIVATE_HEADERS
     ${HDF5_SRC_DIR}/H5private.h
     ${HDF5_SRC_DIR}/H5Aprivate.h
     ${HDF5_SRC_DIR}/H5ACprivate.h
@@ -600,41 +598,38 @@ SET (H5_PRIVATE_HEADERS
     ${HDF5_SRC_DIR}/H5STprivate.h
     ${HDF5_SRC_DIR}/H5Tprivate.h
     ${HDF5_SRC_DIR}/H5TSprivate.h
-    ${HDF5_SRC_DIR}/H5Vprivate.h
+    ${HDF5_SRC_DIR}/H5VMprivate.h
     ${HDF5_SRC_DIR}/H5WBprivate.h
     ${HDF5_SRC_DIR}/H5Zprivate.h
     ${HDF5_SRC_DIR}/H5win32defs.h
 )
 
-INCLUDE_DIRECTORIES (${HDF5_SOURCE_DIR})
-INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR})
-
 #-----------------------------------------------------------------------------
 # Setup the H5Detect utility which generates H5Tinit with platform
 # specific type checks inside
 #-----------------------------------------------------------------------------
-ADD_EXECUTABLE (H5detect ${HDF5_SRC_DIR}/H5detect.c)
+add_executable (H5detect ${HDF5_SRC_DIR}/H5detect.c)
 TARGET_C_PROPERTIES (H5detect " " " ")
-IF (MSVC)
-  TARGET_LINK_LIBRARIES (H5detect "ws2_32.lib")
-ENDIF (MSVC)
+if (MSVC OR MINGW)
+  target_link_libraries (H5detect "ws2_32.lib")
+endif (MSVC OR MINGW)
 
-SET (CMD $<TARGET_FILE:H5detect>)
-ADD_CUSTOM_COMMAND (
+set (CMD $<TARGET_FILE:H5detect>)
+add_custom_command (
     OUTPUT ${HDF5_BINARY_DIR}/H5Tinit.c
     COMMAND ${CMD}
     ARGS > ${HDF5_BINARY_DIR}/H5Tinit.c
     DEPENDS H5detect
 )
 
-ADD_EXECUTABLE (H5make_libsettings ${HDF5_SRC_DIR}/H5make_libsettings.c)
+add_executable (H5make_libsettings ${HDF5_SRC_DIR}/H5make_libsettings.c)
 TARGET_C_PROPERTIES (H5make_libsettings " " " ")
-IF (MSVC)
-  TARGET_LINK_LIBRARIES (H5make_libsettings "ws2_32.lib")
-ENDIF (MSVC)
+if (MSVC OR MINGW)
+  target_link_libraries (H5make_libsettings "ws2_32.lib")
+endif (MSVC OR MINGW)
 
-SET (CMD $<TARGET_FILE:H5make_libsettings>)
-ADD_CUSTOM_COMMAND (
+set (CMD $<TARGET_FILE:H5make_libsettings>)
+add_custom_command (
     OUTPUT ${HDF5_BINARY_DIR}/H5lib_settings.c
     COMMAND ${CMD}
     ARGS > ${HDF5_BINARY_DIR}/H5lib_settings.c
@@ -642,21 +637,21 @@ ADD_CUSTOM_COMMAND (
     WORKING_DIRECTORY ${HDF5_BINARY_DIR}
 )
 
-ADD_CUSTOM_COMMAND (
+add_custom_command (
     TARGET ${HDF5_BINARY_DIR}/H5Edefin.h
     PRE_BUILD
     COMMAND ${CMAKE_COMMAND} -E perl ${HDF5_SOURCE_DIR}/bin/make_err ${HDF5_SOURCE_DIR}/src/H5err.txt
     COMMENT " Creating err headers"
 )
 
-ADD_CUSTOM_COMMAND (
+add_custom_command (
     TARGET ${HDF5_BINARY_DIR}/H5version.h
     PRE_BUILD
     COMMAND ${CMAKE_COMMAND} -E perl ${HDF5_SOURCE_DIR}/bin/make_vers ${HDF5_SOURCE_DIR}/src/H5vers.txt
     COMMENT " Creating API version macro"
 )
 
-ADD_CUSTOM_COMMAND (
+add_custom_command (
     TARGET ${HDF5_BINARY_DIR}/H5overflow.h
     PRE_BUILD
     COMMAND ${CMAKE_COMMAND} -E perl ${HDF5_SOURCE_DIR}/bin/make_overflow ${HDF5_SOURCE_DIR}/src/H5overflow.txt
@@ -666,50 +661,67 @@ ADD_CUSTOM_COMMAND (
 #-----------------------------------------------------------------------------
 # Add H5Tinit source to build - generated by H5Detect/CMake at configure time
 #-----------------------------------------------------------------------------
-SET (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5Tinit.c)
-SET_SOURCE_FILES_PROPERTIES (${HDF5_BINARY_DIR}/H5Tinit.c GENERATED)
-SET (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5lib_settings.c)
-SET_SOURCE_FILES_PROPERTIES (${HDF5_BINARY_DIR}/H5lib_settings.c GENERATED)
-SET (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5Edefin.h)
-SET_SOURCE_FILES_PROPERTIES (${HDF5_BINARY_DIR}/H5Edefin.h GENERATED)
-SET (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5version.h)
-SET_SOURCE_FILES_PROPERTIES (${HDF5_BINARY_DIR}/H5version.h GENERATED)
-SET (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5overflow.h)
-SET_SOURCE_FILES_PROPERTIES (${HDF5_BINARY_DIR}/H5overflow.h GENERATED)
-
-ADD_LIBRARY (${HDF5_LIB_TARGET} ${LIB_TYPE} ${common_SRCS} ${H5_PUBLIC_HEADERS} ${H5_PRIVATE_HEADERS})
+set (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5Tinit.c)
+set_source_files_properties (${HDF5_BINARY_DIR}/H5Tinit.c GENERATED)
+set (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5lib_settings.c)
+set_source_files_properties (${HDF5_BINARY_DIR}/H5lib_settings.c GENERATED)
+set (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5Edefin.h)
+set_source_files_properties (${HDF5_BINARY_DIR}/H5Edefin.h GENERATED)
+set (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5version.h)
+set_source_files_properties (${HDF5_BINARY_DIR}/H5version.h GENERATED)
+set (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5overflow.h)
+set_source_files_properties (${HDF5_BINARY_DIR}/H5overflow.h GENERATED)
+
+add_library (${HDF5_LIB_TARGET} ${LIB_TYPE} ${common_SRCS} ${H5_PUBLIC_HEADERS} ${H5_PRIVATE_HEADERS})
 TARGET_C_PROPERTIES (${HDF5_LIB_TARGET} " " " ")
-TARGET_LINK_LIBRARIES (${HDF5_LIB_TARGET} ${LINK_LIBS})
-IF (NOT WIN32)
-  TARGET_LINK_LIBRARIES (${HDF5_LIB_TARGET} dl)
-ENDIF (NOT WIN32)
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT ${HDF5_LIB_TARGET})
+target_link_libraries (${HDF5_LIB_TARGET} ${LINK_LIBS})
+if (NOT WIN32)
+  target_link_libraries (${HDF5_LIB_TARGET} dl)
+endif (NOT WIN32)
+if (H5_HAVE_PARALLEL AND MPI_C_FOUND)
+  target_link_libraries (${HDF5_LIB_TARGET} ${MPI_C_LIBRARIES})
+endif (H5_HAVE_PARALLEL AND MPI_C_FOUND)
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT ${HDF5_LIB_TARGET})
 H5_SET_LIB_OPTIONS (${HDF5_LIB_TARGET} ${HDF5_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_LIB_TARGET} PROPERTIES FOLDER libraries)
+set_target_properties (${HDF5_LIB_TARGET} PROPERTIES
+    FOLDER libraries
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
+
+option (HDF5_ENABLE_DEBUG_APIS "Turn on debugging in all packages" OFF)
+if (HDF5_ENABLE_DEBUG_APIS)
+  set_target_properties (${HDF5_LIB_TARGET} PROPERTIES
+    COMPILE_DEFINITIONS
+      "-DH5Z_DEBUG -DH5VM_DEBUG -DH5T_DEBUG
+      -DH5S_DEBUG -DH5P_DEBUG -DH5O_DEBUG -DH5MM_DEBUG -DH5MF_DEBUG
+      -DH5I_DEBUG -DH5HL_DEBUG -DH5HG_DEBUG -DH5G_DEBUG -DH5F_DEBUG
+      -DH5E_DEBUG -DH5D_DEBUG -DH5B_DEBUG -DH5AC_DEBUG -UNDEBUG"
+  )
+endif (HDF5_ENABLE_DEBUG_APIS)
 
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install
 #-----------------------------------------------------------------------------
-IF (NOT HDF5_INSTALL_NO_DEVELOPMENT)
-  INSTALL (
+if (NOT HDF5_INSTALL_NO_DEVELOPMENT)
+  install (
       FILES
           ${H5_PUBLIC_HEADERS}
-          ${H5_PRIVATE_HEADERS}
       DESTINATION
           ${HDF5_INSTALL_INCLUDE_DIR}
       COMPONENT
           headers
   )
-ENDIF (NOT HDF5_INSTALL_NO_DEVELOPMENT)
+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)
+if (HDF5_EXPORTED_TARGETS)
+  if (BUILD_SHARED_LIBS)
+    INSTALL_TARGET_PDB (${HDF5_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} libraries)
+  endif (BUILD_SHARED_LIBS)
   
-  INSTALL (
+  install (
       TARGETS
           ${HDF5_LIB_TARGET}
       EXPORT
@@ -718,4 +730,4 @@ IF (HDF5_EXPORTED_TARGETS)
       ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT libraries
       RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT libraries
   )
-ENDIF (HDF5_EXPORTED_TARGETS)
+endif (HDF5_EXPORTED_TARGETS)
diff --git a/src/H5.c b/src/H5.c
index 1c6cae1..1515f96 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -147,13 +147,23 @@ H5_init_library(void)
 #endif
 
     /*
-     * Install atexit() library cleanup routine unless the H5dont_atexit()
+     * Install atexit() library cleanup routines unless the H5dont_atexit()
      * has been called.  Once we add something to the atexit() list it stays
      * there permanently, so we set H5_dont_atexit_g after we add it to prevent
      * adding it again later if the library is cosed and reopened.
      */
     if (!H5_dont_atexit_g) {
-	(void)HDatexit(H5_term_library);
+
+#if defined(H5_HAVE_THREADSAFE) && defined(H5_HAVE_WIN_THREADS)
+        /* Clean up Win32 thread resources. Pthreads automatically cleans up.
+         * This must be entered before the library cleanup code so it's
+         * executed in LIFO order (i.e., last).
+         */
+	    (void)HDatexit(H5TS_win32_process_exit);
+#endif /* H5_HAVE_THREADSAFE && H5_HAVE_WIN_THREADS */
+
+        /* Normal library termination code */
+        (void)HDatexit(H5_term_library);
 	H5_dont_atexit_g = TRUE;
     } /* end if */
 
@@ -328,7 +338,7 @@ H5_term_library(void)
 done:
 #ifdef H5_HAVE_THREADSAFE
     H5_API_UNLOCK
-#endif
+#endif /* H5_HAVE_THREADSAFE */
     return;
 } /* end H5_term_library() */
 
@@ -804,3 +814,85 @@ H5close(void)
     FUNC_LEAVE_API_NOFS(SUCCEED)
 } /* end H5close() */
 
+

+/*-------------------------------------------------------------------------
+ * Function:	H5free_memory
+ *
+ * Purpose:	Frees memory allocated by the library that it is the user's
+ *              responsibility to free.  Ensures that the same library
+ *              that was used to allocate the memory frees it.  Passing
+ *              NULL pointers is allowed.
+ *
+ * Return:	SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5free_memory(void *mem)
+{
+    FUNC_ENTER_API_NOINIT
+    H5TRACE1("e", "*x", mem);
+
+    /* At this time, it is impossible for this to fail. */
+    HDfree(mem);
+
+    FUNC_LEAVE_API(SUCCEED)
+} /* end H5free_memory() */
+
+

+#ifdef H5_HAVE_WIN32_API
+/*-------------------------------------------------------------------------
+ * Function:    DllMain
+ *
+ * Purpose:     Handles various conditions in the library on Windows.
+ *
+ *    NOTE:     The main purpose of this is for handling Win32 thread cleanup
+ *              on thread/process detach.
+ *
+ * Return:      TRUE on success, FALSE on failure
+ *
+ *-------------------------------------------------------------------------
+ */
+BOOL WINAPI
+DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
+{
+    /* Don't add our function enter/leave macros since this function will be
+     * called before the library is initialized.
+     *
+     * NOTE: Do NOT call any CRT functions in DllMain!
+     * This includes any functions that are called by from here!
+     */
+
+    BOOL fOkay = TRUE;
+
+    switch(fdwReason)
+    {
+    case DLL_PROCESS_ATTACH:
+        break;
+
+    case DLL_PROCESS_DETACH:
+        break;
+
+    case DLL_THREAD_ATTACH:
+#ifdef H5_HAVE_WIN_THREADS
+        if(H5TS_win32_thread_enter() < 0)
+            fOkay = FALSE;
+#endif /* H5_HAVE_WIN_THREADS */
+        break;
+
+    case DLL_THREAD_DETACH:
+#ifdef H5_HAVE_WIN_THREADS
+        if(H5TS_win32_thread_exit() < 0)
+            fOkay = FALSE;
+#endif /* H5_HAVE_WIN_THREADS */
+        break;
+
+    default:
+        /* Shouldn't get here */
+        fOkay = FALSE;
+        break;
+    }
+
+    return fOkay;
+}
+#endif /* H5_HAVE_WIN32_API */
diff --git a/src/H5A.c b/src/H5A.c
index a423fb6..1b4fe08 100644
--- a/src/H5A.c
+++ b/src/H5A.c
@@ -94,8 +94,7 @@ 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     0,                          /* # of reserved IDs for class */
     (H5I_free_t)H5A_close       /* Callback routine for closing objects of this class */
 }};
@@ -185,6 +184,9 @@ H5A_term_interface(void)
 	if((n = H5I_nmembers(H5I_ATTR))>0) {
 	    (void)H5I_clear_type(H5I_ATTR, FALSE, FALSE);
 	} else {
+            /* Close deprecated interface */
+            n += H5A__term_deprec_interface();
+
 	    (void)H5I_dec_type_ref(H5I_ATTR);
 	    H5_interface_initialize_g = 0;
 	    n = 1;
diff --git a/src/H5AC.c b/src/H5AC.c
index fce477d..e0891dd 100644
--- a/src/H5AC.c
+++ b/src/H5AC.c
@@ -498,58 +498,52 @@ H5AC_create(const H5F_t *f,
         if((mpi_size = H5F_mpi_get_size(f)) < 0)
             HGOTO_ERROR(H5E_VFL, H5E_CANTGET, FAIL, "can't get mpi size")
 
-        /* There is no point in setting up the auxilary structure if size
-         * is less than or equal to 1, as there will never be any processes
-         * to broadcast the clean lists to.
-         */
-        if(mpi_size > 1) {
-            if(NULL == (aux_ptr = H5FL_CALLOC(H5AC_aux_t)))
-                HGOTO_ERROR(H5E_CACHE, H5E_CANTALLOC, FAIL, "Can't allocate H5AC auxilary structure.")
-
-            aux_ptr->magic = H5AC__H5AC_AUX_T_MAGIC;
-            aux_ptr->mpi_comm = mpi_comm;
-            aux_ptr->mpi_rank = mpi_rank;
-            aux_ptr->mpi_size = mpi_size;
-            aux_ptr->write_permitted = FALSE;
-            aux_ptr->dirty_bytes_threshold = H5AC__DEFAULT_DIRTY_BYTES_THRESHOLD;
-            aux_ptr->dirty_bytes = 0;
-            aux_ptr->metadata_write_strategy = H5AC__DEFAULT_METADATA_WRITE_STRATEGY;
+        if(NULL == (aux_ptr = H5FL_CALLOC(H5AC_aux_t)))
+            HGOTO_ERROR(H5E_CACHE, H5E_CANTALLOC, FAIL, "Can't allocate H5AC auxilary structure.")
+
+        aux_ptr->magic = H5AC__H5AC_AUX_T_MAGIC;
+        aux_ptr->mpi_comm = mpi_comm;
+        aux_ptr->mpi_rank = mpi_rank;
+        aux_ptr->mpi_size = mpi_size;
+        aux_ptr->write_permitted = FALSE;
+        aux_ptr->dirty_bytes_threshold = H5AC__DEFAULT_DIRTY_BYTES_THRESHOLD;
+        aux_ptr->dirty_bytes = 0;
+        aux_ptr->metadata_write_strategy = H5AC__DEFAULT_METADATA_WRITE_STRATEGY;
 #if H5AC_DEBUG_DIRTY_BYTES_CREATION
-            aux_ptr->dirty_bytes_propagations = 0;
-            aux_ptr->unprotect_dirty_bytes = 0;
-            aux_ptr->unprotect_dirty_bytes_updates = 0;
-            aux_ptr->insert_dirty_bytes = 0;
-            aux_ptr->insert_dirty_bytes_updates = 0;
-            aux_ptr->move_dirty_bytes = 0;
-            aux_ptr->move_dirty_bytes_updates = 0;
+        aux_ptr->dirty_bytes_propagations = 0;
+        aux_ptr->unprotect_dirty_bytes = 0;
+        aux_ptr->unprotect_dirty_bytes_updates = 0;
+        aux_ptr->insert_dirty_bytes = 0;
+        aux_ptr->insert_dirty_bytes_updates = 0;
+        aux_ptr->move_dirty_bytes = 0;
+        aux_ptr->move_dirty_bytes_updates = 0;
 #endif /* H5AC_DEBUG_DIRTY_BYTES_CREATION */
-            aux_ptr->d_slist_ptr = NULL;
-            aux_ptr->d_slist_len = 0;
-            aux_ptr->c_slist_ptr = NULL;
-            aux_ptr->c_slist_len = 0;
-            aux_ptr->candidate_slist_ptr = NULL;
-            aux_ptr->candidate_slist_len = 0;
-            aux_ptr->write_done = NULL;
-            aux_ptr->sync_point_done = NULL;
-
-            sprintf(prefix, "%d:", mpi_rank);
-
-            if(mpi_rank == 0) {
-                if(NULL == (aux_ptr->d_slist_ptr = H5SL_create(H5SL_TYPE_HADDR, NULL)))
-                    HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "can't create dirtied entry list.")
-
-                if(NULL == (aux_ptr->c_slist_ptr = H5SL_create(H5SL_TYPE_HADDR, NULL)))
-                    HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "can't create cleaned entry list.")
-            } /* end if */
-
-            /* construct the candidate slist for all processes.
- 	     * when the distributed strategy is selected as all processes
- 	     * will use it in the case of a flush.
-             */
-            if(NULL == (aux_ptr->candidate_slist_ptr = H5SL_create(H5SL_TYPE_HADDR, NULL)))
-                HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "can't create candidate entry list.")
+        aux_ptr->d_slist_ptr = NULL;
+        aux_ptr->d_slist_len = 0;
+        aux_ptr->c_slist_ptr = NULL;
+        aux_ptr->c_slist_len = 0;
+        aux_ptr->candidate_slist_ptr = NULL;
+        aux_ptr->candidate_slist_len = 0;
+        aux_ptr->write_done = NULL;
+        aux_ptr->sync_point_done = NULL;
+
+        sprintf(prefix, "%d:", mpi_rank);
+
+        if(mpi_rank == 0) {
+            if(NULL == (aux_ptr->d_slist_ptr = H5SL_create(H5SL_TYPE_HADDR, NULL)))
+                HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "can't create dirtied entry list.")
+
+            if(NULL == (aux_ptr->c_slist_ptr = H5SL_create(H5SL_TYPE_HADDR, NULL)))
+                HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "can't create cleaned entry list.")
         } /* end if */
 
+        /* construct the candidate slist for all processes.
+         * when the distributed strategy is selected as all processes
+         * will use it in the case of a flush.
+         */
+        if(NULL == (aux_ptr->candidate_slist_ptr = H5SL_create(H5SL_TYPE_HADDR, NULL)))
+            HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "can't create candidate entry list.")
+
         if(aux_ptr != NULL) {
             if(aux_ptr->mpi_rank == 0) {
                 f->shared->cache = H5C_create(H5AC__DEFAULT_MAX_CACHE_SIZE,
diff --git a/src/H5ACprivate.h b/src/H5ACprivate.h
index 68412a0..2e7bcd7 100644
--- a/src/H5ACprivate.h
+++ b/src/H5ACprivate.h
@@ -319,8 +319,7 @@ H5_DLL herr_t H5AC_insert_entry(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *typ
                        haddr_t addr, void *thing, unsigned int flags);
 H5_DLL herr_t H5AC_pin_protected_entry(void *thing);
 H5_DLL void * H5AC_protect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type,
-                           haddr_t addr, void *udata,
-                           H5AC_protect_t rw);
+    haddr_t addr, void *udata, H5AC_protect_t rw);
 H5_DLL herr_t H5AC_resize_entry(void *thing, size_t new_size);
 H5_DLL herr_t H5AC_unpin_entry(void *thing);
 H5_DLL herr_t H5AC_unprotect(H5F_t *f, hid_t dxpl_id,
diff --git a/src/H5Adeprec.c b/src/H5Adeprec.c
index 7202edf..10ee70b 100644
--- a/src/H5Adeprec.c
+++ b/src/H5Adeprec.c
@@ -105,6 +105,30 @@ H5A__init_deprec_interface(void)
     FUNC_LEAVE_NOAPI(H5A_init())
 } /* H5A__init_deprec_interface() */
 
+

+/*--------------------------------------------------------------------------
+NAME
+   H5A__term_deprec_interface -- Terminate interface
+USAGE
+    herr_t H5A__term_deprec_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5A__term_deprec_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
+
+    FUNC_LEAVE_NOAPI(0)
+} /* H5A__term_deprec_interface() */
+
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 

 /*--------------------------------------------------------------------------
diff --git a/src/H5Apkg.h b/src/H5Apkg.h
index 26c8dff..fa26a9a 100644
--- a/src/H5Apkg.h
+++ b/src/H5Apkg.h
@@ -185,6 +185,7 @@ H5_DLLVAR const H5B2_class_t H5A_BT2_CORDER[1];
 
 /* Function prototypes for H5A package scope */
 H5_DLL herr_t H5A_init(void);
+H5_DLL herr_t H5A__term_deprec_interface(void);
 H5_DLL hid_t H5A_create(const H5G_loc_t *loc, const char *name,
     const H5T_t *type, const H5S_t *space, hid_t acpl_id, hid_t dxpl_id);
 H5_DLL H5A_t * H5A_open_by_name(const H5G_loc_t *loc, const char *obj_name,
diff --git a/src/H5B2cache.c b/src/H5B2cache.c
index 87684f0..4d4b69f 100644
--- a/src/H5B2cache.c
+++ b/src/H5B2cache.c
@@ -190,12 +190,12 @@ H5B2__cache_hdr_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_udata)
 
     /* Magic number */
     if(HDmemcmp(p, H5B2_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC))
-	HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, NULL, "wrong B-tree header signature")
+	HGOTO_ERROR(H5E_BTREE, H5E_BADVALUE, NULL, "wrong B-tree header signature")
     p += H5_SIZEOF_MAGIC;
 
     /* Version */
     if(*p++ != H5B2_HDR_VERSION)
-	HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, NULL, "wrong B-tree header version")
+	HGOTO_ERROR(H5E_BTREE, H5E_BADRANGE, NULL, "wrong B-tree header version")
 
     /* B-tree class */
     id = (H5B2_subid_t)*p++;
@@ -529,12 +529,12 @@ H5B2__cache_internal_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_udata)
 
     /* Magic number */
     if(HDmemcmp(p, H5B2_INT_MAGIC, (size_t)H5_SIZEOF_MAGIC))
-        HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, NULL, "wrong B-tree internal node signature")
+        HGOTO_ERROR(H5E_BTREE, H5E_BADVALUE, NULL, "wrong B-tree internal node signature")
     p += H5_SIZEOF_MAGIC;
 
     /* Version */
     if(*p++ != H5B2_INT_VERSION)
-	HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, NULL, "wrong B-tree internal node version")
+	HGOTO_ERROR(H5E_BTREE, H5E_BADRANGE, NULL, "wrong B-tree internal node version")
 
     /* B-tree type */
     if(*p++ != (uint8_t)udata->hdr->cls->id)
diff --git a/src/H5B2hdr.c b/src/H5B2hdr.c
index 2148f1e..443a2e5 100644
--- a/src/H5B2hdr.c
+++ b/src/H5B2hdr.c
@@ -37,7 +37,7 @@
 #include "H5B2pkg.h"		/* v2 B-trees				*/
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5MFprivate.h"	/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -181,7 +181,7 @@ HDmemset(hdr->page, 0, hdr->node_size);
 
     /* Compute size to store # of records in each node */
     /* (uses leaf # of records because its the largest) */
-    u_max_nrec_size = H5V_limit_enc_size((uint64_t)hdr->node_info[0].max_nrec);
+    u_max_nrec_size = H5VM_limit_enc_size((uint64_t)hdr->node_info[0].max_nrec);
     H5_ASSIGN_OVERFLOW(/* To: */ hdr->max_nrec_size, /* From: */ u_max_nrec_size, /* From: */ unsigned, /* To: */ uint8_t)
     HDassert(hdr->max_nrec_size <= H5B2_SIZEOF_RECORDS_PER_NODE);
 
@@ -197,7 +197,7 @@ HDmemset(hdr->page, 0, hdr->node_size);
 
             hdr->node_info[u].cum_max_nrec = ((hdr->node_info[u].max_nrec + 1) *
                 hdr->node_info[u - 1].cum_max_nrec) + hdr->node_info[u].max_nrec;
-            u_max_nrec_size = H5V_limit_enc_size((uint64_t)hdr->node_info[u].cum_max_nrec);
+            u_max_nrec_size = H5VM_limit_enc_size((uint64_t)hdr->node_info[u].cum_max_nrec);
             H5_ASSIGN_OVERFLOW(/* To: */ hdr->node_info[u].cum_max_nrec_size, /* From: */ u_max_nrec_size, /* From: */ unsigned, /* To: */ uint8_t)
 
             if(NULL == (hdr->node_info[u].nat_rec_fac = H5FL_fac_init(hdr->cls->nrec_size * hdr->node_info[u].max_nrec)))
diff --git a/src/H5B2int.c b/src/H5B2int.c
index 1d5b5ff..ea0d265 100644
--- a/src/H5B2int.c
+++ b/src/H5B2int.c
@@ -37,7 +37,7 @@
 #include "H5B2pkg.h"		/* v2 B-trees				*/
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5MFprivate.h"	/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -387,7 +387,7 @@ H5B2_split_root(H5B2_hdr_t *hdr, hid_t dxpl_id)
     hdr->node_info[hdr->depth].merge_nrec = (hdr->node_info[hdr->depth].max_nrec * hdr->merge_percent) / 100;
     hdr->node_info[hdr->depth].cum_max_nrec = ((hdr->node_info[hdr->depth].max_nrec + 1) *
         hdr->node_info[hdr->depth - 1].cum_max_nrec) + hdr->node_info[hdr->depth].max_nrec;
-    u_max_nrec_size = H5V_limit_enc_size((uint64_t)hdr->node_info[hdr->depth].cum_max_nrec);
+    u_max_nrec_size = H5VM_limit_enc_size((uint64_t)hdr->node_info[hdr->depth].cum_max_nrec);
     H5_ASSIGN_OVERFLOW(/* To: */ hdr->node_info[hdr->depth].cum_max_nrec_size, /* From: */ u_max_nrec_size, /* From: */ unsigned, /* To: */ uint8_t)
     if(NULL == (hdr->node_info[hdr->depth].nat_rec_fac = H5FL_fac_init(hdr->cls->nrec_size * hdr->node_info[hdr->depth].max_nrec)))
 	HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't create node native key block factory")
diff --git a/src/H5CS.c b/src/H5CS.c
index 4ccd0f8..29182ce 100644
--- a/src/H5CS.c
+++ b/src/H5CS.c
@@ -83,12 +83,16 @@ H5CS_get_stack(void)
 
     fstack = H5TS_get_thread_local_value(H5TS_funcstk_key_g);
     if (!fstack) {
-        /* no associated value with current thread - create one */
-        fstack = (H5CS_t *)HDmalloc(sizeof(H5CS_t));  /* Don't use H5MM_malloc() here, it causes infinite recursion */
+        /* No associated value with current thread - create one */
+#ifdef H5_HAVE_WIN_THREADS
+        fstack = (H5CS_t *)LocalAlloc(LPTR, sizeof(H5CS_t)); /* Win32 has to use LocalAlloc to match the LocalFree in DllMain */
+#else
+        fstack = (H5CS_t *)HDmalloc(sizeof(H5CS_t)); /* Don't use H5MM_malloc() here, it causes infinite recursion */
+#endif /* H5_HAVE_WIN_THREADS */
         HDassert(fstack);
 
         /* Set the thread-specific info */
-	fstack->nused=0;
+        fstack->nused=0;
 
         /* (It's not necessary to release this in this API, it is
          *      released by the "key destructor" set up in the H5TS
diff --git a/src/H5D.c b/src/H5D.c
index 5e5a9ed..0dbda64 100644
--- a/src/H5D.c
+++ b/src/H5D.c
@@ -94,6 +94,30 @@ H5D__init_pub_interface(void)
 } /* H5D__init_pub_interface() */
 
 

+/*--------------------------------------------------------------------------
+NAME
+   H5D__term_pub_interface -- Terminate interface
+USAGE
+    herr_t H5D__term_pub_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5D__term_pub_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
+
+    FUNC_LEAVE_NOAPI(0)
+} /* H5D__term_pub_interface() */
+
+

 /*-------------------------------------------------------------------------
  * Function:	H5Dcreate2
  *
diff --git a/src/H5Dbtree.c b/src/H5Dbtree.c
index e204bb9..af91753 100644
--- a/src/H5Dbtree.c
+++ b/src/H5Dbtree.c
@@ -43,7 +43,7 @@
 #include "H5MFprivate.h"	/* File space management		*/
 #include "H5Oprivate.h"		/* Object headers		  	*/
 #include "H5Sprivate.h"         /* Dataspaces                           */
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 
 /****************/
 /* Local Macros */
@@ -345,7 +345,7 @@ H5D__btree_cmp2(void *_lt_key, void *_udata, void *_rt_key)
     HDassert(udata->layout->ndims > 0 && udata->layout->ndims <= H5O_LAYOUT_NDIMS);
 
     /* Compare the offsets but ignore the other fields */
-    ret_value = H5V_vector_cmp_u(udata->layout->ndims, lt_key->offset, rt_key->offset);
+    ret_value = H5VM_vector_cmp_u(udata->layout->ndims, lt_key->offset, rt_key->offset);
 
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5D__btree_cmp2() */
@@ -409,9 +409,9 @@ H5D__btree_cmp3(void *_lt_key, void *_udata, void *_rt_key)
             ret_value = (-1);
     } /* end if */
     else {
-        if(H5V_vector_ge_u(udata->layout->ndims, udata->offset, rt_key->offset))
+        if(H5VM_vector_ge_u(udata->layout->ndims, udata->offset, rt_key->offset))
             ret_value = 1;
-        else if(H5V_vector_lt_u(udata->layout->ndims, udata->offset, lt_key->offset))
+        else if(H5VM_vector_lt_u(udata->layout->ndims, udata->offset, lt_key->offset))
             ret_value = (-1);
     } /* end else */
 
@@ -540,7 +540,7 @@ H5D__btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key,
         /* Negative indices not supported yet */
         HGOTO_ERROR(H5E_STORAGE, H5E_UNSUPPORTED, H5B_INS_ERROR, "internal error")
 
-    } else if(H5V_vector_eq_u(udata->common.layout->ndims,
+    } else if(H5VM_vector_eq_u(udata->common.layout->ndims,
 				udata->common.offset, lt_key->offset) &&
 	       lt_key->nbytes > 0) {
         /*
@@ -579,10 +579,10 @@ H5D__btree_insert(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key,
             ret_value = H5B_INS_NOOP;
         }
 
-    } else if (H5V_hyper_disjointp(udata->common.layout->ndims,
+    } else if (H5VM_hyper_disjointp(udata->common.layout->ndims,
 				   lt_key->offset, udata->common.layout->dim,
 				   udata->common.offset, udata->common.layout->dim)) {
-        HDassert(H5V_hyper_disjointp(udata->common.layout->ndims,
+        HDassert(H5VM_hyper_disjointp(udata->common.layout->ndims,
 				   rt_key->offset, udata->common.layout->dim,
 				   udata->common.offset, udata->common.layout->dim));
         /*
diff --git a/src/H5Dchunk.c b/src/H5Dchunk.c
index f588645..43d140e 100644
--- a/src/H5Dchunk.c
+++ b/src/H5Dchunk.c
@@ -59,7 +59,7 @@
 #include "H5FLprivate.h"	/* Free Lists                           */
 #include "H5Iprivate.h"		/* IDs			  		*/
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 
 
 /****************/
@@ -164,10 +164,18 @@ typedef struct H5D_chunk_it_ud4_t {
 /* Callback info for nonexistent readvv operation */
 typedef struct H5D_chunk_readvv_ud_t {
     unsigned char *rbuf;        /* Read buffer to initialize */
-    H5D_t *dset;                /* Dataset to operate on */
+    const H5D_t *dset;          /* Dataset to operate on */
     hid_t dxpl_id;              /* DXPL for operation */
 } H5D_chunk_readvv_ud_t;
 
+/* Callback info for file selection iteration */
+typedef struct H5D_chunk_file_iter_ud_t {
+    H5D_chunk_map_t *fm;                /* File->memory chunk mapping info */
+#ifdef H5_HAVE_PARALLEL
+    const H5D_io_info_t *io_info;       /* I/O info for operation */
+#endif /* H5_HAVE_PARALLEL */
+} H5D_chunk_file_iter_ud_t;
+
 
 /********************/
 /* Local Prototypes */
@@ -297,7 +305,7 @@ H5FL_BLK_DEFINE_STATIC(chunk);
  */
 herr_t
 H5D__chunk_direct_write(const H5D_t *dset, hid_t dxpl_id, uint32_t filters, hsize_t *offset, 
-         size_t data_size, const void *buf)
+     uint32_t data_size, const void *buf)
 {
     const H5O_layout_t *layout = &(dset->shared->layout);       /* Dataset layout */
     H5D_chunk_ud_t udata;   /* User data for querying chunk info */
@@ -324,13 +332,12 @@ H5D__chunk_direct_write(const H5D_t *dset, hid_t dxpl_id, uint32_t filters, hsiz
          HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to get simple dataspace info")
 
     /* Calculate the index of this chunk */
-    if(H5V_chunk_index((unsigned)space_ndims, offset,
+    if(H5VM_chunk_index((unsigned)space_ndims, offset,
 	layout->u.chunk.dim, layout->u.chunk.down_chunks, &chunk_idx) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't get chunk index")
 
     /* Find out the file address of the chunk */
-    if(H5D__chunk_lookup(dset, dxpl_id, offset, chunk_idx,
-	    &udata) < 0)
+    if(H5D__chunk_lookup(dset, dxpl_id, offset, chunk_idx, &udata) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "error looking up chunk address")
 
     udata.filter_mask = filters;
@@ -419,7 +426,7 @@ H5D__chunk_set_info_real(H5O_layout_chunk_t *layout, unsigned ndims, const hsize
     } /* end for */
 
     /* Get the "down" sizes for each dimension */
-    if(H5V_array_down(ndims, layout->chunks, layout->down_chunks) < 0)
+    if(H5VM_array_down(ndims, layout->chunks, layout->down_chunks) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "can't compute 'down' chunk size value")
 
 done:
@@ -685,7 +692,7 @@ H5D__chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
     hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
     H5D_chunk_map_t *fm)
 {
-    H5D_t *dataset = io_info->dset;     /* Local pointer to dataset info */
+    const H5D_t *dataset = io_info->dset;     /* Local pointer to dataset info */
     const H5T_t *mem_type = type_info->mem_type;        /* Local pointer to memory datatype */
     H5S_t *tmp_mspace = NULL;   /* Temporary memory dataspace */
     hssize_t old_offset[H5O_LAYOUT_NDIMS];  /* Old selection offset */
@@ -698,7 +705,6 @@ H5D__chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
     H5S_sel_type fsel_type;     /* Selection type on disk */
     char bogus;                 /* "bogus" buffer to pass to selection iterator */
     unsigned u;                 /* Local index variable */
-    hbool_t sel_hyper_flag;
     herr_t ret_value = SUCCEED;	/* Return value		*/
 
     FUNC_ENTER_STATIC
@@ -796,6 +802,8 @@ H5D__chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create chunk selections for single element")
     } /* end if */
     else {
+        hbool_t sel_hyper_flag;         /* Whether file selection is a hyperslab */
+
         /* Initialize skip list for chunk selections */
         if(NULL == dataset->shared->cache.chunk.sel_chunks) {
             if(NULL == (dataset->shared->cache.chunk.sel_chunks = H5SL_create(H5SL_TYPE_HSIZE, NULL)))
@@ -843,12 +851,20 @@ H5D__chunk_io_init(const H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
             } /* end while */
         } /* end if */
         else {
+            H5D_chunk_file_iter_ud_t udata;     /* User data for iteration */
+
             /* Create temporary datatypes for selection iteration */
             if((f_tid = H5I_register(H5I_DATATYPE, H5T_copy(dataset->shared->type, H5T_COPY_ALL), FALSE)) < 0)
                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to register file datatype")
 
+            /* Initialize the user data */
+            udata.fm = fm;
+#ifdef H5_HAVE_PARALLEL
+            udata.io_info = io_info;
+#endif /* H5_HAVE_PARALLEL */
+
             /* 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, &udata) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create file chunk selections")
 
             /* Reset "last chunk" info */
@@ -1137,7 +1153,7 @@ H5D__create_chunk_map_single(H5D_chunk_map_t *fm, const H5D_io_info_t
     chunk_info->coords[fm->f_ndims] = 0;
 
     /* Calculate the index of this chunk */
-    if(H5V_chunk_index(fm->f_ndims, chunk_info->coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_info->index) < 0)
+    if(H5VM_chunk_index(fm->f_ndims, chunk_info->coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_info->index) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "can't get chunk index")
 
     /* Copy selection for file's dataspace into chunk dataspace */
@@ -1222,7 +1238,7 @@ H5D__create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
     } /* end for */
 
     /* Calculate the index of this chunk */
-    if(H5V_chunk_index(fm->f_ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
+    if(H5VM_chunk_index(fm->f_ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "can't get chunk index")
 
     /* Iterate through each chunk in the dataset */
@@ -1265,7 +1281,7 @@ H5D__create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
             /* Add temporary chunk to the list of chunks */
 
             /* Allocate the file & memory chunk information */
-            if (NULL==(new_chunk_info = H5FL_MALLOC (H5D_chunk_info_t))) {
+            if (NULL==(new_chunk_info = H5FL_MALLOC(H5D_chunk_info_t))) {
                 (void)H5S_close(tmp_fchunk);
                 HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate chunk info")
             } /* end if */
@@ -1276,7 +1292,7 @@ H5D__create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
             new_chunk_info->index=chunk_index;
 
 #ifdef H5_HAVE_PARALLEL
-            /* store chunk selection information */
+            /* Store chunk selection information, for multi-chunk I/O */
             if(io_info->using_mpi_vfd)
                 fm->select_chunk[chunk_index] = new_chunk_info;
 #endif /* H5_HAVE_PARALLEL */
@@ -1340,7 +1356,7 @@ H5D__create_chunk_file_map_hyper(H5D_chunk_map_t *fm, const H5D_io_info_t
             } while(coords[curr_dim] > sel_end[curr_dim]);
 
             /* Re-calculate the index of this chunk */
-            if(H5V_chunk_index(fm->f_ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
+            if(H5VM_chunk_index(fm->f_ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
                 HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "can't get chunk index")
         } /* end if */
     } /* end while */
@@ -1476,9 +1492,10 @@ 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 *_udata)
 {
-    H5D_chunk_map_t      *fm = (H5D_chunk_map_t *)_fm;  /* File<->memory chunk mapping info */
+    H5D_chunk_file_iter_ud_t *udata = (H5D_chunk_file_iter_ud_t *)_udata;       /* User data for operation */
+    H5D_chunk_map_t      *fm = udata->fm;       /* File<->memory chunk mapping info */
     H5D_chunk_info_t *chunk_info;               /* Chunk information for current chunk */
     hsize_t    coords_in_chunk[H5O_LAYOUT_NDIMS];        /* Coordinates of element in chunk */
     hsize_t     chunk_index;                    /* Chunk index */
@@ -1488,7 +1505,7 @@ H5D__chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, cons
     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)
+    if(H5VM_chunk_index(ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "can't get chunk index")
 
     /* Find correct chunk in file & memory skip list */
@@ -1496,7 +1513,7 @@ H5D__chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, cons
         /* If the chunk index is the same as the last chunk index we used,
          * get the cached info to operate on.
          */
-        chunk_info=fm->last_chunk_info;
+        chunk_info = fm->last_chunk_info;
     } /* end if */
     else {
         /* If the chunk index is not the same as the last chunk index we used,
@@ -1553,14 +1570,20 @@ H5D__chunk_file_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, cons
             } /* end if */
         } /* end if */
 
+#ifdef H5_HAVE_PARALLEL
+        /* Store chunk selection information, for collective multi-chunk I/O */
+        if(udata->io_info->using_mpi_vfd)
+            fm->select_chunk[chunk_index] = chunk_info;
+#endif /* H5_HAVE_PARALLEL */
+
         /* Update the "last chunk seen" information */
-        fm->last_index=chunk_index;
-        fm->last_chunk_info=chunk_info;
+        fm->last_index = chunk_index;
+        fm->last_chunk_info = chunk_info;
     } /* end else */
 
-    /* Get the coordinates of the element in the chunk */
+    /* Get the offset of the element within the chunk */
     for(u = 0; u < fm->f_ndims; u++)
-        coords_in_chunk[u] = coords[u] % fm->layout->u.chunk.dim[u];
+        coords_in_chunk[u] = coords[u] - chunk_info->coords[u];
 
     /* Add point to file selection for chunk */
     if(H5S_select_elements(chunk_info->fspace, H5S_SELECT_APPEND, (size_t)1, coords_in_chunk) < 0)
@@ -1600,7 +1623,7 @@ H5D__chunk_mem_cb(void UNUSED *elem, hid_t UNUSED type_id, unsigned ndims, const
     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)
+    if(H5VM_chunk_index(ndims, coords, fm->layout->u.chunk.dim, fm->layout->u.chunk.down_chunks, &chunk_index) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "can't get chunk index")
 
     /* Find correct chunk in file & memory skip list */
@@ -1669,8 +1692,8 @@ done:
 htri_t
 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;
+    const H5D_t *dataset = io_info->dset; /* Local pointer to dataset info */
+    htri_t ret_value = FAIL;            /* Return value */
 
     FUNC_ENTER_PACKAGE
 
@@ -1708,8 +1731,9 @@ H5D__chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr, hbool_t write_
                     /* If the fill value needs to be written then we will need
                      * to use the cache to write the fill value */
                     if(fill->fill_time == H5D_FILL_TIME_ALLOC ||
-                            (fill->fill_time == H5D_FILL_TIME_IFSET
-                            && fill_status == H5D_FILL_VALUE_USER_DEFINED))
+                            (fill->fill_time == H5D_FILL_TIME_IFSET &&
+                            (fill_status == H5D_FILL_VALUE_USER_DEFINED ||
+                             fill_status == H5D_FILL_VALUE_DEFAULT)))
                         ret_value = TRUE;
                     else
                         ret_value = FALSE;
@@ -1795,7 +1819,9 @@ H5D__chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
          * but they aren't set, set the flag to skip missing chunks.
          */
         if(fill->fill_time == H5D_FILL_TIME_NEVER ||
-                (fill->fill_time == H5D_FILL_TIME_IFSET && fill_status != H5D_FILL_VALUE_USER_DEFINED))
+                (fill->fill_time == H5D_FILL_TIME_IFSET &&
+                 fill_status != H5D_FILL_VALUE_USER_DEFINED &&
+                 fill_status != H5D_FILL_VALUE_DEFAULT))
             skip_missing_chunks = TRUE;
     }
 
@@ -1812,8 +1838,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,
-                chunk_info->coords, chunk_info->index, &udata) < 0)
+        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")
 
         /* Check for non-existant chunk & skip it if appropriate */
@@ -1942,8 +1967,7 @@ 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,
-                chunk_info->index, &udata) < 0)
+        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)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't tell if chunk is cacheable")
@@ -2293,7 +2317,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D__chunk_create(H5D_t *dset /*in,out*/, hid_t dxpl_id)
+H5D__chunk_create(const 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 */
@@ -2774,7 +2798,7 @@ void *
 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 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_layout_t  *layout = &(dset->shared->layout); /* Dataset layout */
     const H5O_fill_t    *fill = &(dset->shared->dcpl_cache.fill); /* Fill value info */
@@ -2886,7 +2910,9 @@ H5D__chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
                 HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't tell if fill value defined")
 
             if(fill->fill_time == H5D_FILL_TIME_ALLOC ||
-                    (fill->fill_time == H5D_FILL_TIME_IFSET && fill_status == H5D_FILL_VALUE_USER_DEFINED)) {
+                    (fill->fill_time == H5D_FILL_TIME_IFSET &&
+                     (fill_status == H5D_FILL_VALUE_USER_DEFINED ||
+                      fill_status == H5D_FILL_VALUE_DEFAULT))) {
                 /*
                  * The chunk doesn't exist in the file.  Replicate the fill
                  * value throughout the chunk, if the fill value is defined.
@@ -3211,7 +3237,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D__chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
+H5D__chunk_allocate(const 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 */
@@ -3311,7 +3337,9 @@ H5D__chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
      * set the "should fill" flag
      */
     if((!full_overwrite && (fill->fill_time == H5D_FILL_TIME_ALLOC ||
-            (fill->fill_time == H5D_FILL_TIME_IFSET && fill_status == H5D_FILL_VALUE_USER_DEFINED)))
+            (fill->fill_time == H5D_FILL_TIME_IFSET &&
+             (fill_status == H5D_FILL_VALUE_USER_DEFINED ||
+              fill_status == H5D_FILL_VALUE_DEFAULT))))
             || pline->nused > 0)
         should_fill = TRUE;
 
@@ -3405,13 +3433,12 @@ H5D__chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
                 hsize_t chunk_idx;
 
                 /* Calculate the index of this chunk */
-                if(H5V_chunk_index((unsigned)space_ndims, chunk_offset,
+                if(H5VM_chunk_index((unsigned)space_ndims, chunk_offset,
                         layout->u.chunk.dim, layout->u.chunk.down_chunks,
                         &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,
-                        &udata) < 0)
+                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")
 
                 HDassert(!H5F_addr_defined(udata.addr));
@@ -3576,7 +3603,7 @@ static herr_t
 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 */
+    const H5D_t *dset = io_info->dset;  /* Local pointer to the dataset info */
     const H5O_layout_t *layout = &(dset->shared->layout); /* Dataset's layout */
     unsigned    rank = udata->common.layout->ndims - 1; /* Dataset rank */
     const hsize_t *chunk_offset = io_info->store->chunk.offset; /* Chunk offset */
@@ -3598,8 +3625,7 @@ H5D__chunk_prune_fill(H5D_chunk_it_ud1_t *udata)
     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,
-            io_info->store->chunk.index, &chk_udata) < 0)
+    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")
 
     /* If this chunk does not exist in cache or on disk, no need to do anything
@@ -3979,7 +4005,7 @@ H5D__chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, const hsize_t *old_dim)
 
         while(!carry) {
             /* Calculate the index of this chunk */
-            if(H5V_chunk_index((unsigned)space_ndims, chunk_offset,
+            if(H5VM_chunk_index((unsigned)space_ndims, chunk_offset,
                     layout->u.chunk.dim, layout->u.chunk.down_chunks,
                     &(chk_io_info.store->chunk.index)) < 0)
                 HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't get chunk index")
@@ -4008,8 +4034,7 @@ 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,
-                        chk_io_info.store->chunk.index, &chk_udata) < 0)
+                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
@@ -4120,7 +4145,7 @@ H5D__chunk_addrmap_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
     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)
+    if(H5VM_chunk_index(rank, chunk_rec->offset, udata->common.layout->dim, udata->common.layout->down_chunks, &chunk_index) < 0)
        HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, H5_ITER_ERROR, "can't get chunk index")
 
     /* Set it in the userdata to return */
@@ -4148,7 +4173,7 @@ herr_t
 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 */
+    const 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 */
 
@@ -4311,7 +4336,7 @@ H5D__chunk_update_cache(H5D_t *dset, hid_t dxpl_id)
         next = ent->next;
 
         /* Calculate the index of this chunk */
-        if(H5V_chunk_index(rank, ent->offset, dset->shared->layout.u.chunk.dim, dset->shared->layout.u.chunk.down_chunks, &idx) < 0)
+        if(H5VM_chunk_index(rank, ent->offset, dset->shared->layout.u.chunk.dim, dset->shared->layout.u.chunk.down_chunks, &idx) < 0)
             HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "can't get chunk index")
 
         /* Compute the index for the chunk entry */
@@ -5074,7 +5099,7 @@ static herr_t
 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 */
+    H5D_chunk_readvv_ud_t *udata = (H5D_chunk_readvv_ud_t *)_udata; /* User data for H5VM_opvv() operator */
     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 */
@@ -5126,7 +5151,7 @@ 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 */
+    H5D_chunk_readvv_ud_t udata;        /* User data for H5VM_opvv() operator */
     ssize_t ret_value;                  /* Return value */
 
     FUNC_ENTER_STATIC
@@ -5140,13 +5165,13 @@ H5D__nonexistent_readvv(const H5D_io_info_t *io_info,
     HDassert(mem_len_arr);
     HDassert(mem_off_arr);
 
-    /* Set up user data for H5V_opvv() */
+    /* Set up user data for H5VM_opvv() */
     udata.rbuf = (unsigned char *)io_info->u.rbuf;
     udata.dset = io_info->dset;
     udata.dxpl_id = io_info->dxpl_id;
 
     /* Call generic sequence operation routine */
-    if((ret_value = H5V_opvv(chunk_max_nseq, chunk_curr_seq, chunk_len_arr, chunk_off_arr,
+    if((ret_value = H5VM_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)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized fill value init")
diff --git a/src/H5Dcompact.c b/src/H5Dcompact.c
index c692c2b..789beab 100644
--- a/src/H5Dcompact.c
+++ b/src/H5Dcompact.c
@@ -40,7 +40,7 @@
 #include "H5Iprivate.h"		/* IDs			  		*/
 #include "H5MMprivate.h"	/* Memory management			*/
 #include "H5Oprivate.h"		/* Object headers		  	*/
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 
 
 /****************/
@@ -117,7 +117,7 @@ H5FL_BLK_EXTERN(type_conv);
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D__compact_fill(H5D_t *dset, hid_t dxpl_id)
+H5D__compact_fill(const 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 */
@@ -297,7 +297,7 @@ H5D__compact_readvv(const H5D_io_info_t *io_info,
     HDassert(io_info);
 
     /* Use the vectorized memory copy routine to do actual work */
-    if((ret_value = H5V_memcpyvv(io_info->u.rbuf, mem_max_nseq, mem_curr_seq, mem_size_arr, mem_offset_arr, io_info->store->compact.buf, dset_max_nseq, dset_curr_seq, dset_size_arr, dset_offset_arr)) < 0)
+    if((ret_value = H5VM_memcpyvv(io_info->u.rbuf, mem_max_nseq, mem_curr_seq, mem_size_arr, mem_offset_arr, io_info->store->compact.buf, dset_max_nseq, dset_curr_seq, dset_size_arr, dset_offset_arr)) < 0)
         HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "vectorized memcpy failed")
 
 done:
@@ -338,7 +338,7 @@ H5D__compact_writevv(const H5D_io_info_t *io_info,
     HDassert(io_info);
 
     /* Use the vectorized memory copy routine to do actual work */
-    if((ret_value = H5V_memcpyvv(io_info->store->compact.buf, dset_max_nseq, dset_curr_seq, dset_size_arr, dset_offset_arr, io_info->u.wbuf, mem_max_nseq, mem_curr_seq, mem_size_arr, mem_offset_arr)) < 0)
+    if((ret_value = H5VM_memcpyvv(io_info->store->compact.buf, dset_max_nseq, dset_curr_seq, dset_size_arr, dset_offset_arr, io_info->u.wbuf, mem_max_nseq, mem_curr_seq, mem_size_arr, mem_offset_arr)) < 0)
         HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "vectorized memcpy failed")
 
     /* Mark the compact dataset's buffer as dirty */
diff --git a/src/H5Dcontig.c b/src/H5Dcontig.c
index 98743ac..e5012ca 100644
--- a/src/H5Dcontig.c
+++ b/src/H5Dcontig.c
@@ -43,7 +43,7 @@
 #include "H5MFprivate.h"	/* File memory management		*/
 #include "H5Oprivate.h"		/* Object headers		  	*/
 #include "H5Pprivate.h"		/* Property lists			*/
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 
 
 /****************/
@@ -192,7 +192,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D__contig_fill(H5D_t *dset, hid_t dxpl_id)
+H5D__contig_fill(const 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 */
@@ -638,7 +638,7 @@ static herr_t
 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 */
+    H5D_contig_readvv_sieve_ud_t *udata = (H5D_contig_readvv_sieve_ud_t *)_udata; /* User data for H5VM_opvv() operator */
     H5F_t *file = udata->file;        /* File for dataset */
     H5D_rdcdc_t *dset_contig = udata->dset_contig; /* Cached information about contiguous data */
     const H5D_contig_storage_t *store_contig = udata->store_contig;    /* Contiguous storage info for this I/O operation */
@@ -804,7 +804,7 @@ done:
 static herr_t
 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 */
+    H5D_contig_readvv_ud_t *udata = (H5D_contig_readvv_ud_t *)_udata; /* User data for H5VM_opvv() operator */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_STATIC
@@ -857,9 +857,9 @@ H5D__contig_readvv(const H5D_io_info_t *io_info,
 
     /* Check if data sieving is enabled */
     if(H5F_HAS_FEATURE(io_info->dset->oloc.file, H5FD_FEAT_DATA_SIEVE)) {
-        H5D_contig_readvv_sieve_ud_t udata;     /* User data for H5V_opvv() operator */
+        H5D_contig_readvv_sieve_ud_t udata;     /* User data for H5VM_opvv() operator */
 
-        /* Set up user data for H5V_opvv() */
+        /* Set up user data for H5VM_opvv() */
         udata.file = io_info->dset->oloc.file;
         udata.dset_contig = &(io_info->dset->shared->cache.contig);
         udata.store_contig = &(io_info->store->contig);
@@ -867,22 +867,22 @@ H5D__contig_readvv(const H5D_io_info_t *io_info,
         udata.dxpl_id = io_info->dxpl_id;
 
         /* Call generic sequence operation routine */
-        if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
+        if((ret_value = H5VM_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)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized sieve buffer read")
     } /* end if */
     else {
-        H5D_contig_readvv_ud_t udata;     /* User data for H5V_opvv() operator */
+        H5D_contig_readvv_ud_t udata;     /* User data for H5VM_opvv() operator */
 
-        /* Set up user data for H5V_opvv() */
+        /* Set up user data for H5VM_opvv() */
         udata.file = io_info->dset->oloc.file;
         udata.dset_addr = io_info->store->contig.dset_addr;
         udata.rbuf = (unsigned char *)io_info->u.rbuf;
         udata.dxpl_id = io_info->dxpl_id;
 
         /* Call generic sequence operation routine */
-        if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
+        if((ret_value = H5VM_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)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized read")
@@ -909,7 +909,7 @@ static herr_t
 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 */
+    H5D_contig_writevv_sieve_ud_t *udata = (H5D_contig_writevv_sieve_ud_t *)_udata; /* User data for H5VM_opvv() operator */
     H5F_t *file = udata->file;        /* File for dataset */
     H5D_rdcdc_t *dset_contig = udata->dset_contig; /* Cached information about contiguous data */
     const H5D_contig_storage_t *store_contig = udata->store_contig;    /* Contiguous storage info for this I/O operation */
@@ -1126,7 +1126,7 @@ done:
 static herr_t
 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 */
+    H5D_contig_writevv_ud_t *udata = (H5D_contig_writevv_ud_t *)_udata; /* User data for H5VM_opvv() operator */
     herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_STATIC
@@ -1178,9 +1178,9 @@ H5D__contig_writevv(const H5D_io_info_t *io_info,
 
     /* Check if data sieving is enabled */
     if(H5F_HAS_FEATURE(io_info->dset->oloc.file, H5FD_FEAT_DATA_SIEVE)) {
-        H5D_contig_writevv_sieve_ud_t udata;    /* User data for H5V_opvv() operator */
+        H5D_contig_writevv_sieve_ud_t udata;    /* User data for H5VM_opvv() operator */
 
-        /* Set up user data for H5V_opvv() */
+        /* Set up user data for H5VM_opvv() */
         udata.file = io_info->dset->oloc.file;
         udata.dset_contig = &(io_info->dset->shared->cache.contig);
         udata.store_contig = &(io_info->store->contig);
@@ -1188,22 +1188,22 @@ H5D__contig_writevv(const H5D_io_info_t *io_info,
         udata.dxpl_id = io_info->dxpl_id;
 
         /* Call generic sequence operation routine */
-        if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
+        if((ret_value = H5VM_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)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized sieve buffer write")
     } /* end if */
     else {
-        H5D_contig_writevv_ud_t udata;     /* User data for H5V_opvv() operator */
+        H5D_contig_writevv_ud_t udata;     /* User data for H5VM_opvv() operator */
 
-        /* Set up user data for H5V_opvv() */
+        /* Set up user data for H5VM_opvv() */
         udata.file = io_info->dset->oloc.file;
         udata.dset_addr = io_info->store->contig.dset_addr;
         udata.wbuf = (const unsigned char *)io_info->u.wbuf;
         udata.dxpl_id = io_info->dxpl_id;
 
         /* Call generic sequence operation routine */
-        if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
+        if((ret_value = H5VM_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)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized read")
diff --git a/src/H5Ddeprec.c b/src/H5Ddeprec.c
index 1999550..04cf032 100644
--- a/src/H5Ddeprec.c
+++ b/src/H5Ddeprec.c
@@ -106,6 +106,30 @@ H5D__init_deprec_interface(void)
     FUNC_LEAVE_NOAPI(H5D_init())
 } /* H5D__init_deprec_interface() */
 
+

+/*--------------------------------------------------------------------------
+NAME
+   H5D__term_deprec_interface -- Terminate interface
+USAGE
+    herr_t H5D__term_deprec_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5D__term_deprec_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
+
+    FUNC_LEAVE_NOAPI(0)
+} /* H5D__term_deprec_interface() */
+
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 

 /*-------------------------------------------------------------------------
diff --git a/src/H5Defl.c b/src/H5Defl.c
index c5cf8e2..38c8ccd 100644
--- a/src/H5Defl.c
+++ b/src/H5Defl.c
@@ -33,7 +33,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5Fprivate.h"		/* Files				*/
 #include "H5HLprivate.h"	/* Local Heaps				*/
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 
 
 /****************/
@@ -425,7 +425,7 @@ done:
 static herr_t
 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 */
+    H5D_efl_readvv_ud_t *udata = (H5D_efl_readvv_ud_t *)_udata; /* User data for H5VM_opvv() operator */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_STATIC
@@ -459,7 +459,7 @@ 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 */
+    H5D_efl_readvv_ud_t udata;  /* User data for H5VM_opvv() operator */
     ssize_t ret_value;          /* Return value (Total size of sequence in bytes) */
 
     FUNC_ENTER_STATIC
@@ -475,12 +475,12 @@ H5D__efl_readvv(const H5D_io_info_t *io_info,
     HDassert(mem_len_arr);
     HDassert(mem_off_arr);
 
-    /* Set up user data for H5V_opvv() */
+    /* Set up user data for H5VM_opvv() */
     udata.efl = &(io_info->store->efl);
     udata.rbuf = (unsigned char *)io_info->u.rbuf;
 
     /* Call generic sequence operation routine */
-    if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
+    if((ret_value = H5VM_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)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized EFL read")
@@ -505,7 +505,7 @@ done:
 static herr_t
 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 */
+    H5D_efl_writevv_ud_t *udata = (H5D_efl_writevv_ud_t *)_udata; /* User data for H5VM_opvv() operator */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_STATIC
@@ -539,7 +539,7 @@ 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 */
+    H5D_efl_writevv_ud_t udata;  /* User data for H5VM_opvv() operator */
     ssize_t ret_value;          /* Return value (Total size of sequence in bytes) */
 
     FUNC_ENTER_STATIC
@@ -555,12 +555,12 @@ H5D__efl_writevv(const H5D_io_info_t *io_info,
     HDassert(mem_len_arr);
     HDassert(mem_off_arr);
 
-    /* Set up user data for H5V_opvv() */
+    /* Set up user data for H5VM_opvv() */
     udata.efl = &(io_info->store->efl);
     udata.wbuf = (const unsigned char *)io_info->u.wbuf;
 
     /* Call generic sequence operation routine */
-    if((ret_value = H5V_opvv(dset_max_nseq, dset_curr_seq, dset_len_arr, dset_off_arr,
+    if((ret_value = H5VM_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)
         HGOTO_ERROR(H5E_DATASET, H5E_CANTOPERATE, FAIL, "can't perform vectorized EFL write")
diff --git a/src/H5Dfill.c b/src/H5Dfill.c
index 2edb363..e682dd6 100644
--- a/src/H5Dfill.c
+++ b/src/H5Dfill.c
@@ -38,7 +38,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5FLprivate.h"	/* Free Lists                           */
 #include "H5Iprivate.h"		/* IDs			  		*/
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 #include "H5WBprivate.h"        /* Wrapped Buffers                      */
 
 
@@ -262,7 +262,7 @@ H5D__fill(const void *fill, const H5T_t *fill_type, void *buf,
                 HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
 
             /* Replicate the file's fill value into the temporary buffer */
-            H5V_array_fill(tmp_buf, fill, src_type_size, (size_t)nelmts);
+            H5VM_array_fill(tmp_buf, fill, src_type_size, (size_t)nelmts);
 
             /* Convert from file's fill value into memory form */
             if(H5T_convert(tpath, src_id, dst_id, (size_t)nelmts, (size_t)0, (size_t)0, tmp_buf, bkg_buf, dxpl_id) < 0)
@@ -494,7 +494,7 @@ H5D__fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
             } /* end else */
 
             /* Replicate the fill value into the cached buffer */
-            H5V_array_fill(fb_info->fill_buf, fill->buf, fb_info->max_elmt_size, fb_info->elmts_per_buf);
+            H5VM_array_fill(fb_info->fill_buf, fill->buf, fb_info->max_elmt_size, fb_info->elmts_per_buf);
         } /* end else */
     } /* end if */
     else {      /* Fill the buffer with the default fill value */
@@ -588,7 +588,7 @@ H5D__fill_refill_vl(H5D_fill_buf_info_t *fb_info, size_t nelmts, hid_t dxpl_id)
 
     /* Replicate the fill value into the cached buffer */
     if(nelmts > 1)
-        H5V_array_fill((void *)((unsigned char *)fb_info->fill_buf + fb_info->mem_elmt_size), fb_info->fill_buf, fb_info->mem_elmt_size, (nelmts - 1));
+        H5VM_array_fill((void *)((unsigned char *)fb_info->fill_buf + fb_info->mem_elmt_size), fb_info->fill_buf, fb_info->mem_elmt_size, (nelmts - 1));
 
     /* Reset the entire background buffer, if necessary */
     if(H5T_path_bkg(fb_info->mem_to_dset_tpath))
diff --git a/src/H5Dint.c b/src/H5Dint.c
index 8ce842b..97c3a1a 100644
--- a/src/H5Dint.c
+++ b/src/H5Dint.c
@@ -66,7 +66,7 @@ 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__init_storage(H5D_t *dataset, hbool_t full_overwrite,
+static herr_t H5D__init_storage(const H5D_t *dataset, hbool_t full_overwrite,
     hsize_t old_dim[], hid_t dxpl_id);
 
 
@@ -109,8 +109,7 @@ 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     0,				/* # of reserved IDs for class */
     (H5I_free_t)H5D_close       /* Callback routine for closing objects of this class */
 }};
@@ -252,6 +251,12 @@ H5D_term_interface(void)
              */
 	    H5I_clear_type(H5I_DATASET, TRUE, FALSE);
 	} else {
+            /* Close public interface */
+            n += H5D__term_pub_interface();
+
+            /* Close deprecated interface */
+            n += H5D__term_deprec_interface();
+
 	    H5I_dec_type_ref(H5I_DATASET);
 	    H5_interface_initialize_g = 0;
 	    n = 1; /*H5I*/
@@ -1579,7 +1584,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(const H5D_t *dset, 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 */
@@ -1742,7 +1747,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5D__init_storage(H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
+H5D__init_storage(const H5D_t *dset, hbool_t full_overwrite, hsize_t old_dim[],
     hid_t dxpl_id)
 {
     herr_t		ret_value = SUCCEED;    /* Return value */
@@ -2358,7 +2363,7 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5D__mark(H5D_t *dataset, hid_t dxpl_id, unsigned flags)
+H5D__mark(const H5D_t *dataset, hid_t UNUSED dxpl_id, unsigned flags)
 {
     herr_t ret_value = SUCCEED;         /* Return value */
 
diff --git a/src/H5Dio.c b/src/H5Dio.c
index 055cdc3..27b5334 100644
--- a/src/H5Dio.c
+++ b/src/H5Dio.c
@@ -59,7 +59,11 @@ static herr_t H5D__pre_write(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_i
 	 hid_t file_space_id, hid_t dxpl_id, 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,
+#ifndef H5_HAVE_PARALLEL
+const
+#endif /* H5_HAVE_PARALLEL */
+    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,
@@ -125,7 +129,6 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
     H5D_t		   *dset = NULL;
     const H5S_t		   *mem_space = NULL;
     const H5S_t		   *file_space = NULL;
-    char                    fake_char;
     herr_t                  ret_value = SUCCEED;  /* Return value */
 
     FUNC_ENTER_API(FAIL)
@@ -164,15 +167,6 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
     else
         if(TRUE != H5P_isa_class(plist_id, H5P_DATASET_XFER))
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms")
-    if(!buf && (NULL == file_space || H5S_GET_SELECT_NPOINTS(file_space) != 0))
-	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no output buffer")
-
-    /* If the buffer is nil, and 0 element is selected, make a fake buffer.
-     * This is for some MPI package like ChaMPIon on NCSA's tungsten which
-     * doesn't support this feature.
-     */
-    if(!buf)
-        buf = &fake_char;
 
     /* read raw data */
     if(H5D__read(dset, mem_type_id, mem_space, file_space, plist_id, buf/*out*/) < 0)
@@ -275,14 +269,15 @@ H5D__pre_write(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
     if(NULL == (plist = (H5P_genplist_t *)H5I_object(dxpl_id)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset transfer property list")
 
+    /* Retrieve the 'direct write' flag */
     if(H5P_get(plist, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &direct_write) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "error getting flag for direct chunk write")
 
     /* Direct chunk write */
     if(direct_write) {
-        uint32_t direct_filters = 0;
+        uint32_t direct_filters;
         hsize_t *direct_offset;
-        size_t   direct_datasize = 0;
+        uint32_t direct_datasize;
 	int      ndims = 0;
 	hsize_t  dims[H5O_LAYOUT_NDIMS];
 	hsize_t  internal_offset[H5O_LAYOUT_NDIMS];
@@ -291,12 +286,11 @@ H5D__pre_write(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
         if(H5D_CHUNKED != dset->shared->layout.type)
 	    HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a chunked dataset")
 
+        /* Retrieve parameters for direct chunk write */
         if(H5P_get(plist, H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_NAME, &direct_filters) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "error getting filter info for direct chunk write")
-
         if(H5P_get(plist, H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_NAME, &direct_offset) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "error getting offset info for direct chunk write")
-
         if(H5P_get(plist, H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_NAME, &direct_datasize) < 0)
             HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "error getting data size for direct chunk write")
 
@@ -305,7 +299,7 @@ H5D__pre_write(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
 	if((ndims = H5S_get_simple_extent_dims(dset->shared->space, dims, NULL)) < 0)
 	    HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "can't retrieve dataspace extent dims")
 
-	for(i=0; i<ndims; i++) {
+	for(i = 0; i < ndims; i++) {
 	    /* Make sure the offset doesn't exceed the dataset's dimensions */
             if(direct_offset[i] > dims[i])
 		HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "offset exceeds dimensions of dataset")
@@ -315,7 +309,7 @@ H5D__pre_write(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
 		HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "offset doesn't fall on chunks's boundary")
 
 	    internal_offset[i] = direct_offset[i]; 
-	}
+	} /* end for */
 	   
 	/* Terminate the offset with a zero */ 
 	internal_offset[ndims] = 0;
@@ -323,10 +317,10 @@ H5D__pre_write(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
 	/* write raw data */
 	if(H5D__chunk_direct_write(dset, dxpl_id, direct_filters, internal_offset, direct_datasize, buf) < 0)
 	    HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "can't write chunk directly")
-    } else {     /* Normal write */
+    } /* end if */
+    else {     /* Normal write */
 	const H5S_t *mem_space = NULL;
 	const H5S_t *file_space = NULL;
-	char        fake_char;
 
         if(mem_space_id < 0 || file_space_id < 0)
 	    HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data space")
@@ -348,20 +342,10 @@ H5D__pre_write(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
 		HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "file selection+offset not within extent")
 	} /* end if */
 
-	if(!buf && (NULL == file_space || H5S_GET_SELECT_NPOINTS(file_space) != 0))
-	    HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no output buffer")
-
-	/* If the buffer is nil, and 0 element is selected, make a fake buffer.
-	 * This is for some MPI package like ChaMPIon on NCSA's tungsten which
-	 * doesn't support this feature.
-	 */
-	if(!buf)
-	    buf = &fake_char;
-
         /* write raw data */
         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")
-    } 
+    } /* end else */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -411,6 +395,7 @@ H5D__read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     hbool_t     io_op_init = FALSE;     /* Whether the I/O op has been initialized */
     H5D_dxpl_cache_t _dxpl_cache;       /* Data transfer property cache buffer */
     H5D_dxpl_cache_t *dxpl_cache = &_dxpl_cache;   /* Data transfer property cache */
+    char        fake_char;              /* Temporary variable for NULL buffer pointers */
     herr_t	ret_value = SUCCEED;	/* Return value	*/
 
     FUNC_ENTER_PACKAGE
@@ -445,6 +430,19 @@ H5D__read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     if(nelmts != (hsize_t)H5S_GET_SELECT_NPOINTS(file_space))
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "src and dest data spaces have different sizes")
 
+    /* Check for a NULL buffer, after the H5S_ALL dataspace selection has been handled */
+    if(NULL == buf) {
+        /* Check for any elements selected (which is invalid) */
+        if(nelmts > 0)
+            HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no output buffer")
+
+	/* If the buffer is nil, and 0 element is selected, make a fake buffer.
+	 * This is for some MPI package like ChaMPIon on NCSA's tungsten which
+	 * doesn't support this feature.
+	 */
+        buf = &fake_char;
+    } /* end if */
+
     /* Make sure that both selections have their extents set */
     if(!(H5S_has_extent(file_space)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file dataspace does not have extent set")
@@ -471,7 +469,7 @@ H5D__read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
 
         /* Attempt to construct projected dataspace for memory dataspace */
         if(H5S_select_construct_projection(mem_space, &projected_mem_space,
-                (unsigned)H5S_GET_EXTENT_NDIMS(file_space), buf, &adj_buf, type_info.dst_type_size) < 0)
+                (unsigned)H5S_GET_EXTENT_NDIMS(file_space), buf, (const void **)&adj_buf, type_info.dst_type_size) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to construct projected memory dataspace")
         HDassert(projected_mem_space);
         HDassert(adj_buf);
@@ -612,6 +610,7 @@ H5D__write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     hbool_t     io_op_init = FALSE;     /* Whether the I/O op has been initialized */
     H5D_dxpl_cache_t _dxpl_cache;       /* Data transfer property cache buffer */
     H5D_dxpl_cache_t *dxpl_cache = &_dxpl_cache;   /* Data transfer property cache */
+    char        fake_char;              /* Temporary variable for NULL buffer pointers */
     herr_t	ret_value = SUCCEED;	/* Return value	*/
 
     FUNC_ENTER_STATIC
@@ -677,6 +676,33 @@ H5D__write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
     if(!mem_space)
         mem_space = file_space;
 
+    if((snelmts = H5S_GET_SELECT_NPOINTS(mem_space)) < 0)
+	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "src dataspace has invalid selection")
+    H5_ASSIGN_OVERFLOW(nelmts, snelmts, hssize_t, hsize_t);
+
+    /* Make certain that the number of elements in each selection is the same */
+    if(nelmts != (hsize_t)H5S_GET_SELECT_NPOINTS(file_space))
+	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "src and dest data spaces have different sizes")
+
+    /* Check for a NULL buffer, after the H5S_ALL dataspace selection has been handled */
+    if(NULL == buf) {
+        /* Check for any elements selected (which is invalid) */
+        if(nelmts > 0)
+            HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no output buffer")
+
+	/* If the buffer is nil, and 0 element is selected, make a fake buffer.
+	 * This is for some MPI package like ChaMPIon on NCSA's tungsten which
+	 * doesn't support this feature.
+	 */
+        buf = &fake_char;
+    } /* end if */
+
+    /* Make sure that both selections have their extents set */
+    if(!(H5S_has_extent(file_space)))
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file dataspace does not have extent set")
+    if(!(H5S_has_extent(mem_space)))
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "memory dataspace does not have extent set")
+
     /* H5S_select_shape_same() has been modified to accept topologically 
      * identical selections with different rank as having the same shape 
      * (if the most rapidly changing coordinates match up), but the I/O 
@@ -697,7 +723,7 @@ H5D__write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
 
         /* Attempt to construct projected dataspace for memory dataspace */
         if(H5S_select_construct_projection(mem_space, &projected_mem_space,
-                (unsigned)H5S_GET_EXTENT_NDIMS(file_space), buf, &adj_buf, type_info.src_type_size) < 0)
+                (unsigned)H5S_GET_EXTENT_NDIMS(file_space), buf, (const void **)&adj_buf, type_info.src_type_size) < 0)
             HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to construct projected memory dataspace")
         HDassert(projected_mem_space);
         HDassert(adj_buf);
@@ -707,20 +733,6 @@ H5D__write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
         buf = adj_buf;
     } /* end if */
 
-    if((snelmts = H5S_GET_SELECT_NPOINTS(mem_space)) < 0)
-	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "src dataspace has invalid selection")
-    H5_ASSIGN_OVERFLOW(nelmts, snelmts, hssize_t, hsize_t);
-
-    /* Make certain that the number of elements in each selection is the same */
-    if(nelmts != (hsize_t)H5S_GET_SELECT_NPOINTS(file_space))
-	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "src and dest data spaces have different sizes")
-
-    /* Make sure that both selections have their extents set */
-    if(!(H5S_has_extent(file_space)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file dataspace does not have extent set")
-    if(!(H5S_has_extent(mem_space)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "memory dataspace does not have extent set")
-
     /* Retrieve dataset properties */
     /* <none needed currently> */
 
@@ -824,7 +836,11 @@ 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,
+#ifndef H5_HAVE_PARALLEL
+const
+#endif /* H5_HAVE_PARALLEL */
+    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_STATIC_NOERR
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index 4d4c2bf..c294e42 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -43,7 +43,7 @@
 #include "H5Oprivate.h"       /* Object headers    */
 #include "H5Pprivate.h"       /* Property lists    */
 #include "H5Sprivate.h"       /* Dataspaces        */
-#include "H5Vprivate.h"       /* Vector            */
+#include "H5VMprivate.h"       /* Vector            */
 
 #ifdef H5_HAVE_PARALLEL
 
@@ -157,12 +157,9 @@ 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, H5P_genplist_t *dx_plist)
 {
-    /* 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;
+    int local_cause = 0;        /* Local reason(s) for breaking collective mode */
+    int global_cause = 0;       /* Global reason(s) for breaking collective mode */
+    htri_t ret_value;           /* Return value */
 
     FUNC_ENTER_PACKAGE
 
@@ -174,51 +171,35 @@ H5D__mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
 
 
     /* For independent I/O, get out quickly and don't try to form consensus */
-    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 */
+    if(io_info->dxpl_cache->xfer_mode == H5FD_MPIO_INDEPENDENT)
+        local_cause |= H5D_MPIO_SET_INDEPENDENT;
+
+    /* Optimized MPI types flag must be set */
+    /* (based on 'HDF5_MPI_OPT_TYPES' environment variable) */
+    if(!H5FD_mpi_opt_types_g)
+        local_cause |= H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED;
 
     /* Don't allow collective operations if datatype conversions need to happen */
-    if(!type_info->is_conv_noop) {
+    if(!type_info->is_conv_noop)
         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) {
+    if(!type_info->is_xform_noop)
         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)))) {
+            && (H5S_SIMPLE == H5S_GET_EXTENT_TYPE(file_space) || H5S_SCALAR == H5S_GET_EXTENT_TYPE(file_space))))
         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_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)) {
+            io_info->dset->shared->layout.type == H5D_CHUNKED))
         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) {
+    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
@@ -228,22 +209,23 @@ 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_cause |= H5D_MPIO_FILTERS;
-        } /* end if */
-    } /* end if */
+    if(io_info->dset->shared->layout.type == H5D_CHUNKED &&
+            io_info->dset->shared->dcpl_cache.pline.nused > 0)
+        local_cause |= H5D_MPIO_FILTERS;
 
-    /* Form consensus opinion among all processes about whether to perform
-     * collective I/O
-     */
-    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 = global_cause > 0 ? FALSE : TRUE;
+    /* Check for independent I/O */
+    if(local_cause & H5D_MPIO_SET_INDEPENDENT)
+        global_cause = local_cause;
+    else {
+        int mpi_code;               /* MPI error code */
 
+        /* Form consensus opinion among all processes about whether to perform
+         * collective I/O
+         */
+        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)
+    } /* end else */
 
-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")
@@ -252,6 +234,10 @@ done:
     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")
 
+    /* Set the return value, based on the global cause */
+    ret_value = global_cause > 0 ? FALSE : TRUE;
+
+done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* H5D__mpio_opt_possible() */
 
@@ -946,15 +932,58 @@ if(H5DEBUG(D))
 
             /* Obtain MPI derived datatype from all individual chunks */
             for(u = 0; u < num_chunk; u++) {
-                /* Disk MPI derived datatype */
+                hsize_t *permute_map = NULL; /* array that holds the mapping from the old, 
+                                                out-of-order displacements to the in-order 
+                                                displacements of the MPI datatypes of the 
+                                                point selection of the file space */
+                hbool_t is_permuted = FALSE;
+
+                /* Obtain disk and memory MPI derived datatype */
+                /* NOTE: The permute_map array can be allocated within H5S_mpio_space_type
+                 *              and will be fed into the next call to H5S_mpio_space_type
+                 *              where it will be freed.
+                 */
                 if(H5S_mpio_space_type(chunk_addr_info_array[u].chunk_info.fspace,
-                        type_info->src_type_size, &chunk_ftype[u], &chunk_mpi_file_counts[u], &(chunk_mft_is_derived_array[u])) < 0)
+                                       type_info->src_type_size, 
+                                       &chunk_ftype[u], /* OUT: datatype created */ 
+                                       &chunk_mpi_file_counts[u], /* OUT */
+                                       &(chunk_mft_is_derived_array[u]), /* OUT */
+                                       TRUE, /* this is a file space,
+                                                so permute the
+                                                datatype if the point
+                                                selections are out of
+                                                order */
+                                       &permute_map,/* OUT: a map to indicate the
+                                                       permutation of points
+                                                       selected in case they
+                                                       are out of order */
+                                       &is_permuted /* OUT */) < 0)
                     HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't create MPI file type")
-
-                /* Buffer MPI derived datatype */
+                /* Sanity check */
+                if(is_permuted)
+                    HDassert(permute_map);
                 if(H5S_mpio_space_type(chunk_addr_info_array[u].chunk_info.mspace,
-                        type_info->dst_type_size, &chunk_mtype[u], &chunk_mpi_mem_counts[u], &(chunk_mbt_is_derived_array[u])) < 0)
+                                       type_info->dst_type_size, &chunk_mtype[u], 
+                                       &chunk_mpi_mem_counts[u], 
+                                       &(chunk_mbt_is_derived_array[u]), 
+                                       FALSE, /* this is a memory
+                                                 space, so if the file
+                                                 space is not
+                                                 permuted, there is no
+                                                 need to permute the
+                                                 datatype if the point
+                                                 selections are out of
+                                                 order*/
+                                       &permute_map, /* IN: the permutation map
+                                                        generated by the
+                                                        file_space selection
+                                                        and applied to the
+                                                        memory selection */
+                                       &is_permuted /* IN */) < 0)
                     HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't create MPI buf type")
+                /* Sanity check */
+                if(is_permuted)
+                    HDassert(!permute_map);
 
                 /* Chunk address relative to the first chunk */
                 chunk_addr_info_array[u].chunk_addr -= ctg_store.contig.dset_addr;
@@ -1309,12 +1338,51 @@ H5D__inter_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
 
     if((file_space != NULL) && (mem_space != NULL)) {
         int  mpi_file_count;         /* Number of file "objects" to transfer */
+        hsize_t *permute_map = NULL; /* array that holds the mapping from the old, 
+                                        out-of-order displacements to the in-order 
+                                        displacements of the MPI datatypes of the 
+                                        point selection of the file space */
+        hbool_t is_permuted = FALSE;
 
         /* Obtain disk and memory MPI derived datatype */
-        if(H5S_mpio_space_type(file_space, type_info->src_type_size, &mpi_file_type, &mpi_file_count, &mft_is_derived) < 0)
+        /* NOTE: The permute_map array can be allocated within H5S_mpio_space_type
+         *              and will be fed into the next call to H5S_mpio_space_type
+         *              where it will be freed.
+         */
+        if(H5S_mpio_space_type(file_space, type_info->src_type_size, 
+                               &mpi_file_type, &mpi_file_count, &mft_is_derived, /* OUT: datatype created */  
+                               TRUE, /* this is a file space, so
+                                        permute the datatype if the
+                                        point selection is out of
+                                        order */
+                               &permute_map, /* OUT: a map to indicate
+                                                the permutation of
+                                                points selected in
+                                                case they are out of
+                                                order */ 
+                               &is_permuted /* OUT */) < 0)
             HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't create MPI file type")
-        if(H5S_mpio_space_type(mem_space, type_info->src_type_size, &mpi_buf_type, &mpi_buf_count, &mbt_is_derived) < 0)
+        /* Sanity check */
+        if(is_permuted)
+            HDassert(permute_map);
+        if(H5S_mpio_space_type(mem_space, type_info->src_type_size, 
+                               &mpi_buf_type, &mpi_buf_count, &mbt_is_derived, /* OUT: datatype created */
+                               FALSE, /* this is a memory space, so if
+                                         the file space is not
+                                         permuted, there is no need to
+                                         permute the datatype if the
+                                         point selections are out of
+                                         order*/
+                               &permute_map /* IN: the permutation map
+                                               generated by the
+                                               file_space selection
+                                               and applied to the
+                                               memory selection */, 
+                               &is_permuted /* IN */) < 0)
             HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't create MPI buffer type")
+        /* Sanity check */
+        if(is_permuted)
+            HDassert(!permute_map);
     } /* end if */
     else {
         /* For non-selection, participate with a none MPI derived datatype, the count is 0.  */
diff --git a/src/H5Dpkg.h b/src/H5Dpkg.h
index 7e6eb4b..5a785a3 100644
--- a/src/H5Dpkg.h
+++ b/src/H5Dpkg.h
@@ -187,7 +187,7 @@ typedef enum H5D_io_op_type_t {
 } H5D_io_op_type_t;
 
 typedef struct H5D_io_info_t {
-    H5D_t *dset;                /* Pointer to dataset being operated on */
+    const H5D_t *dset;          /* Pointer to dataset being operated on */
 #ifndef H5_HAVE_PARALLEL
     const
 #endif /* H5_HAVE_PARALLEL */
@@ -524,6 +524,8 @@ H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_BTREE[1];
 /* Package Private Prototypes */
 /******************************/
 
+H5_DLL herr_t H5D__term_pub_interface(void);
+H5_DLL herr_t H5D__term_deprec_interface(void);
 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,
@@ -531,7 +533,7 @@ H5_DLL H5D_t *H5D__create_named(const H5G_loc_t *loc, const char *name,
     hid_t dapl_id, hid_t dxpl_id);
 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(const H5D_t *dset, hid_t dxpl_id, H5D_time_alloc_t time_alloc,
     hbool_t full_overwrite, hsize_t old_dim[]);
 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);
@@ -544,7 +546,7 @@ 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__mark(const H5D_t *dataset, hid_t dxpl_id, unsigned flags);
 H5_DLL herr_t H5D__flush_real(H5D_t *dataset, hid_t dxpl_id);
 
 /* Internal I/O routines */
@@ -586,7 +588,7 @@ H5_DLL herr_t H5D__layout_oh_write(H5D_t *dataset, hid_t dxpl_id, H5O_t *oh,
 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 herr_t H5D__contig_fill(const 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);
@@ -603,7 +605,7 @@ H5_DLL herr_t H5D__contig_delete(H5F_t *f, hid_t dxpl_id,
 /* Functions that operate on chunked dataset storage */
 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_create(H5D_t *dset /*in,out*/, hid_t dxpl_id);
+H5_DLL herr_t H5D__chunk_create(const 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);
@@ -616,7 +618,7 @@ 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_allocate(const 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,
     const hsize_t *old_dim);
@@ -634,12 +636,14 @@ 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);
+H5_DLL herr_t H5D__chunk_direct_write(const H5D_t *dset, hid_t dxpl_id, uint32_t filters, 
+         hsize_t *offset, uint32_t data_size, const void *buf);
 #ifdef H5D_CHUNK_DEBUG
 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_fill(const 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);
diff --git a/src/H5Dprivate.h b/src/H5Dprivate.h
index 07f512b..9b430ba 100644
--- a/src/H5Dprivate.h
+++ b/src/H5Dprivate.h
@@ -177,8 +177,5 @@ H5_DLL herr_t H5D_chunk_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_ad
 H5_DLL herr_t H5D_btree_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream,
 				int indent, int fwidth, unsigned ndims);
 
-H5_DLL herr_t H5D__chunk_direct_write(const H5D_t *dset, hid_t dxpl_id, uint32_t filters, 
-         hsize_t *offset, size_t data_size, const void *buf);
-
 #endif /* _H5Dprivate_H */
 
diff --git a/src/H5E.c b/src/H5E.c
index 6f13b1a..039c260 100644
--- a/src/H5E.c
+++ b/src/H5E.c
@@ -123,7 +123,6 @@ H5FL_DEFINE_STATIC(H5E_msg_t);
 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 */
 }};
@@ -132,7 +131,6 @@ static const H5I_class_t H5I_ERRCLS_CLS[1] = {{
 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 */
 }};
@@ -141,13 +139,13 @@ static const H5I_class_t H5I_ERRMSG_CLS[1] = {{
 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
  *
@@ -174,7 +172,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_init() */
 
-

+
+
 /*--------------------------------------------------------------------------
  * Function:    H5E_set_default_auto
  *
@@ -212,7 +211,8 @@ H5E_set_default_auto(H5E_t *stk)
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5E_set_default_auto() */
 
-

+
+
 /*--------------------------------------------------------------------------
  * Function:    H5E_init_interface
  *
@@ -267,7 +267,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_init_interface() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_term_interface
  *
@@ -325,6 +326,9 @@ H5E_term_interface(void)
             } /* end if */
 	} /* end if */
         else {
+            /* Close deprecated interface */
+            n += H5E__term_deprec_interface();
+
 	    /* Destroy the error class, message, and stack id groups */
 	    H5I_dec_type_ref(H5I_ERROR_STACK);
 	    H5I_dec_type_ref(H5I_ERROR_CLASS);
@@ -339,7 +343,8 @@ H5E_term_interface(void)
     FUNC_LEAVE_NOAPI(n)
 } /* end H5E_term_interface() */
 
-

+
+
 #ifdef H5_HAVE_THREADSAFE
 /*-------------------------------------------------------------------------
  * Function:	H5E_get_stack
@@ -366,8 +371,12 @@ H5E_get_stack(void)
     estack = (H5E_t *)H5TS_get_thread_local_value(H5TS_errstk_key_g);
 
     if(!estack) {
-        /* no associated value with current thread - create one */
+        /* No associated value with current thread - create one */
+#ifdef H5_HAVE_WIN_THREADS
+        estack = (H5E_t *)LocalAlloc(LPTR, sizeof(H5E_t)); /* Win32 has to use LocalAlloc to match the LocalFree in DllMain */
+#else
         estack = (H5E_t *)H5FL_MALLOC(H5E_t);
+#endif /* H5_HAVE_WIN_THREADS */
         HDassert(estack);
 
         /* Set the thread-specific info */
@@ -386,7 +395,8 @@ H5E_get_stack(void)
 } /* end H5E_get_stack() */
 #endif  /* H5_HAVE_THREADSAFE */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_free_class
  *
@@ -416,7 +426,8 @@ H5E_free_class(H5E_cls_t *cls)
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5E_free_class() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eregister_class
  *
@@ -454,7 +465,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eregister_class() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_register_class
  *
@@ -503,7 +515,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_register_class() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eunregister_class
  *
@@ -539,7 +552,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eunregister_class() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_unregister_class
  *
@@ -574,7 +588,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_unregister_class() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eget_class_name
  *
@@ -609,7 +624,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eget_class_name() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_get_class_name
  *
@@ -647,7 +663,8 @@ H5E_get_class_name(const H5E_cls_t *cls, char *name, size_t size)
     FUNC_LEAVE_NOAPI(len)
 } /* end H5E_get_class_name() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:    H5E_close_msg_cb
  *
@@ -685,7 +702,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_close_msg_cb() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eclose_msg
  *
@@ -718,7 +736,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eclose_msg() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_close_msg
  *
@@ -747,7 +766,8 @@ H5E_close_msg(H5E_msg_t *err)
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5E_close_msg() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Ecreate_msg
  *
@@ -838,7 +858,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_create_msg() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eget_msg
  *
@@ -873,7 +894,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eget_msg() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Ecreate_stack
  *
@@ -910,7 +932,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Ecreate_stack() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eget_current_stack
  *
@@ -946,7 +969,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eget_current_stack() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_get_current_stack
  *
@@ -1023,7 +1047,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_get_current_stack() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eset_current_stack
  *
@@ -1071,7 +1096,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eset_current_stack() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_set_current_stack
  *
@@ -1135,7 +1161,8 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5E_set_current_stack() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eclose_stack
  *
@@ -1173,7 +1200,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eclose_stack() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_close_stack
  *
@@ -1203,7 +1231,8 @@ H5E_close_stack(H5E_t *estack)
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5E_close_stack() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eget_num
  *
@@ -1248,7 +1277,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eget_num() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5E_get_num
  *
@@ -1271,7 +1301,8 @@ H5E_get_num(const H5E_t *estack)
     FUNC_LEAVE_NOAPI((ssize_t)estack->nused)
 } /* end H5E_get_num() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Epop
  *
@@ -1320,7 +1351,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Epop() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Epush2
  *
@@ -1372,6 +1404,11 @@ H5Epush2(hid_t err_stack, const char *file, const char *func, unsigned line,
             HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID")
     } /* end else */
 
+/* Note that the variable-argument parsing for the format is identical in
+ *      the H5E_printf_stack() routine - correct errors and make changes in both
+ *      places. -QAK
+ */
+
     /* Format the description */
     va_start(ap, fmt);
     va_started = TRUE;
@@ -1429,7 +1466,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Epush2() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eclear2
  *
@@ -1471,7 +1509,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eclear2() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eprint2
  *
@@ -1518,7 +1557,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eprint2() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Ewalk2
  *
@@ -1566,7 +1606,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Ewalk2() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eget_auto2
  *
@@ -1622,7 +1663,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eget_auto2() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eset_auto2
  *
@@ -1691,7 +1733,8 @@ done:
     FUNC_LEAVE_API(ret_value)
 } /* end H5Eset_auto2() */
 
-

+
+
 /*-------------------------------------------------------------------------
  * Function:	H5Eauto_is_v2
  *
diff --git a/src/H5Edeprec.c b/src/H5Edeprec.c
index 0d3083b..3e9444b 100644
--- a/src/H5Edeprec.c
+++ b/src/H5Edeprec.c
@@ -34,7 +34,7 @@
 #define H5E_PACKAGE		/*suppress error about including H5Epkg   */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5E_init_deprec_interface
+#define H5_INTERFACE_INIT_FUNC	H5E__init_deprec_interface
 
 
 /***********/
@@ -82,13 +82,12 @@
 /*******************/
 
 
-#ifndef H5_NO_DEPRECATED_SYMBOLS
 

 /*--------------------------------------------------------------------------
 NAME
-   H5E_init_deprec_interface -- Initialize interface-specific information
+   H5E__init_deprec_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5E_init_deprec_interface()
+    herr_t H5E__init_deprec_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -97,13 +96,38 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5E_init_deprec_interface(void)
+H5E__init_deprec_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5E_init())
-} /* H5E_init_deprec_interface() */
+} /* H5E__init_deprec_interface() */
+
+

+/*--------------------------------------------------------------------------
+NAME
+   H5E__term_deprec_interface -- Terminate interface
+USAGE
+    herr_t H5E__term_deprec_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5E__term_deprec_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
 
+    FUNC_LEAVE_NOAPI(0)
+} /* H5E__term_deprec_interface() */
+
+#ifndef H5_NO_DEPRECATED_SYMBOLS
 

 /*-------------------------------------------------------------------------
  * Function:	H5Eget_major
diff --git a/src/H5Epkg.h b/src/H5Epkg.h
index 9a1163a..bfaaf9d 100644
--- a/src/H5Epkg.h
+++ b/src/H5Epkg.h
@@ -132,6 +132,7 @@ H5_DLLVAR H5E_t	H5E_stack_g[1];
 /******************************/
 /* Package Private Prototypes */
 /******************************/
+H5_DLL herr_t H5E__term_deprec_interface(void);
 #ifdef H5_HAVE_THREADSAFE
 H5_DLL H5E_t *H5E_get_stack(void);
 #endif /* H5_HAVE_THREADSAFE */
@@ -146,5 +147,5 @@ H5_DLL herr_t H5E_set_auto(H5E_t *estack, const H5E_auto_op_t *op,
     void *client_data);
 H5_DLL herr_t H5E_pop(H5E_t *err_stack, size_t count);
 
-#endif /* _H5HFpkg_H */
+#endif /* _H5Epkg_H */
 
diff --git a/src/H5F.c b/src/H5F.c
index 127df3c..2413c73 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -77,7 +77,7 @@ typedef struct H5F_olist_t {
         } ptr;
     } file_info;
     size_t     list_index;      /* Current index in open ID array */
-    size_t     max_index;            /* Maximum # of IDs to put into array */
+    size_t     max_nobjs;       /* Maximum # of IDs to put into array */
 } H5F_olist_t;
 
 
@@ -91,8 +91,8 @@ typedef struct H5F_olist_t {
 /********************/
 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,
-                      H5FD_t *lf);
+static H5F_t *H5F_new(H5F_file_t *shared, unsigned flags, hid_t fcpl_id,
+    hid_t fapl_id, H5FD_t *lf);
 static herr_t H5F_build_actual_name(const H5F_t *f, const H5P_genplist_t *fapl,
     const char *name, char ** /*out*/ actual_name);
 static herr_t H5F_dest(H5F_t *f, hid_t dxpl_id, hbool_t flush);
@@ -122,8 +122,7 @@ 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     0,				/* # of reserved IDs for class */
     (H5I_free_t)H5F_close	/* Callback routine for closing objects of this class */
 }};
@@ -521,7 +520,8 @@ H5Fget_obj_ids(hid_t file_id, unsigned types, size_t max_objs, hid_t *oid_list)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a file id")
     if(0 == (types & H5F_OBJ_ALL))
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not an object type")
-    HDassert(oid_list);
+    if(!oid_list)
+        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "object ID list is NULL")
 
     /* Perform the query */
     if(H5F_get_obj_ids(f, types, max_objs, oid_list, TRUE, &obj_id_count) < 0)
@@ -580,7 +580,7 @@ done:
  *---------------------------------------------------------------------------
  */
 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)
+H5F_get_objects(const H5F_t *f, unsigned types, size_t max_nobjs, hid_t *obj_id_list, hbool_t app_ref, size_t *obj_id_count_ptr)
 {
     size_t obj_id_count=0;      /* Number of open IDs */
     H5F_olist_t olist;          /* Structure to hold search results */
@@ -592,10 +592,10 @@ H5F_get_objects(const H5F_t *f, unsigned types, size_t max_index, hid_t *obj_id_
     HDassert(obj_id_count_ptr);
 
     /* Set up search information */
-    olist.obj_id_list  = (max_index==0 ? NULL : obj_id_list);
+    olist.obj_id_list  = (max_nobjs==0 ? NULL : obj_id_list);
     olist.obj_id_count = &obj_id_count;
     olist.list_index   = 0;
-    olist.max_index   = max_index;
+    olist.max_nobjs   = max_nobjs;
 
     /* Determine if we are searching for local or global objects */
     if(types & H5F_OBJ_LOCAL) {
@@ -615,38 +615,54 @@ H5F_get_objects(const H5F_t *f, unsigned types, size_t max_index, hid_t *obj_id_
             HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(1)")
     } /* end if */
 
-    /* Search through dataset IDs to count number of datasets, and put their
+    /* If the caller just wants to count the number of objects (OLIST.MAX_NOBJS is zero),
+     * or the caller wants to get the list of IDs and the list isn't full,
+     * search through dataset IDs to count number of datasets, and put their
      * IDs on the object list */
-    if(types & H5F_OBJ_DATASET) {
-        olist.obj_type = H5I_DATASET;
-        if(H5I_iterate(H5I_DATASET, H5F_get_objects_cb, &olist, app_ref) < 0)
-            HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(2)")
-    } /* end if */
+    if(!olist.max_nobjs || (olist.max_nobjs && olist.list_index<olist.max_nobjs)) { 
+        if (types & H5F_OBJ_DATASET) {
+            olist.obj_type = H5I_DATASET;
+            if(H5I_iterate(H5I_DATASET, H5F_get_objects_cb, &olist, app_ref) < 0)
+                HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(2)")
+        } /* end if */
+    } 
 
-    /* Search through group IDs to count number of groups, and put their
+    /* If the caller just wants to count the number of objects (OLIST.MAX_NOBJS is zero),
+     * or the caller wants to get the list of IDs and the list isn't full,
+     * search through group IDs to count number of groups, and put their
      * IDs on the object list */
-    if(types & H5F_OBJ_GROUP) {
-        olist.obj_type = H5I_GROUP;
-        if(H5I_iterate(H5I_GROUP, H5F_get_objects_cb, &olist, app_ref) < 0)
-            HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(3)")
-    } /* end if */
+    if(!olist.max_nobjs || (olist.max_nobjs && olist.list_index<olist.max_nobjs)) { 
+        if(types & H5F_OBJ_GROUP) {
+            olist.obj_type = H5I_GROUP;
+            if(H5I_iterate(H5I_GROUP, H5F_get_objects_cb, &olist, app_ref) < 0)
+                HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(3)")
+        } /* end if */
+    } 
 
-    /* Search through datatype IDs to count number of named datatypes, and put their
+    /* If the caller just wants to count the number of objects (OLIST.MAX_NOBJS is zero),
+     * or the caller wants to get the list of IDs and the list isn't full,
+     * search through datatype IDs to count number of named datatypes, and put their
      * IDs on the object list */
-    if(types & H5F_OBJ_DATATYPE) {
-        olist.obj_type = H5I_DATATYPE;
-        if(H5I_iterate(H5I_DATATYPE, H5F_get_objects_cb, &olist, app_ref) < 0)
-            HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(4)")
-    } /* end if */
+    if(!olist.max_nobjs || (olist.max_nobjs && olist.list_index<olist.max_nobjs)) { 
+        if(types & H5F_OBJ_DATATYPE) {
+            olist.obj_type = H5I_DATATYPE;
+            if(H5I_iterate(H5I_DATATYPE, H5F_get_objects_cb, &olist, app_ref) < 0)
+                HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(4)")
+        } /* end if */
+    } 
 
-    /* Search through attribute IDs to count number of attributes, and put their
+    /* If the caller just wants to count the number of objects (OLIST.MAX_NOBJS is zero),
+     * or the caller wants to get the list of IDs and the list isn't full,
+     * search through attribute IDs to count number of attributes, and put their
      * IDs on the object list */
-    if(types & H5F_OBJ_ATTR) {
-        olist.obj_type = H5I_ATTR;
-        if(H5I_iterate(H5I_ATTR, H5F_get_objects_cb, &olist, app_ref) < 0)
-            HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(5)")
-    } /* end if */
-
+    if(!olist.max_nobjs || (olist.max_nobjs && olist.list_index<olist.max_nobjs)) {
+        if(types & H5F_OBJ_ATTR) {
+            olist.obj_type = H5I_ATTR;
+            if(H5I_iterate(H5I_ATTR, H5F_get_objects_cb, &olist, app_ref) < 0)
+                HGOTO_ERROR(H5E_FILE, H5E_BADITER, FAIL, "iteration failed(5)")
+        } /* end if */
+    }
+ 
     /* Set the number of objects currently open */
     *obj_id_count_ptr = obj_id_count;
 
@@ -662,8 +678,8 @@ done:
  * 		object is in the file, and either count it or put its ID
  *		on the list.
  *
- * Return:      TRUE if the array of object IDs is filled up.
- *              FALSE otherwise.
+ * Return:      H5_ITER_STOP if the array of object IDs is filled up.
+ *              H5_ITER_CONT otherwise.
  *
  * Programmer:  Raymond Lu
  *              Wednesday, Dec 5, 2001
@@ -674,7 +690,8 @@ static int
 H5F_get_objects_cb(void *obj_ptr, hid_t obj_id, void *key)
 {
     H5F_olist_t *olist = (H5F_olist_t *)key;    /* Alias for search info */
-    int      ret_value = FALSE;    /* Return value */
+    int         ret_value = H5_ITER_CONT;    /* Return value */
+    hbool_t     add_obj = FALSE;
 
     FUNC_ENTER_NOAPI_NOINIT
 
@@ -687,22 +704,7 @@ H5F_get_objects_cb(void *obj_ptr, hid_t obj_id, void *key)
                         (!olist->file_info.ptr.file || (olist->file_info.ptr.file && (H5F_t*)obj_ptr == olist->file_info.ptr.file) ))
                 ||  (!olist->file_info.local &&
                         ( !olist->file_info.ptr.shared || (olist->file_info.ptr.shared && ((H5F_t*)obj_ptr)->shared == olist->file_info.ptr.shared) ))) {
-            /* Add the object's ID to the ID list, if appropriate */
-            if(olist->obj_id_list) {
-                olist->obj_id_list[olist->list_index] = obj_id;
-		olist->list_index++;
-	    }
-
-            /* Increment the number of open objects */
-	    if(olist->obj_id_count)
-	    	(*olist->obj_id_count)++;
-
-            /* Check if we've filled up the array.  Return TRUE only if
-             * we have filled up the array. Otherwise return FALSE(RET_VALUE is
-             * preset to FALSE) because H5I_iterate needs the return value of 
- 	     * FALSE to continue the iteration. */
-            if(olist->max_index>0 && olist->list_index>=olist->max_index)
-                HGOTO_DONE(TRUE)  /* Indicate that the iterator should stop */
+            add_obj = TRUE;
 	}
     } /* end if */
     else { /* either count opened object IDs or put the IDs on the list */
@@ -741,7 +743,7 @@ H5F_get_objects_cb(void *obj_ptr, hid_t obj_id, void *key)
 	    case H5I_ERROR_STACK:
 	    case H5I_NTYPES:
             default:
-                HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "unknown data object")
+                HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5_ITER_ERROR, "unknown data object")
 	} /* end switch */
 
         if((olist->file_info.local &&
@@ -752,25 +754,29 @@ H5F_get_objects_cb(void *obj_ptr, hid_t obj_id, void *key)
                     ((!olist->file_info.ptr.shared && olist->obj_type == H5I_DATATYPE && H5T_is_immutable((H5T_t *)obj_ptr) == FALSE)
                             || (!olist->file_info.ptr.shared && olist->obj_type != H5I_DATATYPE)
                             || (oloc && oloc->file && oloc->file->shared == olist->file_info.ptr.shared)))) {
-            /* Add the object's ID to the ID list, if appropriate */
-            if(olist->obj_id_list) {
-            	olist->obj_id_list[olist->list_index] = obj_id;
-		olist->list_index++;
-	    } /* end if */
-
-            /* Increment the number of open objects */
-	    if(olist->obj_id_count)
-            	(*olist->obj_id_count)++;
-
-            /* Check if we've filled up the array.  Return TRUE only if
-             * we have filled up the array. Otherwise return FALSE(RET_VALUE is
-             * preset to FALSE) because H5I_iterate needs the return value of 
-	     * FALSE to continue iterating. */
-            if(olist->max_index>0 && olist->list_index>=olist->max_index)
-                HGOTO_DONE(TRUE)  /* Indicate that the iterator should stop */
+            add_obj = TRUE;
     	} /* end if */
     } /* end else */
 
+    if(TRUE==add_obj) {
+        /* Add the object's ID to the ID list, if appropriate */
+        if(olist->obj_id_list) {
+            olist->obj_id_list[olist->list_index] = obj_id;
+	    olist->list_index++;
+	} /* end if */
+
+        /* Increment the number of open objects */
+	if(olist->obj_id_count)
+            (*olist->obj_id_count)++;
+
+        /* Check if we've filled up the array.  Return H5_ITER_STOP only if
+         * we have filled up the array. Otherwise return H5_ITER_CONT(RET_VALUE is
+         * preset to H5_ITER_CONT) because H5I_iterate needs the return value of 
+         * H5_ITER_CONT to continue the iteration. */
+        if(olist->max_nobjs>0 && olist->list_index>=olist->max_nobjs)
+            HGOTO_DONE(H5_ITER_STOP)  /* Indicate that the iterator should stop */
+    }
+
 done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5F_get_objects_cb() */
@@ -892,7 +898,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5F_t *
-H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id, H5FD_t *lf)
+H5F_new(H5F_file_t *shared, unsigned flags, hid_t fcpl_id, hid_t fapl_id, H5FD_t *lf)
 {
     H5F_t	*f = NULL, *ret_value;
 
@@ -915,6 +921,7 @@ H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id, H5FD_t *lf)
         if(NULL == (f->shared = H5FL_CALLOC(H5F_file_t)))
             HGOTO_ERROR(H5E_FILE, H5E_NOSPACE, NULL, "can't allocate shared file structure")
 
+        f->shared->flags = flags;
 	f->shared->sohm_addr = HADDR_UNDEF;
 	f->shared->sohm_vers = HDF5_SHAREDHEADER_VERSION;
         for(u = 0; u < NELMTS(f->shared->fs_addr); u++)
@@ -1023,8 +1030,17 @@ H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id, H5FD_t *lf)
 
 done:
     if(!ret_value && f) {
-	if(!shared)
+	if(!shared) {
+            /* Attempt to clean up some of the shared file structures */
+            if(f->shared->efc)
+                if(H5F_efc_destroy(f->shared->efc) < 0)
+                    HDONE_ERROR(H5E_FILE, H5E_CANTRELEASE, NULL, "can't destroy external file cache")
+            if(f->shared->fcpl_id > 0)
+                if(H5I_dec_ref(f->shared->fcpl_id) < 0)
+                    HDONE_ERROR(H5E_FILE, H5E_CANTDEC, NULL, "can't close property list")
+
             f->shared = H5FL_FREE(H5F_file_t, f->shared);
+        } /* end if */
 	f = H5FL_FREE(H5F_t, f);
     } /* end if */
 
@@ -1310,7 +1326,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id,
 	    HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "file is already open for read-only")
 
         /* Allocate new "high-level" file struct */
-        if((file = H5F_new(shared, fcpl_id, fapl_id, NULL)) == NULL)
+        if((file = H5F_new(shared, flags, fcpl_id, fapl_id, NULL)) == NULL)
             HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to create new file object")
     } /* end if */
     else {
@@ -1331,25 +1347,18 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id,
             } /* end if */
         } /* end if */
 
-        if(NULL == (file = H5F_new(NULL, fcpl_id, fapl_id, lf)))
+        if(NULL == (file = H5F_new(NULL, flags, fcpl_id, fapl_id, lf)))
             HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to create new file object")
-        file->shared->flags = flags;
     } /* end else */
 
+    /* Retain the name the file was opened with */
+    file->open_name = H5MM_xstrdup(name);
+
     /* Short cuts */
     shared = file->shared;
     lf = shared->lf;
 
     /*
-     * The intent at the top level file struct are not necessarily the same as
-     * the flags at the bottom.	 The top level describes how the file can be
-     * accessed through the HDF5 library.  The bottom level describes how the
-     * file can be accessed through the C library.
-     */
-    file->intent = flags;
-    file->open_name = H5MM_xstrdup(name);
-
-    /*
      * Read or write the file superblock, depending on whether the file is
      * empty or not.
      */
@@ -2102,12 +2111,9 @@ H5Freopen(hid_t file_id)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file")
 
     /* Get a new "top level" file struct, sharing the same "low level" file struct */
-    if(NULL == (new_file = H5F_new(old_file->shared, H5P_FILE_CREATE_DEFAULT, H5P_FILE_ACCESS_DEFAULT, NULL)))
+    if(NULL == (new_file = H5F_new(old_file->shared, 0, H5P_FILE_CREATE_DEFAULT, H5P_FILE_ACCESS_DEFAULT, NULL)))
 	HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to reopen file")
 
-    /* Keep old file's read/write intent in new file */
-    new_file->intent = old_file->intent;
-
     /* Duplicate old file's names */
     new_file->open_name = H5MM_xstrdup(old_file->open_name);
     new_file->actual_name = H5MM_xstrdup(old_file->actual_name);
diff --git a/src/H5FD.c b/src/H5FD.c
index 85d9266..a261818 100644
--- a/src/H5FD.c
+++ b/src/H5FD.c
@@ -116,8 +116,7 @@ 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     0,				/* # of reserved IDs for class */
     (H5I_free_t)H5FD_free_cls	/* Callback routine for closing objects of this class */
 }};
@@ -231,7 +230,6 @@ H5FD_term_interface(void)
                 H5FD_multi_term();
 #ifdef H5_HAVE_PARALLEL
                 H5FD_mpio_term();
-                H5FD_mpiposix_term();
 #endif /* H5_HAVE_PARALLEL */
             } /* end if */
 	} else {
diff --git a/src/H5FDcore.c b/src/H5FDcore.c
index 7721f12..7c7dd39 100644
--- a/src/H5FDcore.c
+++ b/src/H5FDcore.c
@@ -25,19 +25,26 @@
 /* Interface initialization */
 #define H5_INTERFACE_INIT_FUNC  H5FD_core_init_interface
 
-
 #include "H5private.h"      /* Generic Functions            */
 #include "H5Eprivate.h"     /* Error handling               */
 #include "H5Fprivate.h"     /* File access                  */
 #include "H5FDprivate.h"    /* File drivers                 */
 #include "H5FDcore.h"       /* Core file driver             */
+#include "H5FLprivate.h"    /* Free lists                   */
 #include "H5Iprivate.h"     /* IDs                          */
 #include "H5MMprivate.h"    /* Memory management            */
 #include "H5Pprivate.h"     /* Property lists               */
+#include "H5SLprivate.h"    /* Skip lists                   */
 
 /* The driver identification number, initialized at runtime */
 static hid_t H5FD_CORE_g = 0;
 
+/* The skip list node type.  Represents a region in the file. */
+typedef struct H5FD_core_region_t {
+    haddr_t start;              /* Start address of the region          */
+    haddr_t end;                /* End address of the region            */
+} H5FD_core_region_t;
+
 /* The description of a file belonging to this driver. The 'eoa' and 'eof'
  * determine the amount of hdf5 address space in use and the high-water mark
  * of the file (the current size of the underlying memory).
@@ -50,6 +57,7 @@ typedef struct H5FD_core_t {
     haddr_t eof;                /* current allocated size               */
     size_t  increment;          /* multiples for mem allocation         */
     hbool_t backing_store;      /* write to file name on flush          */
+    size_t  bstore_page_size;   /* backing store page size              */
     int     fd;                 /* backing store file descriptor        */
     /* Information for determining uniqueness of a file with a backing store */
 #ifndef H5_HAVE_WIN32_API
@@ -85,6 +93,7 @@ typedef struct H5FD_core_t {
 #endif /* H5_HAVE_WIN32_API */
     hbool_t dirty;                              /* changes not saved?       */
     H5FD_file_image_callbacks_t fi_callbacks;   /* file image callbacks     */
+    H5SL_t *dirty_list;                         /* dirty parts of the file  */
 } H5FD_core_t;
 
 /* Driver-specific file access properties */
@@ -117,6 +126,9 @@ typedef struct H5FD_core_fapl_t {
                                 (size_t)((A)+(Z))<(size_t)(A))
 
 /* Prototypes */
+static herr_t H5FD_core_add_dirty_region(H5FD_core_t *file, haddr_t start, haddr_t end);
+static herr_t H5FD_core_destroy_dirty_list(H5FD_core_t *file);
+static herr_t H5FD_core_write_to_bstore(H5FD_core_t *file, haddr_t addr, size_t size);
 static void *H5FD_core_fapl_get(H5FD_t *_file);
 static H5FD_t *H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
             haddr_t maxaddr);
@@ -168,6 +180,251 @@ static const H5FD_class_t H5FD_core_g = {
     H5FD_FLMAP_DICHOTOMY        /* fl_map               */
 };
 
+/* Define a free list to manage the region type */
+H5FL_DEFINE(H5FD_core_region_t);
+
+

+/*-------------------------------------------------------------------------
+ * Function:    H5FD_core_add_dirty_region
+ *
+ * Purpose:     Add a new dirty region to the list for later flushing
+ *              to the backing store.
+ *
+ * Return:      SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5FD_core_add_dirty_region(H5FD_core_t *file, haddr_t start, haddr_t end)
+{
+    H5FD_core_region_t *b_item  = NULL;
+    H5FD_core_region_t *a_item  = NULL;
+    H5FD_core_region_t *item    = NULL;
+    haddr_t     b_addr          = 0;
+    haddr_t     a_addr          = 0;
+    hbool_t     create_new_node = TRUE;
+    herr_t      ret_value       = SUCCEED;
+#ifdef DER
+    hbool_t     was_adjusted    = FALSE;
+#endif
+
+    FUNC_ENTER_NOAPI_NOINIT
+
+    HDassert(file);
+    HDassert(file->dirty_list);
+    HDassert(start <= end);
+
+#ifdef DER
+fprintf(stderr, "Add region: (%llu, %llu)\n", start, end);
+#endif
+
+    /* Adjust the dirty region to the nearest block boundaries */
+    if(start % file->bstore_page_size != 0) {
+        start = (start / file->bstore_page_size) * file->bstore_page_size;
+#ifdef DER
+        was_adjusted = TRUE;
+#endif
+    }
+    if(end % file->bstore_page_size != (file->bstore_page_size - 1)) {
+        end = (((end / file->bstore_page_size) + 1) * file->bstore_page_size) - 1;
+        if(end > file->eof){
+#ifdef DER
+fprintf(stderr, "Adjusted to EOF\n");
+#endif
+            end = file->eof - 1;
+        }
+#ifdef DER
+        was_adjusted = TRUE;
+#endif
+    }
+
+#ifdef DER
+if(was_adjusted)
+    fprintf(stderr, "Adjusted region: (%llu, %llu)\n", start, end);
+#endif
+
+    /* Get the regions before and after the intended insertion point */
+    b_addr = start +1;
+    a_addr = end + 2;
+    b_item = (H5FD_core_region_t *)H5SL_less(file->dirty_list, &b_addr);
+    a_item = (H5FD_core_region_t *)H5SL_less(file->dirty_list, &a_addr);
+
+    /* Check to see if we need to extend the upper end of the NEW region */
+    if(a_item) {
+        if(start < a_item->start && end < a_item->end) {
+
+            /* Extend the end of the NEW region to match the existing AFTER region */
+            end = a_item->end;
+        }
+    }
+    /* Attempt to extend the PREV region */
+    if(b_item) {
+        if(start <= b_item->end + 1) {
+
+            /* Need to set this for the delete algorithm */
+            start = b_item->start;
+
+            /* We won't need to insert a new node since we can
+             * just update an existing one instead.
+             */
+            create_new_node = FALSE;
+        }
+    }
+
+    /* Remove any old nodes that are no longer needed */
+    while(a_item && a_item->start > start) {
+
+        H5FD_core_region_t *less;
+        haddr_t key = a_item->start - 1;
+
+        /* Save the previous node before we trash this one */
+        less = (H5FD_core_region_t *)H5SL_less(file->dirty_list, &key);
+
+        /* Delete this node */
+        a_item = (H5FD_core_region_t *)H5SL_remove(file->dirty_list, &a_item->start);
+        a_item = H5FL_FREE(H5FD_core_region_t, a_item);
+
+        /* Set up to check the next node */
+        if(less)
+            a_item = less;
+    }
+
+    /* Insert the new node */
+    if(create_new_node) {
+        if(NULL == (item = (H5FD_core_region_t *)H5SL_search(file->dirty_list, &start))) {
+            /* Ok to insert.  No pre-existing node with that key. */
+            item = (H5FD_core_region_t *)H5FL_CALLOC(H5FD_core_region_t);
+            item->start = start;
+            item->end = end;
+            if(H5SL_insert(file->dirty_list, item, &item->start) < 0)
+                HGOTO_ERROR(H5E_SLIST, H5E_CANTINSERT, FAIL, "can't insert new dirty region: (%llu, %llu)\n", start, end)
+        }
+        else {
+            /* Store the new item endpoint if it's bigger */
+            item->end = (item->end < end) ? end : item->end;
+        }
+    }
+    else {
+        /* Update the size of the before region */
+        if(b_item->end < end)
+            b_item->end = end;
+    }
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_core_add_dirty_region() */
+
+

+/*-------------------------------------------------------------------------
+ * Function:    H5FD_core_destroy_dirty_list
+ *
+ * Purpose:     Completely destroy the dirty list.
+ *
+ * Return:      SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5FD_core_destroy_dirty_list(H5FD_core_t *file)
+{
+    herr_t ret_value = SUCCEED;
+
+    FUNC_ENTER_NOAPI_NOINIT
+
+    HDassert(file);
+
+    /* Destroy the list, including any remaining list elements */
+    if(file->dirty_list) {
+        H5FD_core_region_t *region = NULL;
+
+#ifdef DER
+{
+size_t count = H5SL_count(file->dirty_list);
+if(count != 0)
+    fprintf(stderr, "LIST NOT EMPTY AT DESTROY\n");
+}
+#endif
+        while(NULL != (region = (H5FD_core_region_t *)H5SL_remove_first(file->dirty_list)))
+            region = H5FL_FREE(H5FD_core_region_t, region);
+
+        if(H5SL_close(file->dirty_list) < 0)
+            HGOTO_ERROR(H5E_SLIST, H5E_CLOSEERROR, FAIL, "can't close core vfd dirty list")
+        file->dirty_list = NULL;
+    }
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_core_destroy_dirty_list() */
+
+

+/*-------------------------------------------------------------------------
+ * Function:    H5FD_core_write_to_bstore
+ *
+ * Purpose:     Write data to the backing store.
+ *
+ * Return:      SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t H5FD_core_write_to_bstore(H5FD_core_t *file, haddr_t addr, size_t size)
+{
+    unsigned char  *ptr         = file->mem + addr;     /* mutable pointer into the
+                                                         * buffer (can't change mem)
+                                                         */
+    herr_t          ret_value   = SUCCEED;              /* Return value */
+
+    FUNC_ENTER_NOAPI_NOINIT
+
+    HDassert(file);
+
+    /* Write to backing store */
+    if((off_t)addr != HDlseek(file->fd, (off_t)addr, SEEK_SET))
+        HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "error seeking in backing store")
+
+    while (size > 0) {
+
+        h5_posix_io_t       bytes_in        = 0;    /* # of bytes to write  */
+        h5_posix_io_ret_t   bytes_wrote     = -1;   /* # of bytes written   */
+
+        /* Trying to write more bytes than the return type can handle is
+         * undefined behavior in POSIX.
+         */
+        if(size > H5_POSIX_MAX_IO_BYTES)
+            bytes_in = H5_POSIX_MAX_IO_BYTES;
+        else
+            bytes_in = (h5_posix_io_t)size;
+
+#ifdef DER
+fprintf(stderr, "\nNEW\n");
+#endif
+        do {
+            bytes_wrote = HDwrite(file->fd, ptr, bytes_in);
+#ifdef DER
+fprintf(stderr, "bytes wrote: %lu\n", bytes_wrote);
+#endif
+        } 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_WRITEERROR, FAIL, "write to backing store failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', ptr = %p, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->name, file->fd, myerrno, HDstrerror(myerrno), ptr, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (unsigned long long)myoffset);
+        } /* end if */
+
+        HDassert(bytes_wrote > 0);
+        HDassert((size_t)bytes_wrote <= size);
+
+        size -= (size_t)bytes_wrote;
+        ptr = (unsigned char *)ptr + bytes_wrote;
+
+    } /* end while */
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+
+} /* end H5FD_core_write_to_bstore() */
+
 

 /*-------------------------------------------------------------------------
  * Function:    H5FD_core_init_interface
@@ -564,6 +821,40 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
         } /* end if */
     } /* end if */
 
+    /* Set up write tracking if the backing store is on */
+    file->dirty_list = NULL;
+    if(fa->backing_store) {
+        hbool_t write_tracking_flag = FALSE;    /* what the user asked for */
+        hbool_t use_write_tracking = FALSE;     /* what we're actually doing */
+
+        /* Get the write tracking flag */
+        if(H5P_get(plist, H5F_ACS_CORE_WRITE_TRACKING_FLAG_NAME, &write_tracking_flag) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get core VFD write tracking flag");
+
+        /* Get the page size */
+        if(H5P_get(plist, H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_NAME, &(file->bstore_page_size)) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get core VFD write tracking page size");
+
+        /* default is to have write tracking OFF for create (hence the check to see
+         * if the user explicitly set a page size) and ON with the default page size
+         * on open (when not read-only).
+         */
+        /* Only use write tracking if the file is open for writing */
+        use_write_tracking = 
+            TRUE == write_tracking_flag         /* user asked for write tracking */
+            && !(o_flags & O_RDONLY)            /* file is open for writing (i.e. not read-only) */
+            && file->bstore_page_size != 0;     /* page size is not zero */
+
+        /* initialize the dirty list */
+        if(use_write_tracking) {
+            if(NULL == (file->dirty_list = H5SL_create(H5SL_TYPE_HADDR, NULL)))
+                HGOTO_ERROR(H5E_SLIST, H5E_CANTCREATE, NULL, "can't create core vfd dirty region list");
+#ifdef DER
+fprintf(stderr, "\n");
+#endif
+        } /* end if */
+    } /* end if */
+
     /* Set return value */
     ret_value = (H5FD_t *)file;
 
@@ -602,7 +893,12 @@ H5FD_core_close(H5FD_t *_file)
 
     /* Flush any changed buffers */
     if(H5FD_core_flush(_file, (hid_t)-1, TRUE) < 0)
-        HGOTO_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "unable to flush file")
+        HGOTO_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "unable to flush core vfd backing store")
+
+    /* Destroy the dirty region list */
+    if(file->dirty_list)
+        if(H5FD_core_destroy_dirty_list(file) != SUCCEED)
+            HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL, "unable to free core vfd dirty region list")
 
     /* Release resources */
     if(file->fd >= 0)
@@ -1023,6 +1319,14 @@ H5FD_core_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had
         file->eof = new_eof;
     } /* end if */
 
+    /* Add the buffer region to the dirty list if using that optimization */
+    if(file->dirty_list) {
+        haddr_t start = addr;
+        haddr_t end = addr + (haddr_t)size - 1;
+        if(H5FD_core_add_dirty_region(file, start, end) != SUCCEED)
+            HGOTO_ERROR(H5E_VFL, H5E_CANTINSERT, FAIL, "unable to add core VFD dirty region during write call - addresses: start=%llu end=%llu", start, end)
+    }
+
     /* Write from BUF to memory */
     HDmemcpy(file->mem + addr, buf, size);
 
@@ -1057,45 +1361,50 @@ H5FD_core_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
 
     /* Write to backing store */
     if (file->dirty && file->fd >= 0 && file->backing_store) {
-        haddr_t size = file->eof;
-        unsigned char *ptr = file->mem;
 
-        if(0 != HDlseek(file->fd, (off_t)0, SEEK_SET))
-            HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "error seeking in backing store")
-        
-        while (size > 0) {
+        /* Use the dirty list, if available */
+        if(file->dirty_list) {
+            H5FD_core_region_t *item = NULL;
+            size_t size;
 
-            h5_posix_io_t       bytes_in        = 0;    /* # of bytes to write  */
-            h5_posix_io_ret_t   bytes_wrote     = -1;   /* # of bytes written   */ 
+#ifdef DER
+    fprintf(stderr, "FLUSHING. DIRTY LIST:\n");
+#endif
+            while(NULL != (item = (H5FD_core_region_t *)H5SL_remove_first(file->dirty_list))) {
 
-            /* Trying to write more bytes than the return type can handle is
-             * undefined behavior in POSIX.
-             */
-            if(size > H5_POSIX_MAX_IO_BYTES)
-                bytes_in = H5_POSIX_MAX_IO_BYTES;
-            else
-                bytes_in = (h5_posix_io_t)size;
-
-            do {
-                bytes_wrote = HDwrite(file->fd, ptr, 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_WRITEERROR, FAIL, "write to backing store failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', ptr = %p, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->name, file->fd, myerrno, HDstrerror(myerrno), ptr, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (unsigned long long)myoffset);
-            } /* end if */
-            
-            HDassert(bytes_wrote > 0);
-            HDassert((size_t)bytes_wrote <= size);
+                /* The file may have been truncated, so check for that
+                 * and skip or adjust as necessary.
+                 */
+                if(item->start < file->eof) {
+                    if(item->end >= file->eof)
+                        item->end = file->eof - 1;
+                    size = (size_t)((item->end - item->start) + 1);
+#ifdef DER
+fprintf(stderr, "(%llu, %llu : %lu)\n", item->start, item->end, size);
+#endif
+                    if(H5FD_core_write_to_bstore(file, item->start, size) != SUCCEED)
+                        HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, "unable to write to backing store")
+                } /* end if */
+                
+                item = H5FL_FREE(H5FD_core_region_t, item);
+            } /* end while */
+
+ 
+#ifdef DER
+fprintf(stderr, "EOF: %llu\n", file->eof);
+fprintf(stderr, "EOA: %llu\n", file->eoa);
+if(file->eoa > file->eof)
+    fprintf(stderr, "*** EOA BADNESS ***\n");
+fprintf(stderr, "\n");
+#endif
+        }
+        /* Otherwise, write the entire file out at once */
+        else {
+            if(H5FD_core_write_to_bstore(file, (haddr_t)0, (size_t)file->eof) != SUCCEED)
+                HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, "unable to write to backing store")
 
-            size -= (size_t)bytes_wrote;
-            ptr = (unsigned char *)ptr + bytes_wrote;
-            
         } /* end while */
-        
+
         file->dirty = FALSE;
     }
 
@@ -1215,10 +1524,14 @@ H5FD_core_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t closing)
                  * 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
+#endif /* H5_VMS */
                 if(-1 == HDftruncate(file->fd, (HDoff_t)new_eof))
                     HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
 #endif /* H5_HAVE_WIN32_API */
+
+#ifdef DER
+fprintf(stderr, "OLD: Truncated to: %llu\n", file->eoa);
+#endif
             } /* end if */
 
             /* Update the eof value */
@@ -1229,3 +1542,4 @@ H5FD_core_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t closing)
 done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5FD_core_truncate() */
+
diff --git a/src/H5FDmpi.h b/src/H5FDmpi.h
index dcb8df9..784fe70 100644
--- a/src/H5FDmpi.h
+++ b/src/H5FDmpi.h
@@ -57,7 +57,6 @@ typedef enum H5FD_mpio_collective_opt_t {
 
 /* Include all the MPI VFL headers */
 #include "H5FDmpio.h"           /* MPI I/O file driver			*/
-#include "H5FDmpiposix.h"       /* MPI/posix I/O file driver            */
 
 #endif /* H5FDmpi_H */
 
diff --git a/src/H5FDmpio.c b/src/H5FDmpio.c
index 2d73ec0..2c97282 100644
--- a/src/H5FDmpio.c
+++ b/src/H5FDmpio.c
@@ -44,6 +44,10 @@
  */
 static hid_t H5FD_MPIO_g = 0;
 
+/* Whether to allow collective I/O operations */
+/* (Value can be set from environment variable also) */
+hbool_t H5FD_mpi_opt_types_g = TRUE;
+
 /*
  * The view is set to this value
  */
@@ -187,51 +191,54 @@ H5FD_mpio_init_interface(void)
  *    library.
  *
  * Return:  Success:  The driver ID for the mpio driver.
- *
  *    Failure:  Negative.
  *
  * Programmer:  Robb Matzke
  *              Thursday, August 5, 1999
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 hid_t
 H5FD_mpio_init(void)
 {
 #ifdef H5FDmpio_DEBUG
-    static int H5FD_mpio_Debug_inited=0;
+    static int H5FD_mpio_Debug_inited = 0;
 #endif /* H5FDmpio_DEBUG */
-    hid_t ret_value;          /* Return value */
+    const char *s;              /* String for environment variables */
+    hid_t ret_value;        	/* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
-    if (H5I_VFL!=H5I_get_type(H5FD_MPIO_g))
-        H5FD_MPIO_g = H5FD_register((const H5FD_class_t *)&H5FD_mpio_g,sizeof(H5FD_class_mpi_t),FALSE);
+    /* Register the MPI-IO VFD, if it isn't already */
+    if(H5I_VFL != H5I_get_type(H5FD_MPIO_g))
+        H5FD_MPIO_g = H5FD_register((const H5FD_class_t *)&H5FD_mpio_g, sizeof(H5FD_class_mpi_t), FALSE);
+
+    /* Allow MPI buf-and-file-type optimizations? */
+    s = HDgetenv("HDF5_MPI_OPT_TYPES");
+    if(s && HDisdigit(*s))
+        H5FD_mpi_opt_types_g = (hbool_t)HDstrtol(s, NULL, 0);
 
 #ifdef H5FDmpio_DEBUG
-    if (!H5FD_mpio_Debug_inited)
-    {
-  /* set debug mask */
-  /* Should this be done in H5F global initialization instead of here? */
-        const char *s = HDgetenv ("H5FD_mpio_Debug");
-        if (s) {
-      while (*s){
-    H5FD_mpio_Debug[(int)*s]++;
-    s++;
-      }
-        }
-  H5FD_mpio_Debug_inited++;
-    }
+    if(!H5FD_mpio_Debug_inited) {
+        /* Retrieve MPI-IO debugging environment variable */
+        s = HDgetenv("H5FD_mpio_Debug");
+        if(s) {
+            /* Set debug mask */
+	    while(*s) {
+		H5FD_mpio_Debug[(int)*s]++;
+		s++;
+	    } /* end while */
+        } /* end if */
+        H5FD_mpio_Debug_inited++;
+    } /* end if */
 #endif /* H5FDmpio_DEBUG */
 
     /* Set return value */
-    ret_value=H5FD_MPIO_g;
+    ret_value = H5FD_MPIO_g;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-}
+} /* end H5FD_mpio_init() */
 
 

 /*---------------------------------------------------------------------------
diff --git a/src/H5FDmpio.h b/src/H5FDmpio.h
index f1a68a4..1d91cc3 100644
--- a/src/H5FDmpio.h
+++ b/src/H5FDmpio.h
@@ -22,14 +22,14 @@
 #ifndef H5FDmpio_H
 #define H5FDmpio_H
 
+/* Macros */
+
 #ifdef H5_HAVE_PARALLEL
 #   define H5FD_MPIO	(H5FD_mpio_init())
 #else
 #   define H5FD_MPIO	(-1)
 #endif /* H5_HAVE_PARALLEL */
 
-/* Macros */
-
 #ifdef H5_HAVE_PARALLEL
 /*Turn on H5FDmpio_debug if H5F_DEBUG is on */
 #ifdef H5F_DEBUG
@@ -38,6 +38,10 @@
 #endif
 #endif
 
+/* Global var whose value comes from environment variable */
+/* (Defined in H5FDmpio.c) */
+H5_DLLVAR hbool_t H5FD_mpi_opt_types_g;
+
 /* Function prototypes */
 #ifdef __cplusplus
 extern "C" {
diff --git a/src/H5FDmpiposix.c b/src/H5FDmpiposix.c
deleted file mode 100644
index f66b244..0000000
--- a/src/H5FDmpiposix.c
+++ /dev/null
@@ -1,1486 +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.     *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/*
- * Programmer:  Quincey Koziol <koziol at ncsa.uiuc.ed>
- *              Thursday, July 11, 2002
- *
- * Purpose:  This is a "combination" MPI-2 and posix I/O driver.
- *              It uses MPI for coordinating the actions of several processes
- *              and posix I/O calls to do the actual I/O to the disk.
- *
- *              This driver was derived from the H5FDmpio.c driver and may
- *              share bugs/quirks/etc.
- *
- * Limitations:
- *              There is no "collective" I/O mode with this driver.
- *
- *              This will almost certainly _not_ work correctly for files
- *              accessed on distributed parallel systems with the file located
- *              on a non-parallel filesystem.
- *
- */
-
-/* Interface initialization */
-#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               */
-
-/* Features:
- *   H5_HAVE_GPFS   -- issue gpfs_fcntl() calls to hopefully improve
- *                     performance when accessing files on a GPFS
- *                     file system.
- *
- *   REPORT_IO      -- if set then report all POSIX file calls to stderr.
- *
- */
-/* #define REPORT_IO */
-
-#ifdef H5_HAVE_GPFS
-#   include <gpfs_fcntl.h>
-#endif
-
-#ifdef H5_HAVE_PARALLEL
-
-/*
- * The driver identification number, initialized at runtime if H5_HAVE_PARALLEL
- * is defined. This allows applications to still have the H5FD_MPIPOSIX
- * "constants" in their source code (it also makes this file strictly ANSI
- * compliant when H5_HAVE_PARALLEL isn't defined)
- */
-static hid_t H5FD_MPIPOSIX_g = 0;
-
-/*
- * 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.
- */
-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            */
-    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            */
-#endif
-    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.  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   */
-#ifdef H5_VMS
-    ino_t           inode[3];   /* file i-node number   */
-#else
-    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
-     */
-    DWORD           nFileIndexLow;
-    DWORD           nFileIndexHigh;
-    DWORD           dwVolumeSerialNumber;
-    
-    HANDLE          hFile;      /* Native windows file handle */
-#endif  /* H5_HAVE_WIN32_API */
-} H5FD_mpiposix_t;
-
-/*
- * These macros check for overflow of various quantities.  These macros
- * 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.
- *
- * 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.
- */
-#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);
-static void *H5FD_mpiposix_fapl_copy(const void *_old_fa);
-static herr_t H5FD_mpiposix_fapl_free(void *_fa);
-static H5FD_t *H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
-            haddr_t maxaddr);
-static herr_t H5FD_mpiposix_close(H5FD_t *_file);
-static int H5FD_mpiposix_cmp(const H5FD_t *_f1, const H5FD_t *_f2);
-static herr_t H5FD_mpiposix_query(const H5FD_t *_f1, unsigned long *flags);
-static haddr_t H5FD_mpiposix_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type);
-static herr_t H5FD_mpiposix_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr);
-static haddr_t H5FD_mpiposix_get_eof(const H5FD_t *_file);
-static herr_t  H5FD_mpiposix_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle);
-static herr_t H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
-        size_t size, void *buf);
-static herr_t H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
-        size_t size, const void *buf);
-static herr_t H5FD_mpiposix_truncate(H5FD_t *_file, hid_t dxpl_id, hbool_t closing);
-static int H5FD_mpiposix_mpi_rank(const H5FD_t *_file);
-static int H5FD_mpiposix_mpi_size(const H5FD_t *_file);
-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         */
-} 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_DICHOTOMY            /* fl_map           */
-    },  /* End of superclass information */
-    H5FD_mpiposix_mpi_rank,         /* get_rank         */
-    H5FD_mpiposix_mpi_size,         /* get_size         */
-    H5FD_mpiposix_communicator      /* get_comm         */
-};
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_init_interface
- *
- * Purpose:     Initializes any interface-specific data or routines. 
- *
- * Return:      Success:    The driver ID for the mpiposix driver.
- *              Failure:    Negative.
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_init_interface(void)
-{
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    FUNC_LEAVE_NOAPI(H5FD_mpiposix_init())
-} /* H5FD_mpiposix_init_interface() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_init
- *
- * Purpose:     Initialize this driver by registering the driver with the
- *              library.
- *
- * Return:      Success:    The driver ID for the mpiposix driver.
- *              Failure:    Negative.
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-hid_t
-H5FD_mpiposix_init(void)
-{
-    hid_t ret_value = H5FD_MPIPOSIX_g;    /* Return value */
-
-    FUNC_ENTER_NOAPI(FAIL)
-
-    if(H5I_VFL != H5I_get_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;
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_init() */
-
-

-/*---------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_term
- *
- * Purpose:     Shut down the VFD
- *
- * Returns:     SUCCEED (can't fail)
- *
- * Programmer:  Quincey Koziol
- *              Friday, Jan 30, 2004
- *
- * Modification:
- *
- *---------------------------------------------------------------------------
- */
-void
-H5FD_mpiposix_term(void)
-{
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    /* Reset VFL ID */
-    H5FD_MPIPOSIX_g = 0;
-
-    FUNC_LEAVE_NOAPI_VOID
-} /* end H5FD_mpiposix_term() */
-
-

-/*-------------------------------------------------------------------------
- * 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.
- *
- *              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:      SUCCEED/FAIL
- *
- * Programmer:  Quincey Koziol
- *              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;
-
-    FUNC_ENTER_API(FAIL)
-    H5TRACE3("e", "iMcb", fapl_id, comm, use_gpfs);
-
-    /* Check arguments */
-    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")
-
-    /* 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);
-
-done:
-    FUNC_LEAVE_API(ret_value)
-} /* end H5Pset_fapl_mpiposix() */
-
-

-/*-------------------------------------------------------------------------
- * 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
- *
- *-------------------------------------------------------------------------
- */
-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             */
-
-    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))
-        HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
-    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 (use_gpfs)
-        *use_gpfs = fa->use_gpfs;
-
-done:
-    FUNC_LEAVE_API(ret_value)
-} /* end H5Pget_fapl_mpiposix() */
-
-

-/*-------------------------------------------------------------------------
- * 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.
- *
- * 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
- *
- *-------------------------------------------------------------------------
- */
-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 */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    HDassert(file);
-    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
-    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)
-
-    fa->use_gpfs = file->use_gpfs;
-
-    /* Set return value */
-    ret_value=fa;
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_fapl_get() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_fapl_copy
- *
- * Purpose:     Copies the mpiposix-specific file access properties.
- *
- * Return:      Success:    Ptr to a new property list
- *              Failure:    NULL
- *
- * Programmer:  Albert Cheng
- *              Apr 24, 2003
- *
- *-------------------------------------------------------------------------
- */
-static void *
-H5FD_mpiposix_fapl_copy(const void *_old_fa)
-{
-    void    *ret_value = NULL;
-    const H5FD_mpiposix_fapl_t *old_fa = (const H5FD_mpiposix_fapl_t*)_old_fa;
-    H5FD_mpiposix_fapl_t  *new_fa = NULL;
-    int    mpi_code;  /* MPI return code */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    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)
-
-    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);
-    }
-
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_fapl_copy() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_fapl_free
- *
- * Purpose:     Frees the mpiposix-specific file access properties.
- *
- * Return:      SUCCEED (can't fail)
- *
- * Programmer:  Albert Cheng
- *              Apr 24, 2003
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_fapl_free(void *_fa)
-{
-    H5FD_mpiposix_fapl_t  *fa = (H5FD_mpiposix_fapl_t*)_fa;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    HDassert(fa);
-
-    /* Free the internal communicator */
-    HDassert(MPI_COMM_NULL != fa->comm);
-    MPI_Comm_free(&fa->comm);
-    H5MM_xfree(fa);
-
-    FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5FD_mpiposix_fapl_free() */
-
-

-/*-------------------------------------------------------------------------
- * 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.
- *
- * Return:      Success:    A new file pointer.
- *              Failure:    NULL
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-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           */
-#ifdef H5_HAVE_WIN32_API
-    struct _BY_HANDLE_FILE_INFORMATION fileinfo;
-#endif
-    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)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
-    if (ADDR_OVERFLOW(maxaddr))
-        HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr")
-
-    /* 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*/
-        _fa.use_gpfs = FALSE;
-        fa = &_fa;
-    } /* end if */
-    else {
-        if(NULL == (fa = (const H5FD_mpiposix_fapl_t *)H5P_get_driver_info(plist)))
-            HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "bad VFL driver info")
-    } /* 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)
-
-    /* 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)))
-        HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mpi_code)
-    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(0 == mpi_rank) {
-        if (H5F_ACC_TRUNC & flags)
-            o_flags |= O_TRUNC;
-        if (H5F_ACC_CREAT & flags)
-            o_flags |= O_CREAT;
-        if (H5F_ACC_EXCL & flags)
-            o_flags |= O_EXCL;
-    } /* end if */
-
-    /* Process 0 opens (or creates) the file while the rest of the
-     * processes wait.  Then process 0 signals the other processes and they
-     * open (never create) the file and all processes proceed.
-     */
-    /* Process 0 opens (or creates) file and broadcasts result to other processes */
-    if(0 == mpi_rank) {
-        /* Open the file */
-        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()
-     * 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
-     * creating the file, if necessary) and can fail in situations where the
-     * other process's file opens would succeed, so allow the other processes
-     * to check for that situation and bail out now also. - QAK
-     */
-    if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&fd, sizeof(int), MPI_BYTE, 0, comm_dup)))
-        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)
-        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) {
-        /* Open the file */
-        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(0 == mpi_rank) {
-        /* Get the stat information */
-        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)))
-        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. */
-        struct {
-            gpfsFcntlHeader_t   hdr;
-            gpfsFreeRange_t     fr;
-        } hint;
-        HDmemset(&hint, 0, sizeof hint);
-        hint.hdr.totalLength = sizeof hint;
-        hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-        hint.fr.structLen = sizeof hint.fr;
-        hint.fr.structType = GPFS_FREE_RANGE;
-        hint.fr.start = 0;
-        hint.fr.length = 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))))
-        HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
-
-#ifdef REPORT_IO
-    HDfprintf(stderr, "open:  rank=%d name=%s file=0x%08lx\n", mpi_rank, name, (unsigned long)file);
-#endif
-
-    /* Set the general file information */
-    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.
-     */
-#ifdef H5_HAVE_GPFS
-    file->blksize = sb.st_blksize;
-#endif
-
-    /* Set this field in the H5FD_mpiposix_t struct for later use */
-    file->use_gpfs = fa->use_gpfs;
-
-    /* Set the MPI information */
-    file->comm = comm_dup;
-    file->mpi_rank = mpi_rank;
-    file->mpi_size = mpi_size;
-
-    /* Reset the last file I/O operation */
-    file->pos = HADDR_UNDEF;
-    file->op = OP_UNKNOWN;
-
-    /* Set the information for the file's device and inode */
-#ifdef H5_HAVE_WIN32_API
-    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 /* H5_VMS */
-#endif /* H5_HAVE_WIN32_API */
-
-    /* Indicate success */
-    ret_value = (H5FD_t *)file;
-
-done:
-    /* Error cleanup */
-    if(NULL == ret_value) {
-        /* Close the file if it was left open */
-        if(fd != -1)
-            HDclose(fd);
-        if (MPI_COMM_NULL != comm_dup)
-            MPI_Comm_free(&comm_dup);
-    } /* end if */
-
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_open() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_close
- *
- * Purpose:     Closes a file.
- *
- * Return:      SUCCEED/FAIL
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_close(H5FD_t *_file)
-{
-    H5FD_mpiposix_t     *file = (H5FD_mpiposix_t*)_file;
-    herr_t              ret_value = SUCCEED;       /* Return value */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    HDassert(file);
-    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
-    /* Close the unix file */
-    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. */
-    MPI_Barrier(file->comm);
-    /* Clean up other stuff */
-    MPI_Comm_free(&file->comm);
-    H5MM_xfree(file);
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_close() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_cmp
- *
- * 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).
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static int
-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;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-#ifdef H5_HAVE_WIN32_API
-    if(f1->dwVolumeSerialNumber < f2->dwVolumeSerialNumber) HGOTO_DONE(-1)
-    if(f1->dwVolumeSerialNumber > f2->dwVolumeSerialNumber) HGOTO_DONE(1)
-
-    if(f1->nFileIndexHigh < f2->nFileIndexHigh) HGOTO_DONE(-1)
-    if(f1->nFileIndexHigh > f2->nFileIndexHigh) HGOTO_DONE(1)
-
-    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)
-#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)
-#endif /* H5_DEV_T_IS_SCALAR */
-#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)
-} /* end H5FD_mpiposix_cmp() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_query
- *
- * Purpose:     Set the flags that this VFL driver is capable of supporting.
- *              (listed in H5FDpublic.h)
- *
- * Return:      SUCCEED (can't fail)
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
-{
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    /* 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 */
-    } /* end if */
-
-    FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5FD_mpiposix_query() */
-
-

-/*-------------------------------------------------------------------------
- * 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.
- *
- * Return:      Success:    The end-of-address marker.
- *              Failure:    HADDR_UNDEF
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static haddr_t
-H5FD_mpiposix_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
-{
-    const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    HDassert(file);
-    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
-    FUNC_LEAVE_NOAPI(file->eoa)
-} /* end H5FD_mpiposix_get_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.
- *
- * Return:      SUCCEED (can't fail)
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
-{
-    H5FD_mpiposix_t  *file = (H5FD_mpiposix_t*)_file;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    HDassert(file);
-    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
-    file->eoa = addr;
-
-    FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5FD_mpi_posix_set_eoa() */
-
-

-/*-------------------------------------------------------------------------
- * 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.
- *
- *              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
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static haddr_t
-H5FD_mpiposix_get_eof(const H5FD_t *_file)
-{
-    const H5FD_mpiposix_t  *file = (const H5FD_mpiposix_t*)_file;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    HDassert(file);
-    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
-    FUNC_LEAVE_NOAPI(MAX(file->eof, file->eoa))
-} /* end H5FD_mpiposix_get_eof() */
-
-

-/*-------------------------------------------------------------------------
- * Function:       H5FD_mpiposix_get_handle
- *
- * Purpose:        Returns the file handle of MPI-POSIX file driver.
- *
- * Returns:        SUCCEED/FAIL
- *
- * Programmer:     Raymond Lu
- *                 Sept. 16, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
-{
-    H5FD_mpiposix_t       *file = (H5FD_mpiposix_t *)_file;
-    herr_t                ret_value = SUCCEED;
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    if(!file_handle)
-        HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
-
-    *file_handle = &(file->fd);
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-}
-
-

-/*-------------------------------------------------------------------------
- * 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.
- *
- *              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.
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-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_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
-
-    HDassert(file);
-    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-    HDassert(buf);
-
-    /* Check for overflow conditions */
-    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)
-        HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
-
-#ifdef REPORT_IO
-    {
-        int commrank;
-        MPI_Comm_rank(MPI_COMM_WORLD, &commrank);
-        HDfprintf(stderr, "read:  rank=%d file=0x%08lx type=%d, addr=%a size=%Zu\n",
-                commrank, (unsigned long)file, (int)type, addr, size);
-    }
-#endif
-
-    /* Seek to the correct location */
-    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,
-     * and the end of the file.
-     */
-    while(size > 0) {
-
-        h5_posix_io_t           bytes_in    = 0;    /* # of bytes to read       */
-        h5_posix_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_POSIX_MAX_IO_BYTES)
-            bytes_in = H5_POSIX_MAX_IO_BYTES;
-        else
-            bytes_in = (h5_posix_io_t)size;
-
-        do {
-            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, total read size = %llu, bytes this sub-read = %llu, bytes actually read = %llu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_read, (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 */
-        
-        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;
-    file->op = OP_READ;
-
-done:
-    /* Check for error */
-    if(ret_value < 0) {
-        /* Reset last file I/O information */
-        file->pos = HADDR_UNDEF;
-        file->op = OP_UNKNOWN;
-    } /* end if */
-
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_read() */
-
-

-/*-------------------------------------------------------------------------
- * 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.
- *
- * Return:      SUCCEED/FAIL
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-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;
-#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                             */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    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)
-        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)
-        HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
-
-    /* Obtain the data transfer properties */
-    if(NULL == (plist = H5I_object(dxpl_id)))
-        HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
-
-    /* Metadata specific actions */
-    /* All metadata is now written from process 0 -- thus this function
-     * needs to be re-written to reflect this.  For now I have simply
-     * commented out the code that attempts to synchronize metadata
-     * writes between processes, but we should really just flag an error
-     * whenever any process other than process 0 attempts to write
-     * 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 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)
-                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)))
-                HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
-#endif /* JRM */
-
-#if 0 /* JRM -- 3/23/10 */ /* this is no longer always the case */
-        /* Only one process will do the actual write if all procs in comm write same metadata */
-        if (file->mpi_rank != H5_PAR_META_WRITE)
-            HGOTO_DONE(SUCCEED) /* skip the actual write */
-#endif /* JRM */
-    } /* end if */
-
-#ifdef REPORT_IO
-    {
-        int commrank;
-        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)" : "");
-    }
-#endif
-
-    if (0 == file->naccess++) {
-        /* First write access to this file */
-#ifdef H5_HAVE_GPFS
-        if (file->use_gpfs) {
-            struct {
-                gpfsFcntlHeader_t           hdr;
-                gpfsMultipleAccessRange_t   mar;
-            } hint;
-            HDmemset(&hint, 0, sizeof hint);
-            hint.hdr.totalLength = sizeof hint;
-            hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
-            hint.mar.structLen = sizeof hint.mar;
-            hint.mar.structType = GPFS_MULTIPLE_ACCESS_RANGE;
-            hint.mar.accRangeCnt = 1;
-            hint.mar.accRangeArray[0].blockNumber = addr / file->blksize;
-            hint.mar.accRangeArray[0].start = addr % file->blksize;
-            hint.mar.accRangeArray[0].length = MIN(file->blksize-hint.mar.accRangeArray[0].start, size);
-            hint.mar.accRangeArray[0].isWrite = 1;
-            if (gpfs_fcntl(file->fd, &hint)<0)
-                HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS")
-        }
-#endif  /* H5_HAVE_GPFS */
-    }
-
-    /* Seek to the correct location */
-    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 data, being careful of interrupted system calls, partial results,
-     * and the end of the file.
-     */
-    while(size > 0) {
-
-        h5_posix_io_t           bytes_in    = 0;    /* # of bytes to write          */
-        h5_posix_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_POSIX_MAX_IO_BYTES)
-            bytes_in = H5_POSIX_MAX_IO_BYTES;
-        else
-            bytes_in = (h5_posix_io_t)size;
-
-        do {
-            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, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (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 position */
-    file->pos = addr;
-    file->op = OP_WRITE;
-
-done:
-    /* Check for error */
-    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
-     */
-
-    /* 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 (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 */
-    } /* end else */
-#endif /* JRM */
-
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_write() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_truncate
- *
- * Purpose:     Makes sure that the true file size is the same (or larger)
- *              than the end-of-address.
- *
- * Return:      SUCCEED/FAIL
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-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;
-    herr_t          ret_value = SUCCEED;                /* Return value     */
-    int             mpi_code;                           /* MPI return code  */
-
-    FUNC_ENTER_NOAPI_NOINIT
-
-    HDassert(file);
-    HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
-    /* Extend the file to make sure it's large enough */
-    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
-            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 */
-#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 */
-
-        /* Don't let any proc return until all have extended the file.
-         * (Prevents race condition where some processes go ahead and write
-         * more data to the file before all the processes have finished making
-         * it the shorter length, potentially truncating the file and dropping
-         * the new data written)
-         */
-        if(MPI_SUCCESS != (mpi_code = MPI_Barrier(file->comm)))
-            HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
-
-        /* Update the 'last' eoa and eof values */
-        file->last_eoa = file->eoa;
-        file->eof = file->eoa;
-
-        /* Reset last file I/O information */
-        file->pos = HADDR_UNDEF;
-        file->op = OP_UNKNOWN;
-    } /* end if */
-
-done:
-    FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_truncate() */
-
-

-/*-------------------------------------------------------------------------
- * Function:    H5FD_mpiposix_mpi_rank
- *
- * Purpose:     Returns the MPI rank for a process
- *
- * Return:      MPI rank.  Cannot report failure.
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static int
-H5FD_mpiposix_mpi_rank(const H5FD_t *_file)
-{
-    const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    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
- *
- * Purpose:     Returns the number of MPI processes
- *
- * Return:      The number of MPI processes.  Cannot report failure.
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static int
-H5FD_mpiposix_mpi_size(const H5FD_t *_file)
-{
-    const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    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.
- *
- * Return:      The MPI communicator.  Cannot report failure.
- *
- * Programmer:  Quincey Koziol
- *              Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static MPI_Comm
-H5FD_mpiposix_communicator(const H5FD_t *_file)
-{
-    const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-    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
deleted file mode 100644
index fdf30a1..0000000
--- a/src/H5FDmpiposix.h
+++ /dev/null
@@ -1,52 +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.     *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/*
- * Programmer:  Quincey Koziol <koziol at hdfgroup.org>
- *              Thursday, July 11, 2002
- *
- * Purpose:	The public header file for the mpiposix driver.
- */
-
-#ifndef __H5FDmpiposix_H
-#define __H5FDmpiposix_H
-
-#ifdef H5_HAVE_PARALLEL
-#   define H5FD_MPIPOSIX    (H5FD_mpiposix_init())
-#else
-#   define H5FD_MPIPOSIX    (-1)
-#endif
-
-/* Macros */
-
-#ifdef H5_HAVE_PARALLEL
-
-/* Function prototypes */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-H5_DLL hid_t H5FD_mpiposix_init(void);
-H5_DLL void H5FD_mpiposix_term(void);
-H5_DLL herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs);
-H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*out*/);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*H5_HAVE_PARALLEL*/
-
-#endif /* __H5FDmpiposix_H */
diff --git a/src/H5FDprivate.h b/src/H5FDprivate.h
index 41c6b38..cdd2023 100644
--- a/src/H5FDprivate.h
+++ b/src/H5FDprivate.h
@@ -43,12 +43,9 @@
 #define IS_H5FD_MPIO(f)	/* (H5F_t *f) */				    \
     (H5FD_MPIO==H5F_DRIVER_ID(f))
 
-#define IS_H5FD_MPIPOSIX(f) /* (H5F_t *f) */                                \
-    (H5FD_MPIPOSIX==H5F_DRIVER_ID(f))
-
 /* Single macro to check for all file drivers that use MPI */
 #define IS_H5FD_MPI(file)  \
-        (IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file))
+        (IS_H5FD_MPIO(file))
 
 #ifdef H5_HAVE_PARALLEL
 /* ======== Temporary data transfer properties ======== */
diff --git a/src/H5FScache.c b/src/H5FScache.c
index 9450c4c..6fc3227 100644
--- a/src/H5FScache.c
+++ b/src/H5FScache.c
@@ -38,7 +38,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5FSpkg.h"		/* File free space			*/
 #include "H5MFprivate.h"	/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 #include "H5WBprivate.h"        /* Wrapped Buffers                      */
 
 /****************/
@@ -619,7 +619,7 @@ H5FS_cache_sinfo_load(H5F_t *f, hid_t dxpl_id, haddr_t UNUSED addr, void *_udata
         unsigned sect_cnt_size;         /* The size of the section size counts */
 
         /* Compute the size of the section counts */
-        sect_cnt_size = H5V_limit_enc_size((uint64_t)udata->fspace->serial_sect_count);
+        sect_cnt_size = H5VM_limit_enc_size((uint64_t)udata->fspace->serial_sect_count);
 
         /* Reset the section count, the "add" routine will update it */
         old_tot_sect_count = udata->fspace->tot_sect_count;
@@ -869,7 +869,7 @@ H5FS_cache_sinfo_flush(H5F_t *f, hid_t dxpl_id, hbool_t destroy, haddr_t addr, H
         /* Set up user data for iterator */
         udata.sinfo = sinfo;
         udata.p = &p;
-        udata.sect_cnt_size = H5V_limit_enc_size((uint64_t)sinfo->fspace->serial_sect_count);
+        udata.sect_cnt_size = H5VM_limit_enc_size((uint64_t)sinfo->fspace->serial_sect_count);
 
         /* Iterate over all the bins */
         for(bin = 0; bin < sinfo->nbins; bin++) {
diff --git a/src/H5FSsection.c b/src/H5FSsection.c
index 0aa007e..c16f7a5 100644
--- a/src/H5FSsection.c
+++ b/src/H5FSsection.c
@@ -35,7 +35,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5FSpkg.h"		/* File free space			*/
 #include "H5MFprivate.h"	/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 
 /****************/
@@ -143,10 +143,10 @@ HDfprintf(stderr, "%s: fspace->addr = %a\n", FUNC, fspace->addr);
 	HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
 
     /* Set non-zero values */
-    sinfo->nbins = H5V_log2_gen(fspace->max_sect_size);
+    sinfo->nbins = H5VM_log2_gen(fspace->max_sect_size);
     sinfo->sect_prefix_size = (size_t)H5FS_SINFO_PREFIX_SIZE(f);
     sinfo->sect_off_size = (fspace->max_sect_addr + 7) / 8;
-    sinfo->sect_len_size = H5V_limit_enc_size((uint64_t)fspace->max_sect_size);
+    sinfo->sect_len_size = H5VM_limit_enc_size((uint64_t)fspace->max_sect_size);
 #ifdef H5FS_SINFO_DEBUG
 HDfprintf(stderr, "%s: fspace->max_sect_size = %Hu\n", FUNC, fspace->max_sect_size);
 HDfprintf(stderr, "%s: fspace->max_sect_addr = %u\n", FUNC, fspace->max_sect_addr);
@@ -496,7 +496,7 @@ HDfprintf(stderr, "%s: fspace->sinfo->serial_size_count = %Zu\n", "H5FS_sect_ser
 HDfprintf(stderr, "%s: fspace->sinfo->serial_size_count = %Zu\n", "H5FS_sect_serialize_size", fspace->sinfo->serial_size_count);
 HDfprintf(stderr, "%s: fspace->serial_sect_count = %Hu\n", "H5FS_sect_serialize_size", fspace->serial_sect_count);
 #endif /* QAK */
-        sect_buf_size += fspace->sinfo->serial_size_count * H5V_limit_enc_size((uint64_t)fspace->serial_sect_count);
+        sect_buf_size += fspace->sinfo->serial_size_count * H5VM_limit_enc_size((uint64_t)fspace->serial_sect_count);
 
         /* Size for each differently sized serializable section */
         sect_buf_size += fspace->sinfo->serial_size_count * fspace->sinfo->sect_len_size;
@@ -762,7 +762,7 @@ H5FS_sect_unlink_size(H5FS_sinfo_t *sinfo, const H5FS_section_class_t *cls,
     HDassert(cls);
 
     /* Determine correct bin which holds items of at least the section's size */
-    bin = H5V_log2_gen(sect->size);
+    bin = H5VM_log2_gen(sect->size);
     HDassert(bin < sinfo->nbins);
     if(sinfo->bins[bin].bin_list == NULL)
         HGOTO_ERROR(H5E_FSPACE, H5E_NOTFOUND, FAIL, "node's bin is empty?")
@@ -963,7 +963,7 @@ HDfprintf(stderr, "%s: sect->size = %Hu, sect->addr = %a\n", FUNC, sect->size, s
     HDassert(sect->size);
 
     /* Determine correct bin which holds items of the section's size */
-    bin = H5V_log2_gen(sect->size);
+    bin = H5VM_log2_gen(sect->size);
     HDassert(bin < sinfo->nbins);
     if(sinfo->bins[bin].bin_list == NULL) {
         if(NULL == (sinfo->bins[bin].bin_list = H5SL_create(H5SL_TYPE_HSIZE, NULL)))
@@ -1619,7 +1619,7 @@ H5FS_sect_find_node(H5FS_t *fspace, hsize_t request, H5FS_section_info_t **node)
     HDassert(node);
 
     /* Determine correct bin which holds items of at least the section's size */
-    bin = H5V_log2_gen(request);
+    bin = H5VM_log2_gen(request);
     HDassert(bin < fspace->sinfo->nbins);
 #ifdef QAK
 HDfprintf(stderr, "%s: fspace->sinfo->nbins = %u\n", FUNC, fspace->sinfo->nbins);
@@ -2053,7 +2053,7 @@ HDfprintf(stderr, "%s: to_ghost = %u\n", FUNC, to_ghost);
         HDassert(fspace->sinfo->bins);
 
         /* Determine correct bin which holds items of at least the section's size */
-        bin = H5V_log2_gen(sect->size);
+        bin = H5VM_log2_gen(sect->size);
         HDassert(bin < fspace->sinfo->nbins);
         HDassert(fspace->sinfo->bins[bin].bin_list);
 
diff --git a/src/H5Faccum.c b/src/H5Faccum.c
index 032bd80..6855918 100644
--- a/src/H5Faccum.c
+++ b/src/H5Faccum.c
@@ -40,7 +40,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5Fpkg.h"             /* File access				*/
 #include "H5FDprivate.h"	/* File drivers				*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 
 /****************/
@@ -151,7 +151,7 @@ H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
                     size_t new_alloc_size;        /* New size of accumulator */
 
                     /* Adjust the buffer size to be a power of 2 that is large enough to hold data */
-                    new_alloc_size = (size_t)1 << (1 + H5V_log2_gen((uint64_t)(new_size - 1)));
+                    new_alloc_size = (size_t)1 << (1 + H5VM_log2_gen((uint64_t)(new_size - 1)));
 
                     /* Reallocate the metadata accumulator buffer */
                     if(NULL == (f->shared->accum.buf = H5FL_BLK_REALLOC(meta_accum, f->shared->accum.buf, new_alloc_size)))
@@ -295,7 +295,7 @@ H5F_accum_adjust(H5F_meta_accum_t *accum, H5FD_t *lf, hid_t dxpl_id,
         size_t new_size;        /* New size of accumulator */
 
         /* Adjust the buffer size to be a power of 2 that is large enough to hold data */
-        new_size = (size_t)1 << (1 + H5V_log2_gen((uint64_t)((size + accum->size) - 1)));
+        new_size = (size_t)1 << (1 + H5VM_log2_gen((uint64_t)((size + accum->size) - 1)));
 
         /* Check for accumulator getting too big */
         if(new_size > H5F_ACCUM_MAX_SIZE) {
@@ -426,7 +426,7 @@ H5F_accum_write(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
 
     HDassert(f);
     HDassert(f->shared);
-    HDassert(f->intent & H5F_ACC_RDWR);
+    HDassert(H5F_INTENT(f) & H5F_ACC_RDWR);
     HDassert(buf);
 
     /* Treat global heap as raw data */
@@ -606,7 +606,7 @@ H5F_accum_write(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, haddr_t addr,
                             size_t new_alloc_size;        /* New size of accumulator */
 
                             /* Adjust the buffer size to be a power of 2 that is large enough to hold data */
-                            new_alloc_size = (size_t)1 << (1 + H5V_log2_gen((uint64_t)(size - 1)));
+                            new_alloc_size = (size_t)1 << (1 + H5VM_log2_gen((uint64_t)(size - 1)));
 
                             /* Reallocate the metadata accumulator buffer */
                             if(NULL == (f->shared->accum.buf = H5FL_BLK_REALLOC(meta_accum, f->shared->accum.buf, new_alloc_size)))
@@ -649,7 +649,7 @@ HDmemset(f->shared->accum.buf + size, 0, (f->shared->accum.alloc_size - size));
                         size_t new_size;        /* New size of accumulator */
 
                         /* Adjust the buffer size to be a power of 2 that is large enough to hold data */
-                        new_size = (size_t)1 << (1 + H5V_log2_gen((uint64_t)(size - 1)));
+                        new_size = (size_t)1 << (1 + H5VM_log2_gen((uint64_t)(size - 1)));
 
                         /* Grow the metadata accumulator buffer */
                         if(NULL == (f->shared->accum.buf = H5FL_BLK_REALLOC(meta_accum, f->shared->accum.buf, new_size)))
@@ -699,7 +699,7 @@ HDmemset(f->shared->accum.buf + clear_size, 0, (f->shared->accum.alloc_size - cl
                     size_t new_size;        /* New size of accumulator */
 
                     /* Adjust the buffer size to be a power of 2 that is large enough to hold data */
-                    new_size = (size_t)1 << (1 + H5V_log2_gen((uint64_t)(size - 1)));
+                    new_size = (size_t)1 << (1 + H5VM_log2_gen((uint64_t)(size - 1)));
 
                     /* Reallocate the metadata accumulator buffer */
                     if(NULL == (f->shared->accum.buf = H5FL_BLK_REALLOC(meta_accum, f->shared->accum.buf, new_size)))
diff --git a/src/H5Fio.c b/src/H5Fio.c
index 83c86ea..d494488 100644
--- a/src/H5Fio.c
+++ b/src/H5Fio.c
@@ -145,7 +145,7 @@ HDfprintf(stderr, "%s: write to addr = %a, size = %Zu\n", FUNC, addr, size);
 
     HDassert(f);
     HDassert(f->shared);
-    HDassert(f->intent & H5F_ACC_RDWR);
+    HDassert(H5F_INTENT(f) & H5F_ACC_RDWR);
     HDassert(buf);
     HDassert(H5F_addr_defined(addr));
 
diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h
index 61b3ec6..1f10dbc 100644
--- a/src/H5Fpkg.h
+++ b/src/H5Fpkg.h
@@ -259,7 +259,6 @@ struct H5F_file_t {
  * to shared H5F_file_t structs.
  */
 struct H5F_t {
-    unsigned		intent;		/* The flags passed to H5F_open()*/
     char		*open_name;	/* Name used to open file	*/
     char		*actual_name;	/* Actual name of the file, after resolving symlinks, etc. */
     char               	*extpath;       /* Path for searching target external link file */
@@ -292,6 +291,7 @@ H5_DLLVAR const H5AC_class_t H5AC_SUPERBLOCK[1];
 
 /* General routines */
 H5_DLL herr_t H5F_init(void);
+H5_DLL herr_t H5F__term_deprec_interface(void);
 H5_DLL herr_t H5F_locate_signature(H5FD_t *file, hid_t dxpl_id, haddr_t *sig_addr);
 H5_DLL herr_t H5F_flush(H5F_t *f, hid_t dxpl_id, hbool_t closing);
 
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index c32f462..4d6e5ba 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -222,7 +222,7 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
 
 /* If the module using this macro is allowed access to the private variables, access them directly */
 #ifdef H5F_PACKAGE
-#define H5F_INTENT(F)           ((F)->intent)
+#define H5F_INTENT(F)           ((F)->shared->flags)
 #define H5F_OPEN_NAME(F)        ((F)->open_name)
 #define H5F_ACTUAL_NAME(F)      ((F)->actual_name)
 #define H5F_EXTPATH(F)          ((F)->extpath)
@@ -402,6 +402,8 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
 #define H5F_ACS_WANT_POSIX_FD_NAME              "want_posix_fd" /* Internal: query the file descriptor from the core VFD, instead of the memory address */
 #define H5F_ACS_EFC_SIZE_NAME                   "efc_size"      /* Size of external file cache */
 #define H5F_ACS_FILE_IMAGE_INFO_NAME            "file_image_info" /* struct containing initial file image and callback info */
+#define H5F_ACS_CORE_WRITE_TRACKING_FLAG_NAME       "core_write_tracking_flag" /* Whether or not core VFD backing store write tracking is enabled */
+#define H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_NAME  "core_write_tracking_page_size" /* The page size in kiB when core VFD write tracking is enabled */
 
 /* ======================== File Mount properties ====================*/
 #define H5F_MNT_SYM_LOCAL_NAME 		"local"                 /* Whether absolute symlinks local to file. */
@@ -501,7 +503,6 @@ H5_DLL unsigned H5F_decr_nopen_objs(H5F_t *f);
 H5_DLL hid_t H5F_get_file_id(const H5F_t *f);
 H5_DLL H5F_t *H5F_get_parent(const H5F_t *f);
 H5_DLL unsigned H5F_get_nmounts(const H5F_t *f);
-H5_DLL herr_t H5F_flush_mounts(H5F_t *f, hid_t dxpl_id);
 H5_DLL hid_t H5F_get_access_plist(H5F_t *f, hbool_t app_ref);
 H5_DLL hid_t H5F_get_id(H5F_t *file, hbool_t app_ref);
 H5_DLL herr_t H5F_get_obj_count(const H5F_t *f, unsigned types, hbool_t app_ref, size_t *obj_id_count_ptr);
@@ -547,6 +548,7 @@ H5_DLL herr_t H5F_get_vfd_handle(const H5F_t *file, hid_t fapl,
 H5_DLL hbool_t H5F_is_mount(const H5F_t *file);
 H5_DLL hbool_t H5F_has_mount(const H5F_t *file);
 H5_DLL herr_t H5F_traverse_mount(struct H5O_loc_t *oloc/*in,out*/);
+H5_DLL herr_t H5F_flush_mounts(H5F_t *f, hid_t dxpl_id);
 
 /* Functions that operate on blocks of bytes wrt super block */
 H5_DLL herr_t H5F_block_read(const H5F_t *f, H5FD_mem_t type, haddr_t addr,
diff --git a/src/H5Fquery.c b/src/H5Fquery.c
index c04ba24..6a8c21b 100644
--- a/src/H5Fquery.c
+++ b/src/H5Fquery.c
@@ -98,7 +98,7 @@ H5F_get_intent(const H5F_t *f)
 
     HDassert(f);
 
-    FUNC_LEAVE_NOAPI(f->intent)
+    FUNC_LEAVE_NOAPI(f->shared->flags)
 } /* end H5F_get_intent() */
 
 

diff --git a/src/H5G.c b/src/H5G.c
index 1bd98a6..cbd47ba 100644
--- a/src/H5G.c
+++ b/src/H5G.c
@@ -133,8 +133,7 @@
 /* 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     0,				/* # of reserved IDs for class */
     (H5I_free_t)H5G_close	/* Callback routine for closing objects of this class */
 }};
@@ -225,16 +224,19 @@ H5G_term_interface(void)
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     if(H5_interface_initialize_g) {
-	if((n = H5I_nmembers(H5I_GROUP)))
-	    H5I_clear_type(H5I_GROUP, FALSE, FALSE);
-	else {
-	    /* Destroy the group object id group */
-	    H5I_dec_type_ref(H5I_GROUP);
-
-	    /* Mark closed */
-	    H5_interface_initialize_g = 0;
-	    n = 1; /*H5I*/
-	} /* end else */
+        if((n = H5I_nmembers(H5I_GROUP)))
+            H5I_clear_type(H5I_GROUP, FALSE, FALSE);
+        else {
+            /* Close deprecated interface */
+            n += H5G__term_deprec_interface();
+
+            /* Destroy the group object id group */
+            H5I_dec_type_ref(H5I_GROUP);
+
+            /* Mark closed */
+            H5_interface_initialize_g = 0;
+            n = 1; /*H5I*/
+        } /* end else */
     } /* end if */
 
     FUNC_LEAVE_NOAPI(n)
diff --git a/src/H5Gdeprec.c b/src/H5Gdeprec.c
index 708b01b..81682e9 100644
--- a/src/H5Gdeprec.c
+++ b/src/H5Gdeprec.c
@@ -34,7 +34,7 @@
 #define H5G_PACKAGE		/*suppress error about including H5Gpkg   */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5G_init_deprec_interface
+#define H5_INTERFACE_INIT_FUNC	H5G__init_deprec_interface
 
 
 /***********/
@@ -109,9 +109,9 @@ static H5G_obj_t H5G_obj_get_type_by_idx(H5O_loc_t *oloc, hsize_t idx,
 

 /*--------------------------------------------------------------------------
 NAME
-   H5G_init_deprec_interface -- Initialize interface-specific information
+   H5G__init_deprec_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5G_init_deprec_interface()
+    herr_t H5G__init_deprec_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -120,12 +120,36 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5G_init_deprec_interface(void)
+H5G__init_deprec_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5G__init())
-} /* H5G_init_deprec_interface() */
+} /* H5G__init_deprec_interface() */
+
+

+/*--------------------------------------------------------------------------
+NAME
+   H5G__term_deprec_interface -- Terminate interface
+USAGE
+    herr_t H5G__term_deprec_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5G__term_deprec_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
+
+    FUNC_LEAVE_NOAPI(0)
+} /* H5G__term_deprec_interface() */
 
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 

diff --git a/src/H5Gpkg.h b/src/H5Gpkg.h
index e2180c0..b194adb 100644
--- a/src/H5Gpkg.h
+++ b/src/H5Gpkg.h
@@ -352,6 +352,7 @@ H5_DLL herr_t H5G__traverse_special(const H5G_loc_t *grp_loc,
  * Utility functions
  */
 H5_DLL herr_t H5G__init(void);
+H5_DLL herr_t H5G__term_deprec_interface(void);
 H5_DLL const char *H5G__component(const char *name, size_t *size_p);
 
 /*
diff --git a/src/H5HFcache.c b/src/H5HFcache.c
index ad119a8..7f1cf12 100644
--- a/src/H5HFcache.c
+++ b/src/H5HFcache.c
@@ -40,7 +40,7 @@
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MFprivate.h"	/* File memory management		*/
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 #include "H5WBprivate.h"        /* Wrapped Buffers                      */
 
 
diff --git a/src/H5HFdbg.c b/src/H5HFdbg.c
index 3e4515f..1dc2f2e 100644
--- a/src/H5HFdbg.c
+++ b/src/H5HFdbg.c
@@ -39,7 +39,7 @@
 #include "H5FLprivate.h"	/* Free Lists                           */
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -641,10 +641,10 @@ H5HF_iblock_print(const H5HF_indirect_t *iblock,
         unsigned    first_row_bits;         /* Number of bits used bit addresses in first row */
         unsigned    num_indirect_rows;      /* Number of rows of blocks in each indirect block */
 
-        first_row_bits = H5V_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size) +
-                            H5V_log2_of2(hdr->man_dtable.cparam.width);
+        first_row_bits = H5VM_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size) +
+                            H5VM_log2_of2(hdr->man_dtable.cparam.width);
         for(u = hdr->man_dtable.max_direct_rows; u < iblock->nrows; u++) {
-            num_indirect_rows = (H5V_log2_gen(hdr->man_dtable.row_block_size[u]) - first_row_bits) + 1;
+            num_indirect_rows = (H5VM_log2_gen(hdr->man_dtable.row_block_size[u]) - first_row_bits) + 1;
             HDsnprintf(temp_str, sizeof(temp_str), "Row #%u: (# of rows: %u)", (unsigned)u, num_indirect_rows);
             HDfprintf(stream, "%*s%-*s\n", indent + 3, "", MAX(0, fwidth - 3),
                     temp_str);
diff --git a/src/H5HFdblock.c b/src/H5HFdblock.c
index d6c8134..6ee7070 100644
--- a/src/H5HFdblock.c
+++ b/src/H5HFdblock.c
@@ -38,7 +38,7 @@
 #include "H5Fprivate.h"		/* File access				*/
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MFprivate.h"	/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -355,7 +355,7 @@ H5HF_man_dblock_new(H5HF_hdr_t *hdr, hid_t dxpl_id, size_t request,
     if(request < hdr->man_dtable.cparam.start_block_size)
         min_dblock_size = hdr->man_dtable.cparam.start_block_size;
     else {
-        min_dblock_size = ((size_t)1) << (1 + H5V_log2_gen((uint64_t)request));
+        min_dblock_size = ((size_t)1) << (1 + H5VM_log2_gen((uint64_t)request));
         HDassert(min_dblock_size <= hdr->man_dtable.cparam.max_direct_size);
     } /* end else */
 
@@ -550,7 +550,7 @@ H5HF_man_dblock_locate(H5HF_hdr_t *hdr, hid_t dxpl_id, hsize_t obj_off,
         unsigned cache_flags = H5AC__NO_FLAGS_SET;      /* Flags for unprotecting parent indirect block */
 
         /* Compute # of rows in child indirect block */
-        nrows = (H5V_log2_gen(hdr->man_dtable.row_block_size[row]) - hdr->man_dtable.first_row_bits) + 1;
+        nrows = (H5VM_log2_gen(hdr->man_dtable.row_block_size[row]) - hdr->man_dtable.first_row_bits) + 1;
         HDassert(nrows < iblock->nrows);        /* child must be smaller than parent */
 
         /* Compute indirect block's entry */
diff --git a/src/H5HFdtable.c b/src/H5HFdtable.c
index a7d95bc..607862a 100644
--- a/src/H5HFdtable.c
+++ b/src/H5HFdtable.c
@@ -37,7 +37,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -104,10 +104,10 @@ H5HF_dtable_init(H5HF_dtable_t *dtable)
     HDassert(dtable);
 
     /* Compute/cache some values */
-    dtable->start_bits = H5V_log2_of2((uint32_t)dtable->cparam.start_block_size);
-    dtable->first_row_bits = dtable->start_bits + H5V_log2_of2(dtable->cparam.width);
+    dtable->start_bits = H5VM_log2_of2((uint32_t)dtable->cparam.start_block_size);
+    dtable->first_row_bits = dtable->start_bits + H5VM_log2_of2(dtable->cparam.width);
     dtable->max_root_rows = (dtable->cparam.max_index - dtable->first_row_bits) + 1;
-    dtable->max_direct_bits = H5V_log2_of2((uint32_t)dtable->cparam.max_direct_size);
+    dtable->max_direct_bits = H5VM_log2_of2((uint32_t)dtable->cparam.max_direct_size);
     dtable->max_direct_rows = (dtable->max_direct_bits - dtable->start_bits) + 2;
     dtable->num_id_first_row = dtable->cparam.start_block_size * dtable->cparam.width;
     dtable->max_dir_blk_off_size = H5HF_SIZEOF_OFFSET_LEN(dtable->cparam.max_direct_size);
@@ -171,7 +171,7 @@ HDfprintf(stderr, "%s: off = %Hu\n", "H5HF_dtable_lookup", off);
         H5_ASSIGN_OVERFLOW(/* To: */ *col, /* From: */ (off / dtable->cparam.start_block_size), /* From: */ hsize_t, /* To: */ unsigned);
     } /* end if */
     else {
-        unsigned high_bit = H5V_log2_gen(off);  /* Determine the high bit in the offset */
+        unsigned high_bit = H5VM_log2_gen(off);  /* Determine the high bit in the offset */
         hsize_t off_mask = ((hsize_t)1) << high_bit;       /* Compute mask for determining column */
 
 #ifdef QAK
@@ -252,7 +252,7 @@ H5HF_dtable_size_to_row(const H5HF_dtable_t *dtable, size_t block_size)
     if(block_size == dtable->cparam.start_block_size)
         row = 0;
     else
-        row = (H5V_log2_of2((uint32_t)block_size) - H5V_log2_of2((uint32_t)dtable->cparam.start_block_size)) + 1;
+        row = (H5VM_log2_of2((uint32_t)block_size) - H5VM_log2_of2((uint32_t)dtable->cparam.start_block_size)) + 1;
 
     FUNC_LEAVE_NOAPI(row)
 } /* end H5HF_dtable_size_to_row() */
@@ -283,7 +283,7 @@ H5HF_dtable_size_to_rows(const H5HF_dtable_t *dtable, hsize_t size)
      */
     HDassert(dtable);
 
-    rows = (H5V_log2_gen(size) - dtable->first_row_bits) + 1;
+    rows = (H5VM_log2_gen(size) - dtable->first_row_bits) + 1;
 
     FUNC_LEAVE_NOAPI(rows)
 } /* end H5HF_dtable_size_to_rows() */
diff --git a/src/H5HFhdr.c b/src/H5HFhdr.c
index e4b89ba..d3c4473 100644
--- a/src/H5HFhdr.c
+++ b/src/H5HFhdr.c
@@ -37,7 +37,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MFprivate.h"	/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -46,7 +46,7 @@
 #ifndef NDEBUG
 /* Limit on the size of the max. direct block size */
 /* (This is limited to 32-bits currently, because I think it's unlikely to
- *      need to be larger, the 32-bit limit for H5V_log2_of2(n), and
+ *      need to be larger, the 32-bit limit for H5VM_log2_of2(n), and
  *      some offsets/sizes are encoded with a maxiumum of 32-bits  - QAK)
  */
 #define H5HF_MAX_DIRECT_SIZE_LIMIT ((hsize_t)2 * 1024 * 1024 * 1024)
@@ -224,7 +224,7 @@ H5HF_hdr_finish_init_phase1(H5HF_hdr_t *hdr)
 
     /* Set the size of heap IDs */
     hdr->heap_len_size = MIN(hdr->man_dtable.max_dir_blk_off_size,
-            H5V_limit_enc_size((uint64_t)hdr->max_man_size));
+            H5VM_limit_enc_size((uint64_t)hdr->max_man_size));
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -1089,7 +1089,7 @@ H5HF_hdr_update_iter(H5HF_hdr_t *hdr, hid_t dxpl_id, size_t min_dblock_size)
                     unsigned child_entry;           /* Entry of child indirect block */
 
                     /* Compute # of rows needed in child indirect block */
-                    child_rows_needed = (H5V_log2_of2((uint32_t)min_dblock_size) - H5V_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size)) + 2;
+                    child_rows_needed = (H5VM_log2_of2((uint32_t)min_dblock_size) - H5VM_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size)) + 2;
                     HDassert(child_rows_needed > child_nrows);
                     child_entry = (next_row + (child_rows_needed - child_nrows)) * hdr->man_dtable.cparam.width;
                     if(child_entry > (iblock->nrows * hdr->man_dtable.cparam.width))
diff --git a/src/H5HFiblock.c b/src/H5HFiblock.c
index 3c5303a..c989bfc 100644
--- a/src/H5HFiblock.c
+++ b/src/H5HFiblock.c
@@ -38,7 +38,7 @@
 #include "H5Fprivate.h"		/* File access				*/
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MFprivate.h"	/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -409,7 +409,7 @@ H5HF_man_iblock_root_create(H5HF_hdr_t *hdr, hid_t dxpl_id, size_t min_dblock_si
 
         nrows = hdr->man_dtable.cparam.start_root_rows;
 
-        block_row_off = H5V_log2_of2((uint32_t)min_dblock_size) - H5V_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size);
+        block_row_off = H5VM_log2_of2((uint32_t)min_dblock_size) - H5VM_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size);
         if(block_row_off > 0)
             block_row_off++;        /* Account for the pair of initial rows of the initial block size */
         rows_needed = 1 + block_row_off;
@@ -730,7 +730,7 @@ H5HF_man_iblock_root_halve(H5HF_indirect_t *iblock, hid_t dxpl_id)
     max_child_row = iblock->max_child / hdr->man_dtable.cparam.width;
 
     /* Compute new # of rows in root indirect block */
-    new_nrows = 1 << (1 + H5V_log2_gen((uint64_t)max_child_row));
+    new_nrows = 1 << (1 + H5VM_log2_gen((uint64_t)max_child_row));
 
     /* Check if the indirect block is NOT currently allocated in temp. file space */
     /* (temp. file space does not need to be freed) */
@@ -1662,10 +1662,10 @@ H5HF_man_iblock_size(H5F_t *f, hid_t dxpl_id, H5HF_hdr_t *hdr, haddr_t iblock_ad
         size_t      u;                  /* Local index variable */
 
         entry = hdr->man_dtable.max_direct_rows * hdr->man_dtable.cparam.width;
-	first_row_bits = H5V_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size) +
-			    H5V_log2_of2(hdr->man_dtable.cparam.width);
-	num_indirect_rows =
-            (H5V_log2_gen(hdr->man_dtable.row_block_size[hdr->man_dtable.max_direct_rows]) - first_row_bits) + 1;
+	first_row_bits = H5VM_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size) +
+			    H5VM_log2_of2(hdr->man_dtable.cparam.width);
+        num_indirect_rows =
+	    (H5VM_log2_gen(hdr->man_dtable.row_block_size[hdr->man_dtable.max_direct_rows]) - first_row_bits) + 1;
         for(u = hdr->man_dtable.max_direct_rows; u < iblock->nrows; u++, num_indirect_rows++) {
             size_t      v;                      /* Local index variable */
 
diff --git a/src/H5HFiter.c b/src/H5HFiter.c
index 0f2f7a4..137d0ee 100644
--- a/src/H5HFiter.c
+++ b/src/H5HFiter.c
@@ -36,7 +36,7 @@
 #include "H5private.h"		/* Generic Functions			*/
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5HFpkg.h"		/* Fractal heaps			*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -213,7 +213,7 @@ H5HF_man_iter_start_offset(H5HF_hdr_t *hdr, hid_t dxpl_id,
 
             /* Compute # of rows in context indirect block */
             child_size = hdr->man_dtable.row_block_size[biter->curr->up->row];
-            iblock_nrows = (H5V_log2_gen(child_size) - hdr->man_dtable.first_row_bits) + 1;
+            iblock_nrows = (H5VM_log2_gen(child_size) - hdr->man_dtable.first_row_bits) + 1;
         } /* end else */
 
         /* Load indirect block for this context location */
diff --git a/src/H5HFman.c b/src/H5HFman.c
index 62f5580..a2de63c 100644
--- a/src/H5HFman.c
+++ b/src/H5HFman.c
@@ -38,7 +38,7 @@
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MFprivate.h"	/* File memory management		*/
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
@@ -274,12 +274,14 @@ H5HF_man_op_real(H5HF_hdr_t *hdr, hid_t dxpl_id, const uint8_t *id,
     /* Decode the object offset within the heap & its length */
     UINT64DECODE_VAR(id, obj_off, hdr->heap_off_size);
     UINT64DECODE_VAR(id, obj_len, hdr->heap_len_size);
-    HDassert(obj_off > 0);
-    HDassert(obj_len > 0);
 
     /* Check for bad offset or length */
+    if(obj_off == 0)
+        HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "invalid fractal heap offset")
     if(obj_off > hdr->man_size)
         HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "fractal heap object offset too large")
+    if(obj_len == 0)
+        HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "invalid fractal heap object size")
     if(obj_len > hdr->man_dtable.cparam.max_direct_size)
         HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "fractal heap object size too large for direct block")
     if(obj_len > hdr->max_man_size)
@@ -516,12 +518,14 @@ H5HF_man_remove(H5HF_hdr_t *hdr, hid_t dxpl_id, const uint8_t *id)
     /* Decode the object offset within the heap & it's length */
     UINT64DECODE_VAR(id, obj_off, hdr->heap_off_size);
     UINT64DECODE_VAR(id, obj_len, hdr->heap_len_size);
-    HDassert(obj_off > 0);
-    HDassert(obj_len > 0);
 
     /* Check for bad offset or length */
+    if(obj_off == 0)
+        HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "invalid fractal heap offset")
     if(obj_off > hdr->man_size)
         HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "fractal heap object offset too large")
+    if(obj_len == 0)
+        HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "invalid fractal heap object size")
     if(obj_len > hdr->man_dtable.cparam.max_direct_size)
         HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, FAIL, "fractal heap object size too large for direct block")
     if(obj_len > hdr->max_man_size)
diff --git a/src/H5HFpkg.h b/src/H5HFpkg.h
index becec94..9c9c34c 100644
--- a/src/H5HFpkg.h
+++ b/src/H5HFpkg.h
@@ -136,7 +136,7 @@
 
 /* Compute the # of bytes required to store an offset into a given buffer size */
 #define H5HF_SIZEOF_OFFSET_BITS(b)   (((b) + 7) / 8)
-#define H5HF_SIZEOF_OFFSET_LEN(l)   H5HF_SIZEOF_OFFSET_BITS(H5V_log2_of2((unsigned)(l)))
+#define H5HF_SIZEOF_OFFSET_LEN(l)   H5HF_SIZEOF_OFFSET_BITS(H5VM_log2_of2((unsigned)(l)))
 
 /* Heap ID bit flags */
 /* Heap ID version (2 bits: 6-7) */
diff --git a/src/H5HFsection.c b/src/H5HFsection.c
index 72ea100..b3faebc 100644
--- a/src/H5HFsection.c
+++ b/src/H5HFsection.c
@@ -34,7 +34,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5HFpkg.h"		/* Fractal heaps			*/
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /****************/
 /* Local Macros */
diff --git a/src/H5HGdbg.c b/src/H5HGdbg.c
index 74044cb..16d8c49 100644
--- a/src/H5HGdbg.c
+++ b/src/H5HGdbg.c
@@ -91,9 +91,8 @@ H5HG_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent,
     unsigned		u, nused, maxobj;
     unsigned		j, k;
     H5HG_heap_t		*h = NULL;
-    char		buf[64];
     uint8_t		*p = NULL;
-    herr_t      ret_value=SUCCEED;       /* Return value */
+    herr_t              ret_value = SUCCEED;       /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
@@ -107,66 +106,69 @@ H5HG_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent,
     if(NULL == (h = H5HG_protect(f, dxpl_id, addr, H5AC_READ)))
         HGOTO_ERROR(H5E_HEAP, H5E_CANTPROTECT, FAIL, "unable to protect global heap collection");
 
-    fprintf(stream, "%*sGlobal Heap Collection...\n", indent, "");
-    fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth,
+    HDfprintf(stream, "%*sGlobal Heap Collection...\n", indent, "");
+    HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth,
 	    "Dirty:",
 	    (int)(h->cache_info.is_dirty));
-    fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
+    HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
 	    "Total collection size in file:",
 	    (unsigned long)(h->size));
 
-    for (u=1, nused=0, maxobj=0; u<h->nused; u++) {
-	if (h->obj[u].begin) {
+    for(u = 1, nused = 0, maxobj = 0; u < h->nused; u++)
+	if(h->obj[u].begin) {
 	    nused++;
-	    if (u>maxobj) maxobj = u;
+	    if (u>maxobj)
+                maxobj = u;
 	}
-    }
-    fprintf (stream, "%*s%-*s %u/%lu/", indent, "", fwidth,
+    HDfprintf(stream, "%*s%-*s %u/%lu/", indent, "", fwidth,
 	     "Objects defined/allocated/max:",
-	     nused, (unsigned long)h->nalloc);
+	     nused,
+             (unsigned long)h->nalloc);
     if(nused)
-        fprintf(stream, "%u\n", maxobj);
+        HDfprintf(stream, "%u\n", maxobj);
     else
-        fprintf(stream, "NA\n");
+        HDfprintf(stream, "NA\n");
 
-    fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth,
+    HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
 	     "Free space:",
 	     (unsigned long)(h->obj[0].size));
 
-    for (u=1; u<h->nused; u++) {
-	if (h->obj[u].begin) {
-	    sprintf (buf, "Object %u", u);
-	    fprintf (stream, "%*s%s\n", indent, "", buf);
-	    fprintf (stream, "%*s%-*s %lu\n", indent+3, "", MIN(fwidth-3, 0),
+    for(u = 1; u < h->nused; u++)
+	if(h->obj[u].begin) {
+            char buf[64];
+
+	    HDsnprintf(buf, sizeof(buf), "Object %u", u);
+	    HDfprintf(stream, "%*s%s\n", indent, "", buf);
+	    HDfprintf(stream, "%*s%-*s %lu\n", indent + 3, "", MIN(fwidth - 3, 0),
 		     "Obffset in block:",
 		     (unsigned long)(h->obj[u].begin - h->chunk));
-	    fprintf (stream, "%*s%-*s %d\n", indent+3, "", MIN(fwidth-3, 0),
+	    HDfprintf(stream, "%*s%-*s %d\n", indent + 3, "", MIN(fwidth - 3, 0),
 		     "Reference count:",
 		     h->obj[u].nrefs);
-	    fprintf (stream, "%*s%-*s %lu/%lu\n", indent+3, "",
-		     MIN(fwidth-3, 0),
+	    HDfprintf(stream, "%*s%-*s %lu/%lu\n", indent + 3, "",
+		     MIN(fwidth - 3, 0),
 		     "Size of object body:",
 		     (unsigned long)(h->obj[u].size),
 		     (unsigned long)H5HG_ALIGN(h->obj[u].size));
-	    p = h->obj[u].begin + H5HG_SIZEOF_OBJHDR (f);
-	    for (j=0; j<h->obj[u].size; j+=16) {
-		fprintf (stream, "%*s%04u: ", indent+6, "", j);
-		for (k=0; k<16; k++) {
-		    if (8==k) fprintf (stream, " ");
-		    if (j+k<h->obj[u].size) {
-			fprintf (stream, "%02x ", p[j+k]);
-		    } else {
+	    p = h->obj[u].begin + H5HG_SIZEOF_OBJHDR(f);
+	    for(j = 0; j < h->obj[u].size; j += 16) {
+		HDfprintf(stream, "%*s%04u: ", indent + 6, "", j);
+		for(k = 0; k < 16; k++) {
+		    if(8 == k)
+                        HDfprintf(stream, " ");
+		    if(j + k < h->obj[u].size)
+			HDfprintf(stream, "%02x ", p[j + k]);
+		    else
 			HDfputs("   ", stream);
-		    }
 		}
-		for (k=0; k<16 && j+k<h->obj[u].size; k++) {
-		    if (8==k) fprintf (stream, " ");
-		    HDfputc(p[j+k]>' ' && p[j+k]<='~' ? p[j+k] : '.', stream);
+		for(k = 0; k < 16 && j + k < h->obj[u].size; k++) {
+		    if(8 == k)
+                        HDfprintf(stream, " ");
+		    HDfputc(p[j + k]>' ' && p[j + k] <= '~' ? p[j + k] : '.', stream);
 		}
-		fprintf (stream, "\n");
+		HDfprintf(stream, "\n");
 	    }
 	}
-    }
 
 done:
     if (h && H5AC_unprotect(f, dxpl_id, H5AC_GHEAP, addr, h, H5AC__NO_FLAGS_SET) < 0)
diff --git a/src/H5HLdbg.c b/src/H5HLdbg.c
index 29d5c82..4ac22b8 100644
--- a/src/H5HLdbg.c
+++ b/src/H5HLdbg.c
@@ -54,8 +54,8 @@ herr_t
 H5HL_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent, int fwidth)
 {
     H5HL_t		*h = NULL;
-    int			i, overlap, free_block;
-    H5HL_free_t		*freelist = NULL;
+    int			free_block;
+    H5HL_free_t		*freelist;
     uint8_t		*marker = NULL;
     size_t		amount_free = 0;
     herr_t              ret_value = SUCCEED;       /* Return value */
@@ -72,8 +72,8 @@ H5HL_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent, int
     if(NULL == (h = (H5HL_t *)H5HL_protect(f, dxpl_id, addr, H5AC_READ)))
         HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, FAIL, "unable to load heap")
 
-    fprintf(stream, "%*sLocal Heap...\n", indent, "");
-    fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
+    HDfprintf(stream, "%*sLocal Heap...\n", indent, "");
+    HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
 	    "Header size (in bytes):",
 	    (unsigned long)h->prfx_size);
     HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth,
@@ -90,34 +90,36 @@ H5HL_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent, int
     if(NULL == (marker = (uint8_t *)H5MM_calloc(h->dblk_size)))
 	HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, FAIL, "memory allocation failed")
 
-    fprintf(stream, "%*sFree Blocks (offset, size):\n", indent, "");
-
+    HDfprintf(stream, "%*sFree Blocks (offset, size):\n", indent, "");
     for(free_block = 0, freelist = h->freelist; freelist; freelist = freelist->next, free_block++) {
         char temp_str[32];
 
-        sprintf(temp_str,"Block #%d:",free_block);
+        HDsnprintf(temp_str, sizeof(temp_str), "Block #%d:", free_block);
 	HDfprintf(stream, "%*s%-*s %8Zu, %8Zu\n", indent+3, "", MAX(0,fwidth-9),
 		temp_str,
 		freelist->offset, freelist->size);
 	if((freelist->offset + freelist->size) > h->dblk_size)
-	    fprintf(stream, "***THAT FREE BLOCK IS OUT OF BOUNDS!\n");
+	    HDfprintf(stream, "***THAT FREE BLOCK IS OUT OF BOUNDS!\n");
 	else {
-	    for(i = overlap = 0; i < (int)(freelist->size); i++) {
+            int	overlap = 0;
+            size_t i;
+
+	    for(i = 0; i < freelist->size; i++) {
 		if(marker[freelist->offset + i])
 		    overlap++;
 		marker[freelist->offset + i] = 1;
 	    } /* end for */
 	    if(overlap)
-		fprintf(stream, "***THAT FREE BLOCK OVERLAPPED A PREVIOUS ONE!\n");
+		HDfprintf(stream, "***THAT FREE BLOCK OVERLAPPED A PREVIOUS ONE!\n");
 	    else
 		amount_free += freelist->size;
 	} /* end for */
     } /* end for */
 
     if(h->dblk_size)
-	fprintf(stream, "%*s%-*s %.2f%%\n", indent, "", fwidth,
+	HDfprintf(stream, "%*s%-*s %.2f%%\n", indent, "", fwidth,
 		"Percent of heap used:",
-		(100.0 * (double)(h->dblk_size - amount_free) / (double)h->dblk_size));
+		((double)100.0f * (double)(h->dblk_size - amount_free) / (double)h->dblk_size));
 
     /*
      * Print the data in a VMS-style octal dump.
diff --git a/src/H5I.c b/src/H5I.c
index dbbc679..d4654da 100644
--- a/src/H5I.c
+++ b/src/H5I.c
@@ -48,6 +48,7 @@
 #include "H5Ipkg.h"		/* IDs			  		*/
 #include "H5MMprivate.h"	/* Memory management			*/
 #include "H5Oprivate.h"		/* Object headers		  	*/
+#include "H5SLprivate.h"	/* Skip Lists                           */
 
 /* Define this to compile in support for dumping ID information */
 /* #define H5I_DEBUG_OUTPUT */
@@ -66,25 +67,6 @@
    for re-use. */
 #define MAX_FREE_ID_STRUCTS 1000
 
-/*
- * Define the following macro for fast hash calculations (but limited
- * hash sizes)
- */
-#define HASH_SIZE_POWER_2
-
-#ifdef HASH_SIZE_POWER_2
-/*
- * Map an ID to a hash location (assumes s is a power of 2 and smaller
- * than the ID_MASK constant).
- */
-#  define H5I_LOC(a,s)		((hid_t)((size_t)(a)&((s)-1)))
-#else
-/*
- * Map an ID to a hash location.
- */
-#  define H5I_LOC(a,s)	(((hid_t)(a)&ID_MASK)%(s))
-#endif
-
 /* Combine a Type number and an atom index into an atom */
 #define H5I_MAKE(g,i)	((((hid_t)(g)&TYPE_MASK)<<ID_BITS)|	  \
 			     ((hid_t)(i)&ID_MASK))
@@ -97,20 +79,20 @@ typedef struct H5I_id_info_t {
     unsigned	count;		/* ref. count for this atom		    */
     unsigned    app_count;      /* ref. count of application visible atoms  */
     const void	*obj_ptr;	/* pointer associated with the atom	    */
-    struct H5I_id_info_t *next;	/* link to next atom (in case of hash-clash)*/
 } 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	wrapped;	/*whether the id count has wrapped around   */
-    unsigned	ids;		/*current number of IDs held		    */
-    unsigned	nextid;		/*ID to use for the next atom		    */
-    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	    */
+    unsigned	init_count;	/* # of times this type has been initialized*/
+    hbool_t	wrapped;	/* Whether the id count has wrapped around  */
+    unsigned	id_count;	/* Current number of IDs held		    */
+    hid_t	nextid;		/* ID to use for the next atom		    */
+    H5SL_t      *ids;           /* Pointer to skip list that stores IDs     */
+
+    /* Fields for holding available IDs */
+    unsigned    avail_count;    /* # of available ID structures awaiting recycling */
+    H5SL_t      *avail_ids;     /* pointer to skip list of available IDs */
 } H5I_id_type_t;
 
 typedef struct {
@@ -119,6 +101,18 @@ typedef struct {
     void *ret_obj;              /* Object to return */
 } H5I_search_ud_t;
 
+/* User data for iterator callback when IDs have wrapped */
+typedef struct {
+    hid_t nextid;               /* Next ID to expect */
+} H5I_wrap_ud_t;
+
+/* User data for iterator callback for ID iteration */
+typedef struct {
+    H5I_search_func_t user_func;        /* 'User' function to invoke */
+    void *user_udata;                   /* User data to pass to 'user' function */
+    hbool_t app_ref;                    /* Whether this is an appl. ref. call */
+} H5I_iterate_ud_t;
+
 /*-------------------- Locally scoped variables -----------------------------*/
 
 /* Array of pointers to atomic types */
@@ -142,10 +136,15 @@ H5FL_DEFINE_STATIC(H5I_id_type_t);
 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);
+static herr_t H5I__free_cb(void *_item, void *_key, void *_udata);
+static int H5I__destroy_type(H5I_type_t type);
+static void *H5I__remove_verify(hid_t id, H5I_type_t id_type);
+static void *H5I__remove_common(H5I_id_type_t *type_ptr, hid_t id);
+static int H5I__inc_type_ref(H5I_type_t type);
+static int H5I__get_type_ref(H5I_type_t type);
+static H5I_id_info_t *H5I__find_id(hid_t id);
 #ifdef H5I_DEBUG_OUTPUT
-static herr_t H5I_debug(H5I_type_t type);
+static herr_t H5I__debug(H5I_type_t type);
 #endif /* H5I_DEBUG_OUTPUT */
 
 

@@ -198,7 +197,7 @@ H5I_term_interface(void)
     if(H5_interface_initialize_g) {
         /* How many types are still being used? */
         for(type = (H5I_type_t)0; type < H5I_next_type; H5_INC_ENUM(H5I_type_t, type)) {
-            if((type_ptr = H5I_id_type_list_g[type]) && type_ptr->id_list)
+            if((type_ptr = H5I_id_type_list_g[type]) && type_ptr->ids)
                 n++;
         } /* end for */
 
@@ -207,7 +206,7 @@ H5I_term_interface(void)
             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];
                 if(type_ptr) {
-                    HDassert(NULL == type_ptr->id_list);
+                    HDassert(NULL == type_ptr->ids);
                     type_ptr = H5FL_FREE(H5I_id_type_t, type_ptr);
                     H5I_id_type_list_g[type] = NULL;
                 } /* end if */
@@ -286,7 +285,6 @@ H5Iregister_type(size_t hash_size, unsigned reserved, H5I_free_t free_func)
     /* 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;
 
@@ -337,13 +335,6 @@ H5I_register_type(const H5I_class_t *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(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[cls->type_id]) {
         /* Allocate the type information for new type */
         if(NULL == (type_ptr = (H5I_id_type_t *)H5FL_CALLOC(H5I_id_type_t)))
@@ -356,35 +347,28 @@ H5I_register_type(const H5I_class_t *cls)
     } /* end else */
 
     /* Initialize the ID type structure for new types */
-    if(type_ptr->count == 0) {
+    if(type_ptr->init_count == 0) {
         type_ptr->cls = cls;
-        type_ptr->wrapped = 0;
-        type_ptr->ids = 0;
-        type_ptr->nextid = cls->reserved;
-        type_ptr->next_id_ptr = NULL;
-        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")
-
-        /* Don't re-use IDs for property lists, as this causes problems
-         * 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(cls->type_id == H5I_GENPROP_LST || cls->type_id == H5I_DATATYPE)
-            type_ptr->reuse_ids = FALSE;
-        else
-            type_ptr->reuse_ids = TRUE;
-
+        type_ptr->wrapped = FALSE;
+        type_ptr->id_count = 0;
+        type_ptr->nextid = (hid_t)cls->reserved;
+        if(NULL == (type_ptr->ids = H5SL_create(H5SL_TYPE_HID, NULL)))
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTCREATE, FAIL, "skip list creation failed")
+        type_ptr->avail_count = 0;
+        if(NULL == (type_ptr->avail_ids = H5SL_create(H5SL_TYPE_HID, NULL)))
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTCREATE, FAIL, "skip list creation failed")
     } /* end if */
 
     /* Increment the count of the times this type has been initialized */
-    type_ptr->count++;
+    type_ptr->init_count++;
 
 done:
     if(ret_value < 0) {	/* Clean up on error */
         if(type_ptr) {
-            if(type_ptr->id_list)
-                H5MM_xfree(type_ptr->id_list);
+            if(type_ptr->ids)
+                H5SL_close(type_ptr->ids);
+            if(type_ptr->avail_ids)
+                H5SL_close(type_ptr->avail_ids);
             (void)H5FL_FREE(H5I_id_type_t, type_ptr);
         } /* end if */
     } /* end if */
@@ -503,11 +487,11 @@ H5I_nmembers(H5I_type_t type)
 
     if(type <= H5I_BADID || type >= H5I_next_type)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
-    if(NULL == (type_ptr = H5I_id_type_list_g[type]) || type_ptr->count <= 0)
+    if(NULL == (type_ptr = H5I_id_type_list_g[type]) || type_ptr->init_count <= 0)
 	HGOTO_DONE(0);
 
     /* Set return value */
-    H5_ASSIGN_OVERFLOW(ret_value, type_ptr->ids, unsigned, int);
+    H5_ASSIGN_OVERFLOW(ret_value, type_ptr->id_count, unsigned, int);
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -549,6 +533,35 @@ done:
 
 

 /*-------------------------------------------------------------------------
+ * Function:	H5I__free_cb
+ *
+ * Purpose:	Callback for freeing ID nodes in H5I__remove_common
+ *
+ * Return:	Success:	Non-negative
+ *		Failure:	Negative
+ *
+ * Programmer:	Quincey Koziol
+ *              Friday, October 4, 2013
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5I__free_cb(void *_item, void UNUSED *_key, void UNUSED *_udata)
+{
+    H5I_id_info_t *item = (H5I_id_info_t *)_item;       /* Pointer to the ID node */
+
+    FUNC_ENTER_STATIC_NOERR
+
+    /* Sanity check */
+    HDassert(item);
+
+    item = H5FL_FREE(H5I_id_info_t, item);
+
+    FUNC_LEAVE_NOAPI(H5_ITER_CONT)
+} /* end H5I__free_cb() */
+
+

+/*-------------------------------------------------------------------------
  * Function:	H5I_clear_type
  *
  * Purpose:	Removes all objects from the type, calling the free
@@ -560,32 +573,14 @@ done:
  * Programmer:	Robb Matzke
  *              Wednesday, March 24, 1999
  *
- * Modifications:
- * 		Robb Matzke, 1999-04-27
- *		If FORCE is zero then any item for which the free callback
- *		failed is not removed.  This function returns failure if
- *		items could not be removed.
- *
- * 		Robb Matzke, 1999-08-17
- *		If the object reference count is larger than one then it must
- *		be because the library is using the object internally. This
- *		happens for instance for file driver ID's which are stored in
- *		things like property lists, files, etc.  Objects that have a
- *		reference count larger than one are not affected unless FORCE
- *		is non-zero.
- *
- *      Neil Fortner, 2008-08-08
- *      Added app_ref parameter.  If app_ref is FALSE, then the
- *      application reference count is ignored (i.e. subtracted from
- *      the total reference count) when determining which id's to
- *      close.
  *-------------------------------------------------------------------------
  */
 herr_t
 H5I_clear_type(H5I_type_t type, hbool_t force, hbool_t app_ref)
 {
     H5I_id_type_t *type_ptr;	        /* ptr to the atomic type */
-    unsigned	i;                      /* Local index variable */
+    H5SL_node_t *curr_node;             /* Current skip list node ptr */
+    H5SL_node_t *next_node;             /* Next skip list node ptr */
     int		ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -594,7 +589,7 @@ H5I_clear_type(H5I_type_t type, hbool_t force, hbool_t app_ref)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
 
     type_ptr = H5I_id_type_list_g[type];
-    if(type_ptr == NULL || type_ptr->count <= 0)
+    if(type_ptr == NULL || type_ptr->init_count <= 0)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /*
@@ -602,22 +597,21 @@ 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->cls->hash_size; i++) {
-        H5I_id_info_t *cur;          /* Current node being worked with */
-        H5I_id_info_t *next;         /* Next node in list */
-
-        for(cur = type_ptr->id_list[i]; cur; cur = next) {
-            hbool_t    delete_node;            /* Flag to indicate node should be removed from linked list */
-
-            /*
-             * Do nothing to the object if the reference count is larger than
-             * one and forcing is off.
-             */
-            if(!force && (cur->count - (!app_ref * cur->app_count)) > 1) {
-                next = cur->next;
-                continue;
-            } /* end if */
+    for(curr_node = H5SL_first(type_ptr->ids); curr_node; curr_node = next_node) {
+        H5I_id_info_t *cur;         /* Current ID being worked with */
+        hbool_t    delete_node;     /* Flag to indicate node should be removed from linked list */
+
+        /* Get ID for this node */
+        if(NULL == (cur = (H5I_id_info_t *)H5SL_item(curr_node)))
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTGET, FAIL, "can't get ID info for node")
 
+        /*
+         * Do nothing to the object if the reference count is larger than
+         * one and forcing is off.
+         */
+        if(!force && (cur->count - (!app_ref * cur->app_count)) > 1)
+            delete_node = FALSE;
+        else {
             /* Check for a 'free' function and call it, if it exists */
             /* (Casting away const OK -QAK) */
             if(type_ptr->cls->free_func && (type_ptr->cls->free_func)((void *)cur->obj_ptr) < 0) {
@@ -642,62 +636,31 @@ H5I_clear_type(H5I_type_t type, hbool_t force, hbool_t app_ref)
                 /* Indicate node should be removed from list */
                 delete_node = TRUE;
             } /* end else */
+        } /* end else */
 
-            /* Check if we should delete this node or not */
-            if(delete_node) {
-                H5I_id_info_t *last;         /* Last node seen */
-                H5I_id_info_t *tmp;          /* Temporary node ptr */
-
-                /* Decrement the number of IDs in the type */
-                (type_ptr->ids)--;
-
-                /* Advance to next node */
-                next = cur->next;
-
-                /* Re-scan the list of nodes and remove the node from the list */
-                /* (can't maintain static pointers to the previous node in the */
-                /*      list, because the node's 'free' callback could have */
-                /*      make an H5I call, which could potentially change the */
-                /*      order of the nodes on the list - QAK) */
-                last = NULL;
-                tmp = type_ptr->id_list[i];
-                while(tmp != cur) {
-                    HDassert(tmp != NULL);
-                    last = tmp;
-                    tmp = tmp->next;
-                } /* end while */
-
-                /* Delete the node from the list */
-                if(NULL == last) {
-                    /* Node at head of list, just advance the list head to next node */
-                    HDassert(type_ptr->id_list[i] == cur);
-                    type_ptr->id_list[i] = next;
-                } /* end if */
-                else {
-                    /* Node in middle of list, jump over it */
-                    HDassert(last->next == cur);
-                    last->next = next;
-                } /* end else */
+        /* Get the next node in the list */
+        next_node = H5SL_next(curr_node);
 
-                /* Free the node */
-                cur = H5FL_FREE(H5I_id_info_t, cur);
-            } /* end if */
-            else {
-                /* Advance to next node */
-                next = cur->next;
-            } /* end else */
-        } /* end for */
+        /* Check if we should delete this node or not */
+        if(delete_node) {
+            /* Decrement the number of IDs in the type */
+            (type_ptr->id_count)--;
+
+            /* Remove the node from the list */
+            if(NULL == H5SL_remove(type_ptr->ids, &cur->id))
+                HGOTO_ERROR(H5E_ATOM, H5E_CANTDELETE, FAIL, "can't remove ID node from skip list")
+
+            /* Free the node */
+            cur = H5FL_FREE(H5I_id_info_t, cur);
+        } /* end if */
     } /* end for */
 
     /* Also free any ID structures being retained for potential re-use */
-    while(type_ptr->next_id_ptr) {
-        H5I_id_info_t *tmp_id_ptr;          /* temp ptr to next atom */
-
-        tmp_id_ptr = type_ptr->next_id_ptr->next;
-        (void)H5FL_FREE(H5I_id_info_t, type_ptr->next_id_ptr);
-        type_ptr->next_id_ptr = tmp_id_ptr;
-    } /* end while */
-    type_ptr->free_count = 0;
+    if(type_ptr->avail_count > 0) {
+        if(H5SL_free(type_ptr->avail_ids, H5I__free_cb, NULL) < 0)
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTREMOVE, FAIL, "can't release available ID nodes")
+        type_ptr->avail_count = 0;
+    } /* end if */
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -711,7 +674,7 @@ done:
  *		regardless of their reference counts. Destroying IDs
  *		involves calling the free-func for each ID's object and
  *		then adding the ID struct to the ID free list.  Public
- *		interface to H5I_destroy_type.
+ *		interface to H5I__destroy_type.
  *
  * Return:	Zero on success/Negative on failure
  *
@@ -731,7 +694,7 @@ H5Idestroy_type(H5I_type_t type)
     if(H5I_IS_LIB_TYPE(type))
         HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "cannot call public function on library type")
 
-    ret_value = H5I_destroy_type(type);
+    ret_value = H5I__destroy_type(type);
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -739,7 +702,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5I_destroy_type
+ * Function:	H5I__destroy_type
  *
  * Purpose:	Destroys a type along with all atoms in that type
  *		regardless of their reference counts. Destroying IDs
@@ -753,19 +716,19 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-herr_t
-H5I_destroy_type(H5I_type_t type)
+static herr_t
+H5I__destroy_type(H5I_type_t type)
 {
     H5I_id_type_t *type_ptr;	/* ptr to the atomic type */
     herr_t ret_value = SUCCEED; /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_STATIC
 
     if(type <= H5I_BADID || type >= H5I_next_type)
         HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
 
     type_ptr = H5I_id_type_list_g[type];
-    if(type_ptr == NULL || type_ptr->count <= 0)
+    if(type_ptr == NULL || type_ptr->init_count <= 0)
         HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /* Close/clear/destroy all IDs for this type */
@@ -777,14 +740,20 @@ H5I_destroy_type(H5I_type_t type)
     if(type_ptr->cls->flags & H5I_CLASS_IS_APPLICATION)
         type_ptr->cls = H5FL_FREE(H5I_class_t, (void *)type_ptr->cls);
 
-    type_ptr->id_list = H5MM_xfree(type_ptr->id_list);
+    if(H5SL_close(type_ptr->avail_ids) < 0)
+        HGOTO_ERROR(H5E_ATOM, H5E_CANTCLOSEOBJ, FAIL, "can't close skip list")
+    type_ptr->avail_ids = NULL;
+
+    if(H5SL_close(type_ptr->ids) < 0)
+        HGOTO_ERROR(H5E_ATOM, H5E_CANTCLOSEOBJ, FAIL, "can't close skip list")
+    type_ptr->ids = NULL;
 
     type_ptr = H5FL_FREE(H5I_id_type_t, type_ptr);
     H5I_id_type_list_g[type] = NULL;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5I_destroy_type() */
+} /* end H5I__destroy_type() */
 
 

 /*-------------------------------------------------------------------------
@@ -819,6 +788,47 @@ done:
 
 

 /*-------------------------------------------------------------------------
+ * Function:	H5I__wrapped_cb
+ *
+ * Purpose:	Callback for searching for next free ID, when IDs have wrapped
+ *
+ * Return:	Success:	Non-negative
+ *		Failure:	Negative
+ *
+ * Programmer:	Quincey Koziol
+ *              Thursday, October 3, 2013
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5I__wrapped_cb(void *_item, void UNUSED *_key, void *_udata)
+{
+    H5I_id_info_t *item = (H5I_id_info_t *)_item;       /* Pointer to the ID node */
+    H5I_wrap_ud_t *udata = (H5I_wrap_ud_t *)_udata;     /* Pointer to user data */
+    int ret_value = H5_ITER_CONT;                       /* Return value */
+
+    FUNC_ENTER_STATIC_NOERR
+
+    /* Sanity check */
+    HDassert(item);
+    HDassert(udata);
+
+    /* Break out if we see a free ID */
+    if(udata->nextid != item->id) {
+        /* Sanity check */
+        HDassert(item->id > udata->nextid);
+
+        ret_value = H5_ITER_STOP;
+    } /* end if */
+    else
+        /* Increment to expect the next ID */
+        udata->nextid++;
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5I__wrapped_cb() */
+
+

+/*-------------------------------------------------------------------------
  * Function:	H5I_register
  *
  * Purpose:	Registers an OBJECT in a TYPE and returns an ID for it.
@@ -834,13 +844,6 @@ done:
  *
  * Programmer:	Unknown
  *
- * Modifications:
- *
- *  Neil Fortner, 7 Aug 2008
- *  Added app_ref parameter and support for the app_count field, to
- *  distiguish between reference count from the library and from the
- *  application.
- *
  *-------------------------------------------------------------------------
  */
 hid_t
@@ -848,10 +851,6 @@ H5I_register(H5I_type_t type, const void *object, hbool_t app_ref)
 {
     H5I_id_type_t	*type_ptr;	/*ptr to the type		*/
     H5I_id_info_t	*id_ptr;	/*ptr to the new ID information */
-    unsigned		hash_loc;	/*new item's hash table location*/
-    hid_t		next_id;	/*next ID to check		*/
-    H5I_id_info_t	*curr_id;	/*ptr to the current atom	*/
-    unsigned		i;		/*counter			*/
     hid_t		ret_value = SUCCEED; /*return value		*/
 
     FUNC_ENTER_NOAPI(FAIL)
@@ -860,19 +859,17 @@ H5I_register(H5I_type_t type, const void *object, hbool_t app_ref)
     if(type <= H5I_BADID || type >= H5I_next_type)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
     type_ptr = H5I_id_type_list_g[type];
-    if(NULL == type_ptr || type_ptr->count <= 0)
+    if(NULL == type_ptr || type_ptr->init_count <= 0)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /* If there is an available ID structure, use it. */
-    if(type_ptr->next_id_ptr) {
+    if(type_ptr->avail_count > 0) {
         /* Use existing available ID struct */
-        id_ptr = type_ptr->next_id_ptr;
+        if(NULL == (id_ptr = (H5I_id_info_t *)H5SL_remove_first(type_ptr->avail_ids)))
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTREMOVE, FAIL, "can't remove ID from available ID list")
     
-        /* Remove struct from list of available ones */
-        type_ptr->next_id_ptr = type_ptr->next_id_ptr->next;
-
         /* Decrease count of available ID structures */
-        type_ptr->free_count--;
+        type_ptr->avail_count--;
     } /* end if */
     /* If no available ID structure, then create a new id for use, and
      * allocate a new struct to house it. */
@@ -892,63 +889,44 @@ H5I_register(H5I_type_t type, const void *object, hbool_t app_ref)
     id_ptr->count = 1; /*initial reference count*/
     id_ptr->app_count = !!app_ref;
     id_ptr->obj_ptr = object;
-    id_ptr->next = NULL;
-
-    /* hash bucket already full, prepend to front of chain */
-    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];
 
     /* Insert into the type */
-    type_ptr->id_list[hash_loc] = id_ptr;
-    type_ptr->ids++;
+    if(H5SL_insert(type_ptr->ids, id_ptr, &id_ptr->id) < 0)
+        HGOTO_ERROR(H5E_ATOM, H5E_CANTINSERT, FAIL, "can't insert ID node into skip list")
+    type_ptr->id_count++;
 
     /*
      * This next section of code checks for the 'nextid' getting too large and
      * wrapping around, thus necessitating checking for duplicate IDs being
      * handed out.
      */
-    if(type_ptr->nextid > (unsigned)ID_MASK) {
-	type_ptr->wrapped = 1;
-	type_ptr->nextid = type_ptr->cls->reserved;
-    } /* end if */
+    if(type_ptr->nextid > (hid_t)ID_MASK)
+	type_ptr->wrapped = TRUE;
 
     /*
      * If we've wrapped around then we need to check for duplicate id's being
      * handed out.
      */
     if(type_ptr->wrapped) {
-	/*
-	 * Make sure we check all available ID's.  If we're about at the end
-	 * of the range then wrap around and check the beginning values.  If
-	 * we check all possible values and didn't find any free ones *then*
-	 * we can fail.
-	 */
-	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->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->cls->hash_size);
-	    curr_id = type_ptr->id_list[hash_loc];
-	    if(curr_id == NULL)
-                break; /* Ha! this is not likely... */
-
-	    while(curr_id) {
-		if(curr_id->id == next_id)
-                    break;
-		curr_id = curr_id->next;
-	    } /* end while */
-	    if(!curr_id)
-                break; /* must not have found a match */
-	    type_ptr->nextid++;
-	} /* end for */
-
-	if(i >= (unsigned)ID_MASK)
-	    /* All the IDs are gone! */
+        H5I_wrap_ud_t udata;    /* User data for iteration */
+        herr_t iter_status;     /* Iteration status */
+
+        /* Set up user data for iteration */
+        udata.nextid = (hid_t)type_ptr->cls->reserved;
+
+        /* Iterate over all the ID nodes, looking for a gap in the ID sequence */
+        if((iter_status = H5SL_iterate(type_ptr->ids, H5I__wrapped_cb, &udata)) < 0)
+            HGOTO_ERROR(H5E_ATOM, H5E_BADITER, FAIL, "ID iteration failed")
+
+        /* If we didn't break out of the iteration and we're at the max. ID, we've used all the IDs */
+        if(0 == iter_status && udata.nextid >= ID_MASK)
             HGOTO_ERROR(H5E_ATOM, H5E_NOIDS, FAIL, "no IDs available in type")
+
+        /* Sanity check */
+        HDassert(udata.nextid < ID_MASK);
+
+        /* Retain the next ID for the class */
+        type_ptr->nextid = udata.nextid;
     } /* end if */
 
     /* Set return value */
@@ -982,7 +960,7 @@ H5I_subst(hid_t id, const void *new_object)
     FUNC_ENTER_NOAPI(NULL)
 
     /* General lookup of the ID */
-    if(NULL == (id_ptr = H5I_find_id(id)))
+    if(NULL == (id_ptr = H5I__find_id(id)))
         HGOTO_ERROR(H5E_ATOM, H5E_NOTFOUND, NULL, "can't get ID ref count")
 
     /* Get the old object pointer to return */
@@ -1019,7 +997,7 @@ H5I_object(hid_t id)
     FUNC_ENTER_NOAPI(NULL)
 
     /* General lookup of the ID */
-    if(NULL != (id_ptr = H5I_find_id(id))) {
+    if(NULL != (id_ptr = H5I__find_id(id))) {
         /* Get the object pointer to return */
         /* (Casting away const OK -QAK) */
         ret_value = (void *)id_ptr->obj_ptr;
@@ -1093,7 +1071,7 @@ H5I_object_verify(hid_t id, H5I_type_t id_type)
     HDassert(id_type >= 1 && id_type < H5I_next_type);
 
     /* Verify that the type of the ID is correct & lookup the ID */
-    if(id_type == H5I_TYPE(id) && NULL != (id_ptr = H5I_find_id(id))) {
+    if(id_type == H5I_TYPE(id) && NULL != (id_ptr = H5I__find_id(id))) {
         /* Get the object pointer to return */
         /* (Casting away const OK -QAK) */
         ret_value = (void *)id_ptr->obj_ptr;
@@ -1175,7 +1153,7 @@ done:
  *
  * Purpose:	Removes the specified ID from its type, first checking that the
  *			type of the ID and the type type are the same.  Public interface to
- *			H5I_remove_verify.
+ *			H5I__remove_verify.
  *
  * Return:	Success:	A pointer to the object that was removed, the
  *				same pointer which would have been found by
@@ -1198,7 +1176,7 @@ H5Iremove_verify(hid_t id, H5I_type_t id_type)
         HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, NULL, "cannot call public function on library type")
 
     /* Remove the id */
-    ret_value = H5I_remove_verify(id, id_type);
+    ret_value = H5I__remove_verify(id, id_type);
 
 done:
     FUNC_LEAVE_API(ret_value)
@@ -1206,7 +1184,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5I_remove_verify
+ * Function:	H5I__remove_verify
  *
  * Purpose:	Removes the specified ID from its type, first checking that
  *			the ID's type is the same as the ID type supplied as an argument
@@ -1222,11 +1200,11 @@ done:
  *-------------------------------------------------------------------------
  */
 void *
-H5I_remove_verify(hid_t id, H5I_type_t id_type)
+H5I__remove_verify(hid_t id, H5I_type_t id_type)
 {
     void * ret_value = NULL;	/*return value			*/
 
-    FUNC_ENTER_NOAPI(NULL)
+    FUNC_ENTER_STATIC_NOERR
 
     /* Argument checking will be performed by H5I_remove() */
 
@@ -1234,10 +1212,72 @@ H5I_remove_verify(hid_t id, H5I_type_t id_type)
     if(id_type == H5I_TYPE(id))
         ret_value = H5I_remove(id);
 
-done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5I_remove_verify() */
+} /* end H5I__remove_verify() */
+
+

+/*-------------------------------------------------------------------------
+ * Function:	H5I__remove_common
+ *
+ * Purpose:	Common code to remove a specified ID from its type.
+ *
+ * Return:	Success:	A pointer to the object that was removed, the
+ *				same pointer which would have been found by
+ *				calling H5I_object().
+ *		Failure:	NULL
+ *
+ * Programmer:  Quincey Koziol
+ *              October 3, 2013
+ *
+ *-------------------------------------------------------------------------
+ */
+static void *
+H5I__remove_common(H5I_id_type_t *type_ptr, hid_t id)
+{
+    H5I_id_info_t	*curr_id;	/*ptr to the current atom	*/
+    void *	        ret_value;	/*return value			*/
+
+    FUNC_ENTER_STATIC
+
+    /* Sanity check */
+    HDassert(type_ptr);
+
+    /* Get the ID node for the ID */
+    if(NULL == (curr_id = (H5I_id_info_t *)H5SL_remove(type_ptr->ids, &id)))
+        HGOTO_ERROR(H5E_ATOM, H5E_CANTDELETE, NULL, "can't remove ID node from skip list")
 
+    /* (Casting away const OK -QAK) */
+    ret_value = (void *)curr_id->obj_ptr;
+
+    /* If there's room, and we can save IDs of this type, then 
+       save the struct (and its ID) for future re-use */
+    if((type_ptr->cls->flags & H5I_CLASS_REUSE_IDS)
+            && (type_ptr->avail_count < MAX_FREE_ID_STRUCTS)) {
+        if(H5SL_insert(type_ptr->avail_ids, curr_id, &curr_id->id) < 0)
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTINSERT, NULL, "can't insert available ID node into skip list")
+        type_ptr->avail_count++;
+    } /* end if */
+    /* Otherwise, just toss it. */
+    else
+        curr_id = H5FL_FREE(H5I_id_info_t, curr_id);
+
+    /* Decrement the number of IDs in the type */
+    (type_ptr->id_count)--;
+
+    /* If there are no more IDs of this type, then we can free all available
+       ID strutures, and reset starting typeid and wrapped status. */
+    if(0 == type_ptr->id_count) {
+        if(H5SL_free(type_ptr->avail_ids, H5I__free_cb, NULL) < 0)
+            HGOTO_ERROR(H5E_ATOM, H5E_CANTREMOVE, NULL, "can't release available ID nodes")
+        type_ptr->avail_count = 0;
+
+        type_ptr->nextid = (hid_t)type_ptr->cls->reserved;
+        type_ptr->wrapped = FALSE;
+    } /* end if */
+
+done:
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5I__remove_common() */
 
 

 /*-------------------------------------------------------------------------
@@ -1258,12 +1298,8 @@ void *
 H5I_remove(hid_t id)
 {
     H5I_id_type_t	*type_ptr;	/*ptr to the atomic type	*/
-    H5I_id_info_t	*curr_id;	/*ptr to the current atom	*/
-    H5I_id_info_t	*last_id;	/*ptr to the last atom		*/
-    H5I_id_info_t   *tmp_id_ptr; /*temp ptr to next atom     */
     H5I_type_t		type;		/*atom's atomic type		*/
-    unsigned		hash_loc;	/*atom's hash table location	*/
-    void *	      ret_value = NULL;	/*return value			*/
+    void *	        ret_value;	/*return value			*/
 
     FUNC_ENTER_NOAPI(NULL)
 
@@ -1272,65 +1308,12 @@ H5I_remove(hid_t id)
     if(type <= H5I_BADID || type >= H5I_next_type)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "invalid type number")
     type_ptr = H5I_id_type_list_g[type];
-    if(type_ptr == NULL || type_ptr->count <= 0)
+    if(type_ptr == NULL || type_ptr->init_count <= 0)
 	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->cls->hash_size);
-    curr_id = type_ptr->id_list[hash_loc];
-    if(NULL == curr_id)
-	HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, NULL, "invalid ID")
-
-    last_id = NULL;
-    while(curr_id != NULL) {
-        if(curr_id->id == id)
-            break;
-        last_id = curr_id;
-        curr_id = curr_id->next;
-    } /* end while */
-
-    if(curr_id != NULL) {
-        if(last_id == NULL) {
-            /* ID is the first in the chain */
-            type_ptr->id_list[hash_loc] = curr_id->next;
-        } else {
-            last_id->next = curr_id->next;
-        }
-        /* (Casting away const OK -QAK) */
-        ret_value = (void *)curr_id->obj_ptr;
-        
-        /* If there's room, and we can save IDs of this type, then 
-           save the struct (and its ID) for future re-use */
-        if((type_ptr->reuse_ids)&&(type_ptr->free_count < MAX_FREE_ID_STRUCTS)) {
-            curr_id->next = type_ptr->next_id_ptr;
-            type_ptr->next_id_ptr = curr_id;
-            type_ptr->free_count++;
-        } /* end if */
-        /* Otherwise, just toss it. */
-        else
-            curr_id = H5FL_FREE(H5I_id_info_t, curr_id);
-    } /* end if */
-    else {
-        /* couldn't find the ID in the proper place */
-	HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, NULL, "invalid ID")
-    }
-
-    /* Decrement the number of IDs in the type */
-    (type_ptr->ids)--;
-
-    /* If there are no more IDs of this type, then we can free all available
-       ID strutures, and reset starting typeid and wrapped status. */
-    if(type_ptr->ids == 0) {
-        while(type_ptr->next_id_ptr) {
-            tmp_id_ptr = type_ptr->next_id_ptr->next;
-            (void)H5FL_FREE(H5I_id_info_t, type_ptr->next_id_ptr);
-            type_ptr->next_id_ptr = tmp_id_ptr;
-        } /* end while */
-        type_ptr->free_count = 0;
-
-        type_ptr->nextid = type_ptr->cls->reserved;
-        type_ptr->wrapped = FALSE;
-    } /* end if */
+    /* Remove the node from the type */
+    if(NULL == (ret_value = H5I__remove_common(type_ptr, id)))
+        HGOTO_ERROR(H5E_ATOM, H5E_CANTDELETE, NULL, "can't remove ID node")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -1408,11 +1391,11 @@ H5I_dec_ref(hid_t id)
     if(type <= H5I_BADID || type >= H5I_next_type)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
     type_ptr = H5I_id_type_list_g[type];
-    if(NULL == type_ptr || type_ptr->count <= 0)
+    if(NULL == type_ptr || type_ptr->init_count <= 0)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
 
     /* General lookup of the ID */
-    if(NULL == (id_ptr = H5I_find_id(id)))
+    if(NULL == (id_ptr = (H5I_id_info_t *)H5SL_search(type_ptr->ids, &id)))
 	HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't locate ID")
 
     /*
@@ -1433,7 +1416,9 @@ H5I_dec_ref(hid_t id)
     if(1 == id_ptr->count) {
         /* (Casting away const OK -QAK) */
         if(!type_ptr->cls->free_func || (type_ptr->cls->free_func)((void *)id_ptr->obj_ptr) >= 0) {
-            H5I_remove(id);
+            /* Remove the node from the type */
+            if(NULL == H5I__remove_common(type_ptr, id))
+                HGOTO_ERROR(H5E_ATOM, H5E_CANTDELETE, FAIL, "can't remove ID node")
             ret_value = 0;
         } /* end if */
         else
@@ -1481,7 +1466,7 @@ H5I_dec_app_ref(hid_t id)
     /* Check if the ID still exists */
     if(ret_value > 0) {
         /* General lookup of the ID */
-        if(NULL == (id_ptr = H5I_find_id(id)))
+        if(NULL == (id_ptr = H5I__find_id(id)))
             HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't locate ID")
 
         /* Adjust app_ref */
@@ -1587,13 +1572,6 @@ done:
  * Programmer:	Robb Matzke
  *              Thursday, July 29, 1999
  *
- * Modifications:
- *
- *  Neil Fortner, 7 Aug 2008
- *  Added app_ref parameter and support for the app_count field, to
- *  distiguish between reference count from the library and from the
- *  application.
- *
  *-------------------------------------------------------------------------
  */
 int
@@ -1614,11 +1592,11 @@ H5I_inc_ref(hid_t id, hbool_t app_ref)
     if(type <= H5I_BADID || type >= H5I_next_type)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
     type_ptr = H5I_id_type_list_g[type];
-    if(!type_ptr || type_ptr->count <= 0)
+    if(!type_ptr || type_ptr->init_count <= 0)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /* General lookup of the ID */
-    if(NULL == (id_ptr = H5I_find_id(id)))
+    if(NULL == (id_ptr = (H5I_id_info_t *)H5SL_search(type_ptr->ids, &id)))
 	HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't locate ID")
 
     /* Adjust reference counts */
@@ -1679,13 +1657,6 @@ done:
  * Programmer:	Quincey Koziol
  *              Saturday, Decemeber  6, 2003
  *
- * Modifications:
- *
- *  Neil Fortner, 7 Aug 2008
- *  Added app_ref parameter and support for the app_count field, to
- *  distiguish between reference count from the library and from the
- *  application.
- *
  *-------------------------------------------------------------------------
  */
 int
@@ -1706,11 +1677,11 @@ H5I_get_ref(hid_t id, hbool_t app_ref)
     if(type <= H5I_BADID || type >= H5I_next_type)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
     type_ptr = H5I_id_type_list_g[type];
-    if(!type_ptr || type_ptr->count <= 0)
+    if(!type_ptr || type_ptr->init_count <= 0)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /* General lookup of the ID */
-    if(NULL == (id_ptr = H5I_find_id(id)))
+    if(NULL == (id_ptr = (H5I_id_info_t *)H5SL_search(type_ptr->ids, &id)))
 	HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't locate ID")
 
     /* Set return value */
@@ -1751,7 +1722,7 @@ H5Iinc_type_ref(H5I_type_t type)
         HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "cannot call public function on library type")
 
     /* Do actual increment operation */
-    if((ret_value = H5I_inc_type_ref(type)) < 0)
+    if((ret_value = H5I__inc_type_ref(type)) < 0)
         HGOTO_ERROR(H5E_ATOM, H5E_CANTINC, FAIL, "can't increment ID type ref count")
 
 done:
@@ -1760,7 +1731,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5I_inc_type_ref
+ * Function:	H5I__inc_type_ref
  *
  * Purpose:	Increment the reference count for an ID type.
  *
@@ -1773,13 +1744,13 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-int
-H5I_inc_type_ref(H5I_type_t type)
+static int
+H5I__inc_type_ref(H5I_type_t type)
 {
     H5I_id_type_t	*type_ptr;	/* ptr to the type	*/
     int ret_value;                      /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(type > 0 && type < H5I_next_type);
@@ -1790,11 +1761,11 @@ H5I_inc_type_ref(H5I_type_t type)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /* Set return value */
-    ret_value = (int)(++(type_ptr->count));
+    ret_value = (int)(++(type_ptr->init_count));
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5I_inc_type_ref() */
+} /* end H5I__inc_type_ref() */
 
 

 /*-------------------------------------------------------------------------
@@ -1869,7 +1840,7 @@ H5I_dec_type_ref(H5I_type_t type)
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
 
     type_ptr = H5I_id_type_list_g[type];
-    if(type_ptr == NULL || type_ptr->count <= 0)
+    if(type_ptr == NULL || type_ptr->init_count <= 0)
 	HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /*
@@ -1878,13 +1849,13 @@ H5I_dec_type_ref(H5I_type_t type)
      * free all memory it used.  The free function is invoked for each atom
      * being freed.
      */
-    if(1 == type_ptr->count) {
-        H5I_destroy_type(type);
+    if(1 == type_ptr->init_count) {
+        H5I__destroy_type(type);
         ret_value = 0;
     } /* end if */
     else {
-        --(type_ptr->count);
-        ret_value = (herr_t)type_ptr->count;
+        --(type_ptr->init_count);
+        ret_value = (herr_t)type_ptr->init_count;
     } /* end else */
 
 done:
@@ -1922,7 +1893,7 @@ H5Iget_type_ref(H5I_type_t type)
         HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "cannot call public function on library type")
 
     /* Do actual retrieve operation */
-    if((ret_value = H5I_get_type_ref(type)) < 0)
+    if((ret_value = H5I__get_type_ref(type)) < 0)
         HGOTO_ERROR(H5E_ATOM, H5E_CANTGET, FAIL, "can't get ID type ref count")
 
 done:
@@ -1931,7 +1902,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5I_get_type_ref
+ * Function:	H5I__get_type_ref
  *
  * Purpose:	Retrieve the reference count for an ID type.
  *
@@ -1945,13 +1916,13 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-int
-H5I_get_type_ref(H5I_type_t type)
+static int
+H5I__get_type_ref(H5I_type_t type)
 {
     H5I_id_type_t	*type_ptr;	/*ptr to the type	*/
     int ret_value;                      /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_STATIC
 
     /* Sanity check */
     HDassert(type >= 0);
@@ -1962,11 +1933,11 @@ H5I_get_type_ref(H5I_type_t type)
         HGOTO_ERROR(H5E_ATOM, H5E_BADGROUP, FAIL, "invalid type")
 
     /* Set return value */
-    ret_value = (int)type_ptr->count;
+    ret_value = (int)type_ptr->init_count;
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5I_get_type_ref() */
+} /* end H5I__get_type_ref() */
 
 

 /*-------------------------------------------------------------------------
@@ -1994,7 +1965,7 @@ H5Iis_valid(hid_t id)
     H5TRACE1("t", "i", id);
 
     /* Find the ID */
-    if (NULL == (id_ptr = H5I_find_id(id)))
+    if (NULL == (id_ptr = H5I__find_id(id)))
         ret_value = FALSE;
 
     /* Check if the found id is an internal id */
@@ -2007,7 +1978,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5I_search_cb
+ * Function:	H5I__search_cb
  *
  * Purpose:	Callback routine for H5Isearch, when it calls H5I_iterate.
  *		Calls "user" callback search function, and then sets return
@@ -2024,19 +1995,19 @@ done:
  *-------------------------------------------------------------------------
  */
 static int
-H5I_search_cb(void *obj, hid_t id, void *_udata)
+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_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     ret_value = (*udata->app_cb)(obj, id, udata->app_key);
     if(ret_value > 0)
         udata->ret_obj = obj;
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5I_search_cb() */
+} /* end H5I__search_cb() */
 
 

 /*-------------------------------------------------------------------------
@@ -2083,7 +2054,7 @@ H5Isearch(H5I_type_t type, H5I_search_func_t func, void *key)
     /* Note that H5I_iterate returns an error code.  We ignore it 
      * here, as we can't do anything with it without revising the API.
      */
-    H5I_iterate(type, H5I_search_cb, &udata, TRUE);
+    (void)H5I_iterate(type, H5I__search_cb, &udata, TRUE);
 
     /* Set return value */
     ret_value = udata.ret_obj;
@@ -2094,6 +2065,46 @@ done:
 
 

 /*-------------------------------------------------------------------------
+ * Function:	H5I__iterate_cb
+ *
+ * Purpose:	Callback routine for H5I_iterate, invokes "user" callback
+ *              function, and then sets return value, based on the result of
+ *              that callback.
+ *
+ * Return:	Success:	Non-negative on success
+ *		Failure:	Negative
+ *
+ * Programmer:	Quincey Koziol
+ *		Thursday, October 3, 2013
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5I__iterate_cb(void *_item, void UNUSED *_key, void *_udata)
+{
+    H5I_id_info_t *item = (H5I_id_info_t *)_item;       /* Pointer to the ID node */
+    H5I_iterate_ud_t *udata = (H5I_iterate_ud_t *)_udata; /* User data for callback */
+    int ret_value = H5_ITER_CONT;     /* Callback return value */
+
+    FUNC_ENTER_STATIC_NOERR
+
+    /* Don't make callback if app_ref is set and the appl. ref count is 0 */
+    if((!udata->app_ref) || (item->app_count > 0)) {
+        herr_t cb_ret_val;
+
+        /* (Casting away const OK) */
+        cb_ret_val = (*udata->user_func)((void *)item->obj_ptr, item->id, udata->user_udata);
+        if(cb_ret_val > 0)
+            ret_value = H5_ITER_STOP;	/* terminate iteration early */
+        else if(cb_ret_val < 0)
+            ret_value = H5_ITER_ERROR;  /* indicate failure (which terminates iteration) */
+    } /* end if */
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5I__iterate_cb() */
+
+

+/*-------------------------------------------------------------------------
  * Function:	H5I_iterate
  *
  * Purpose:	Apply function FUNC to each member of type TYPE (with 
@@ -2135,33 +2146,19 @@ H5I_iterate(H5I_type_t type, H5I_search_func_t func, void *udata, hbool_t app_re
 	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "invalid type number")
     type_ptr = H5I_id_type_list_g[type];
 
-    /* Only iterate through hash table if it is initialized and there are IDs in group */
-    if(type_ptr && type_ptr->count > 0 && type_ptr->ids > 0) {
-        unsigned u;			/* Counter		*/
-
-        /* Start at the beginning of the array */
-        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];
-            while(id_ptr) {
-                H5I_id_info_t	*next_id;	/* Ptr to the next ID	*/
-
-                /* Protect against ID being deleted in callback */
-                next_id = id_ptr->next;
-                if((!app_ref) || (id_ptr->app_count > 0)) {
-                    herr_t cb_ret_val;  /* Callback return value */
-
-                    /* (Casting away const OK) */
-		    cb_ret_val = (*func)((void *)id_ptr->obj_ptr, id_ptr->id, udata);
-		    if(cb_ret_val > 0)
-                        HGOTO_DONE(SUCCEED)	/* terminate iteration early */
-		    else if(cb_ret_val < 0)
-			HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "func failed")
-		} /* end if */
-                id_ptr = next_id;
-            } /* end while */
-        } /* end for */
+    /* Only iterate through ID list if it is initialized and there are IDs in type */
+    if(type_ptr && type_ptr->init_count > 0 && type_ptr->id_count > 0) {
+        H5I_iterate_ud_t iter_udata;    /* User data for iteration callback */
+        herr_t iter_status;             /* Iteration status */
+
+        /* Set up iterator user data */
+        iter_udata.user_func = func;
+        iter_udata.user_udata = udata;
+        iter_udata.app_ref = app_ref;
+
+        /* Iterate over IDs */
+        if((iter_status = H5SL_iterate(type_ptr->ids, H5I__iterate_cb, &iter_udata)) < 0)
+            HGOTO_ERROR(H5E_ATOM, H5E_BADITER, FAIL, "iteration failed")
     } /* end if */
 
 done:
@@ -2170,7 +2167,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5I_find_id
+ * Function:	H5I__find_id
  *
  * Purpose:	Given an object ID find the info struct that describes the
  *		object.
@@ -2184,16 +2181,13 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5I_id_info_t *
-H5I_find_id(hid_t id)
+H5I__find_id(hid_t id)
 {
     H5I_id_type_t	*type_ptr;		/*ptr to the type	*/
-    H5I_id_info_t	*last_id;		/*ptr to the last ID	*/
-    H5I_id_info_t	*id_ptr;		/*ptr to the new ID	*/
     H5I_type_t		type;			/*ID's type		*/
-    unsigned		hash_loc;		/*bucket pointer	*/
     H5I_id_info_t	*ret_value;		/*return value		*/
 
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     /* Check arguments */
     type = H5I_TYPE(id);
@@ -2201,35 +2195,15 @@ H5I_find_id(hid_t id)
         HGOTO_DONE(NULL);
 
     type_ptr = H5I_id_type_list_g[type];
-    if (!type_ptr || type_ptr->count <= 0)
+    if (!type_ptr || type_ptr->init_count <= 0)
         HGOTO_DONE(NULL);
 
-    /* Get the bucket in which the ID is located */
-    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 */
-    last_id = NULL;
-    while(id_ptr) {
-	if(id_ptr->id == id) {
-            /* If we found an object, move it to the front of the list, if it isn't there already */
-            if(last_id != NULL) {
-                last_id->next = id_ptr->next;
-                id_ptr->next = type_ptr->id_list[hash_loc];
-                type_ptr->id_list[hash_loc] = id_ptr;
-            } /* end if */
-            break;
-        } /* end if */
-        last_id = id_ptr;
-	id_ptr = id_ptr->next;
-    } /* end while */
-
-    /* Set the return value */
-    ret_value = id_ptr;
+    /* Locate the ID node for the ID */
+    ret_value = (H5I_id_info_t *)H5SL_search(type_ptr->ids, &id);
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5I_find_id() */
+} /* end H5I__find_id() */
 
 

 /*-------------------------------------------------------------------------
@@ -2360,9 +2334,66 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5I_get_file_id() */
 
+#ifdef H5I_DEBUG_OUTPUT
 

 /*-------------------------------------------------------------------------
- * Function:	H5I_debug
+ * Function:	H5I__debug_cb
+ *
+ * Purpose:	Dump the contents of an ID to stderr for debugging.
+ *
+ * Return:	Success: Non-negative
+ *		Failure: Negative
+ *
+ * Programmer:	Robb Matzke
+ *		Friday, February 19, 1999
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5I__debug_cb(void *_item, void UNUSED *_key, void *_udata)
+{
+    H5I_id_info_t *item = (H5I_id_info_t *)_item;       /* Pointer to the ID node */
+    H5I_type_t type = *(H5I_type_t *)_udata;            /* User data */
+    H5G_name_t *path = NULL;
+    int ret_value = H5_ITER_CONT;                       /* Return value */
+
+    FUNC_ENTER_STATIC_NOERR
+
+    fprintf(stderr, "		 id = %lu\n", (unsigned long)(item->id));
+    fprintf(stderr, "		 count = %u\n", item->count);
+    fprintf(stderr, "		 obj   = 0x%08lx\n", (unsigned long)(item->obj_ptr));
+
+    /* Get the group location, so we get get the name */
+    switch(type) {
+        case H5I_GROUP:
+            path = H5G_nameof((H5G_t*)item->obj_ptr);
+            break;
+
+        case H5I_DATASET:
+            path = H5D_nameof((H5D_t*)item->obj_ptr);
+            break;
+
+        case H5I_DATATYPE:
+            path = H5T_nameof((H5T_t*)item->obj_ptr);
+            break;
+
+        default:
+            break;   /* Other types of IDs are not stored in files */
+    } /* end switch*/
+
+    if(path) {
+        if(path->user_path_r)
+            fprintf(stderr, "                user_path = %s\n", H5RS_get_str(path->user_path_r));
+        if(path->full_path_r)
+            fprintf(stderr, "                full_path = %s\n", H5RS_get_str(path->full_path_r));
+    } /* end if */
+
+    FUNC_LEAVE_NOAPI(SUCCEED)
+} /* end H5I__debug_cb() */
+
+

+/*-------------------------------------------------------------------------
+ * Function:	H5I__debug
  *
  * Purpose:	Dump the contents of a type to stderr for debugging.
  *
@@ -2374,74 +2405,28 @@ done:
  *
  *-------------------------------------------------------------------------
  */
-#ifdef H5I_DEBUG_OUTPUT
 static herr_t
-H5I_debug(H5I_type_t type)
+H5I__debug(H5I_type_t type)
 {
     H5I_id_type_t *type_ptr;
-    H5I_id_info_t *cur;
-    H5G_name_t *path;
-    int   is, js;
-    unsigned int iu;
-    herr_t ret_value;  /* Return value */
 
-    FUNC_ENTER_NOAPI(FAIL)
+    FUNC_ENTER_STATIC_NOERR
 
     fprintf(stderr, "Dumping ID type %d\n", (int)type);
     type_ptr = H5I_id_type_list_g[type];
 
     /* Header */
-    fprintf(stderr, "	 count	   = %u\n", type_ptr->count);
-    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->cls->hash_size);
-    fprintf(stderr, "	 ids	   = %u\n", type_ptr->ids);
-    fprintf(stderr, "	 nextid	   = %u\n", type_ptr->nextid);
-
-    /* Cache */
-    fprintf(stderr, "	 Cache:\n");
-    for (is=0; is<ID_CACHE_SIZE; is++) {
-        if (H5I_cache_g[is] && H5I_TYPE(H5I_cache_g[is]->id)==type) {
-            fprintf(stderr, "	     Entry-%d, ID=%lu\n",
-                    is, (unsigned long)(H5I_cache_g[is]->id));
-        }
-    }
+    fprintf(stderr, "	 init_count = %u\n", type_ptr->init_count);
+    fprintf(stderr, "	 reserved   = %u\n", type_ptr->cls->reserved);
+    fprintf(stderr, "	 wrapped    = %u\n", type_ptr->wrapped);
+    fprintf(stderr, "	 id_count   = %u\n", type_ptr->id_count);
+    fprintf(stderr, "	 nextid	    = %u\n", type_ptr->nextid);
 
     /* List */
     fprintf(stderr, "	 List:\n");
-    for (iu=0; iu<type_ptr->hash_size; iu++) {
-        for (js=0, cur=type_ptr->id_list[iu]; cur; cur=cur->next, js++) {
-            fprintf(stderr, "	     #%u.%d\n", iu, js);
-            fprintf(stderr, "		 id = %lu\n", (unsigned long)(cur->id));
-            fprintf(stderr, "		 count = %u\n", cur->count);
-            fprintf(stderr, "		 obj   = 0x%08lx\n", (unsigned long)(cur->obj_ptr));
-
-            /* Get the group location, so we get get the name */
-            switch(type) {
-                case H5I_GROUP:
-                    path = H5G_nameof((H5G_t*)cur->obj_ptr);
-                    break;
-                case H5I_DATASET:
-                    path = H5D_nameof((H5D_t*)cur->obj_ptr);
-                    break;
-                case H5I_DATATYPE:
-                    path = H5T_nameof((H5T_t*)cur->obj_ptr);
-                    break;
-                default:
-                    continue;   /* Other types of IDs are not stored in files */
-            } /* end switch*/
-
-            if(path) {
-                if(path->user_path_r)
-                    fprintf(stderr, "                user_path = %s\n", H5RS_get_str(path->user_path_r));
-                if(ent->canon_path_r)
-                    fprintf(stderr, "                canon_path = %s\n", H5RS_get_str(path->canon_path_r));
-            } /* end if */
-        } /* end for */
-    } /* end for */
+    H5SL_iterate(type_ptr->ids, H5I__debug_cb, &type);
 
-done:
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5I_debug() */
+} /* end H5I__debug() */
 #endif /* H5I_DEBUG_OUTPUT */
 
diff --git a/src/H5Iprivate.h b/src/H5Iprivate.h
index ff1463d..88c2432 100644
--- a/src/H5Iprivate.h
+++ b/src/H5Iprivate.h
@@ -37,6 +37,7 @@
 
 /* Flags for ID class */
 #define H5I_CLASS_IS_APPLICATION        0x01
+#define H5I_CLASS_REUSE_IDS             0x02
 
 
 /****************************/
@@ -46,7 +47,6 @@
 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
@@ -69,7 +69,6 @@ typedef struct H5I_class_t {
 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);
 H5_DLL hid_t H5I_register(H5I_type_t type, const void *object, hbool_t app_ref);
 H5_DLL void *H5I_subst(hid_t id, const void *new_object);
 H5_DLL void *H5I_object(hid_t id);
@@ -77,16 +76,13 @@ H5_DLL void *H5I_object_verify(hid_t id, H5I_type_t id_type);
 H5_DLL H5I_type_t H5I_get_type(hid_t id);
 H5_DLL hid_t H5I_get_file_id(hid_t obj_id, hbool_t app_ref);
 H5_DLL void *H5I_remove(hid_t id);
-H5_DLL void *H5I_remove_verify(hid_t id, H5I_type_t id_type);
 H5_DLL herr_t H5I_iterate(H5I_type_t type, H5I_search_func_t func, void *udata, hbool_t app_ref);
 H5_DLL int H5I_get_ref(hid_t id, hbool_t app_ref);
 H5_DLL int H5I_inc_ref(hid_t id, hbool_t app_ref);
 H5_DLL int H5I_dec_ref(hid_t id);
 H5_DLL int H5I_dec_app_ref(hid_t id);
 H5_DLL int H5I_dec_app_ref_always_close(hid_t id);
-H5_DLL int H5I_inc_type_ref(H5I_type_t type);
 H5_DLL herr_t H5I_dec_type_ref(H5I_type_t type);
-H5_DLL int H5I_get_type_ref(H5I_type_t type);
 
 #endif /* _H5Iprivate_H */
 
diff --git a/src/H5Lexternal.c b/src/H5Lexternal.c
index 69cc157..9d1fe48 100644
--- a/src/H5Lexternal.c
+++ b/src/H5Lexternal.c
@@ -208,6 +208,7 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
     char        *parent_group_name = NULL;/* Temporary pointer to group name */
     char        local_group_name[H5L_EXT_TRAVERSE_BUF_SIZE];  /* Local buffer to hold group name */
     char        *temp_file_name = NULL; /* Temporary pointer to file name */
+    size_t      temp_file_name_len;     /* Length of temporary file name */
     char        *actual_file_name = NULL; /* Parent file's actual name */
     H5P_genplist_t  *fa_plist;          /* File access property list pointer */
     H5F_close_degree_t 	fc_degree = H5F_CLOSE_WEAK;  /* File close degree for target file */
@@ -312,6 +313,7 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
     /* Copy the file name to use */
     if(NULL == (temp_file_name = H5MM_strdup(file_name)))
         HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
+    temp_file_name_len = HDstrlen(temp_file_name);
 
     /* target file_name is an absolute pathname: see RM for detailed description */
     if(H5_CHECK_ABSOLUTE(file_name) || H5_CHECK_ABS_PATH(file_name)) {
@@ -329,7 +331,8 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
             ptr++;
 
             /* Copy into the temp. file name */
-	    HDstrncpy(temp_file_name, ptr, HDstrlen(ptr) + 1);
+	    HDstrncpy(temp_file_name, ptr, temp_file_name_len);
+            temp_file_name[temp_file_name_len - 1] = '\0';
         } /* end if */
     } /* end if */
     else if(H5_CHECK_ABS_DRIVE(file_name)) {
@@ -339,7 +342,8 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
             H5E_clear_stack(NULL);
 
 	    /* strip "<drive-letter>:" */
-	    HDstrncpy(temp_file_name, &file_name[2], (HDstrlen(file_name) - 2) + 1);
+	    HDstrncpy(temp_file_name, &file_name[2], temp_file_name_len);
+            temp_file_name[temp_file_name_len - 1] = '\0';
 	} /* end if */
     } /* end if */
 
@@ -579,9 +583,9 @@ H5Lcreate_external(const char *file_name, const char *obj_name,
     /* Encode the external link information */
     p = (uint8_t *)ext_link_buf;
     *p++ = (H5L_EXT_VERSION << 4) | H5L_EXT_FLAGS_ALL;  /* External link version & flags */
-    HDstrncpy((char *)p, file_name, file_name_len);     /* Name of file containing external link's object */
+    HDstrncpy((char *)p, file_name, buf_size - 1);      /* Name of file containing external link's object */
     p += file_name_len;
-    HDstrncpy((char *)p, norm_obj_name, norm_obj_name_len);       /* External link's object */
+    HDstrncpy((char *)p, norm_obj_name, buf_size - (file_name_len + 1));       /* External link's object */
 
     /* Create an external link */
     if(H5L_create_ud(&link_loc, link_name, ext_link_buf, buf_size, H5L_TYPE_EXTERNAL, lcpl_id, lapl_id, H5AC_dxpl_id) < 0)
diff --git a/src/H5MF.c b/src/H5MF.c
index 57002c8..763d15e 100644
--- a/src/H5MF.c
+++ b/src/H5MF.c
@@ -39,7 +39,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5Fpkg.h"             /* File access				*/
 #include "H5MFpkg.h"		/* File memory management		*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 
 /****************/
@@ -294,7 +294,7 @@ H5MF_alloc_create(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type)
     fs_create.client = H5FS_CLIENT_FILE_ID;
     fs_create.shrink_percent = H5MF_FSPACE_SHRINK;
     fs_create.expand_percent = H5MF_FSPACE_EXPAND;
-    fs_create.max_sect_addr = 1 + H5V_log2_gen((uint64_t)f->shared->maxaddr);
+    fs_create.max_sect_addr = 1 + H5VM_log2_gen((uint64_t)f->shared->maxaddr);
     fs_create.max_sect_size = f->shared->maxaddr;
 
     if(NULL == (f->shared->fs_man[type] = H5FS_create(f, dxpl_id, NULL,
diff --git a/src/H5Oattr.c b/src/H5Oattr.c
index b8e6b32..2269bd3 100644
--- a/src/H5Oattr.c
+++ b/src/H5Oattr.c
@@ -793,7 +793,7 @@ H5O_attr_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg, FILE * stream, int in
 {
     const H5A_t *mesg = (const H5A_t *)_mesg;
     const char		*s;             /* Temporary string pointer */
-    char		buf[256];       /* Temporary string buffer */
+    char		buf[128];       /* Temporary string buffer */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
@@ -804,7 +804,7 @@ H5O_attr_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg, FILE * stream, int in
     HDassert(indent >= 0);
     HDassert(fwidth >= 0);
 
-    fprintf(stream, "%*s%-*s \"%s\"\n", indent, "", fwidth,
+    HDfprintf(stream, "%*s%-*s \"%s\"\n", indent, "", fwidth,
 	    "Name:",
 	    mesg->shared->name);
     switch(mesg->shared->encoding) {
@@ -830,17 +830,17 @@ H5O_attr_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg, FILE * stream, int in
         case H5T_CSET_RESERVED_13:
         case H5T_CSET_RESERVED_14:
         case H5T_CSET_RESERVED_15:
-            sprintf(buf, "H5T_CSET_RESERVED_%d", (int)(mesg->shared->encoding));
+            HDsnprintf(buf, sizeof(buf), "H5T_CSET_RESERVED_%d", (int)(mesg->shared->encoding));
             s = buf;
             break;
 
         case H5T_CSET_ERROR:
         default:
-            sprintf(buf, "Unknown character set: %d", (int)(mesg->shared->encoding));
+            HDsnprintf(buf, sizeof(buf), "Unknown character set: %d", (int)(mesg->shared->encoding));
             s = buf;
             break;
     } /* end switch */
-    fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+    HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
             "Character Set of Name:",
             s);
     HDfprintf(stream, "%*s%-*s %t\n", indent, "", fwidth,
@@ -856,18 +856,18 @@ H5O_attr_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg, FILE * stream, int in
                 "Creation Index:",
                 (unsigned)mesg->shared->crt_idx);
 
-    fprintf(stream, "%*sDatatype...\n", indent, "");
-    fprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX(0,fwidth-3),
+    HDfprintf(stream, "%*sDatatype...\n", indent, "");
+    HDfprintf(stream, "%*s%-*s %lu\n", indent + 3, "", MAX(0,fwidth - 3),
 	    "Encoded Size:",
 	    (unsigned long)(mesg->shared->dt_size));
     if((H5O_MSG_DTYPE->debug)(f, dxpl_id, mesg->shared->dt, stream, indent + 3, MAX(0, fwidth - 3)) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "unable to display datatype message info")
 
-    fprintf(stream, "%*sDataspace...\n", indent, "");
-    fprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX(0, fwidth - 3),
+    HDfprintf(stream, "%*sDataspace...\n", indent, "");
+    HDfprintf(stream, "%*s%-*s %lu\n", indent + 3, "", MAX(0, fwidth - 3),
 	    "Encoded Size:",
 	    (unsigned long)(mesg->shared->ds_size));
-    if(H5S_debug(f, dxpl_id, mesg->shared->ds, stream, indent+3, MAX(0, fwidth - 3)) < 0)
+    if(H5S_debug(f, dxpl_id, mesg->shared->ds, stream, indent + 3, MAX(0, fwidth - 3)) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "unable to display dataspace message info")
 
 done:
diff --git a/src/H5Ocache.c b/src/H5Ocache.c
index f2f1f96..3056aa7 100644
--- a/src/H5Ocache.c
+++ b/src/H5Ocache.c
@@ -1440,7 +1440,7 @@ H5O_chunk_proxy_dest(H5O_chunk_proxy_t *chk_proxy)
     HDassert(chk_proxy);
 
     /* Decrement reference count of object header */
-    if(H5O_dec_rc(chk_proxy->oh) < 0)
+    if(chk_proxy->oh && H5O_dec_rc(chk_proxy->oh) < 0)
         HGOTO_ERROR(H5E_OHDR, H5E_CANTDEC, FAIL, "can't decrement reference count on object header")
 
     /* Release the chunk proxy object */
diff --git a/src/H5Odbg.c b/src/H5Odbg.c
index 5901c61..b91a51a 100644
--- a/src/H5Odbg.c
+++ b/src/H5Odbg.c
@@ -455,30 +455,32 @@ H5O_debug_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, haddr_t addr, FILE *stream, i
             hbool_t flag_printed = FALSE;
 
             if(oh->mesg[i].flags & H5O_MSG_FLAG_SHARED) {
-                HDfprintf(stream, "%s%s", (flag_printed ? ", " : "<"), "S");
+                HDfprintf(stream, "<S");
                 flag_printed = TRUE;
             } /* end if */
             if(oh->mesg[i].flags & H5O_MSG_FLAG_CONSTANT) {
-                HDfprintf(stream, "%s%s", (flag_printed ? ", " : "<"), "C");
+                HDfprintf(stream, "%sC", (flag_printed ? ", " : "<"));
                 flag_printed = TRUE;
             } /* end if */
             if(oh->mesg[i].flags & H5O_MSG_FLAG_DONTSHARE) {
-                HDfprintf(stream, "%s%s", (flag_printed ? ", " : "<"), "DS");
+                HDfprintf(stream, "%sDS", (flag_printed ? ", " : "<"));
                 flag_printed = TRUE;
             } /* end if */
             if(oh->mesg[i].flags & H5O_MSG_FLAG_FAIL_IF_UNKNOWN) {
-                HDfprintf(stream, "%s%s", (flag_printed ? ", " : "<"), "FIU");
+                HDfprintf(stream, "%sFIU", (flag_printed ? ", " : "<"));
                 flag_printed = TRUE;
             } /* end if */
             if(oh->mesg[i].flags & H5O_MSG_FLAG_MARK_IF_UNKNOWN) {
-                HDfprintf(stream, "%s%s", (flag_printed ? ", " : "<"), "MIU");
+                HDfprintf(stream, "%sMIU", (flag_printed ? ", " : "<"));
                 flag_printed = TRUE;
             } /* end if */
             if(oh->mesg[i].flags & H5O_MSG_FLAG_WAS_UNKNOWN) {
                 HDassert(oh->mesg[i].flags & H5O_MSG_FLAG_MARK_IF_UNKNOWN);
-                HDfprintf(stream, "%s%s", (flag_printed ? ", " : "<"), "WU");
+                HDfprintf(stream, "%sWU", (flag_printed ? ", " : "<"));
                 flag_printed = TRUE;
             } /* end if */
+            if(!flag_printed)
+                HDfprintf(stream, "-");
             HDfprintf(stream, ">\n");
             if(oh->mesg[i].flags & ~H5O_MSG_FLAG_BITS)
                 HDfprintf(stream, "%*s%-*s 0x%02x\n", indent + 3,"", MAX(0, fwidth - 3),
diff --git a/src/H5Odtype.c b/src/H5Odtype.c
index b482115..cb6bf98 100644
--- a/src/H5Odtype.c
+++ b/src/H5Odtype.c
@@ -25,7 +25,7 @@
 #include "H5MMprivate.h"	/* Memory management			*/
 #include "H5Opkg.h"             /* Object headers			*/
 #include "H5Tpkg.h"		/* Datatypes				*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 
 /* PRIVATE PROTOTYPES */
@@ -266,7 +266,7 @@ H5O_dtype_decode_helper(H5F_t *f, unsigned *ioflags/*in,out*/, const uint8_t **p
                 unsigned j;
 
                 /* Compute the # of bytes required to store a member offset */
-                offset_nbytes = H5V_limit_enc_size((uint64_t)dt->shared->size);
+                offset_nbytes = H5VM_limit_enc_size((uint64_t)dt->shared->size);
 
                 /*
                  * Compound datatypes...
@@ -891,7 +891,7 @@ H5O_dtype_encode_helper(const H5F_t *f, uint8_t **pp, const H5T_t *dt)
                 unsigned offset_nbytes;         /* Size needed to encode member offsets */
 
                 /* Compute the # of bytes required to store a member offset */
-                offset_nbytes = H5V_limit_enc_size((uint64_t)dt->shared->size);
+                offset_nbytes = H5VM_limit_enc_size((uint64_t)dt->shared->size);
 
                 /*
                  * Compound datatypes...
@@ -1262,7 +1262,7 @@ H5O_dtype_size(const H5F_t *f, const void *_mesg)
                 unsigned offset_nbytes;         /* Size needed to encode member offsets */
 
                 /* Compute the # of bytes required to store a member offset */
-                offset_nbytes = H5V_limit_enc_size((uint64_t)dt->shared->size);
+                offset_nbytes = H5VM_limit_enc_size((uint64_t)dt->shared->size);
 
                 /* Compute the total size needed to encode compound datatype */
                 for(u = 0; u < dt->shared->u.compnd.nmembs; u++) {
diff --git a/src/H5Oefl.c b/src/H5Oefl.c
index 1297780..bbc7e92 100644
--- a/src/H5Oefl.c
+++ b/src/H5Oefl.c
@@ -545,7 +545,6 @@ H5O_efl_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *_mesg, FILE * s
 	      int indent, int fwidth)
 {
     const H5O_efl_t	   *mesg = (const H5O_efl_t *) _mesg;
-    char		    buf[64];
     size_t		    u;
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -565,8 +564,10 @@ H5O_efl_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *_mesg, FILE * s
 	      mesg->nused, mesg->nalloc);
 
     for(u = 0; u < mesg->nused; u++) {
-	sprintf (buf, "File %u", (unsigned)u);
-	HDfprintf (stream, "%*s%s:\n", indent, "", buf);
+        char		    buf[64];
+
+	HDsnprintf(buf, sizeof(buf), "File %u", (unsigned)u);
+	HDfprintf(stream, "%*s%s:\n", indent, "", buf);
 
 	HDfprintf(stream, "%*s%-*s \"%s\"\n", indent+3, "", MAX (fwidth-3, 0),
 		  "Name:",
@@ -576,11 +577,11 @@ H5O_efl_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *_mesg, FILE * s
 		  "Name offset:",
 		  (unsigned long)(mesg->slot[u].name_offset));
 
-	HDfprintf (stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0),
+	HDfprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0),
 		   "Offset of data in file:",
 		   (unsigned long)(mesg->slot[u].offset));
 
-	HDfprintf (stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0),
+	HDfprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0),
 		   "Bytes reserved for data:",
 		   (unsigned long)(mesg->slot[u].size));
     } /* end for */
diff --git a/src/H5Olink.c b/src/H5Olink.c
index 4dda5fe..184f6b9 100644
--- a/src/H5Olink.c
+++ b/src/H5Olink.c
@@ -484,6 +484,9 @@ H5O_link_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void *_mesg)
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
+    /* Sanity check */
+    HDcompile_assert(sizeof(uint64_t) >= sizeof(size_t));
+
     /* Get name's length */
     name_len = (uint64_t)HDstrlen(lnk->name);
 
@@ -500,7 +503,7 @@ H5O_link_size(const H5F_t *f, hbool_t UNUSED disable_shared, const void *_mesg)
     /* Set return value */
     ret_value = 1 +                     /* Version */
                 1 +                     /* Link encoding flags */
-                (lnk->type != H5L_TYPE_HARD ? 1 : 0) + /* Link type */
+                (lnk->type != H5L_TYPE_HARD ? (size_t)1 : 0) + /* Link type */
                 (lnk->corder_valid ? 8 : 0) + /* Creation order */
                 (lnk->cset != H5T_CSET_ASCII ? 1 : 0) + /* Character set */
                 name_size +             /* Name length */
diff --git a/src/H5Osdspace.c b/src/H5Osdspace.c
index 905c4e9..9ca8436 100644
--- a/src/H5Osdspace.c
+++ b/src/H5Osdspace.c
@@ -526,7 +526,7 @@ H5O_sdspace_debug(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, const void *mesg,
             HDfprintf (stream, "{");
             for(u = 0; u < sdim->rank; u++) {
                 if(H5S_UNLIMITED==sdim->max[u])
-                    HDfprintf (stream, "%sINF", u?", ":"");
+                    HDfprintf (stream, "%sUNLIM", u?", ":"");
                 else
                     HDfprintf (stream, "%s%Hu", u?", ":"", sdim->max[u]);
             } /* end for */
diff --git a/src/H5P.c b/src/H5P.c
index c7ed30b..9011dc9 100644
--- a/src/H5P.c
+++ b/src/H5P.c
@@ -25,7 +25,7 @@
 #define H5P_PACKAGE		/*suppress error about including H5Ppkg	  */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5P_init_pub_interface
+#define H5_INTERFACE_INIT_FUNC	H5P__init_pub_interface
 
 
 /***********/
@@ -75,9 +75,9 @@ typedef struct {
 

 /*--------------------------------------------------------------------------
 NAME
-   H5P_init_pub_interface -- Initialize interface-specific information
+   H5P__init_pub_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5P_init_pub_interface()
+    herr_t H5P__init_pub_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -86,12 +86,36 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5P_init_pub_interface(void)
+H5P__init_pub_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5P_init())
-} /* H5P_init_pub_interface() */
+} /* H5P__init_pub_interface() */
+
+

+/*--------------------------------------------------------------------------
+NAME
+   H5P__term_pub_interface -- Terminate interface
+USAGE
+    herr_t H5P__term_pub_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5P__term_pub_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
+
+    FUNC_LEAVE_NOAPI(0)
+} /* H5P__term_pub_interface() */
 
 

 /*--------------------------------------------------------------------------
diff --git a/src/H5Pdeprec.c b/src/H5Pdeprec.c
index 5d62d61..e525327 100644
--- a/src/H5Pdeprec.c
+++ b/src/H5Pdeprec.c
@@ -34,7 +34,7 @@
 #define H5P_PACKAGE		/*suppress error about including H5Ppkg   */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5P_init_deprec_interface
+#define H5_INTERFACE_INIT_FUNC	H5P__init_deprec_interface
 
 
 /***********/
@@ -84,9 +84,9 @@
 

 /*--------------------------------------------------------------------------
 NAME
-   H5P_init_deprec_interface -- Initialize interface-specific information
+   H5P__init_deprec_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5P_init_deprec_interface()
+    herr_t H5P__init_deprec_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -95,12 +95,36 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5P_init_deprec_interface(void)
+H5P__init_deprec_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5P_init())
-} /* H5P_init_deprec_interface() */
+} /* H5P__init_deprec_interface() */
+
+

+/*--------------------------------------------------------------------------
+NAME
+   H5P__term_deprec_interface -- Terminate interface
+USAGE
+    herr_t H5P__term_deprec_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5P__term_deprec_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
+
+    FUNC_LEAVE_NOAPI(0)
+} /* H5P__term_deprec_interface() */
 
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 

diff --git a/src/H5Pdxpl.c b/src/H5Pdxpl.c
index 30d13bb..9e25a59 100644
--- a/src/H5Pdxpl.c
+++ b/src/H5Pdxpl.c
@@ -135,7 +135,7 @@
 #define H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_DEF		0
 #define H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_SIZE		sizeof(hsize_t *)
 #define H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_DEF		NULL
-#define H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_SIZE	sizeof(size_t)
+#define H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_SIZE	sizeof(uint32_t)
 #define H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_DEF	0
 
 /******************/
@@ -188,6 +188,11 @@ const H5P_libclass_t H5P_CLS_DXFR[1] = {{
 /*****************************/
 
 
+/***************************/
+/* Local Private Variables */
+/***************************/
+
+
 

 /*-------------------------------------------------------------------------
  * Function:    H5P__dxfr_reg_prop
@@ -232,7 +237,7 @@ H5P__dxfr_reg_prop(H5P_genclass_t *pclass)
     hbool_t direct_chunk_flag = H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_DEF; 	        /* Default value for the flag of direct chunk write */
     uint32_t direct_chunk_filters = H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_DEF;	/* Default value for the filters of direct chunk write */
     hsize_t *direct_chunk_offset = H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_DEF; 	/* Default value for the offset of direct chunk write */
-    size_t direct_chunk_datasize = H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_DEF;    /* Default value for the datasize of direct chunk write */
+    uint32_t direct_chunk_datasize = H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_DEF;    /* Default value for the datasize of direct chunk write */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_STATIC
@@ -362,8 +367,6 @@ done:
 } /* end H5P__dxfr_reg_prop() */
 
 

-
-

 /*-------------------------------------------------------------------------
  * Function: H5P_dxfr_xform_del
  *
@@ -1098,8 +1101,9 @@ H5Pset_btree_ratios(hid_t plist_id, double left, double middle,
     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 < (double)0.0f || left > (double)1.0f
+            || middle < (double)0.0f || middle > (double)1.0f
+            || right < (double)0.0f || right > (double)1.0f)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "split ratio must satisfy 0.0<=X<=1.0")
 
     /* Get the plist structure */
@@ -1422,7 +1426,7 @@ H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_ca
     herr_t ret_value = SUCCEED;   /* return value */
     
     FUNC_ENTER_API(FAIL)
-    H5TRACE3("e", "i*Dn*Dn", plist_id, local_no_collective_cause,
+    H5TRACE3("e", "i*Iu*Iu", plist_id, local_no_collective_cause,
              global_no_collective_cause);
 
     /* Get the plist structure */
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c
index ad717e7..ee483cd 100644
--- a/src/H5Pfapl.c
+++ b/src/H5Pfapl.c
@@ -129,7 +129,12 @@
 #define H5F_ACS_FILE_IMAGE_INFO_DEL             H5P_file_image_info_del
 #define H5F_ACS_FILE_IMAGE_INFO_COPY            H5P_file_image_info_copy
 #define H5F_ACS_FILE_IMAGE_INFO_CLOSE           H5P_file_image_info_close
-
+/* Definition of core VFD write tracking flag */
+#define H5F_ACS_CORE_WRITE_TRACKING_FLAG_SIZE   sizeof(hbool_t)
+#define H5F_ACS_CORE_WRITE_TRACKING_FLAG_DEF    FALSE
+/* Definition of core VFD write tracking page size */
+#define H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_SIZE      sizeof(size_t)
+#define H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_DEF       524288
 
 /******************/
 /* Local Typedefs */
@@ -186,7 +191,6 @@ const H5P_libclass_t H5P_CLS_FACC[1] = {{
 /* Local Variables */
 /*******************/
 
-
 

 /*-------------------------------------------------------------------------
  * Function:    H5P_facc_reg_prop
@@ -223,6 +227,8 @@ H5P_facc_reg_prop(H5P_genclass_t *pclass)
     hbool_t want_posix_fd = H5F_ACS_WANT_POSIX_FD_DEF;          /* Default setting for retrieving 'handle' from core VFD */
     unsigned efc_size = H5F_ACS_EFC_SIZE_DEF;                   /* Default external file cache size */
     H5FD_file_image_info_t file_image_info = H5F_ACS_FILE_IMAGE_INFO_DEF;  /* Default file image info and callbacks */
+    hbool_t core_write_tracking_flag = H5F_ACS_CORE_WRITE_TRACKING_FLAG_DEF;              /* Default setting for core VFD write tracking */
+    size_t core_write_tracking_page_size = H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_DEF;     /* Default core VFD write tracking page size */
     herr_t ret_value = SUCCEED;         /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT
@@ -312,6 +318,16 @@ H5P_facc_reg_prop(H5P_genclass_t *pclass)
     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")
 
+    /* Register the core VFD backing store write tracking flag */
+    if(H5P_register_real(pclass, H5F_ACS_CORE_WRITE_TRACKING_FLAG_NAME, H5F_ACS_CORE_WRITE_TRACKING_FLAG_SIZE, &core_write_tracking_flag, 
+            NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
+    /* Register the size of the core VFD backing store page size */
+    if(H5P_register_real(pclass, H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_NAME, H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_SIZE, &core_write_tracking_page_size, 
+            NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
 done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5P_facc_reg_prop() */
@@ -2347,3 +2363,76 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5P_file_image_info_close() */
 
+

+/*-------------------------------------------------------------------------
+ * Function:	H5Pset_core_write_tracking
+ *
+ * Purpose:	Enables/disables core VFD write tracking and page
+ *              aggregation size.
+ *
+ * Return:	Non-negative on success/Negative on failure
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pset_core_write_tracking(hid_t plist_id, hbool_t is_enabled, size_t page_size)
+{
+    H5P_genplist_t *plist;        /* Property list pointer */
+    herr_t ret_value = SUCCEED;   /* return value */
+
+    FUNC_ENTER_API(FAIL)
+    H5TRACE3("e", "ibz", plist_id, is_enabled, page_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")
+
+    /* Set values */
+    if(H5P_set(plist, H5F_ACS_CORE_WRITE_TRACKING_FLAG_NAME, &is_enabled) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set core VFD write tracking flag")
+    if(H5P_set(plist, H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_NAME, &page_size) < 0)
+        HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set core VFD write tracking page size")
+
+done:
+    FUNC_LEAVE_API(ret_value)
+}
+
+

+/*-------------------------------------------------------------------------
+ * Function:	H5Pget_core_write_tracking
+ *
+ * Purpose:	Gets information about core VFD write tracking and page
+ *              aggregation size.
+ *
+ * Return:	Non-negative on success/Negative on failure
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pget_core_write_tracking(hid_t plist_id, hbool_t *is_enabled, size_t *page_size)
+{
+    H5P_genplist_t *plist;      /* Property list pointer */
+    herr_t ret_value = SUCCEED;   /* return value */
+
+    FUNC_ENTER_API(FAIL)
+    H5TRACE3("e", "i*b*z", plist_id, is_enabled, page_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")
+
+    /* Get values */
+    if(is_enabled) {
+        if(H5P_get(plist, H5F_ACS_CORE_WRITE_TRACKING_FLAG_NAME, is_enabled) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get core VFD write tracking flag")
+    } /* end if */
+
+    if(page_size) {
+        if(H5P_get(plist, H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_NAME, page_size) < 0)
+            HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get core VFD write tracking page size")
+    } /* end if */
+
+done:
+    FUNC_LEAVE_API(ret_value)
+}
+
diff --git a/src/H5Pint.c b/src/H5Pint.c
index b15f039..2d5f609 100644
--- a/src/H5Pint.c
+++ b/src/H5Pint.c
@@ -268,8 +268,7 @@ 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     0,				/* # of reserved IDs for class */
     (H5I_free_t)H5P_close_class	/* Callback routine for closing objects of this class */
 }};
@@ -278,7 +277,6 @@ static const H5I_class_t H5I_GENPROPCLS_CLS[1] = {{
 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 */
 }};
@@ -561,6 +559,12 @@ H5P_term_interface(void)
                 } /* end if */
             } /* end if */
         } else {
+            /* Close public interface */
+            n += H5P__term_pub_interface();
+
+            /* Close deprecated interface */
+            n += H5P__term_deprec_interface();
+
             H5I_dec_type_ref(H5I_GENPROP_LST);
             n++; /*H5I*/
             H5I_dec_type_ref(H5I_GENPROP_CLS);
diff --git a/src/H5Ppkg.h b/src/H5Ppkg.h
index 7768eec..293420e 100644
--- a/src/H5Ppkg.h
+++ b/src/H5Ppkg.h
@@ -152,6 +152,8 @@ typedef int (*H5P_iterate_int_t)(H5P_genprop_t *prop, void *udata);
 /******************************/
 
 /* Private functions, not part of the publicly documented API */
+H5_DLL herr_t H5P__term_pub_interface(void);
+H5_DLL herr_t H5P__term_deprec_interface(void);
 H5_DLL H5P_genclass_t *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,
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index 54999b9..1d8ced4 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -158,11 +158,10 @@ typedef enum H5D_mpio_no_collective_cause_t {
     H5D_MPIO_SET_INDEPENDENT = 0x01,
     H5D_MPIO_DATATYPE_CONVERSION = 0x02,
     H5D_MPIO_DATA_TRANSFORMS = 0x04,
-    H5D_MPIO_SET_MPIPOSIX = 0x08,
+    H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED = 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_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = 0x20,
+    H5D_MPIO_FILTERS = 0x40
 } H5D_mpio_no_collective_cause_t;
 
 /********************/
@@ -294,7 +293,6 @@ H5_DLL herr_t H5Pget_shared_mesg_index(hid_t plist_id, unsigned index_num, unsig
 H5_DLL herr_t H5Pset_shared_mesg_phase_change(hid_t plist_id, unsigned max_list, unsigned min_btree);
 H5_DLL herr_t H5Pget_shared_mesg_phase_change(hid_t plist_id, unsigned *max_list, unsigned *min_btree);
 
-
 /* File access property list (FAPL) routines */
 H5_DLL herr_t H5Pset_alignment(hid_t fapl_id, hsize_t threshold,
     hsize_t alignment);
@@ -342,6 +340,9 @@ H5_DLL herr_t H5Pset_file_image_callbacks(hid_t fapl_id,
 H5_DLL herr_t H5Pget_file_image_callbacks(hid_t fapl_id,
        H5FD_file_image_callbacks_t *callbacks_ptr);
 
+H5_DLL herr_t H5Pset_core_write_tracking(hid_t fapl_id, hbool_t is_enabled, size_t page_size);
+H5_DLL herr_t H5Pget_core_write_tracking(hid_t fapl_id, hbool_t *is_enabled, size_t *page_size);
+
 /* Dataset creation property list (DCPL) routines */
 H5_DLL herr_t H5Pset_layout(hid_t plist_id, H5D_layout_t layout);
 H5_DLL H5D_layout_t H5Pget_layout(hid_t plist_id);
diff --git a/src/H5R.c b/src/H5R.c
index 3d14321..e3f20c7 100644
--- a/src/H5R.c
+++ b/src/H5R.c
@@ -78,8 +78,7 @@ static ssize_t H5R_get_name(H5F_t *file, hid_t lapl_id, hid_t dxpl_id, hid_t id,
 /* 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     0,				/* # of reserved IDs for class */
     NULL			/* Callback routine for closing objects of this class */
 }};
@@ -168,6 +167,9 @@ H5R_term_interface(void)
 	if ((n=H5I_nmembers(H5I_REFERENCE))) {
 	    H5I_clear_type(H5I_REFERENCE, FALSE, FALSE);
 	} else {
+            /* Close deprecated interface */
+            n += H5R__term_deprec_interface();
+
 	    H5I_dec_type_ref(H5I_REFERENCE);
 	    H5_interface_initialize_g = 0;
 	    n = 1; /*H5I*/
diff --git a/src/H5Rdeprec.c b/src/H5Rdeprec.c
index 1dd97ee..049792e 100644
--- a/src/H5Rdeprec.c
+++ b/src/H5Rdeprec.c
@@ -34,7 +34,7 @@
 #define H5R_PACKAGE		/*suppress error about including H5Rpkg   */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5R_init_deprec_interface
+#define H5_INTERFACE_INIT_FUNC	H5R__init_deprec_interface
 
 
 /***********/
@@ -48,7 +48,6 @@
 #include "H5Rpkg.h"		/* References				*/
 
 
-#ifndef H5_NO_DEPRECATED_SYMBOLS
 /****************/
 /* Local Macros */
 /****************/
@@ -87,9 +86,9 @@
 

 /*--------------------------------------------------------------------------
 NAME
-   H5R_init_deprec_interface -- Initialize interface-specific information
+   H5R__init_deprec_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5R_init_deprec_interface()
+    herr_t H5R__init_deprec_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -98,15 +97,40 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5R_init_deprec_interface(void)
+H5R__init_deprec_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5R_init())
-} /* H5R_init_deprec_interface() */
+} /* H5R__init_deprec_interface() */
 
 

 /*--------------------------------------------------------------------------
+NAME
+   H5R__term_deprec_interface -- Terminate interface
+USAGE
+    herr_t H5R__term_deprec_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5R__term_deprec_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
+
+    FUNC_LEAVE_NOAPI(0)
+} /* H5R__term_deprec_interface() */
+
+#ifndef H5_NO_DEPRECATED_SYMBOLS
+

+/*--------------------------------------------------------------------------
  NAME
     H5Rget_obj_type1
  PURPOSE
diff --git a/src/H5Rpkg.h b/src/H5Rpkg.h
index 82382fb..2ff1c2c 100644
--- a/src/H5Rpkg.h
+++ b/src/H5Rpkg.h
@@ -55,6 +55,7 @@
 
 /* General functions */
 H5_DLL herr_t H5R_init(void);
+H5_DLL herr_t H5R__term_deprec_interface(void);
 H5_DLL herr_t H5R_get_obj_type(H5F_t *file, hid_t dxpl_id, H5R_type_t ref_type,
     const void *_ref, H5O_type_t *obj_type);
 
diff --git a/src/H5S.c b/src/H5S.c
index 2eebba4..65588bc 100644
--- a/src/H5S.c
+++ b/src/H5S.c
@@ -67,10 +67,6 @@ static H5S_t *H5S_decode(const unsigned char *buf);
 /*****************************/
 /* 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 */
 
 
 /*******************/
@@ -89,8 +85,7 @@ 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 */
+    H5I_CLASS_REUSE_IDS,	/* Class flags */
     2,				/* # of reserved IDs for class */
     (H5I_free_t)H5S_close	/* Callback routine for closing objects of this class */
 }};
@@ -120,15 +115,6 @@ H5S_init_interface(void)
     if(H5I_register_type(H5I_DATASPACE_CLS) < 0)
 	HGOTO_ERROR(H5E_DATASPACE, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
-#ifdef H5_HAVE_PARALLEL
-    {
-        /* Allow MPI buf-and-file-type optimizations? */
-        const char *s = HDgetenv ("HDF5_MPI_OPT_TYPES");
-        if (s && HDisdigit(*s))
-            H5S_mpi_opt_types_g = (hbool_t)HDstrtol (s, NULL, 0);
-    }
-#endif /* H5_HAVE_PARALLEL */
-
 done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5S_init_interface() */
diff --git a/src/H5SL.c b/src/H5SL.c
index 2e2ad1e..2e72819 100644
--- a/src/H5SL.c
+++ b/src/H5SL.c
@@ -549,10 +549,12 @@ H5SL_init_interface(void)
 
     /* Allocate space for array of factories */
     H5SL_fac_g = (H5FL_fac_head_t **)H5MM_malloc(sizeof(H5FL_fac_head_t *));
+    HDassert(H5SL_fac_g);
     H5SL_fac_nalloc_g = 1;
 
     /* Initialize first factory */
     H5SL_fac_g[0] = H5FL_fac_init(sizeof(H5SL_node_t *));
+    HDassert(H5SL_fac_g[0]);
     H5SL_fac_nused_g = 1;
 
     FUNC_LEAVE_NOAPI(SUCCEED)
@@ -681,6 +683,10 @@ H5SL_insert_common(H5SL_t *slist, void *item, const void *key)
             H5SL_INSERT(OBJ, slist, prev, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_INSERT(SCALAR, slist, prev, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_INSERT(GENERIC, slist, prev, const void, key, -)
             break;
@@ -1110,6 +1116,10 @@ H5SL_remove(H5SL_t *slist, const void *key)
             H5SL_REMOVE(OBJ, slist, x, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_REMOVE(SCALAR, slist, x, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_REMOVE(GENERIC, slist, x, const void, key, -)
             break;
@@ -1293,6 +1303,10 @@ H5SL_search(H5SL_t *slist, const void *key)
             H5SL_SEARCH(OBJ, slist, x, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_SEARCH(SCALAR, slist, x, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_SEARCH(GENERIC, slist, x, const void, key, -)
             break;
@@ -1382,6 +1396,10 @@ H5SL_less(H5SL_t *slist, const void *key)
             H5SL_SEARCH(OBJ, slist, x, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_SEARCH(SCALAR, slist, x, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_SEARCH(GENERIC, slist, x, const void, key, -)
             break;
@@ -1484,6 +1502,10 @@ H5SL_greater(H5SL_t *slist, const void *key)
             H5SL_SEARCH(OBJ, slist, x, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_SEARCH(SCALAR, slist, x, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_SEARCH(GENERIC, slist, x, const void, key, -)
             break;
@@ -1576,6 +1598,10 @@ H5SL_find(H5SL_t *slist, const void *key)
             H5SL_FIND(OBJ, slist, x, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_FIND(SCALAR, slist, x, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_FIND(GENERIC, slist, x, const void, key, -)
             break;
@@ -1665,6 +1691,10 @@ H5SL_below(H5SL_t *slist, const void *key)
             H5SL_FIND(OBJ, slist, x, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_FIND(SCALAR, slist, x, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_FIND(GENERIC, slist, x, const void, key, -)
             break;
@@ -1767,6 +1797,10 @@ H5SL_above(H5SL_t *slist, const void *key)
             H5SL_FIND(OBJ, slist, x, const H5_obj_t, key, -)
             break;
 
+        case H5SL_TYPE_HID:
+            H5SL_FIND(SCALAR, slist, x, const hid_t, key, -)
+            break;
+
         case H5SL_TYPE_GENERIC:
             H5SL_FIND(GENERIC, slist, x, const void, key, -)
             break;
@@ -1994,7 +2028,8 @@ H5SL_item(H5SL_node_t *slist_node)
 herr_t
 H5SL_iterate(H5SL_t *slist, H5SL_operator_t op, void *op_data)
 {
-    H5SL_node_t *node;  /* Pointers to skip list nodes */
+    H5SL_node_t *node;  /* Pointer to current skip list node */
+    H5SL_node_t *next;  /* Pointer to next skip list node */
     herr_t ret_value = 0; /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -2008,12 +2043,16 @@ H5SL_iterate(H5SL_t *slist, H5SL_operator_t op, void *op_data)
     /* Free skip list nodes */
     node = slist->header->forward[0];
     while(node != NULL) {
+        /* Protect against the node being deleted by the callback */
+        next = node->forward[0];
+
         /* Call the iterator callback */
         /* Casting away const OK -QAK */
         if((ret_value = (op)(node->item, (void *)node->key, op_data)) != 0)
             break;
 
-        node = node->forward[0];
+        /* Advance to next node */
+        node = next;
     } /* end while */
 
     FUNC_LEAVE_NOAPI(ret_value)
diff --git a/src/H5SLprivate.h b/src/H5SLprivate.h
index 07ee414..ce2f091 100644
--- a/src/H5SLprivate.h
+++ b/src/H5SLprivate.h
@@ -48,6 +48,7 @@ typedef enum {
     H5SL_TYPE_UNSIGNED, /* Skip list keys are 'unsigned's */
     H5SL_TYPE_SIZE,     /* Skip list keys are 'size_t's */
     H5SL_TYPE_OBJ,      /* Skip list keys are 'H5_obj_t's */
+    H5SL_TYPE_HID,      /* Skip list keys are 'hid_t's */
     H5SL_TYPE_GENERIC   /* Skip list keys are unknown, comparison callback supplied */
 } H5SL_type_t;
 
diff --git a/src/H5Sall.c b/src/H5Sall.c
index 19d1efc..24caad2 100644
--- a/src/H5Sall.c
+++ b/src/H5Sall.c
@@ -27,7 +27,7 @@
 #include "H5Eprivate.h"		/* Error handling		        */
 #include "H5Iprivate.h"		/* ID Functions		                */
 #include "H5Spkg.h"		/* Dataspace functions			*/
-#include "H5Vprivate.h"         /* Vector functions                     */
+#include "H5VMprivate.h"         /* Vector functions                     */
 
 /* Static function prototypes */
 
@@ -162,7 +162,7 @@ H5S_all_iter_coords (const H5S_sel_iter_t *iter, hsize_t *coords)
     HDassert (coords);
 
     /* Calculate the coordinates for the current iterator offset */
-    if(H5V_array_calc(iter->u.all.elmt_offset,iter->rank,iter->dims,coords)<0)
+    if(H5VM_array_calc(iter->u.all.elmt_offset,iter->rank,iter->dims,coords)<0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "can't retrieve coordinates");
 
 done:
diff --git a/src/H5Shyper.c b/src/H5Shyper.c
index f8d87e4..c97c9b6 100644
--- a/src/H5Shyper.c
+++ b/src/H5Shyper.c
@@ -28,7 +28,7 @@
 #include "H5FLprivate.h"	/* Free Lists				*/
 #include "H5Iprivate.h"		/* ID Functions				*/
 #include "H5Spkg.h"		/* Dataspace functions			*/
-#include "H5Vprivate.h"         /* Vector functions			*/
+#include "H5VMprivate.h"         /* Vector functions			*/
 
 /* Local datatypes */
 
@@ -464,7 +464,7 @@ H5S_hyper_iter_coords (const H5S_sel_iter_t *iter, hsize_t *coords)
                     HDassert(v >= 0);
 
                     /* Compute the coords for the flattened dimensions */
-                    H5V_array_calc(iter->u.hyp.off[v], (unsigned)((begin - u) + 1), &(iter->dims[u]), &(coords[u]));
+                    H5VM_array_calc(iter->u.hyp.off[v], (unsigned)((begin - u) + 1), &(iter->dims[u]), &(coords[u]));
 
                     /* Continue to faster dimension in both indices */
                     u--;
@@ -4102,7 +4102,7 @@ H5S_hyper_project_scalar(const H5S_t *space, hsize_t *offset)
     } /* end else */
 
     /* Calculate offset of selection in projected buffer */
-    *offset = H5V_array_offset(space->extent.rank, space->extent.size, block); 
+    *offset = H5VM_array_offset(space->extent.rank, space->extent.size, block); 
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -4294,7 +4294,7 @@ H5S_hyper_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *off
             HDmemset(block, 0, sizeof(block));
             for(u = 0; u < (base_space->extent.rank - new_space->extent.rank); u++)
                 block[u] = opt_diminfo[u].start;
-            *offset = H5V_array_offset(base_space->extent.rank, base_space->extent.size, block); 
+            *offset = H5VM_array_offset(base_space->extent.rank, base_space->extent.size, block); 
 
             /* Set the correct dimensions for the base & new spaces */
             base_space_dim = base_space->extent.rank - new_space->extent.rank;
@@ -4377,7 +4377,7 @@ H5S_hyper_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *off
             } /* end while */
 
             /* Compute the offset for the down-projection */
-            *offset = H5V_array_offset(base_space->extent.rank, base_space->extent.size, block); 
+            *offset = H5VM_array_offset(base_space->extent.rank, base_space->extent.size, block); 
 
             /* Project the base space's selection down in less dimensions */
             if(H5S_hyper_project_simple_lower(base_space, new_space) < 0)
diff --git a/src/H5Smpio.c b/src/H5Smpio.c
index 868a00f..284e16f 100644
--- a/src/H5Smpio.c
+++ b/src/H5Smpio.c
@@ -35,7 +35,7 @@
 #include "H5Oprivate.h"		/* Object headers		  	*/
 #include "H5Pprivate.h"         /* Property lists                       */
 #include "H5Spkg.h"		/* Dataspaces 				*/
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 
 #ifdef H5_HAVE_PARALLEL
 
@@ -43,6 +43,14 @@ static herr_t H5S_mpio_all_type(const H5S_t *space, size_t elmt_size,
     MPI_Datatype *new_type, int *count, hbool_t *is_derived_type);
 static herr_t H5S_mpio_none_type(MPI_Datatype *new_type, int *count,
     hbool_t *is_derived_type);
+static herr_t H5S_mpio_create_point_datatype(size_t elmt_size, hsize_t num_points, 
+    MPI_Aint *disp, MPI_Datatype *new_type);
+static herr_t H5S_mpio_point_type(const H5S_t *space, size_t elmt_size,
+    MPI_Datatype *new_type, int *count, hbool_t *is_derived_type,
+    hbool_t do_permute, hsize_t **permute_map, hbool_t *is_permuted);
+static herr_t H5S_mpio_permute_type(const H5S_t *space, size_t elmt_size, 
+    hsize_t **permute_map, MPI_Datatype *new_type, int *count,
+    hbool_t *is_derived_type);
 static herr_t H5S_mpio_hyper_type(const H5S_t *space, size_t elmt_size,
     MPI_Datatype *new_type, int *count, hbool_t *is_derived_type);
 static herr_t H5S_mpio_span_hyper_type(const H5S_t *space, size_t elmt_size,
@@ -131,6 +139,335 @@ H5S_mpio_none_type(MPI_Datatype *new_type, int *count, hbool_t *is_derived_type)
 
 

 /*-------------------------------------------------------------------------
+ * Function:	H5S_mpio_create_point_datatype
+ *
+ * Purpose:	Create a derived datatype for point selections.
+ *
+ * Return:	non-negative on success, negative on failure.
+ *
+ * Outputs:	*new_type	  the MPI type corresponding to the selection
+ *
+ * Programmer:	Mohamad Chaarawi
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t 
+H5S_mpio_create_point_datatype (size_t elmt_size, hsize_t num_points,
+    MPI_Aint *disp, MPI_Datatype *new_type) 
+{
+    MPI_Datatype   elmt_type;           /* MPI datatype for individual element */
+    hbool_t        elmt_type_created = FALSE;   /* Whether the element MPI datatype was created */
+    int            mpi_code;            /* MPI error code */
+    int            *blocks = NULL;      /* Array of block sizes for MPI hindexed create call */
+    hsize_t        u;                   /* Local index variable */
+    herr_t	   ret_value = SUCCEED; /* Return value */
+
+    FUNC_ENTER_NOAPI_NOINIT
+
+    /* Create an MPI datatype for an element */
+    if(MPI_SUCCESS != (mpi_code = MPI_Type_contiguous((int)elmt_size, MPI_BYTE, &elmt_type)))
+        HMPI_GOTO_ERROR(FAIL, "MPI_Type_contiguous failed", mpi_code)
+    elmt_type_created = TRUE;
+    
+    /* Allocate block sizes for MPI datatype call */
+    if(NULL == (blocks = (int *)H5MM_malloc(sizeof(int) * num_points)))
+        HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate array of blocks")
+
+    /* Would be nice to have Create_Hindexed_block to avoid this array of all ones */
+    for(u = 0; u < num_points; u++)
+        blocks[u] = 1;
+
+    /* Create an MPI datatype for the whole point selection */
+    if(MPI_SUCCESS != (mpi_code = MPI_Type_create_hindexed((int)num_points, blocks, disp, elmt_type, new_type)))
+        HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_indexed_block failed", mpi_code)
+
+    /* Commit MPI datatype for later use */
+    if(MPI_SUCCESS != (mpi_code = MPI_Type_commit(new_type)))
+        HMPI_GOTO_ERROR(FAIL, "MPI_Type_commit failed", mpi_code)
+
+done:
+    if(elmt_type_created)
+        MPI_Type_free(&elmt_type);
+    if(blocks)
+        H5MM_free(blocks);
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* H5S_mpio_create_point_datatype() */
+
+

+/*-------------------------------------------------------------------------
+ * Function:	H5S_mpio_point_type
+ *
+ * Purpose:	Translate an HDF5 "point" selection into an MPI type.
+ *              Create a permutation array to handle out-of-order point selections.
+ *
+ * Return:	non-negative on success, negative on failure.
+ *
+ * Outputs:	*new_type	  the MPI type corresponding to the selection
+ *		*count		  how many objects of the new_type in selection
+ *				  (useful if this is the buffer type for xfer)
+ *		*is_derived_type  0 if MPI primitive type, 1 if derived
+ *              *permute_map      the permutation of the displacements to create
+ *                                the MPI_Datatype
+ *              *is_permuted      0 if the displacements are permuted, 1 if not
+ *
+ * Programmer:	Mohamad Chaarawi
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5S_mpio_point_type(const H5S_t *space, size_t elmt_size, MPI_Datatype *new_type, 
+    int *count, hbool_t *is_derived_type, hbool_t do_permute, hsize_t **permute,
+    hbool_t *is_permuted)
+{
+    MPI_Aint *disp = NULL;      /* Datatype displacement for each point*/
+    H5S_pnt_node_t *curr = NULL; /* Current point being operated on in from the selection */
+    hssize_t snum_points;       /* Signed number of elements in selection */
+    hsize_t num_points;         /* Sumber of points in the selection */
+    hsize_t u;                  /* Local index variable */
+    herr_t ret_value = SUCCEED; /* Return value */
+
+    FUNC_ENTER_NOAPI_NOINIT
+
+    /* Check args */
+    HDassert(space);
+
+    /* Get the total number of points selected */
+    if((snum_points = (hssize_t)H5S_GET_SELECT_NPOINTS(space)) < 0)
+        HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCOUNT, FAIL, "can't get number of elements selected")
+    num_points = (hsize_t)snum_points;
+
+    /* Allocate array for element displacements */
+    if(NULL == (disp = (MPI_Aint *)H5MM_malloc(sizeof(MPI_Aint) * num_points)))
+         HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate array of displacements")
+
+    /* Allocate array for element permutation - returned to caller */
+    if(do_permute)
+        if(NULL == (*permute = (hsize_t *)H5MM_malloc(sizeof(hsize_t) * num_points)))
+            HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate permutation array")
+
+    /* Iterate through list of elements */
+    curr = space->select.sel_info.pnt_lst->head;
+    for(u = 0 ; u < num_points ; u++) {
+        /* calculate the displacement of the current point */
+        disp[u] = H5VM_array_offset(space->extent.rank, space->extent.size, curr->pnt);
+        disp[u] *= elmt_size;
+
+        /* This is a File Space used to set the file view, so adjust the displacements 
+         * to have them monotonically non-decreasing.
+         * Generate the permutation array by indicating at each point being selected, 
+         * the position it will shifted in the new displacement. Example: 
+         * Suppose 4 points with corresponding are selected 
+         * Pt 1: disp=6 ; Pt 2: disp=3 ; Pt 3: disp=0 ; Pt 4: disp=4 
+         * The permute map to sort the displacements in order will be:
+         * point 1: map[0] = L, indicating that this point is not moved (1st point selected)
+         * point 2: map[1] = 0, indicating that this point is moved to the first position, 
+         *                      since disp_pt1(6) > disp_pt2(3)
+         * point 3: map[2] = 0, move to position 0, bec it has the lowest disp between 
+         *                      the points selected so far.
+         * point 4: map[3] = 2, move the 2nd position since point 1 has a higher disp, 
+         *                      but points 2 and 3 have lower displacements.
+         */
+        if(do_permute) {
+            if(u > 0 && disp[u] < disp[u - 1]) {
+                unsigned s = 0, l = u, m = u / 2;
+
+                *is_permuted = TRUE;
+                do {
+                    if(disp[u] > disp[m])
+                        s = m + 1;
+                    else if(disp[u] < disp[m])
+                        l = m;
+                    else
+                        break;
+                    m = s + ((l - s) / 2);
+                } while(s < l);
+
+                if(m < u) {
+                    MPI_Aint temp;
+
+                    temp = disp[u];
+                    HDmemmove(disp + m + 1, disp + m, (u - m) * sizeof(MPI_Aint));
+                    disp[m] = temp;
+                } /* end if */
+                (*permute)[u] = m;                
+            } /* end if */
+            else
+                (*permute)[u] = num_points;
+        } /* end if */
+        /* this is a memory space, and no permutation is necessary to create
+           the derived datatype */
+        else {
+            ;/* do nothing */
+        } /* end else */
+
+        /* get the next point */
+        curr = curr->next;
+    } /* end for */
+
+    /* Create the MPI datatype for the set of element displacements */
+    if(H5S_mpio_create_point_datatype(elmt_size, num_points, disp, new_type) < 0)
+        HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't create an MPI Datatype from point selection")
+
+    /* Set values about MPI datatype created */
+    *count = 1;
+    *is_derived_type = TRUE;
+
+done:
+    if(NULL != disp)
+        H5MM_free(disp);
+
+    /* Release the permutation buffer, if it wasn't used */
+    if(!(*is_permuted) && (*permute)) {
+        H5MM_free(*permute);
+        *permute = NULL;
+    } /* end if */
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* H5S_mpio_point_type() */
+
+

+/*-------------------------------------------------------------------------
+ * Function:	H5S_mpio_permute_type
+ *
+ * Purpose:	Translate an HDF5 "all/hyper/point" selection into an MPI type,
+ *              while applying the permutation map. This function is called if
+ *              the file space selection is permuted due to out-of-order point
+ *              selection and so the memory datatype has to be permuted using the
+ *              permutation map created by the file selection.
+ *
+ * Note:	This routine is called from H5S_mpio_space_type(), which is
+ *              called first for the file dataspace and creates
+ *
+ * Return:	non-negative on success, negative on failure.
+ *
+ * Outputs:	*new_type	  the MPI type corresponding to the selection
+ *		*count		  how many objects of the new_type in selection
+ *				  (useful if this is the buffer type for xfer)
+ *		*is_derived_type  0 if MPI primitive type, 1 if derived
+ *
+ * Programmer:	Mohamad Chaarawi
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5S_mpio_permute_type(const H5S_t *space, size_t elmt_size, hsize_t **permute, 
+    MPI_Datatype *new_type, int *count, hbool_t *is_derived_type)
+{
+    MPI_Aint *disp = NULL;      /* Datatype displacement for each point*/
+    H5S_sel_iter_t sel_iter;    /* Selection iteration info */
+    hbool_t sel_iter_init = FALSE;      /* Selection iteration info has been initialized */
+    hsize_t off[H5D_IO_VECTOR_SIZE];    /* Array to store sequence offsets */
+    size_t len[H5D_IO_VECTOR_SIZE];     /* Array to store sequence lengths */
+    hssize_t snum_points;       /* Signed number of elements in selection */
+    hsize_t num_points;         /* Number of points in the selection */
+    size_t max_elem;            /* Maximum number of elements allowed in sequences */
+    hsize_t u;                  /* Local index variable */
+    herr_t ret_value = SUCCEED; /* Return value */
+
+    FUNC_ENTER_NOAPI_NOINIT
+
+    /* Check args */
+    HDassert(space);
+
+    /* Get the total number of points selected */
+    if((snum_points = (hssize_t)H5S_GET_SELECT_NPOINTS(space)) < 0)
+        HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCOUNT, FAIL, "can't get number of elements selected")
+    num_points = (hsize_t)snum_points;
+
+    /* Allocate array to store point displacements */
+    if(NULL == (disp = (MPI_Aint *)H5MM_malloc(sizeof(MPI_Aint) * num_points)))
+        HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate array of displacements")
+
+    /* Initialize selection iterator */
+    if(H5S_select_iter_init(&sel_iter, space, elmt_size) < 0)
+        HGOTO_ERROR(H5E_DATASPACE, H5E_CANTINIT, FAIL, "unable to initialize selection iterator")
+    sel_iter_init = TRUE;	/* Selection iteration info has been initialized */
+
+    /* Set the number of elements to iterate over */
+    H5_ASSIGN_OVERFLOW(max_elem, num_points, hsize_t, size_t);
+
+    /* Loop, while elements left in selection */
+    u = 0;
+    while(max_elem > 0) {
+        hsize_t off[H5D_IO_VECTOR_SIZE];        /* Array to store sequence offsets */
+        size_t len[H5D_IO_VECTOR_SIZE];         /* Array to store sequence lengths */
+        size_t nelem;               /* Number of elements used in sequences */
+        size_t nseq;                /* Number of sequences generated */
+        size_t curr_seq;            /* Current sequence being worked on */
+
+        /* Get the sequences of bytes */
+        if(H5S_SELECT_GET_SEQ_LIST(space, 0, &sel_iter, (size_t)H5D_IO_VECTOR_SIZE, max_elem, &nseq, &nelem, off, len) < 0)
+            HGOTO_ERROR(H5E_DATASPACE, H5E_UNSUPPORTED, FAIL, "sequence length generation failed")
+
+        /* Loop, while sequences left to process */
+        for(curr_seq = 0; curr_seq < nseq; curr_seq++) {
+            hsize_t curr_off;           /* Current offset within sequence */
+            size_t curr_len;            /* Length of bytes left to process in sequence */
+
+            /* Get the current offset */
+            curr_off = off[curr_seq];
+
+            /* Get the number of bytes in sequence */
+            curr_len = len[curr_seq];
+
+            /* Loop, while bytes left in sequence */
+            while(curr_len > 0) {
+                /* Set the displacement of the current point */
+                disp[u] = curr_off;
+
+                /* This is a memory displacement, so for each point selected, 
+                 * apply the map that was generated by the file selection */
+                if((*permute)[u] != num_points) {
+                    MPI_Aint temp = disp[u];
+
+                    HDmemmove(disp + (*permute)[u] + 1, disp + (*permute)[u], 
+                             (u - (*permute)[u]) * sizeof(MPI_Aint));
+                    disp[(*permute)[u]] = temp;
+                } /* end if */
+
+                /* Advance to next element */
+                u++;
+
+                /* Increment offset in dataspace */
+                curr_off += elmt_size;
+
+                /* Decrement number of bytes left in sequence */
+                curr_len -= elmt_size;
+            } /* end while */
+        } /* end for */
+
+        /* Decrement number of elements left to process */
+        max_elem -= nelem;
+    } /* end while */
+
+    /* Create the MPI datatype for the set of element displacements */
+    if(H5S_mpio_create_point_datatype(elmt_size, num_points, disp, new_type) < 0)
+        HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't create an MPI Datatype from point selection")
+
+    /* Set values about MPI datatype created */
+    *count = 1;
+    *is_derived_type = TRUE;
+
+done:
+    /* Release selection iterator */
+    if(sel_iter_init)
+        if(H5S_SELECT_ITER_RELEASE(&sel_iter) < 0)
+            HDONE_ERROR(H5E_DATASPACE, H5E_CANTRELEASE, FAIL, "unable to release selection iterator")
+
+    /* Free memory */
+    if(disp)
+        H5MM_free(disp);
+    if(*permute) {
+        H5MM_free(*permute);
+        *permute = NULL;
+    } /* end if */
+
+    FUNC_LEAVE_NOAPI(ret_value)
+} /* H5S_mpio_permute_type() */
+
+

+/*-------------------------------------------------------------------------
  * Function:	H5S_mpio_hyper_type
  *
  * Purpose:	Translate an HDF5 hyperslab selection into an MPI type.
@@ -453,7 +790,7 @@ H5S_mpio_span_hyper_type(const H5S_t *space, size_t elmt_size,
     elmt_type_is_derived = TRUE;
 
     /* Compute 'down' sizes for each dimension */
-    if(H5V_array_down(space->extent.rank, space->extent.size, down) < 0)
+    if(H5VM_array_down(space->extent.rank, space->extent.size, down) < 0)
         HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGETSIZE, FAIL, "couldn't compute 'down' dimension sizes")
 
     /* Obtain derived data type */
@@ -478,7 +815,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5S_obtain datatype
+ * Function:	H5S_obtain_datatype
  *
  * Purpose:	Obtain an MPI derived datatype based on span-tree
  *              implementation
@@ -673,8 +1010,9 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5S_mpio_space_type(const H5S_t *space, size_t elmt_size,
-    MPI_Datatype *new_type, int *count, hbool_t *is_derived_type)
+H5S_mpio_space_type(const H5S_t *space, size_t elmt_size, MPI_Datatype *new_type, 
+    int *count, hbool_t *is_derived_type, hbool_t do_permute, hsize_t **permute_map,
+    hbool_t *is_permuted)
 {
     herr_t	ret_value = SUCCEED;    /* Return value */
 
@@ -684,44 +1022,75 @@ H5S_mpio_space_type(const H5S_t *space, size_t elmt_size,
     HDassert(space);
     HDassert(elmt_size);
 
-    /* Creat MPI type based on the kind of selection */
+    /* Create MPI type based on the kind of selection */
     switch(H5S_GET_EXTENT_TYPE(space)) {
         case H5S_NULL:
         case H5S_SCALAR:
         case H5S_SIMPLE:
-            switch(H5S_GET_SELECT_TYPE(space)) {
-                case H5S_SEL_NONE:
-                    if(H5S_mpio_none_type(new_type, count, is_derived_type) < 0)
-                        HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert 'none' selection to MPI type")
-                    break;
-
-                case H5S_SEL_ALL:
-                    if(H5S_mpio_all_type(space, elmt_size, new_type, count, is_derived_type) < 0)
-                        HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert 'all' selection to MPI type")
-                    break;
-
-                case H5S_SEL_POINTS:
-                    /* not yet implemented */
-                    ret_value = FAIL;
-                    break;
-
-                case H5S_SEL_HYPERSLABS:
-                    if((H5S_SELECT_IS_REGULAR(space) == TRUE)) {
-                        if(H5S_mpio_hyper_type(space, elmt_size, new_type, count, is_derived_type) < 0)
-                            HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert regular 'hyperslab' selection to MPI type")
-		    } /* end if */
-                    else {
-                        if(H5S_mpio_span_hyper_type(space, elmt_size, new_type, count, is_derived_type) < 0)
-                            HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert irregular 'hyperslab' selection to MPI type")
-                    } /* end else */
-                    break;
-
-		case H5S_SEL_ERROR:
-		case H5S_SEL_N:
-                default:
-                    HDassert("unknown selection type" && 0);
-                    break;
-            } /* end switch */
+            /* If the file space has been permuted previously due to
+             * out-of-order point selection, then permute this selection which
+             * should be a memory selection to match the file space permutation.
+             */
+            if(TRUE == *is_permuted) { 
+                switch(H5S_GET_SELECT_TYPE(space)) {
+                    case H5S_SEL_NONE:
+                        if(H5S_mpio_none_type(new_type, count, is_derived_type) < 0)
+                            HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't convert 'none' selection to MPI type")
+                        break;
+
+                    case H5S_SEL_ALL:
+                    case H5S_SEL_POINTS:
+                    case H5S_SEL_HYPERSLABS:
+                        /* Sanity check */
+                        HDassert(!do_permute);
+
+                        if(H5S_mpio_permute_type(space, elmt_size, permute_map, new_type, count, is_derived_type) < 0)
+                            HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't convert 'all' selection to MPI type")
+                        break;
+
+                    case H5S_SEL_ERROR:
+                    case H5S_SEL_N:
+                    default:
+                        HDassert("unknown selection type" && 0);
+                        break;
+                } /* end switch */
+            } /* end if */
+            /* the file space is not permuted, so do a regular selection */
+            else {
+                switch(H5S_GET_SELECT_TYPE(space)) {
+                    case H5S_SEL_NONE:
+                        if(H5S_mpio_none_type(new_type, count, is_derived_type) < 0)
+                            HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert 'none' selection to MPI type")
+                        break;
+
+                    case H5S_SEL_ALL:
+                        if(H5S_mpio_all_type(space, elmt_size, new_type, count, is_derived_type) < 0)
+                            HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert 'all' selection to MPI type")
+                        break;
+
+                    case H5S_SEL_POINTS:
+                        if(H5S_mpio_point_type(space, elmt_size, new_type, count, is_derived_type, do_permute, permute_map, is_permuted) < 0)
+                           HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL, "couldn't convert 'point' selection to MPI type")
+                        break;
+
+                    case H5S_SEL_HYPERSLABS:
+                        if((H5S_SELECT_IS_REGULAR(space) == TRUE)) {
+                            if(H5S_mpio_hyper_type(space, elmt_size, new_type, count, is_derived_type) < 0)
+                                HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert regular 'hyperslab' selection to MPI type")
+                        } /* end if */
+                        else {
+                            if(H5S_mpio_span_hyper_type(space, elmt_size, new_type, count, is_derived_type) < 0)
+                                HGOTO_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"couldn't convert irregular 'hyperslab' selection to MPI type")
+                        } /* end else */
+                        break;
+
+                    case H5S_SEL_ERROR:
+                    case H5S_SEL_N:
+                    default:
+                        HDassert("unknown selection type" && 0);
+                        break;
+                } /* end switch */
+            } /* end else */
             break;
 
         case H5S_NO_CLASS:
diff --git a/src/H5Snone.c b/src/H5Snone.c
index 021dd61..3c5eccc 100644
--- a/src/H5Snone.c
+++ b/src/H5Snone.c
@@ -27,7 +27,7 @@
 #include "H5Eprivate.h"
 #include "H5Iprivate.h"
 #include "H5Spkg.h"
-#include "H5Vprivate.h"
+#include "H5VMprivate.h"
 #include "H5Dprivate.h"
 
 /* Static function prototypes */
diff --git a/src/H5Spoint.c b/src/H5Spoint.c
index b758a92..70842df 100644
--- a/src/H5Spoint.c
+++ b/src/H5Spoint.c
@@ -29,7 +29,7 @@
 #include "H5Iprivate.h"		/* ID Functions		  */
 #include "H5MMprivate.h"	/* Memory Management functions		  */
 #include "H5Spkg.h"		/* Dataspace functions			  */
-#include "H5Vprivate.h"         /* Vector functions */
+#include "H5VMprivate.h"         /* Vector functions */
 
 /* Static function prototypes */
 
@@ -1383,7 +1383,7 @@ H5S_point_project_scalar(const H5S_t *space, hsize_t *offset)
         HGOTO_ERROR(H5E_DATASPACE, H5E_BADRANGE, FAIL, "point selection of one element has more than one node!")
 
     /* Calculate offset of selection in projected buffer */
-    *offset = H5V_array_offset(space->extent.rank, space->extent.size, node->pnt); 
+    *offset = H5VM_array_offset(space->extent.rank, space->extent.size, node->pnt); 
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
@@ -1437,7 +1437,7 @@ H5S_point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *off
         /* Calculate offset of selection in projected buffer */
         HDmemset(block, 0, sizeof(block));
         HDmemcpy(block, base_space->select.sel_info.pnt_lst->head->pnt, sizeof(hsize_t) * rank_diff);
-        *offset = H5V_array_offset(base_space->extent.rank, base_space->extent.size, block); 
+        *offset = H5VM_array_offset(base_space->extent.rank, base_space->extent.size, block); 
 
         /* Iterate through base space's point nodes, copying the point information */
         base_node = base_space->select.sel_info.pnt_lst->head;
diff --git a/src/H5Sprivate.h b/src/H5Sprivate.h
index 0e67af1..44cd6c3 100644
--- a/src/H5Sprivate.h
+++ b/src/H5Sprivate.h
@@ -268,16 +268,13 @@ H5_DLL herr_t H5S_select_iter_next(H5S_sel_iter_t *sel_iter, size_t nelem);
 H5_DLL herr_t H5S_select_iter_release(H5S_sel_iter_t *sel_iter);
 
 #ifdef H5_HAVE_PARALLEL
-/* Global vars whose value comes from environment variable */
-/* (Defined in H5S.c) */
-H5_DLLVAR hbool_t		H5S_mpi_opt_types_g;
-
-H5_DLL herr_t
-H5S_mpio_space_type( const H5S_t *space, size_t elmt_size,
-     /* out: */
-     MPI_Datatype *new_type,
-     int *count,
-     hbool_t *is_derived_type );
+H5_DLL herr_t H5S_mpio_space_type(const H5S_t *space, size_t elmt_size,
+    /* out: */  MPI_Datatype *new_type,
+                int *count,
+                hbool_t *is_derived_type,
+                hbool_t do_permute, 
+                hsize_t **permute_map,
+                hbool_t * is_permuted);
 #endif /* H5_HAVE_PARALLEL */
 
 #endif /* _H5Sprivate_H */
diff --git a/src/H5Sselect.c b/src/H5Sselect.c
index 1eb0cbc..2cb4b38 100644
--- a/src/H5Sselect.c
+++ b/src/H5Sselect.c
@@ -29,13 +29,13 @@
 #include "H5Iprivate.h"		/* IDs			  		*/
 #include "H5MMprivate.h"        /* Memory management                    */
 #include "H5Spkg.h"		/* Dataspaces 				*/
-#include "H5Vprivate.h"		/* Vector and array functions		*/
+#include "H5VMprivate.h"		/* Vector and array functions		*/
 #include "H5WBprivate.h"        /* Wrapped Buffers                      */
 
 /* Local functions */
 #ifdef LATER
-static herr_t H5S_select_iter_block (const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end);
-static htri_t H5S_select_iter_has_next_block (const H5S_sel_iter_t *iter);
+static herr_t H5S_select_iter_block(const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end);
+static htri_t H5S_select_iter_has_next_block(const H5S_sel_iter_t *iter);
 static herr_t H5S_select_iter_next_block(H5S_sel_iter_t *iter);
 #endif /* LATER */
 
@@ -922,7 +922,7 @@ H5S_select_iter_init(H5S_sel_iter_t *sel_iter, const H5S_t *space, size_t elmt_s
  REVISION LOG
 --------------------------------------------------------------------------*/
 herr_t
-H5S_select_iter_coords (const H5S_sel_iter_t *sel_iter, hsize_t *coords)
+H5S_select_iter_coords(const H5S_sel_iter_t *sel_iter, hsize_t *coords)
 {
     herr_t ret_value;         /* return value */
 
@@ -964,7 +964,7 @@ H5S_select_iter_coords (const H5S_sel_iter_t *sel_iter, hsize_t *coords)
  REVISION LOG
 --------------------------------------------------------------------------*/
 static herr_t
-H5S_select_iter_block (const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end)
+H5S_select_iter_block(const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end)
 {
     herr_t ret_value;         /* return value */
 
@@ -1004,7 +1004,7 @@ H5S_select_iter_block (const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end)
  REVISION LOG
 --------------------------------------------------------------------------*/
 hsize_t
-H5S_select_iter_nelmts (const H5S_sel_iter_t *sel_iter)
+H5S_select_iter_nelmts(const H5S_sel_iter_t *sel_iter)
 {
     hsize_t ret_value;         /* return value */
 
@@ -1043,7 +1043,7 @@ H5S_select_iter_nelmts (const H5S_sel_iter_t *sel_iter)
  REVISION LOG
 --------------------------------------------------------------------------*/
 static htri_t
-H5S_select_iter_has_next_block (const H5S_sel_iter_t *iter)
+H5S_select_iter_has_next_block(const H5S_sel_iter_t *iter)
 {
     herr_t ret_value;         /* return value */
 
@@ -1217,24 +1217,13 @@ H5S_select_iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t
     H5T_t *dt;                  /* Datatype structure */
     H5S_sel_iter_t iter;        /* Selection iteration info */
     hbool_t iter_init = FALSE;  /* Selection iteration info has been initialized */
-    uint8_t *loc;               /* Current element location in buffer */
-    hsize_t coords[H5O_LAYOUT_NDIMS];  /* Coordinates of element in dataspace */
     hssize_t nelmts;            /* Number of elements in selection */
     hsize_t space_size[H5O_LAYOUT_NDIMS]; /* Dataspace size */
-    hsize_t off[H5D_IO_VECTOR_SIZE];          /* Array to store sequence offsets */
-    hsize_t curr_off;           /* Current offset within sequence */
-    hsize_t tmp_off;            /* Temporary offset within sequence */
-    size_t len[H5D_IO_VECTOR_SIZE];           /* Array to store sequence lengths */
-    size_t curr_len;            /* Length of bytes left to process in sequence */
-    size_t nseq;                /* Number of sequences generated */
-    size_t curr_seq;            /* Current sequnce being worked on */
-    size_t nelem;               /* Number of elements used in sequences */
     size_t max_elem;            /* Maximum number of elements allowed in sequences */
     size_t elmt_size;           /* Datatype size */
     unsigned ndims;             /* Number of dimensions in dataspace */
-    int	i;			/* Local Index variable */
-    herr_t user_ret=0;          /* User's return value */
-    herr_t ret_value=SUCCEED;   /* Return value */
+    herr_t user_ret = 0;        /* User's return value */
+    herr_t ret_value = SUCCEED; /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
@@ -1274,12 +1263,21 @@ H5S_select_iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t
 
     /* Loop, while elements left in selection */
     while(max_elem > 0 && user_ret == 0) {
+        hsize_t off[H5D_IO_VECTOR_SIZE];        /* Array to store sequence offsets */
+        size_t len[H5D_IO_VECTOR_SIZE];         /* Array to store sequence lengths */
+        size_t nelem;               /* Number of elements used in sequences */
+        size_t nseq;                /* Number of sequences generated */
+        size_t curr_seq;            /* Current sequence being worked on */
+
         /* Get the sequences of bytes */
         if(H5S_SELECT_GET_SEQ_LIST(space, 0, &iter, (size_t)H5D_IO_VECTOR_SIZE, max_elem, &nseq, &nelem, off, len) < 0)
             HGOTO_ERROR(H5E_INTERNAL, H5E_UNSUPPORTED, FAIL, "sequence length generation failed")
 
         /* Loop, while sequences left to process */
-        for(curr_seq=0; curr_seq<nseq && user_ret==0; curr_seq++) {
+        for(curr_seq = 0; curr_seq < nseq && user_ret == 0; curr_seq++) {
+            hsize_t curr_off;           /* Current offset within sequence */
+            size_t curr_len;            /* Length of bytes left to process in sequence */
+
             /* Get the current offset */
             curr_off = off[curr_seq];
 
@@ -1288,6 +1286,11 @@ H5S_select_iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t
 
             /* Loop, while bytes left in sequence */
             while(curr_len > 0 && user_ret == 0) {
+                hsize_t coords[H5O_LAYOUT_NDIMS];  /* Coordinates of element in dataspace */
+                hsize_t tmp_off;        /* Temporary offset within sequence */
+                uint8_t *loc;           /* Current element location in buffer */
+                int i;			/* Local Index variable */
+
                 /* Compute the coordinate from the offset */
                 for(i = (int)ndims, tmp_off = curr_off; i >= 0; i--) {
                     coords[i] = tmp_off % space_size[i];
@@ -1298,22 +1301,22 @@ H5S_select_iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t
                 loc = (unsigned char *)buf + curr_off;
 
                 /* Call user's callback routine */
-                user_ret=(*op)(loc,type_id,ndims,coords,operator_data);
+                user_ret = (*op)(loc, type_id, ndims, coords, operator_data);
 
                 /* Increment offset in dataspace */
-                curr_off+=elmt_size;
+                curr_off += elmt_size;
 
                 /* Decrement number of bytes left in sequence */
-                curr_len-=elmt_size;
+                curr_len -= elmt_size;
             } /* end while */
         } /* end for */
 
         /* Decrement number of elements left to process */
-        max_elem-=nelem;
+        max_elem -= nelem;
     } /* end while */
 
     /* Set return value */
-    ret_value=user_ret;
+    ret_value = user_ret;
 
 done:
     /* Release selection iterator */
@@ -1872,8 +1875,8 @@ H5S_select_construct_projection(const H5S_t *base_space, H5S_t **new_space_ptr,
              * and set the remaining dimensions to 1
              */
             rank_diff = new_space_rank - base_space_rank;
-            H5V_array_fill(new_space_dims, &tmp_dim_size, sizeof(tmp_dim_size), rank_diff);
-            H5V_array_fill(new_space_maxdims, &tmp_dim_size, sizeof(tmp_dim_size), rank_diff);
+            H5VM_array_fill(new_space_dims, &tmp_dim_size, sizeof(tmp_dim_size), rank_diff);
+            H5VM_array_fill(new_space_maxdims, &tmp_dim_size, sizeof(tmp_dim_size), rank_diff);
             HDmemcpy(&new_space_dims[rank_diff], base_space_dims, sizeof(new_space_dims[0]) * base_space_rank);
             HDmemcpy(&new_space_maxdims[rank_diff], base_space_maxdims, sizeof(new_space_maxdims[0]) * base_space_rank);
         } /* end if */
@@ -2038,7 +2041,7 @@ H5S_select_fill(const void *fill, size_t fill_size, const H5S_t *space, void *_b
 
             /* Fill each sequence in memory with fill value */
             HDassert((len[curr_seq] % fill_size) == 0);
-            H5V_array_fill(buf, fill, fill_size, (len[curr_seq] / fill_size));
+            H5VM_array_fill(buf, fill, fill_size, (len[curr_seq] / fill_size));
         } /* end for */
 
         /* Decrement number of elements left to process */
diff --git a/src/H5T.c b/src/H5T.c
index d73d270..b82bc1d 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -530,7 +530,6 @@ H5FL_DEFINE_STATIC(H5T_path_t);
 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 */
 }};
@@ -1492,6 +1491,10 @@ H5T_term_interface(void)
 	/* Unlock all datatypes, then free them */
 	/* note that we are ignoring the return value from H5I_iterate() */
 	H5I_iterate(H5I_DATATYPE, H5T_unlock_cb, NULL, FALSE);
+
+        /* Close deprecated interface */
+        n += H5T__term_deprec_interface();
+
 	H5I_dec_type_ref(H5I_DATATYPE);
 
         /* Reset all the datatype IDs */
diff --git a/src/H5TS.c b/src/H5TS.c
index 8b75ab2..3c7e4f4 100644
--- a/src/H5TS.c
+++ b/src/H5TS.c
@@ -56,8 +56,6 @@ H5TS_key_t H5TS_cancel_key_g;
  * PROGRAMMER: Quincey Koziol
  *             February 7, 2003
  *
- * MODIFICATIONS:
- *
  *--------------------------------------------------------------------------
  */
 static void
@@ -68,39 +66,9 @@ H5TS_key_destructor(void *key_val)
         HDfree(key_val);
 }
 
-#ifdef H5_HAVE_WIN_THREADS
 

-/*--------------------------------------------------------------------------
- * NAME
- *    H5TS_win32_first_thread_init
- *
- * USAGE
- *    H5TS_win32_first_thread_init()
- *
- * RETURNS
- *
- * DESCRIPTION
- *    Special function on windows needed to call the H5TS_first_thread_init
- *    function.
- *
- * PROGRAMMER: Mike McGreevy
- *             September 1, 2010
- *
- * MODIFICATIONS:
- *
- *--------------------------------------------------------------------------
- */
-BOOL CALLBACK 
-H5TS_win32_first_thread_init(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpContex)
-{
-    InitializeCriticalSection ( &H5_g.init_lock.CriticalSection );
-    H5TS_errstk_key_g = TlsAlloc();
-    H5TS_funcstk_key_g = TlsAlloc();
-    H5TS_cancel_key_g = TlsAlloc();
+#ifndef H5_HAVE_WIN_THREADS
 
-    return TRUE;
-} /* H5TS_win32_first_thread_init() */
-#else /* H5_HAVE_WIN_THREADS */
 /*--------------------------------------------------------------------------
  * NAME
  *    H5TS_pthread_first_thread_init
@@ -118,8 +86,6 @@ H5TS_win32_first_thread_init(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpCont
  * PROGRAMMER: Chee Wai LEE
  *             May 2, 2000
  *
- * MODIFICATIONS:
- *
  *--------------------------------------------------------------------------
  */
 void
@@ -149,6 +115,7 @@ H5TS_pthread_first_thread_init(void)
 }
 #endif /* H5_HAVE_WIN_THREADS */
 
+

 /*--------------------------------------------------------------------------
  * NAME
  *    H5TS_mutex_lock
@@ -167,11 +134,6 @@ H5TS_pthread_first_thread_init(void)
  * PROGRAMMER: Chee Wai LEE
  *             May 2, 2000
  *
- * MODIFICATIONS:
- *
- *    19 May 2000, Bill Wendling
- *    Changed (*foo). form of accessing structure members to the -> form.
- *
  *--------------------------------------------------------------------------
  */
 herr_t
@@ -203,6 +165,7 @@ H5TS_mutex_lock(H5TS_mutex_t *mutex)
 #endif /* H5_HAVE_WIN_THREADS */
 }
 
+

 /*--------------------------------------------------------------------------
  * NAME
  *    H5TS_mutex_unlock
@@ -221,12 +184,6 @@ H5TS_mutex_lock(H5TS_mutex_t *mutex)
  * PROGRAMMER: Chee Wai LEE
  *             May 2, 2000
  *
- * MODIFICATIONS:
- *
- *    19 May 2000, Bill Wendling
- *    Changed (*foo). form of accessing structure members to the -> form.
- *    Also gave the function a return value.
- *
  *--------------------------------------------------------------------------
  */
 herr_t
@@ -258,6 +215,7 @@ H5TS_mutex_unlock(H5TS_mutex_t *mutex)
 #endif /* H5_HAVE_WIN_THREADS */
 } /* H5TS_mutex_unlock */
 
+

 /*--------------------------------------------------------------------------
  * NAME
  *    H5TS_cancel_count_inc
@@ -280,12 +238,6 @@ H5TS_mutex_unlock(H5TS_mutex_t *mutex)
  * PROGRAMMER: Chee Wai LEE
  *            May 2, 2000
  *
- * MODIFICATIONS:
- *
- *    19 May 2000, Bill Wendling
- *    Changed function to return a value. Also changed the malloc() call to
- *    the H5MM_malloc() call and checked the returned pointer.
- *
  *--------------------------------------------------------------------------
  */
 herr_t
@@ -328,6 +280,7 @@ H5TS_cancel_count_inc(void)
 #endif /* H5_HAVE_WIN_THREADS */
 }
 
+

 /*--------------------------------------------------------------------------
  * NAME
  *    H5TS_cancel_count_dec
@@ -348,11 +301,6 @@ H5TS_cancel_count_inc(void)
  * PROGRAMMER: Chee Wai LEE
  *             May 2, 2000
  *
- * MODIFICATIONS:
- *
- *    19 May 2000, Bill Wendling
- *    Changed so that function returns a value. May be of limited usefulness.
- *
  *--------------------------------------------------------------------------
  */
 herr_t
@@ -377,6 +325,154 @@ H5TS_cancel_count_dec(void)
 }
 
 

+#ifdef H5_HAVE_WIN_THREADS
+/*--------------------------------------------------------------------------
+ * NAME
+ *    H5TS_win32_process_enter
+ *
+ * RETURNS
+ *    SUCCEED/FAIL
+ *
+ * DESCRIPTION
+ *    Per-process setup on Windows when using Win32 threads.
+ *
+ *--------------------------------------------------------------------------
+ */
+H5_DLL BOOL CALLBACK 
+H5TS_win32_process_enter(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpContex)
+{
+    BOOL ret_value = TRUE;
+
+    /* Initialize the critical section (can't fail) */
+    InitializeCriticalSection(&H5_g.init_lock.CriticalSection);
+
+    /* Set up thread local storage */
+    if(TLS_OUT_OF_INDEXES == (H5TS_errstk_key_g = TlsAlloc()))
+        ret_value = FALSE;
+
+#ifdef H5_HAVE_CODESTACK
+    if(TLS_OUT_OF_INDEXES == (H5TS_funcstk_key_g = TlsAlloc()))
+        ret_value = FALSE;
+#endif /* H5_HAVE_CODESTACK */
+
+    return ret_value;
+} /* H5TS_win32_process_enter() */
+#endif /* H5_HAVE_WIN_THREADS */
+
+

+#ifdef H5_HAVE_WIN_THREADS
+/*--------------------------------------------------------------------------
+ * NAME
+ *    H5TS_win32_thread_enter
+ *
+ * RETURNS
+ *    SUCCEED/FAIL
+ *
+ * DESCRIPTION
+ *    Per-thread setup on Windows when using Win32 threads.
+ *
+ *--------------------------------------------------------------------------
+ */
+herr_t
+H5TS_win32_thread_enter(void)
+{
+    herr_t ret_value = SUCCEED;
+
+    /* Currently a placeholder function.  TLS setup is performed
+     * elsewhere in the library.
+     *
+     * WARNING: Do NOT use C standard library functions here.
+     * CRT functions are not allowed in DllMain, which is where this code
+     * is used.
+     */
+
+    return ret_value;
+} /* H5TS_win32_thread_enter() */
+#endif /* H5_HAVE_WIN_THREADS */
+
+

+#ifdef H5_HAVE_WIN_THREADS
+/*--------------------------------------------------------------------------
+ * NAME
+ *    H5TS_win32_process_exit
+ *
+ * RETURNS
+ *    SUCCEED/FAIL
+ *
+ * DESCRIPTION
+ *    Per-process cleanup on Windows when using Win32 threads.
+ *
+ *--------------------------------------------------------------------------
+ */
+void
+H5TS_win32_process_exit(void)
+{
+
+    /* Windows uses a different thread local storage mechanism which does
+     * not support auto-freeing like pthreads' keys.
+     *
+     * This function is currently registered via atexit() and is called
+     * AFTER H5_term_library().
+     */
+
+    /* Clean up critical section resources (can't fail) */
+    DeleteCriticalSection(&H5_g.init_lock.CriticalSection);
+
+    /* Clean up per-process thread local storage */
+    TlsFree(H5TS_errstk_key_g);
+
+#ifdef H5_HAVE_CODESTACK
+    TlsFree(H5TS_funcstk_key_g);
+#endif /* H5_HAVE_CODESTACK */
+
+    return;
+} /* H5TS_win32_process_exit() */
+#endif /* H5_HAVE_WIN_THREADS */
+
+

+#ifdef H5_HAVE_WIN_THREADS
+/*--------------------------------------------------------------------------
+ * NAME
+ *    H5TS_win32_thread_exit
+ *
+ * RETURNS
+ *    SUCCEED/FAIL
+ *
+ * DESCRIPTION
+ *    Per-thread cleanup on Windows when using Win32 threads.
+ *
+ *--------------------------------------------------------------------------
+ */
+herr_t
+H5TS_win32_thread_exit(void)
+{
+    LPVOID lpvData;
+    herr_t ret_value = SUCCEED;
+
+    /* Windows uses a different thread local storage mechanism which does
+     * not support auto-freeing like pthreads' keys.
+     *
+     * WARNING: Do NOT use C standard library functions here.
+     * CRT functions are not allowed in DllMain, which is where this code
+     * is used.
+     */
+
+    /* Clean up per-thread thread local storage */
+    lpvData = TlsGetValue(H5TS_errstk_key_g);
+    if(lpvData)
+        LocalFree((HLOCAL)lpvData);
+
+#ifdef H5_HAVE_CODESTACK
+    lpvData = TlsGetValue(H5TS_funcstk_key_g);
+    if(lpvData)
+        LocalFree((HLOCAL)lpvData);
+#endif /* H5_HAVE_CODESTACK */
+
+    return ret_value;
+} /* H5TS_win32_thread_exit() */
+#endif /* H5_HAVE_WIN_THREADS */
+
+

 /*--------------------------------------------------------------------------
  * NAME
  *    H5TS_create_thread
@@ -399,16 +495,17 @@ H5TS_create_thread(void *func, H5TS_attr_t *attr, void *udata)
 
 #ifdef  H5_HAVE_WIN_THREADS 
 
-    /* When calling C runtime functions, you have to use _beginthread or
+    /* When calling C runtime functions, you should use _beginthread or
      * _beginthreadex instead of CreateThread.  Threads created with
-     * CreateThread risk being killed in low-memory situations.
-     * We use _beginthread instead of _begintheadex because the latter
-     * requires a stdcall function (and we don't need the more advanced
-     * features it exposes).
+     * CreateThread risk being killed in low-memory situations. Since we
+     * only create threads in our test code, this is unlikely to be an issue
+     * and we'll use the easier-to-deal-with CreateThread for now.
      *
-     * NOTE: No error checks here!  ret_value will be -1L on errors.
+     * NOTE: _beginthread() auto-recycles its handle when execution completes
+     *       so you can't wait on it, making it unsuitable for the existing
+     *       test code.
      */
-    ret_value = _beginthread(func, 0 /* stack size */, udata);
+    ret_value = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)func, udata, 0, NULL);
 
 #else /* H5_HAVE_WIN_THREADS */
 
diff --git a/src/H5TSprivate.h b/src/H5TSprivate.h
index 7f55f4f..cc22f96 100644
--- a/src/H5TSprivate.h
+++ b/src/H5TSprivate.h
@@ -51,6 +51,7 @@ typedef INIT_ONCE H5TS_once_t;
 /* not used on windows side, but need to be defined to something */
 #define H5TS_SCOPE_SYSTEM 0
 #define H5TS_SCOPE_PROCESS 0
+#define H5TS_CALL_CONV WINAPI
 
 /* Functions */
 #define H5TS_get_thread_local_value(key)	TlsGetValue( key )
@@ -63,8 +64,13 @@ typedef INIT_ONCE H5TS_once_t;
 #define H5TS_mutex_lock_simple(mutex) EnterCriticalSection(mutex)
 #define H5TS_mutex_unlock_simple(mutex) LeaveCriticalSection(mutex)
 
-H5_DLL BOOL CALLBACK 
-H5TS_win32_first_thread_init(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpContex);
+/* Functions called from DllMain */
+H5_DLL BOOL CALLBACK H5TS_win32_process_enter(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpContex);
+H5_DLL void H5TS_win32_process_exit(void);
+H5_DLL herr_t H5TS_win32_thread_enter(void);
+H5_DLL herr_t H5TS_win32_thread_exit(void);
+
+
 
 #else /* H5_HAVE_WIN_THREADS */
 
@@ -86,6 +92,7 @@ typedef pthread_once_t H5TS_once_t;
 /* Scope Definitions */
 #define H5TS_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM
 #define H5TS_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS
+#define H5TS_CALL_CONV /* unused - Windows only */
 
 /* Functions */
 #define H5TS_get_thread_local_value(key)	pthread_getspecific( key )
@@ -117,8 +124,6 @@ H5_DLL herr_t H5TS_cancel_count_inc(void);
 H5_DLL herr_t H5TS_cancel_count_dec(void);
 H5_DLL H5TS_thread_t H5TS_create_thread(void * func, H5TS_attr_t * attr, void *udata);
 
-
-
 #if defined c_plusplus || defined __cplusplus
 }
 #endif	/* c_plusplus || __cplusplus */
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index 50e9dc5..72da1bd 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -8039,9 +8039,9 @@ H5T__conv_float_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, SCHAR, float, signed char, SCHAR_MIN, SCHAR_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8066,9 +8066,9 @@ H5T__conv_float_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, UCHAR, float, unsigned char, 0, UCHAR_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8093,9 +8093,9 @@ H5T__conv_double_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, SCHAR, double, signed char, SCHAR_MIN, SCHAR_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8120,9 +8120,9 @@ H5T__conv_double_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, UCHAR, double, unsigned char, 0, UCHAR_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8148,9 +8148,9 @@ H5T__conv_ldouble_schar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, SCHAR, long double, signed char, SCHAR_MIN, SCHAR_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
@@ -8177,9 +8177,9 @@ H5T__conv_ldouble_uchar (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, UCHAR, long double, unsigned char, 0, UCHAR_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
@@ -8205,9 +8205,9 @@ H5T__conv_float_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, SHORT, float, short, SHRT_MIN, SHRT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8232,9 +8232,9 @@ H5T__conv_float_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, USHORT, float, unsigned short, 0, USHRT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8259,9 +8259,9 @@ H5T__conv_double_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, SHORT, double, short, SHRT_MIN, SHRT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8286,9 +8286,9 @@ H5T__conv_double_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, USHORT, double, unsigned short, 0, USHRT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8314,9 +8314,9 @@ H5T__conv_ldouble_short (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, SHORT, long double, short, SHRT_MIN, SHRT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /*H5T_CONV_INTERNAL_LDOUBLE_INTEGER*/
 
@@ -8343,9 +8343,9 @@ H5T__conv_ldouble_ushort (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, USHORT, long double, unsigned short, 0, USHRT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
@@ -8371,9 +8371,9 @@ H5T__conv_float_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, INT, float, int, INT_MIN, INT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8398,9 +8398,9 @@ H5T__conv_float_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, UINT, float, unsigned int, 0, UINT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8425,9 +8425,9 @@ H5T__conv_double_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, INT, double, int, INT_MIN, INT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8452,9 +8452,9 @@ H5T__conv_double_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, UINT, double, unsigned int, 0, UINT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8480,9 +8480,9 @@ H5T__conv_ldouble_int (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, INT, long double, int, INT_MIN, INT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
@@ -8509,9 +8509,9 @@ H5T__conv_ldouble_uint (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, UINT, long double, unsigned int, 0, UINT_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_UINT */
 
@@ -8537,9 +8537,9 @@ H5T__conv_float_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, LONG, float, long, LONG_MIN, LONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8564,9 +8564,9 @@ H5T__conv_float_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, ULONG, float, unsigned long, 0, ULONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8591,9 +8591,9 @@ H5T__conv_double_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, LONG, double, long, LONG_MIN, LONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8618,9 +8618,9 @@ H5T__conv_double_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, ULONG, double, unsigned long, 0, ULONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 
 

@@ -8646,9 +8646,9 @@ H5T__conv_ldouble_long (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, LONG, long double, long, LONG_MIN, LONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /*H5T_CONV_INTERNAL_LDOUBLE_INTEGER*/
 
@@ -8675,9 +8675,9 @@ H5T__conv_ldouble_ulong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, ULONG, long double, unsigned long, 0, ULONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /* H5T_CONV_INTERNAL_LDOUBLE_INTEGER */
 
@@ -8704,9 +8704,9 @@ H5T__conv_float_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(FLOAT, LLONG, float, long long, LLONG_MIN, LLONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /* H5T_CONV_INTERNAL_FP_LLONG */
 
@@ -8760,9 +8760,9 @@ H5T__conv_double_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(DOUBLE, LLONG, double, long long, LLONG_MIN, LLONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /*H5T_CONV_INTERNAL_FP_LLONG*/
 
@@ -8816,9 +8816,9 @@ H5T__conv_ldouble_llong (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                        size_t UNUSED bkg_stride, void *buf, void UNUSED *bkg,
                        hid_t UNUSED dxpl_id)
 {
-GCC_DIAG_OFF(float-equal)
+H5_GCC_DIAG_OFF(float-equal)
     H5T_CONV_Fx(LDOUBLE, LLONG, long double, long long, LLONG_MIN, LLONG_MAX);
-GCC_DIAG_ON(float-equal)
+H5_GCC_DIAG_ON(float-equal)
 }
 #endif /*H5T_CONV_INTERNAL_LDOUBLE_LLONG*/
 
diff --git a/src/H5Tdeprec.c b/src/H5Tdeprec.c
index 32080fe..a8881fb 100644
--- a/src/H5Tdeprec.c
+++ b/src/H5Tdeprec.c
@@ -34,7 +34,7 @@
 #define H5T_PACKAGE		/*suppress error about including H5Tpkg   */
 
 /* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC	H5T_init_deprec_interface
+#define H5_INTERFACE_INIT_FUNC	H5T__init_deprec_interface
 
 
 /***********/
@@ -49,7 +49,6 @@
 #include "H5Tpkg.h"		/* Datatypes				*/
 
 
-#ifndef H5_NO_DEPRECATED_SYMBOLS
 /****************/
 /* Local Macros */
 /****************/
@@ -88,9 +87,9 @@
 

 /*--------------------------------------------------------------------------
 NAME
-   H5T_init_deprec_interface -- Initialize interface-specific information
+   H5T__init_deprec_interface -- Initialize interface-specific information
 USAGE
-    herr_t H5T_init_deprec_interface()
+    herr_t H5T__init_deprec_interface()
 RETURNS
     Non-negative on success/Negative on failure
 DESCRIPTION
@@ -99,13 +98,38 @@ DESCRIPTION
 
 --------------------------------------------------------------------------*/
 static herr_t
-H5T_init_deprec_interface(void)
+H5T__init_deprec_interface(void)
 {
-    FUNC_ENTER_NOAPI_NOINIT_NOERR
+    FUNC_ENTER_STATIC_NOERR
 
     FUNC_LEAVE_NOAPI(H5T_init())
-} /* H5T_init_deprec_interface() */
+} /* H5T__init_deprec_interface() */
+
+

+/*--------------------------------------------------------------------------
+NAME
+   H5T__term_deprec_interface -- Terminate interface
+USAGE
+    herr_t H5T__term_deprec_interface()
+RETURNS
+    Non-negative on success/Negative on failure
+DESCRIPTION
+    Terminates interface.  (Just resets H5_interface_initialize_g
+    currently).
+
+--------------------------------------------------------------------------*/
+herr_t
+H5T__term_deprec_interface(void)
+{
+    FUNC_ENTER_PACKAGE_NOERR
+
+    /* Mark closed */
+    H5_interface_initialize_g = 0;
 
+    FUNC_LEAVE_NOAPI(0)
+} /* H5T__term_deprec_interface() */
+
+#ifndef H5_NO_DEPRECATED_SYMBOLS
 

 /*-------------------------------------------------------------------------
  * Function:	H5Tcommit1
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h
index 8323e15..bd37829 100644
--- a/src/H5Tpkg.h
+++ b/src/H5Tpkg.h
@@ -508,6 +508,7 @@ H5FL_EXTERN(H5T_t);
 H5FL_EXTERN(H5T_shared_t);
 
 /* Common functions */
+H5_DLL herr_t H5T__term_deprec_interface(void);
 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,
diff --git a/src/H5V.c b/src/H5VM.c
similarity index 90%
rename from src/H5V.c
rename to src/H5VM.c
index 3277b90..6f72c57 100644
--- a/src/H5V.c
+++ b/src/H5VM.c
@@ -22,34 +22,34 @@
 #include "H5private.h"
 #include "H5Eprivate.h"
 #include "H5Oprivate.h"
-#include "H5Vprivate.h"
+#include "H5VMprivate.h"
 
 /* Local typedefs */
-typedef struct H5V_memcpy_ud_t {
+typedef struct H5VM_memcpy_ud_t {
     unsigned char *dst;         /* Pointer to destination buffer */
     const unsigned char *src;   /* Pointer to source buffer */
-} H5V_memcpy_ud_t;
+} H5VM_memcpy_ud_t;
 
 /* Local macros */
-#define H5V_HYPER_NDIMS H5O_LAYOUT_NDIMS
+#define H5VM_HYPER_NDIMS H5O_LAYOUT_NDIMS
 
 /* Local prototypes */
 static void
-H5V_stride_optimize1(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
+H5VM_stride_optimize1(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
 		     const hsize_t *size, hsize_t *stride1);
 static void
-H5V_stride_optimize2(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
+H5VM_stride_optimize2(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
 		     const hsize_t *size, hsize_t *stride1, hsize_t *stride2);
 #ifdef LATER
 static void
-H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
+H5VM_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
      unsigned dst_n, const hsize_t *dst_size, const ssize_t *dst_stride, void *_dst,
      unsigned src_n, const hsize_t *src_size, const ssize_t *src_stride, const void *_src);
 #endif /* LATER */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_stride_optimize1
+ * Function:	H5VM_stride_optimize1
  *
  * Purpose:	Given a stride vector which references elements of the
  *		specified size, optimize the dimensionality, the stride
@@ -69,7 +69,7 @@ H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
  *-------------------------------------------------------------------------
  */
 static void
-H5V_stride_optimize1(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
+H5VM_stride_optimize1(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
 		     const hsize_t *size, hsize_t *stride1)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -78,7 +78,7 @@ H5V_stride_optimize1(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
      * This has to be true because if we optimize the dimensionality down to
      * zero we still must make one reference.
      */
-    HDassert(1 == H5V_vector_reduce_product(0, NULL));
+    HDassert(1 == H5VM_vector_reduce_product(0, NULL));
 
     /*
      * Combine adjacent memory accesses
@@ -95,7 +95,7 @@ H5V_stride_optimize1(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_stride_optimize2
+ * Function:	H5VM_stride_optimize2
  *
  * Purpose:	Given two stride vectors which reference elements of the
  *		specified size, optimize the dimensionality, the stride
@@ -118,7 +118,7 @@ H5V_stride_optimize1(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
  *-------------------------------------------------------------------------
  */
 static void
-H5V_stride_optimize2(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
+H5VM_stride_optimize2(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
 		     const hsize_t *size, hsize_t *stride1, hsize_t *stride2)
 {
     FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -127,7 +127,7 @@ H5V_stride_optimize2(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
      * This has to be true because if we optimize the dimensionality down to
      * zero we still must make one reference.
      */
-    HDassert(1 == H5V_vector_reduce_product(0, NULL));
+    HDassert(1 == H5VM_vector_reduce_product(0, NULL));
     HDassert(*elmt_size>0);
 
     /*
@@ -224,7 +224,7 @@ H5V_stride_optimize2(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_hyper_stride
+ * Function:	H5VM_hyper_stride
  *
  * Purpose:	Given a description of a hyperslab, this function returns
  *		(through STRIDE[]) the byte strides appropriate for accessing
@@ -256,7 +256,7 @@ H5V_stride_optimize2(unsigned *np/*in,out*/, hsize_t *elmt_size/*in,out*/,
  *-------------------------------------------------------------------------
  */
 hsize_t
-H5V_hyper_stride(unsigned n, const hsize_t *size,
+H5VM_hyper_stride(unsigned n, const hsize_t *size,
 		 const hsize_t *total_size, const hsize_t *offset,
 		 hsize_t *stride/*out*/)
 {
@@ -267,7 +267,7 @@ H5V_hyper_stride(unsigned n, const hsize_t *size,
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    HDassert(n <= H5V_HYPER_NDIMS);
+    HDassert(n <= H5VM_HYPER_NDIMS);
     HDassert(size);
     HDassert(total_size);
     HDassert(stride);
@@ -333,7 +333,7 @@ H5V_hyper_stride(unsigned n, const hsize_t *size,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_hyper_eq
+ * Function:	H5VM_hyper_eq
  *
  * Purpose:	Determines whether two hyperslabs are equal.  This function
  *		assumes that both hyperslabs are relative to the same array,
@@ -356,7 +356,7 @@ H5V_hyper_stride(unsigned n, const hsize_t *size,
  *-------------------------------------------------------------------------
  */
 htri_t
-H5V_hyper_eq(unsigned n,
+H5VM_hyper_eq(unsigned n,
 	     const hsize_t *offset1, const hsize_t *size1,
 	     const hsize_t *offset2, const hsize_t *size2)
 {
@@ -386,7 +386,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_hyper_disjointp
+ * Function:	H5VM_hyper_disjointp
  *
  * Purpose:	Determines if two hyperslabs are disjoint.
  *
@@ -404,7 +404,7 @@ done:
  *-------------------------------------------------------------------------
  */
 htri_t
-H5V_hyper_disjointp(unsigned n,
+H5VM_hyper_disjointp(unsigned n,
     const hsize_t *offset1, const uint32_t *size1,
     const hsize_t *offset2, const uint32_t *size2)
 {
@@ -432,11 +432,11 @@ H5V_hyper_disjointp(unsigned n,
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5V_hyper_disjointp() */
+} /* end H5VM_hyper_disjointp() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_hyper_fill
+ * Function:	H5VM_hyper_fill
  *
  * Purpose:	Similar to memset() except it operates on hyperslabs...
  *
@@ -457,13 +457,13 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_hyper_fill(unsigned n, const hsize_t *_size,
+H5VM_hyper_fill(unsigned n, const hsize_t *_size,
 	       const hsize_t *total_size, const hsize_t *offset, void *_dst,
 	       unsigned fill_value)
 {
     uint8_t	*dst = (uint8_t*)_dst;	/*cast for ptr arithmetic	*/
-    hsize_t	size[H5V_HYPER_NDIMS];	/*a modifiable copy of _size	*/
-    hsize_t	dst_stride[H5V_HYPER_NDIMS]; /*destination stride info  */
+    hsize_t	size[H5VM_HYPER_NDIMS];	/*a modifiable copy of _size	*/
+    hsize_t	dst_stride[H5VM_HYPER_NDIMS]; /*destination stride info  */
     hsize_t	dst_start;		/*byte offset to start of stride*/
     hsize_t	elmt_size = 1;		/*bytes per element		*/
     herr_t	ret_value;		/*function return status	*/
@@ -474,7 +474,7 @@ H5V_hyper_fill(unsigned n, const hsize_t *_size,
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* check args */
-    HDassert(n > 0 && n <= H5V_HYPER_NDIMS);
+    HDassert(n > 0 && n <= H5VM_HYPER_NDIMS);
     HDassert(_size);
     HDassert(total_size);
     HDassert(dst);
@@ -486,14 +486,14 @@ H5V_hyper_fill(unsigned n, const hsize_t *_size,
 #endif
 
     /* Copy the size vector so we can modify it */
-    H5V_vector_cpy(n, size, _size);
+    H5VM_vector_cpy(n, size, _size);
 
     /* Compute an optimal destination stride vector */
-    dst_start = H5V_hyper_stride(n, size, total_size, offset, dst_stride);
-    H5V_stride_optimize1(&n, &elmt_size, size, dst_stride);
+    dst_start = H5VM_hyper_stride(n, size, total_size, offset, dst_stride);
+    H5VM_stride_optimize1(&n, &elmt_size, size, dst_stride);
 
     /* Copy */
-    ret_value = H5V_stride_fill(n, elmt_size, size, dst_stride, dst+dst_start,
+    ret_value = H5VM_stride_fill(n, elmt_size, size, dst_stride, dst+dst_start,
 			     fill_value);
 
     FUNC_LEAVE_NOAPI(ret_value)
@@ -501,7 +501,7 @@ H5V_hyper_fill(unsigned n, const hsize_t *_size,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_hyper_copy
+ * Function:	H5VM_hyper_copy
  *
  * Purpose:	Copies a hyperslab from the source to the destination.
  *
@@ -535,7 +535,7 @@ H5V_hyper_fill(unsigned n, const hsize_t *_size,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_hyper_copy(unsigned n, const hsize_t *_size,
+H5VM_hyper_copy(unsigned n, const hsize_t *_size,
 
 	       /*destination*/
 	       const hsize_t *dst_size, const hsize_t *dst_offset,
@@ -547,9 +547,9 @@ H5V_hyper_copy(unsigned n, const hsize_t *_size,
 {
     const uint8_t *src = (const uint8_t*)_src;	/*cast for ptr arithmtc */
     uint8_t	*dst = (uint8_t*) _dst;		/*cast for ptr arithmtc */
-    hsize_t	size[H5V_HYPER_NDIMS];		/*a modifiable _size	*/
-    hsize_t	src_stride[H5V_HYPER_NDIMS];	/*source stride info	*/
-    hsize_t	dst_stride[H5V_HYPER_NDIMS];	/*dest stride info	*/
+    hsize_t	size[H5VM_HYPER_NDIMS];		/*a modifiable _size	*/
+    hsize_t	src_stride[H5VM_HYPER_NDIMS];	/*source stride info	*/
+    hsize_t	dst_stride[H5VM_HYPER_NDIMS];	/*dest stride info	*/
     hsize_t	dst_start, src_start;		/*offset to start at	*/
     hsize_t	elmt_size = 1;			/*element size in bytes */
     herr_t	ret_value;			/*return status		*/
@@ -560,7 +560,7 @@ H5V_hyper_copy(unsigned n, const hsize_t *_size,
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* check args */
-    HDassert(n > 0 && n <= H5V_HYPER_NDIMS);
+    HDassert(n > 0 && n <= H5VM_HYPER_NDIMS);
     HDassert(_size);
     HDassert(dst_size);
     HDassert(src_size);
@@ -575,14 +575,14 @@ H5V_hyper_copy(unsigned n, const hsize_t *_size,
 #endif
 
     /* Copy the size vector so we can modify it */
-    H5V_vector_cpy(n, size, _size);
+    H5VM_vector_cpy(n, size, _size);
 
     /* Compute stride vectors for source and destination */
 #ifdef NO_INLINED_CODE
-    dst_start = H5V_hyper_stride(n, size, dst_size, dst_offset, dst_stride);
-    src_start = H5V_hyper_stride(n, size, src_size, src_offset, src_stride);
+    dst_start = H5VM_hyper_stride(n, size, dst_size, dst_offset, dst_stride);
+    src_start = H5VM_hyper_stride(n, size, src_size, src_offset, src_stride);
 #else /* NO_INLINED_CODE */
-    /* in-line version of two calls to H5V_hyper_stride() */
+    /* in-line version of two calls to H5VM_hyper_stride() */
     {
         hsize_t	    dst_acc;	/*accumulator				*/
         hsize_t	    src_acc;	/*accumulator				*/
@@ -675,10 +675,10 @@ H5V_hyper_copy(unsigned n, const hsize_t *_size,
 #endif /* NO_INLINED_CODE */
 
     /* Optimize the strides as a pair */
-    H5V_stride_optimize2(&n, &elmt_size, size, dst_stride, src_stride);
+    H5VM_stride_optimize2(&n, &elmt_size, size, dst_stride, src_stride);
 
     /* Perform the copy in terms of stride */
-    ret_value = H5V_stride_copy(n, elmt_size, size,
+    ret_value = H5VM_stride_copy(n, elmt_size, size,
              dst_stride, dst+dst_start, src_stride, src+src_start);
 
     FUNC_LEAVE_NOAPI(ret_value)
@@ -686,7 +686,7 @@ H5V_hyper_copy(unsigned n, const hsize_t *_size,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_stride_fill
+ * Function:	H5VM_stride_fill
  *
  * Purpose:	Fills all bytes of a hyperslab with the same value using
  *		memset().
@@ -701,11 +701,11 @@ H5V_hyper_copy(unsigned n, const hsize_t *_size,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
+H5VM_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
 		const hsize_t *stride, void *_dst, unsigned fill_value)
 {
     uint8_t	*dst = (uint8_t*)_dst; 	/*cast for ptr arithmetic	*/
-    hsize_t	idx[H5V_HYPER_NDIMS]; 	/*1-origin indices		*/
+    hsize_t	idx[H5VM_HYPER_NDIMS]; 	/*1-origin indices		*/
     hsize_t	nelmts;			/*number of elements to fill	*/
     hsize_t	i;			/*counter			*/
     int	j;			/*counter			*/
@@ -715,8 +715,8 @@ H5V_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
 
     HDassert(elmt_size < SIZET_MAX);
 
-    H5V_vector_cpy(n, idx, size);
-    nelmts = H5V_vector_reduce_product(n, size);
+    H5VM_vector_cpy(n, idx, size);
+    nelmts = H5VM_vector_reduce_product(n, size);
     for (i=0; i<nelmts; i++) {
         /* Copy an element */
         H5_CHECK_OVERFLOW(elmt_size,hsize_t,size_t);
@@ -740,7 +740,7 @@ H5V_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_stride_copy
+ * Function:	H5VM_stride_copy
  *
  * Purpose:	Uses DST_STRIDE and SRC_STRIDE to advance through the arrays
  *		DST and SRC while copying bytes from SRC to DST.  This
@@ -749,7 +749,7 @@ H5V_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
  *		outside the hyperslab defined by the strides.
  *
  * Note:	If the src_stride is all zero and elmt_size is one, then it's
- *		probably more efficient to use H5V_stride_fill() instead.
+ *		probably more efficient to use H5VM_stride_fill() instead.
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -761,13 +761,13 @@ H5V_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *size,
+H5VM_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *size,
 		const hsize_t *dst_stride, void *_dst,
 		const hsize_t *src_stride, const void *_src)
 {
     uint8_t	*dst = (uint8_t*)_dst;		/*cast for ptr arithmetic*/
     const uint8_t *src = (const uint8_t*) _src;	/*cast for ptr arithmetic*/
-    hsize_t	idx[H5V_HYPER_NDIMS];		/*1-origin indices	*/
+    hsize_t	idx[H5VM_HYPER_NDIMS];		/*1-origin indices	*/
     hsize_t	nelmts;				/*num elements to copy	*/
     hsize_t	i;				/*counter		*/
     int	j;				/*counters		*/
@@ -778,8 +778,8 @@ H5V_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *size,
     HDassert(elmt_size<SIZET_MAX);
 
     if (n) {
-        H5V_vector_cpy(n, idx, size);
-        nelmts = H5V_vector_reduce_product(n, size);
+        H5VM_vector_cpy(n, idx, size);
+        nelmts = H5VM_vector_reduce_product(n, size);
         for (i=0; i<nelmts; i++) {
 
             /* Copy an element */
@@ -809,7 +809,7 @@ H5V_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *size,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_stride_copy_s
+ * Function:	H5VM_stride_copy_s
  *
  * Purpose:	Uses DST_STRIDE and SRC_STRIDE to advance through the arrays
  *		DST and SRC while copying bytes from SRC to DST.  This
@@ -818,7 +818,7 @@ H5V_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *size,
  *		outside the hyperslab defined by the strides.
  *
  * Note:	If the src_stride is all zero and elmt_size is one, then it's
- *		probably more efficient to use H5V_stride_fill() instead.
+ *		probably more efficient to use H5VM_stride_fill() instead.
  *
  * Return:	Non-negative on success/Negative on failure
  *
@@ -830,13 +830,13 @@ H5V_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *size,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *size,
+H5VM_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *size,
 		const hssize_t *dst_stride, void *_dst,
 		const hssize_t *src_stride, const void *_src)
 {
     uint8_t	*dst = (uint8_t*)_dst;		/*cast for ptr arithmetic*/
     const uint8_t *src = (const uint8_t*) _src;	/*cast for ptr arithmetic*/
-    hsize_t	idx[H5V_HYPER_NDIMS];		/*1-origin indices	*/
+    hsize_t	idx[H5VM_HYPER_NDIMS];		/*1-origin indices	*/
     hsize_t	nelmts;				/*num elements to copy	*/
     hsize_t	i;				/*counter		*/
     int	j;				/*counters		*/
@@ -847,8 +847,8 @@ H5V_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *size,
     HDassert(elmt_size<SIZET_MAX);
 
     if (n) {
-        H5V_vector_cpy(n, idx, size);
-        nelmts = H5V_vector_reduce_product(n, size);
+        H5VM_vector_cpy(n, idx, size);
+        nelmts = H5VM_vector_reduce_product(n, size);
         for (i=0; i<nelmts; i++) {
 
             /* Copy an element */
@@ -879,9 +879,9 @@ H5V_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *size,
 #ifdef LATER
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_stride_copy2
+ * Function:	H5VM_stride_copy2
  *
- * Purpose:	Similar to H5V_stride_copy() except the source and
+ * Purpose:	Similar to H5VM_stride_copy() except the source and
  *		destination each have their own dimensionality and size and
  *		we copy exactly NELMTS elements each of size ELMT_SIZE.	 The
  *		size counters wrap if NELMTS is more than a size counter.
@@ -896,7 +896,7 @@ H5V_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *size,
  *-------------------------------------------------------------------------
  */
 static void
-H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
+H5VM_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
 
 		 /* destination */
 		 unsigned dst_n, const hsize_t *dst_size,
@@ -910,8 +910,8 @@ H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
 {
     uint8_t	*dst = (uint8_t *) _dst;
     const uint8_t *src = (const uint8_t *) _src;
-    hsize_t	dst_idx[H5V_HYPER_NDIMS];
-    hsize_t	src_idx[H5V_HYPER_NDIMS];
+    hsize_t	dst_idx[H5VM_HYPER_NDIMS];
+    hsize_t	src_idx[H5VM_HYPER_NDIMS];
     hsize_t	i;              /* Local index variable */
     int		j;              /* Local index variable */
     hbool_t	carry;
@@ -922,8 +922,8 @@ H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
     HDassert(dst_n>0);
     HDassert(src_n>0);
 
-    H5V_vector_cpy(dst_n, dst_idx, dst_size);
-    H5V_vector_cpy(src_n, src_idx, src_size);
+    H5VM_vector_cpy(dst_n, dst_idx, dst_size);
+    H5VM_vector_cpy(src_n, src_idx, src_size);
 
     for (i=0; i<nelmts; i++) {
 
@@ -958,7 +958,7 @@ H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_array_fill
+ * Function:	H5VM_array_fill
  *
  * Purpose:	Fills all bytes of an array with the same value using
  *		memset(). Increases amount copied by power of two until the
@@ -974,7 +974,7 @@ H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_array_fill(void *_dst, const void *src, size_t size, size_t count)
+H5VM_array_fill(void *_dst, const void *src, size_t size, size_t count)
 {
     size_t      copy_size;          /* size of the buffer to copy	*/
     size_t      copy_items;         /* number of items currently copying*/
@@ -1010,11 +1010,11 @@ H5V_array_fill(void *_dst, const void *src, size_t size, size_t count)
         HDmemcpy(dst, _dst, items_left * size);
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-}   /* H5V_array_fill() */
+}   /* H5VM_array_fill() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_array_down
+ * Function:	H5VM_array_down
  *
  * Purpose:	Given a set of dimension sizes, calculate the size of each
  *              "down" slice.  This is the size of the dimensions for all the
@@ -1031,14 +1031,14 @@ H5V_array_fill(void *_dst, const void *src, size_t size, size_t count)
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_array_down(unsigned n, const hsize_t *total_size, hsize_t *down)
+H5VM_array_down(unsigned n, const hsize_t *total_size, hsize_t *down)
 {
     hsize_t	acc;	                /*accumulator			*/
     int	        i;		        /*counter			*/
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    HDassert(n <= H5V_HYPER_NDIMS);
+    HDassert(n <= H5VM_HYPER_NDIMS);
     HDassert(total_size);
     HDassert(down);
 
@@ -1050,11 +1050,11 @@ H5V_array_down(unsigned n, const hsize_t *total_size, hsize_t *down)
     } /* end for */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5V_array_down() */
+} /* end H5VM_array_down() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_array_offset_pre
+ * Function:	H5VM_array_offset_pre
  *
  * Purpose:	Given a coordinate description of a location in an array, this
  *      function returns the byte offset of the coordinate.
@@ -1077,14 +1077,14 @@ H5V_array_down(unsigned n, const hsize_t *total_size, hsize_t *down)
  *-------------------------------------------------------------------------
  */
 hsize_t
-H5V_array_offset_pre(unsigned n, const hsize_t *acc, const hsize_t *offset)
+H5VM_array_offset_pre(unsigned n, const hsize_t *acc, const hsize_t *offset)
 {
     int             i;		/*counter				*/
     hsize_t	    ret_value;  /* Return value */
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
-    HDassert(n <= H5V_HYPER_NDIMS);
+    HDassert(n <= H5VM_HYPER_NDIMS);
     HDassert(acc);
     HDassert(offset);
 
@@ -1093,11 +1093,11 @@ H5V_array_offset_pre(unsigned n, const hsize_t *acc, const hsize_t *offset)
         ret_value += acc[i] * offset[i];
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5V_array_offset_pre() */
+} /* end H5VM_array_offset_pre() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_array_offset
+ * Function:	H5VM_array_offset
  *
  * Purpose:	Given a coordinate description of a location in an array, this
  *      function returns the byte offset of the coordinate.
@@ -1117,31 +1117,31 @@ H5V_array_offset_pre(unsigned n, const hsize_t *acc, const hsize_t *offset)
  *-------------------------------------------------------------------------
  */
 hsize_t
-H5V_array_offset(unsigned n, const hsize_t *total_size, const hsize_t *offset)
+H5VM_array_offset(unsigned n, const hsize_t *total_size, const hsize_t *offset)
 {
-    hsize_t	acc_arr[H5V_HYPER_NDIMS];	/* Accumulated size of down dimensions */
+    hsize_t	acc_arr[H5VM_HYPER_NDIMS];	/* Accumulated size of down dimensions */
     hsize_t	ret_value;  /* Return value */
 
     FUNC_ENTER_NOAPI((HDabort(), 0)) /*lint !e527 Don't worry about unreachable statement */
 
-    HDassert(n <= H5V_HYPER_NDIMS);
+    HDassert(n <= H5VM_HYPER_NDIMS);
     HDassert(total_size);
     HDassert(offset);
 
     /* Build the sizes of each dimension in the array */
-    if(H5V_array_down(n,total_size,acc_arr)<0)
+    if(H5VM_array_down(n,total_size,acc_arr)<0)
         HGOTO_ERROR(H5E_INTERNAL, H5E_BADVALUE, UFAIL, "can't compute down sizes")
 
     /* Set return value */
-    ret_value=H5V_array_offset_pre(n,acc_arr,offset);
+    ret_value=H5VM_array_offset_pre(n,acc_arr,offset);
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5V_array_offset() */
+} /* end H5VM_array_offset() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_array_calc_pre
+ * Function:	H5VM_array_calc_pre
  *
  * Purpose:	Given a linear offset in an array, the dimensions of that
  *              array and the pre-computed 'down' (accumulator) sizes, this
@@ -1159,7 +1159,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5V_array_calc_pre(hsize_t offset, unsigned n, const hsize_t *down,
+H5VM_array_calc_pre(hsize_t offset, unsigned n, const hsize_t *down,
     hsize_t *coords)
 {
     unsigned    u;                      /* Local index variable */
@@ -1167,7 +1167,7 @@ H5V_array_calc_pre(hsize_t offset, unsigned n, const hsize_t *down,
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Sanity check */
-    HDassert(n <= H5V_HYPER_NDIMS);
+    HDassert(n <= H5VM_HYPER_NDIMS);
     HDassert(coords);
 
     /* Compute the coordinates from the offset */
@@ -1177,11 +1177,11 @@ H5V_array_calc_pre(hsize_t offset, unsigned n, const hsize_t *down,
     } /* end for */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5V_array_calc_pre() */
+} /* end H5VM_array_calc_pre() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_array_calc
+ * Function:	H5VM_array_calc
  *
  * Purpose:	Given a linear offset in an array and the dimensions of that
  *              array, this function computes the coordinates of that offset
@@ -1201,33 +1201,33 @@ H5V_array_calc_pre(hsize_t offset, unsigned n, const hsize_t *down,
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_array_calc(hsize_t offset, unsigned n, const hsize_t *total_size, hsize_t *coords)
+H5VM_array_calc(hsize_t offset, unsigned n, const hsize_t *total_size, hsize_t *coords)
 {
-    hsize_t	idx[H5V_HYPER_NDIMS];	/* Size of each dimension in bytes */
+    hsize_t	idx[H5VM_HYPER_NDIMS];	/* Size of each dimension in bytes */
     herr_t      ret_value = SUCCEED;    /* Return value */
 
     FUNC_ENTER_NOAPI(FAIL)
 
     /* Sanity check */
-    HDassert(n <= H5V_HYPER_NDIMS);
+    HDassert(n <= H5VM_HYPER_NDIMS);
     HDassert(total_size);
     HDassert(coords);
 
     /* Build the sizes of each dimension in the array */
-    if(H5V_array_down(n, total_size, idx) < 0)
+    if(H5VM_array_down(n, total_size, idx) < 0)
         HGOTO_ERROR(H5E_INTERNAL, H5E_BADVALUE, FAIL, "can't compute down sizes")
 
     /* Compute the coordinates from the offset */
-    if(H5V_array_calc_pre(offset, n, idx, coords) < 0)
+    if(H5VM_array_calc_pre(offset, n, idx, coords) < 0)
         HGOTO_ERROR(H5E_INTERNAL, H5E_BADVALUE, FAIL, "can't compute coordinates")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5V_array_calc() */
+} /* end H5VM_array_calc() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_chunk_index
+ * Function:	H5VM_chunk_index
  *
  * Purpose:	Given a coordinate offset (COORD), the size of each chunk
  *              (CHUNK), the number of chunks in each dimension (NCHUNKS)
@@ -1269,16 +1269,16 @@ done:
  *-------------------------------------------------------------------------
  */
 herr_t
-H5V_chunk_index(unsigned ndims, const hsize_t *coord, const uint32_t *chunk,
+H5VM_chunk_index(unsigned ndims, const hsize_t *coord, const uint32_t *chunk,
     const hsize_t *down_nchunks, hsize_t *chunk_idx)
 {
-    hsize_t	scaled_coord[H5V_HYPER_NDIMS];	/* Scaled, coordinates, in terms of chunks */
+    hsize_t	scaled_coord[H5VM_HYPER_NDIMS];	/* Scaled, coordinates, in terms of chunks */
     unsigned    u;                      /* Local index variable */
 
     FUNC_ENTER_NOAPI_NOINIT_NOERR
 
     /* Sanity check */
-    HDassert(ndims <= H5V_HYPER_NDIMS);
+    HDassert(ndims <= H5VM_HYPER_NDIMS);
     HDassert(coord);
     HDassert(chunk);
     HDassert(chunk_idx);
@@ -1288,14 +1288,14 @@ H5V_chunk_index(unsigned ndims, const hsize_t *coord, const uint32_t *chunk,
         scaled_coord[u]=coord[u]/chunk[u];
 
     /* Compute the chunk index */
-    *chunk_idx=H5V_array_offset_pre(ndims,down_nchunks,scaled_coord); /*lint !e772 scaled_coord will always be initialized */
+    *chunk_idx=H5VM_array_offset_pre(ndims,down_nchunks,scaled_coord); /*lint !e772 scaled_coord will always be initialized */
 
     FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5V_chunk_index() */
+} /* end H5VM_chunk_index() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_opvv
+ * Function:	H5VM_opvv
  *
  * Purpose:	Perform an operation on a source & destination sequences
  *		of offset/length pairs.  Each set of sequnces has an array
@@ -1307,7 +1307,7 @@ H5V_chunk_index(unsigned ndims, const hsize_t *coord, const uint32_t *chunk,
  *              source or destination sequence runs out of information.
  *
  * Note:	The algorithm in this routine is [basically] the same as for
- *		H5V_memcpyvv().  Changes should be made to both!
+ *		H5VM_memcpyvv().  Changes should be made to both!
  *
  * Return:	Non-negative # of bytes operated on, on success/Negative on failure
  *
@@ -1317,11 +1317,11 @@ H5V_chunk_index(unsigned ndims, const hsize_t *coord, const uint32_t *chunk,
  *-------------------------------------------------------------------------
  */
 ssize_t
-H5V_opvv(size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[],
+H5VM_opvv(size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[],
     hsize_t dst_off_arr[],
     size_t src_max_nseq, size_t *src_curr_seq, size_t src_len_arr[],
     hsize_t src_off_arr[],
-    H5V_opvv_func_t op, void *op_data)
+    H5VM_opvv_func_t op, void *op_data)
 {
     hsize_t *max_dst_off_ptr, *max_src_off_ptr;  /* Pointers to max. source and destination offset locations */
     hsize_t *dst_off_ptr, *src_off_ptr; /* Pointers to source and destination offset arrays */
@@ -1497,11 +1497,11 @@ finished:
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5V_opvv() */
+} /* end H5VM_opvv() */
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_memcpyvv
+ * Function:	H5VM_memcpyvv
  *
  * Purpose:	Given source and destination buffers in memory (SRC & DST)
  *              copy sequences of from the source buffer into the destination
@@ -1514,7 +1514,7 @@ done:
  *              source or destination buffer runs out of sequence information.
  *
  * Note:	The algorithm in this routine is [basically] the same as for
- *		H5V_opvv().  Changes should be made to both!
+ *		H5VM_opvv().  Changes should be made to both!
  *
  * Return:	Non-negative # of bytes copied on success/Negative on failure
  *
@@ -1524,7 +1524,7 @@ done:
  *-------------------------------------------------------------------------
  */
 ssize_t
-H5V_memcpyvv(void *_dst,
+H5VM_memcpyvv(void *_dst,
     size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[], hsize_t dst_off_arr[],
     const void *_src,
     size_t src_max_nseq, size_t *src_curr_seq, size_t src_len_arr[], hsize_t src_off_arr[])
@@ -1708,5 +1708,5 @@ finished:
     *src_curr_seq = (size_t)(src_off_ptr - src_off_arr);
 
     FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5V_memcpyvv() */
+} /* end H5VM_memcpyvv() */
 
diff --git a/src/H5Vprivate.h b/src/H5VMprivate.h
similarity index 70%
rename from src/H5Vprivate.h
rename to src/H5VMprivate.h
index 2692824..4706b5f 100644
--- a/src/H5Vprivate.h
+++ b/src/H5VMprivate.h
@@ -17,93 +17,93 @@
  * Programmer: Robb Matzke <matzke at llnl.gov>
  *             Friday, October 10, 1997
  */
-#ifndef H5Vprivate_H
-#define H5Vprivate_H
+#ifndef H5VMprivate_H
+#define H5VMprivate_H
 
 /* Private headers needed by this file */
 #include "H5private.h"		/* Generic Functions			*/
 #include "H5Eprivate.h"		/* Error handling		  	*/
 
 /* Vector-Vector sequence operation callback */
-typedef herr_t (*H5V_opvv_func_t)(hsize_t dst_off, hsize_t src_off,
+typedef herr_t (*H5VM_opvv_func_t)(hsize_t dst_off, hsize_t src_off,
     size_t len, void *udata);
 
 /* Vector comparison functions like Fortran66 comparison operators */
-#define H5V_vector_eq_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)==0)
-#define H5V_vector_lt_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)<0)
-#define H5V_vector_gt_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)>0)
-#define H5V_vector_le_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)<=0)
-#define H5V_vector_ge_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)>=0)
-#define H5V_vector_eq_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)==0)
-#define H5V_vector_lt_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)<0)
-#define H5V_vector_gt_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)>0)
-#define H5V_vector_le_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)<=0)
-#define H5V_vector_ge_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)>=0)
+#define H5VM_vector_eq_s(N,V1,V2) (H5VM_vector_cmp_s (N, V1, V2)==0)
+#define H5VM_vector_lt_s(N,V1,V2) (H5VM_vector_cmp_s (N, V1, V2)<0)
+#define H5VM_vector_gt_s(N,V1,V2) (H5VM_vector_cmp_s (N, V1, V2)>0)
+#define H5VM_vector_le_s(N,V1,V2) (H5VM_vector_cmp_s (N, V1, V2)<=0)
+#define H5VM_vector_ge_s(N,V1,V2) (H5VM_vector_cmp_s (N, V1, V2)>=0)
+#define H5VM_vector_eq_u(N,V1,V2) (H5VM_vector_cmp_u (N, V1, V2)==0)
+#define H5VM_vector_lt_u(N,V1,V2) (H5VM_vector_cmp_u (N, V1, V2)<0)
+#define H5VM_vector_gt_u(N,V1,V2) (H5VM_vector_cmp_u (N, V1, V2)>0)
+#define H5VM_vector_le_u(N,V1,V2) (H5VM_vector_cmp_u (N, V1, V2)<=0)
+#define H5VM_vector_ge_u(N,V1,V2) (H5VM_vector_cmp_u (N, V1, V2)>=0)
 
 /* Other functions */
-#define H5V_vector_cpy(N,DST,SRC) {                                           \
+#define H5VM_vector_cpy(N,DST,SRC) {                                           \
     HDassert(sizeof(*(DST))==sizeof(*(SRC)));				                  \
     if (SRC) HDmemcpy (DST, SRC, (N)*sizeof(*(DST)));                         \
     else HDmemset (DST, 0, (N)*sizeof(*(DST)));                               \
 }
 
-#define H5V_vector_zero(N,DST) HDmemset(DST,0,(N)*sizeof(*(DST)))
+#define H5VM_vector_zero(N,DST) HDmemset(DST,0,(N)*sizeof(*(DST)))
 
 /* A null pointer is equivalent to a zero vector */
-#define H5V_ZERO        NULL
+#define H5VM_ZERO        NULL
 
-H5_DLL hsize_t H5V_hyper_stride(unsigned n, const hsize_t *size,
+H5_DLL hsize_t H5VM_hyper_stride(unsigned n, const hsize_t *size,
 				 const hsize_t *total_size,
 				 const hsize_t *offset,
 				 hsize_t *stride);
-H5_DLL htri_t H5V_hyper_disjointp(unsigned n, const hsize_t *offset1,
+H5_DLL htri_t H5VM_hyper_disjointp(unsigned n, const hsize_t *offset1,
     const uint32_t *size1, const hsize_t *offset2, const uint32_t *size2);
-H5_DLL htri_t H5V_hyper_eq(unsigned n, const hsize_t *offset1,
+H5_DLL htri_t H5VM_hyper_eq(unsigned n, const hsize_t *offset1,
 			    const hsize_t *size1, const hsize_t *offset2,
 			    const hsize_t *size2);
-H5_DLL herr_t H5V_hyper_fill(unsigned n, const hsize_t *_size,
+H5_DLL herr_t H5VM_hyper_fill(unsigned n, const hsize_t *_size,
 			      const hsize_t *total_size,
 			      const hsize_t *offset, void *_dst,
 			      unsigned fill_value);
-H5_DLL herr_t H5V_hyper_copy(unsigned n, const hsize_t *size,
+H5_DLL herr_t H5VM_hyper_copy(unsigned n, const hsize_t *size,
 			      const hsize_t *dst_total_size,
 			      const hsize_t *dst_offset, void *_dst,
 			      const hsize_t *src_total_size,
 			      const hsize_t *src_offset, const void *_src);
-H5_DLL herr_t H5V_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
+H5_DLL herr_t H5VM_stride_fill(unsigned n, hsize_t elmt_size, const hsize_t *size,
 			       const hsize_t *stride, void *_dst,
 			       unsigned fill_value);
-H5_DLL herr_t H5V_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *_size,
+H5_DLL herr_t H5VM_stride_copy(unsigned n, hsize_t elmt_size, const hsize_t *_size,
 			       const hsize_t *dst_stride, void *_dst,
 			       const hsize_t *src_stride, const void *_src);
-H5_DLL herr_t H5V_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *_size,
+H5_DLL herr_t H5VM_stride_copy_s(unsigned n, hsize_t elmt_size, const hsize_t *_size,
 			       const hssize_t *dst_stride, void *_dst,
 			       const hssize_t *src_stride, const void *_src);
-H5_DLL herr_t H5V_array_fill(void *_dst, const void *src, size_t size,
+H5_DLL herr_t H5VM_array_fill(void *_dst, const void *src, size_t size,
 			      size_t count);
-H5_DLL herr_t H5V_array_down(unsigned n, const hsize_t *total_size,
+H5_DLL herr_t H5VM_array_down(unsigned n, const hsize_t *total_size,
     hsize_t *down);
-H5_DLL hsize_t H5V_array_offset_pre(unsigned n,
+H5_DLL hsize_t H5VM_array_offset_pre(unsigned n,
     const hsize_t *acc, const hsize_t *offset);
-H5_DLL hsize_t H5V_array_offset(unsigned n, const hsize_t *total_size,
+H5_DLL hsize_t H5VM_array_offset(unsigned n, const hsize_t *total_size,
     const hsize_t *offset);
-H5_DLL herr_t H5V_array_calc(hsize_t offset, unsigned n,
+H5_DLL herr_t H5VM_array_calc(hsize_t offset, unsigned n,
     const hsize_t *total_size, hsize_t *coords);
-H5_DLL herr_t H5V_chunk_index(unsigned ndims, const hsize_t *coord,
+H5_DLL herr_t H5VM_chunk_index(unsigned ndims, const hsize_t *coord,
     const uint32_t *chunk, const hsize_t *down_nchunks, hsize_t *chunk_idx);
-H5_DLL ssize_t H5V_opvv(size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[],
+H5_DLL ssize_t H5VM_opvv(size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[],
     hsize_t dst_off_arr[],
     size_t src_max_nseq, size_t *src_curr_seq, size_t src_len_arr[],
     hsize_t src_off_arr[],
-    H5V_opvv_func_t op, void *op_data);
-H5_DLL ssize_t H5V_memcpyvv(void *_dst,
+    H5VM_opvv_func_t op, void *op_data);
+H5_DLL ssize_t H5VM_memcpyvv(void *_dst,
     size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[], hsize_t dst_off_arr[],
     const void *_src,
     size_t src_max_nseq, size_t *src_curr_seq, size_t src_len_arr[], hsize_t src_off_arr[]);
 
 
 /*-------------------------------------------------------------------------
- * Function:    H5V_vector_reduce_product
+ * Function:    H5VM_vector_reduce_product
  *
  * Purpose:     Product reduction of a vector.  Vector elements and return
  *              value are size_t because we usually want the number of
@@ -122,7 +122,7 @@ H5_DLL ssize_t H5V_memcpyvv(void *_dst,
  *-------------------------------------------------------------------------
  */
 static H5_inline hsize_t UNUSED
-H5V_vector_reduce_product(unsigned n, const hsize_t *v)
+H5VM_vector_reduce_product(unsigned n, const hsize_t *v)
 {
     hsize_t                  ret_value = 1;
 
@@ -137,7 +137,7 @@ done:
 }
 
 /*-------------------------------------------------------------------------
- * Function:    H5V_vector_zerop_u
+ * Function:    H5VM_vector_zerop_u
  *
  * Purpose:     Determines if all elements of a vector are zero.
  *
@@ -154,7 +154,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5_inline htri_t UNUSED
-H5V_vector_zerop_u(int n, const hsize_t *v)
+H5VM_vector_zerop_u(int n, const hsize_t *v)
 {
     htri_t      ret_value=TRUE;       /* Return value */
 
@@ -172,7 +172,7 @@ done:
 }
 
 /*-------------------------------------------------------------------------
- * Function:    H5V_vector_zerop_s
+ * Function:    H5VM_vector_zerop_s
  *
  * Purpose:     Determines if all elements of a vector are zero.
  *
@@ -189,7 +189,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5_inline htri_t UNUSED
-H5V_vector_zerop_s(int n, const hssize_t *v)
+H5VM_vector_zerop_s(int n, const hssize_t *v)
 {
     htri_t      ret_value=TRUE;       /* Return value */
 
@@ -207,7 +207,7 @@ done:
 }
 
 /*-------------------------------------------------------------------------
- * Function:    H5V_vector_cmp_u
+ * Function:    H5VM_vector_cmp_u
  *
  * Purpose:     Compares two vectors of the same size and determines if V1 is
  *              lexicographically less than, equal, or greater than V2.
@@ -226,7 +226,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5_inline int UNUSED
-H5V_vector_cmp_u (unsigned n, const hsize_t *v1, const hsize_t *v2)
+H5VM_vector_cmp_u (unsigned n, const hsize_t *v1, const hsize_t *v2)
 {
     int ret_value=0;    /* Return value */
 
@@ -249,7 +249,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:	H5V_vector_cmp_s
+ * Function:	H5VM_vector_cmp_s
  *
  * Purpose:     Compares two vectors of the same size and determines if V1 is
  *              lexicographically less than, equal, or greater than V2.
@@ -268,7 +268,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5_inline int UNUSED
-H5V_vector_cmp_s (unsigned n, const hssize_t *v1, const hssize_t *v2)
+H5VM_vector_cmp_s (unsigned n, const hssize_t *v1, const hssize_t *v2)
 {
     int ret_value=0;    /* Return value */
 
@@ -291,7 +291,7 @@ done:
 
 

 /*-------------------------------------------------------------------------
- * Function:    H5V_vector_inc
+ * Function:    H5VM_vector_inc
  *
  * Purpose:     Increments V1 by V2
  *
@@ -305,7 +305,7 @@ done:
  *-------------------------------------------------------------------------
  */
 static H5_inline void UNUSED
-H5V_vector_inc(int n, hsize_t *v1, const hsize_t *v2)
+H5VM_vector_inc(int n, hsize_t *v1, const hsize_t *v2)
 {
     while (n--) *v1++ += *v2++;
 }
@@ -333,7 +333,7 @@ static const unsigned char LogTable256[] =
 
 

 /*-------------------------------------------------------------------------
- * Function:    H5V_log2_gen
+ * Function:    H5VM_log2_gen
  *
  * Purpose:     Determines the log base two of a number (i.e. log2(n)).
  *              (i.e. the highest bit set in a number)
@@ -352,7 +352,7 @@ static const unsigned char LogTable256[] =
  *-------------------------------------------------------------------------
  */
 static H5_inline unsigned UNUSED
-H5V_log2_gen(uint64_t n)
+H5VM_log2_gen(uint64_t n)
 {
     unsigned r;                         /* r will be log2(n) */
     register unsigned int t, tt, ttt;   /* temporaries */
@@ -379,7 +379,7 @@ H5V_log2_gen(uint64_t n)
 #endif /* H5_BAD_LOG2_CODE_GENERATED  */
 
     return(r);
-} /* H5V_log2_gen() */
+} /* H5VM_log2_gen() */
 
 
 /* Lookup table for specialized log2(n) of power of two routine */
@@ -391,7 +391,7 @@ static const unsigned MultiplyDeBruijnBitPosition[32] =
 
 

 /*-------------------------------------------------------------------------
- * Function:    H5V_log2_of2
+ * Function:    H5VM_log2_of2
  *
  * Purpose:     Determines the log base two of a number (i.e. log2(n)).
  *              (i.e. the highest bit set in a number)
@@ -409,17 +409,17 @@ static const unsigned MultiplyDeBruijnBitPosition[32] =
  *-------------------------------------------------------------------------
  */
 static H5_inline unsigned UNUSED
-H5V_log2_of2(uint32_t n)
+H5VM_log2_of2(uint32_t n)
 {
 #ifndef NDEBUG
     HDassert(POWER_OF_TWO(n));
 #endif /* NDEBUG */
     return(MultiplyDeBruijnBitPosition[(n * (uint32_t)0x077CB531UL) >> 27]);
-} /* H5V_log2_of2() */
+} /* H5VM_log2_of2() */
 
 

 /*-------------------------------------------------------------------------
- * Function:    H5V_limit_enc_size
+ * Function:    H5VM_limit_enc_size
  *
  * Purpose:     Determine the # of bytes needed to encode values within a
  *              range from 0 to a given limit
@@ -432,10 +432,70 @@ H5V_log2_of2(uint32_t n)
  *-------------------------------------------------------------------------
  */
 static H5_inline unsigned UNUSED
-H5V_limit_enc_size(uint64_t limit)
+H5VM_limit_enc_size(uint64_t limit)
 {
-    return (H5V_log2_gen(limit) / 8) + 1;
-} /* end H5V_limit_enc_size() */
+    return (H5VM_log2_gen(limit) / 8) + 1;
+} /* end H5VM_limit_enc_size() */
 
-#endif /* H5Vprivate_H */
+static const unsigned char H5VM_bit_set_g[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
+static const unsigned char H5VM_bit_clear_g[8] = {0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE};
+
+

+/*-------------------------------------------------------------------------
+ * Function:    H5VM_bit_get
+ *
+ * Purpose:     Determine the value of the n'th bit in a buffer.
+ *
+ * Note:	No range checking on <offset> is performed!
+ *
+ * Note #2:	Bits are sequentially stored in the buffer, starting with bit
+ *              offset 0 in the first byte's high-bit position, proceeding down
+ *              to bit offset 7 in the first byte's low-bit position, then to
+ *              bit offset 8 in the second byte's high-bit position, etc.
+ *
+ * Return:      TRUE/FALSE
+ *
+ * Programmer:  Quincey Koziol
+ *              Tuesday, November 25, 2008
+ *
+ *-------------------------------------------------------------------------
+ */
+static H5_inline hbool_t UNUSED
+H5VM_bit_get(const unsigned char *buf, size_t offset)
+{
+    /* Test the appropriate bit in the buffer */
+    return (hbool_t)((buf[offset / 8] & (H5VM_bit_set_g[offset % 8])) ? TRUE : FALSE);
+} /* end H5VM_bit_get() */
+
+

+/*-------------------------------------------------------------------------
+ * Function:    H5VM_bit_set
+ *
+ * Purpose:     Set/reset the n'th bit in a buffer.
+ *
+ * Note:	No range checking on <offset> is performed!
+ *
+ * Note #2:	Bits are sequentially stored in the buffer, starting with bit
+ *              offset 0 in the first byte's high-bit position, proceeding down
+ *              to bit offset 7 in the first byte's low-bit position, then to
+ *              bit offset 8 in the second byte's high-bit position, etc.
+ *
+ * Return:      None
+ *
+ * Programmer:  Quincey Koziol
+ *              Tuesday, November 25, 2008
+ *
+ *-------------------------------------------------------------------------
+ */
+static H5_inline void UNUSED
+H5VM_bit_set(unsigned char *buf, size_t offset, hbool_t val)
+{
+    /* Set/reset the appropriate bit in the buffer */
+    if(val)
+        buf[offset / 8] |= H5VM_bit_set_g[offset % 8];
+    else
+        buf[offset / 8] &= H5VM_bit_clear_g[offset % 8];
+} /* end H5VM_bit_set() */
+
+#endif /* H5VMprivate_H */
 
diff --git a/src/H5Z.c b/src/H5Z.c
index 486d2c4..cf2ed14 100644
--- a/src/H5Z.c
+++ b/src/H5Z.c
@@ -665,7 +665,13 @@ H5Zfilter_avail(H5Z_filter_t id)
         HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "invalid filter identification number")
  
     if((ret_value = H5Z_filter_avail(id)) < 0)
-	HGOTO_ERROR(H5E_PLINE, H5E_NOTFOUND, FAIL, "unable to check the availability of the filter")
+    	HGOTO_ERROR(H5E_PLINE, H5E_NOTFOUND, FAIL, "unable to check the availability of the filter")
+    else if(ret_value == FALSE) {
+        const H5Z_class2_t *filter_info;
+
+        if(NULL != (filter_info = (const H5Z_class2_t *)H5PL_load(H5PL_TYPE_FILTER, (int)id)))
+        	ret_value = TRUE;
+    } /* end if */
 
 done:
     FUNC_LEAVE_API(ret_value)
diff --git a/src/H5Zdeflate.c b/src/H5Zdeflate.c
index f318c2f..82ad1ba 100644
--- a/src/H5Zdeflate.c
+++ b/src/H5Zdeflate.c
@@ -51,7 +51,7 @@ const H5Z_class2_t H5Z_DEFLATE[1] = {{
     H5Z_filter_deflate,         /* The actual filter function	*/
 }};
 
-#define H5Z_DEFLATE_SIZE_ADJUST(s) (HDceil(((double)(s))*1.001)+12)
+#define H5Z_DEFLATE_SIZE_ADJUST(s) (HDceil(((double)(s)) * (double)1.001f) + 12)
 
 

 /*-------------------------------------------------------------------------
diff --git a/src/H5Zshuffle.c b/src/H5Zshuffle.c
index 90509b0..4a67839 100644
--- a/src/H5Zshuffle.c
+++ b/src/H5Zshuffle.c
@@ -81,7 +81,7 @@ H5Z_set_local_shuffle(hid_t dcpl_id, hid_t type_id, hid_t UNUSED space_id)
         HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
 
     /* Get datatype */
-    if(NULL == (type = H5I_object_verify(type_id, H5I_DATATYPE)))
+    if(NULL == (type = (const H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE)))
 	HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
 
     /* Get the filter's current parameters */
diff --git a/src/H5Ztrans.c b/src/H5Ztrans.c
index f9e7186..1b8c096 100644
--- a/src/H5Ztrans.c
+++ b/src/H5Ztrans.c
@@ -20,7 +20,7 @@
 #include "H5Eprivate.h"		/* Error handling		  	*/
 #include "H5Iprivate.h"		/* IDs			  		*/
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* H5V_array_fill			*/
+#include "H5VMprivate.h"		/* H5VM_array_fill			*/
 #include "H5Zpkg.h"		/* Data filters				*/
 
 
@@ -292,7 +292,7 @@ static void H5Z_print(H5Z_node *tree, FILE *stream);
 #define H5Z_XFORM_DO_OP5(TYPE, SIZE)                                                               \
 {                                                                                                  \
     TYPE val = ((tree->type == H5Z_XFORM_INTEGER) ? (TYPE)tree->value.int_val : (TYPE)tree->value.float_val); \
-    H5V_array_fill(array, &val, sizeof(TYPE), (SIZE));                                             \
+    H5VM_array_fill(array, &val, sizeof(TYPE), (SIZE));                                             \
 }
 
 /* The difference of this macro from H5Z_XFORM_DO_OP3 is that it handles the operations when the left operand is empty, like -x or +x.  
diff --git a/src/H5config.h.in b/src/H5config.h.in
index 02bafd8..76de6c6 100644
--- a/src/H5config.h.in
+++ b/src/H5config.h.in
@@ -174,12 +174,6 @@
 /* Define to 1 if you have the `get_fpc_csr' function. */
 #undef HAVE_GET_FPC_CSR
 
-/* Define if we have GPFS support */
-#undef HAVE_GPFS
-
-/* Define to 1 if you have the <gpfs.h> header file. */
-#undef HAVE_GPFS_H
-
 /* Define if library will contain instrumentation to detect correct
    optimization operation */
 #undef HAVE_INSTRUMENTED_LIBRARY
diff --git a/src/H5detect.c b/src/H5detect.c
index be661ea..aed7514 100644
--- a/src/H5detect.c
+++ b/src/H5detect.c
@@ -60,9 +60,9 @@ static const char *FileHeader = "\n\
 
 #define MAXDETECT 64
 
-/* The ALIGNMENT test code may generate the SIGBUS or SIGSEGV signals. We use
- * setjmp/longjmp in the signal handlers for recovery. But setjmp/longjmp do
- * not necessary restore the signal blocking status while sigsetjmp/siglongjmp
+/* The ALIGNMENT test code may generate the SIGBUS, SIGSEGV, or SIGILL signals. 
+ * We use setjmp/longjmp in the signal handlers for recovery. But setjmp/longjmp
+ * do not necessary restore the signal blocking status while sigsetjmp/siglongjmp
  * do. If sigsetjmp/siglongjmp are not supported, need to use sigprocmask to
  * unblock the signal before doing longjmp.
  */
@@ -124,7 +124,7 @@ static int bit_cmp(int, int *, volatile void *, volatile void *,
 static void fix_order(int, int, int *, const char **);
 static int imp_bit(int, int *, volatile void *, volatile void *,
     const unsigned char *);
-static unsigned long find_bias(int, int, int *, void *);
+static unsigned long find_bias(int, int, int *, volatile void *);
 static void precision (detected_t*);
 static void print_header(void);
 static void detect_C89_integers(void);
@@ -139,7 +139,8 @@ static void detect_alignments(void);
 static size_t align_g[] = {1, 2, 4, 8, 16};
 static int align_status_g = 0;		/* ALIGNMENT Signal Status */
 static int sigbus_handler_called_g = 0;	/* how many times called */
-static int sigsegv_handler_called_g = 0;	/* how many times called */
+static int sigsegv_handler_called_g = 0;/* how many times called */
+static int sigill_handler_called_g = 0;	/* how many times called */
 static int signal_handler_tested_g = 0;	/* how many times tested */
 #if defined(H5SETJMP) && defined(H5_HAVE_SIGNAL)
 static int verify_signal_handlers(int signum, void (*handler)(int));
@@ -331,7 +332,7 @@ precision (detected_t *d)
             if(_v1 != _v2)                                                    \
                 _pad_mask[_i] |= _byte_mask;                                  \
             _buf1[_i] ^= _byte_mask;                                          \
-        } /* enf for */                                                       \
+        } /* end for */                                                       \
                                                                               \
     /* Byte Order */                                                          \
     for(_i = 0, _v1 = 0.0, _v2 = 1.0; _i < (int)sizeof(TYPE); _i++) {         \
@@ -425,6 +426,7 @@ precision (detected_t *d)
     volatile size_t	_ano = 0;					      \
     void		(*_handler)(int) = HDsignal(SIGBUS, sigbus_handler);  \
     void		(*_handler2)(int) = HDsignal(SIGSEGV, sigsegv_handler);\
+    void		(*_handler3)(int) = HDsignal(SIGILL, sigill_handler);  \
 									      \
     _buf = (char*)HDmalloc(sizeof(TYPE) + align_g[NELMTS(align_g) - 1]);	      \
     if(H5SETJMP(jbuf_g)) _ano++;					      \
@@ -454,6 +456,7 @@ precision (detected_t *d)
     HDfree(_buf);								      \
     HDsignal(SIGBUS, _handler); /*restore original handler*/		      \
     HDsignal(SIGSEGV, _handler2); /*restore original handler*/		      \
+    HDsignal(SIGILL, _handler3); /*restore original handler*/		      \
 }
 #else
 #define ALIGNMENT(TYPE,INFO) {						      \
@@ -539,6 +542,42 @@ sigbus_handler(int UNUSED signo)
 #endif
 
 

+#if defined(H5LONGJMP) && defined(H5_HAVE_SIGNAL)
+/*-------------------------------------------------------------------------
+ * Function:	sigill_handler
+ *
+ * Purpose:	Handler for SIGILL. We use signal() instead of sigaction()
+ *		because it's more portable to non-Posix systems. Although
+ *		it's not nearly as nice to work with, it does the job for
+ *		this simple stuff.
+ *
+ * Return:	Returns via H5LONGJMP to jbuf_g.
+ *
+ * Programmer:	Raymond Lu
+ *		28 October 2013
+ *
+ *-------------------------------------------------------------------------
+ */
+static void
+sigill_handler(int UNUSED signo)
+{
+#if !defined(H5HAVE_SIGJMP) && defined(H5_HAVE_SIGPROCMASK)
+    /* Use sigprocmask to unblock the signal if sigsetjmp/siglongjmp are not */
+    /* supported. */
+    sigset_t set;
+
+    HDsigemptyset(&set);
+    HDsigaddset(&set, SIGILL);
+    HDsigprocmask(SIG_UNBLOCK, &set, NULL);
+#endif
+
+    sigill_handler_called_g++;
+    HDsignal(SIGILL, sigill_handler);
+    H5LONGJMP(jbuf_g, SIGILL);
+}
+#endif
+
+

 /*-------------------------------------------------------------------------
  * Function:	print_results
  *
@@ -1135,7 +1174,7 @@ imp_bit(int n, int *perm, volatile void *_a, volatile void *_b,
  *-------------------------------------------------------------------------
  */
 static unsigned long
-find_bias(int epos, int esize, int *perm, void *_a)
+find_bias(int epos, int esize, int *perm, volatile void *_a)
 {
     unsigned char	*a = (unsigned char *) _a;
     unsigned char	mask;
diff --git a/src/H5private.h b/src/H5private.h
index f828a46..18a0fc0 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -210,10 +210,11 @@
  */
 #define eventa(func_name)   h5_mpe_eventa
 #define eventb(func_name)   h5_mpe_eventb
-#define MPE_LOG_VARS                                               \
-    static int eventa(FUNC) = -1;                                        \
-    static int eventb(FUNC) = -1;                                        \
-    const char* p_event_start = "start" FUNC;
+#define MPE_LOG_VARS                                                    \
+    static int h5_mpe_eventa = -1;                                      \
+    static int h5_mpe_eventb = -1;                                      \
+    static char p_event_start[128];                                     \
+    static char p_event_end[128];
 
 /* Hardwire the color to "red", since that's what all the routines are using
  * now.  In the future, if we want to change that color for a given routine,
@@ -222,15 +223,18 @@
  * color information down to the BEGIN_MPE_LOG macro (which should have a new
  * BEGIN_MPE_LOG_COLOR variant). -QAK
  */
-#define BEGIN_MPE_LOG                                              \
-  if (H5_MPEinit_g){                    \
-    if (eventa(FUNC) == -1 && eventb(FUNC) == -1) {          \
-  const char* p_color = "red";                \
-         eventa(FUNC)=MPE_Log_get_event_number();                        \
-         eventb(FUNC)=MPE_Log_get_event_number();                        \
-         MPE_Describe_state(eventa(FUNC), eventb(FUNC), (char *)FUNC, (char *)p_color); \
-    }                                                                         \
-    MPE_Log_event(eventa(FUNC), 0, (char *)p_event_start);                 \
+#define BEGIN_MPE_LOG                                                   \
+  if(H5_MPEinit_g) {                                                    \
+    if(h5_mpe_eventa == -1 && h5_mpe_eventb == -1) {                    \
+         const char *p_color = "red";                                   \
+                                                                        \
+         h5_mpe_eventa = MPE_Log_get_event_number();                    \
+         h5_mpe_eventb = MPE_Log_get_event_number();                    \
+         HDsnprintf(p_event_start, sizeof(p_event_start) - 1, "start_%s", FUNC); \
+         HDsnprintf(p_event_end, sizeof(p_event_end) - 1, "end_%s", FUNC); \
+         MPE_Describe_state(h5_mpe_eventa, h5_mpe_eventb, (char *)FUNC, (char *)p_color); \
+    }                                                                   \
+    MPE_Log_event(h5_mpe_eventa, 0, p_event_start);                     \
   }
 
 
@@ -240,9 +244,9 @@
  *
  * Programmer: Long Wang
  */
-#define FINISH_MPE_LOG                                                       \
-    if (H5_MPEinit_g) {                                                      \
-        MPE_Log_event(eventb(FUNC), 0, (char *)FUNC);                 \
+#define FINISH_MPE_LOG                                                  \
+    if(H5_MPEinit_g) {                                                  \
+        MPE_Log_event(h5_mpe_eventb, 0, p_event_end);                   \
     }
 
 #else /* H5_HAVE_MPE */
@@ -433,8 +437,8 @@
 /*
  * Maximum & minimum values for our typedefs.
  */
-#define  HSIZET_MAX  ((hsize_t)ULLONG_MAX)
-#define  HSSIZET_MAX  ((hssize_t)LLONG_MAX)
+#define HSIZET_MAX   ((hsize_t)ULLONG_MAX)
+#define HSSIZET_MAX  ((hssize_t)LLONG_MAX)
 #define HSSIZET_MIN  (~(HSSIZET_MAX))
 
 /*
@@ -1726,7 +1730,7 @@ typedef struct H5_api_struct {
 
 /* Macro for first thread initialization */
 #ifdef H5_HAVE_WIN_THREADS
-#define H5_FIRST_THREAD_INIT InitOnceExecuteOnce(&H5TS_first_init_g, H5TS_win32_first_thread_init, NULL, NULL);
+#define H5_FIRST_THREAD_INIT InitOnceExecuteOnce(&H5TS_first_init_g, H5TS_win32_process_enter, NULL, NULL);
 #else
 #define H5_FIRST_THREAD_INIT pthread_once(&H5TS_first_init_g, H5TS_pthread_first_thread_init);
 #endif
@@ -2058,25 +2062,6 @@ static herr_t    H5_INTERFACE_INIT_FUNC(void);
   #define HDcompile_assert(e)     do { typedef struct { unsigned int b: (e); } x; } while(0)
 */
 
-/* Macros for enabling/disabling particular GCC warnings */
-/* (see the following web-sites for more info:
- *      http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html
- *      http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
- */
-/* These pragmas are only implemented usefully in gcc 4.6+ */
-#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
-    #define GCC_DIAG_STR(s) #s
-    #define GCC_DIAG_JOINSTR(x,y) GCC_DIAG_STR(x ## y)
-    #define GCC_DIAG_DO_PRAGMA(x) _Pragma (#x)
-    #define GCC_DIAG_PRAGMA(x) GCC_DIAG_DO_PRAGMA(GCC diagnostic x)
-
-    #define GCC_DIAG_OFF(x) GCC_DIAG_PRAGMA(push) GCC_DIAG_PRAGMA(ignored GCC_DIAG_JOINSTR(-W,x))
-    #define GCC_DIAG_ON(x) GCC_DIAG_PRAGMA(pop)
-#else
-    #define GCC_DIAG_OFF(x)
-    #define GCC_DIAG_ON(x)
-#endif
-
 /* Private functions, not part of the publicly documented API */
 H5_DLL herr_t H5_init_library(void);
 H5_DLL void H5_term_library(void);
diff --git a/src/H5public.h b/src/H5public.h
index e0b4a58..aaf0d74 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -72,13 +72,32 @@
 extern "C" {
 #endif
 
+/* Macros for enabling/disabling particular GCC warnings */
+/* (see the following web-sites for more info:
+ *      http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html
+ *      http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
+ */
+/* These pragmas are only implemented usefully in gcc 4.6+ */
+#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
+    #define H5_GCC_DIAG_STR(s) #s
+    #define H5_GCC_DIAG_JOINSTR(x,y) H5_GCC_DIAG_STR(x ## y)
+    #define H5_GCC_DIAG_DO_PRAGMA(x) _Pragma (#x)
+    #define H5_GCC_DIAG_PRAGMA(x) H5_GCC_DIAG_DO_PRAGMA(GCC diagnostic x)
+
+    #define H5_GCC_DIAG_OFF(x) H5_GCC_DIAG_PRAGMA(push) H5_GCC_DIAG_PRAGMA(ignored H5_GCC_DIAG_JOINSTR(-W,x))
+    #define H5_GCC_DIAG_ON(x) H5_GCC_DIAG_PRAGMA(pop)
+#else
+    #define H5_GCC_DIAG_OFF(x)
+    #define H5_GCC_DIAG_ON(x)
+#endif
+
 /* 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	12	/* For tweaks, bug-fixes, or development     */
+#define H5_VERS_RELEASE	13	/* 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.12"      /* Full version string */
+#define H5_VERS_INFO    "HDF5 library version: 1.8.13"      /* Full version string */
 
 #define H5check()	H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR,	      \
 				        H5_VERS_RELEASE)
@@ -148,8 +167,10 @@ typedef long long ssize_t;
  * type.
  */
 #if H5_SIZEOF_LONG_LONG >= 8
+H5_GCC_DIAG_OFF(long-long)
 typedef unsigned long long 	hsize_t;
 typedef signed long long	hssize_t;
+H5_GCC_DIAG_ON(long-long)
 #       define H5_SIZEOF_HSIZE_T H5_SIZEOF_LONG_LONG
 #       define H5_SIZEOF_HSSIZE_T H5_SIZEOF_LONG_LONG
 #else
@@ -313,6 +334,7 @@ H5_DLL herr_t H5get_libversion(unsigned *majnum, unsigned *minnum,
 				unsigned *relnum);
 H5_DLL herr_t H5check_version(unsigned majnum, unsigned minnum,
 			       unsigned relnum);
+H5_DLL herr_t H5free_memory(void *mem);
 
 #ifdef __cplusplus
 }
diff --git a/src/H5system.c b/src/H5system.c
index 4280066..437a004 100644
--- a/src/H5system.c
+++ b/src/H5system.c
@@ -200,20 +200,28 @@ HDfprintf(FILE *stream, const char *fmt, ...)
                     case 'H':
                         if(sizeof(hsize_t) < sizeof(long))
                             modifier[0] = '\0';
-                        else if(sizeof(hsize_t) == sizeof(long))
-                            HDstrncpy(modifier, "l", 2);
-                        else
-                            HDstrncpy(modifier, H5_PRINTF_LL_WIDTH, HDstrlen(H5_PRINTF_LL_WIDTH) + 1);
+                        else if(sizeof(hsize_t) == sizeof(long)) {
+                            HDstrncpy(modifier, "l", sizeof(modifier));
+                            modifier[sizeof(modifier) - 1] = '\0';
+                        } /* end if */
+                        else {
+                            HDstrncpy(modifier, H5_PRINTF_LL_WIDTH, sizeof(modifier));
+                            modifier[sizeof(modifier) - 1] = '\0';
+                        } /* end else */
                         break;
 
                     case 'Z':
                     case 'z':
                         if(sizeof(size_t) < sizeof(long))
                             modifier[0] = '\0';
-                        else if(sizeof(size_t) == sizeof(long))
-                            HDstrncpy(modifier, "l", 2);
-                        else
-                            HDstrncpy(modifier, H5_PRINTF_LL_WIDTH, HDstrlen(H5_PRINTF_LL_WIDTH) + 1);
+                        else if(sizeof(size_t) == sizeof(long)) {
+                            HDstrncpy(modifier, "l", sizeof(modifier));
+                            modifier[sizeof(modifier) - 1] = '\0';
+                        } /* end if */
+                        else {
+                            HDstrncpy(modifier, H5_PRINTF_LL_WIDTH, sizeof(modifier));
+                            modifier[sizeof(modifier) - 1] = '\0';
+                        } /* end else */
                         break;
 
                     default:
diff --git a/src/H5trace.c b/src/H5trace.c
index f7d48c7..b8f0b6a 100644
--- a/src/H5trace.c
+++ b/src/H5trace.c
@@ -544,48 +544,45 @@ H5_trace(const double *returning, const char *func, const char *type, ...)
                         } /* end if */
                         else {
                             H5D_mpio_no_collective_cause_t nocol_cause_mode = (H5D_mpio_no_collective_cause_t)va_arg(ap, int);
+                            hbool_t flag_already_displayed = FALSE;
 
-                            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;
+                            /* Check for all bit-flags which might be set */
+                            if(nocol_cause_mode & H5D_MPIO_COLLECTIVE) {
+                                fprintf(out, "H5D_MPIO_COLLECTIVE");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
+                            if(nocol_cause_mode & H5D_MPIO_SET_INDEPENDENT) {
+                                fprintf(out, "%sH5D_MPIO_SET_INDEPENDENT", flag_already_displayed ? " | " : "");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
+                            if(nocol_cause_mode & H5D_MPIO_DATATYPE_CONVERSION) {
+                                fprintf(out, "%sH5D_MPIO_DATATYPE_CONVERSION", flag_already_displayed ? " | " : "");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
+                            if(nocol_cause_mode & H5D_MPIO_DATA_TRANSFORMS) {
+                                fprintf(out, "%sH5D_MPIO_DATA_TRANSFORMS", flag_already_displayed ? " | " : "");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
+                            if(nocol_cause_mode & H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED) {
+                                fprintf(out, "%sH5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED", flag_already_displayed ? " | " : "");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
+                            if(nocol_cause_mode & H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES) {
+                                fprintf(out, "%sH5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES", flag_already_displayed ? " | " : "");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
+                            if(nocol_cause_mode & H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET) {
+                                fprintf(out, "%sH5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET", flag_already_displayed ? " | " : "");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
+                            if(nocol_cause_mode & H5D_MPIO_FILTERS) {
+                                fprintf(out, "%sH5D_MPIO_FILTERS", flag_already_displayed ? " | " : "");
+                                flag_already_displayed = TRUE;
+                            } /* end if */
 
-                                default:
-                                    fprintf(out, "%ld", (long)nocol_cause_mode);
-                                    break;
-                            } /* end switch */
+                            /* Display '<none>' if there's no flags set */
+                            if(!flag_already_displayed)
+                                fprintf(out, "<none>");
                         } /* end else */
                         break;
 
diff --git a/src/H5win32defs.h b/src/H5win32defs.h
index d452925..185e9b4 100644
--- a/src/H5win32defs.h
+++ b/src/H5win32defs.h
@@ -74,7 +74,7 @@ struct timezone {
         extern "C" {
 #endif /* __cplusplus */
         H5_DLL int Wgettimeofday(struct timeval *tv, struct timezone *tz);
-        H5_DLL char* Wgetlogin();
+        H5_DLL char* Wgetlogin(void);
         H5_DLL int c99_snprintf(char* str, size_t size, const char* format, ...);
         H5_DLL int c99_vsnprintf(char* str, size_t size, const char* format, va_list ap);
 #ifdef __cplusplus
diff --git a/src/Makefile.am b/src/Makefile.am
index c26eba7..b19f205 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -56,7 +56,7 @@ libhdf5_la_SOURCES= H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
         H5Fsfile.c H5Fsuper.c H5Fsuper_cache.c H5Ftest.c \
         H5FD.c H5FDcore.c  \
         H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
-        H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
+        H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
         H5FL.c H5FO.c H5FS.c H5FScache.c H5FSdbg.c H5FSsection.c H5FSstat.c H5FStest.c \
         H5G.c H5Gbtree2.c H5Gcache.c \
         H5Gcompact.c H5Gdense.c H5Gdeprec.c H5Gent.c \
@@ -99,7 +99,7 @@ libhdf5_la_SOURCES= H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
         H5Tfloat.c H5Tinit.c H5Tnative.c H5Toffset.c H5Toh.c \
         H5Topaque.c \
         H5Torder.c \
-        H5Tpad.c H5Tprecis.c H5Tstrpad.c H5Tvisit.c H5Tvlen.c H5TS.c H5V.c H5WB.c H5Z.c  \
+        H5Tpad.c H5Tprecis.c H5Tstrpad.c H5Tvisit.c H5Tvlen.c H5TS.c H5VM.c H5WB.c H5Z.c  \
         H5Zdeflate.c H5Zfletcher32.c H5Znbit.c H5Zshuffle.c H5Zszip.c  \
         H5Zscaleoffset.c H5Ztrans.c
 
@@ -108,8 +108,9 @@ libhdf5_la_SOURCES= H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
 include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5version.h \
         H5Apublic.h H5ACpublic.h \
         H5Cpublic.h H5Dpublic.h \
-        H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \
-	H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h              \
+        H5Epubgen.h H5Epublic.h H5Fpublic.h \
+        H5FDpublic.h H5FDcore.h H5FDdirect.h \
+	H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h \
         H5FDmulti.h H5FDsec2.h  H5FDstdio.h \
         H5Gpublic.h  H5Ipublic.h H5Lpublic.h \
         H5MMpublic.h H5Opublic.h H5Ppublic.h \
diff --git a/src/Makefile.in b/src/Makefile.in
index 476ea03..4f556c4 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,23 +35,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -70,13 +98,13 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 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)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am \
-	$(top_srcdir)/config/lt_vers.am COPYING
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/lt_vers.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(srcdir)/H5config.h.in \
+	$(top_srcdir)/bin/mkinstalldirs $(srcdir)/libhdf5.settings.in \
+	$(top_srcdir)/bin/depcomp $(include_HEADERS) \
+	$(top_srcdir)/bin/test-driver COPYING
 noinst_PROGRAMS = H5detect$(EXEEXT) H5make_libsettings$(EXEEXT)
 TESTS =
 subdir = src
@@ -132,13 +160,13 @@ am_libhdf5_la_OBJECTS = H5.lo H5checksum.lo H5dbg.lo H5system.lo \
 	H5Fmpi.lo H5Fquery.lo H5Fsfile.lo H5Fsuper.lo \
 	H5Fsuper_cache.lo H5Ftest.lo H5FD.lo H5FDcore.lo H5FDdirect.lo \
 	H5FDfamily.lo H5FDint.lo H5FDlog.lo H5FDmpi.lo H5FDmpio.lo \
-	H5FDmpiposix.lo H5FDmulti.lo H5FDsec2.lo H5FDspace.lo \
-	H5FDstdio.lo H5FL.lo H5FO.lo H5FS.lo H5FScache.lo H5FSdbg.lo \
-	H5FSsection.lo H5FSstat.lo H5FStest.lo H5G.lo H5Gbtree2.lo \
-	H5Gcache.lo H5Gcompact.lo H5Gdense.lo H5Gdeprec.lo H5Gent.lo \
-	H5Gint.lo H5Glink.lo H5Gloc.lo H5Gname.lo H5Gnode.lo H5Gobj.lo \
-	H5Goh.lo H5Groot.lo H5Gstab.lo H5Gtest.lo H5Gtraverse.lo \
-	H5HF.lo H5HFbtree2.lo H5HFcache.lo H5HFdbg.lo H5HFdblock.lo \
+	H5FDmulti.lo H5FDsec2.lo H5FDspace.lo H5FDstdio.lo H5FL.lo \
+	H5FO.lo H5FS.lo H5FScache.lo H5FSdbg.lo H5FSsection.lo \
+	H5FSstat.lo H5FStest.lo H5G.lo H5Gbtree2.lo H5Gcache.lo \
+	H5Gcompact.lo H5Gdense.lo H5Gdeprec.lo H5Gent.lo H5Gint.lo \
+	H5Glink.lo H5Gloc.lo H5Gname.lo H5Gnode.lo H5Gobj.lo H5Goh.lo \
+	H5Groot.lo H5Gstab.lo H5Gtest.lo H5Gtraverse.lo H5HF.lo \
+	H5HFbtree2.lo H5HFcache.lo H5HFdbg.lo H5HFdblock.lo \
 	H5HFdtable.lo H5HFhdr.lo H5HFhuge.lo H5HFiblock.lo H5HFiter.lo \
 	H5HFman.lo H5HFsection.lo H5HFspace.lo H5HFstat.lo H5HFtest.lo \
 	H5HFtiny.lo H5HG.lo H5HGcache.lo H5HGdbg.lo H5HGquery.lo \
@@ -164,7 +192,7 @@ am_libhdf5_la_OBJECTS = H5.lo H5checksum.lo H5dbg.lo H5system.lo \
 	H5Tfields.lo H5Tfixed.lo H5Tfloat.lo H5Tinit.lo H5Tnative.lo \
 	H5Toffset.lo H5Toh.lo H5Topaque.lo H5Torder.lo H5Tpad.lo \
 	H5Tprecis.lo H5Tstrpad.lo H5Tvisit.lo H5Tvlen.lo H5TS.lo \
-	H5V.lo H5WB.lo H5Z.lo H5Zdeflate.lo H5Zfletcher32.lo \
+	H5VM.lo H5WB.lo H5Z.lo H5Zdeflate.lo H5Zfletcher32.lo \
 	H5Znbit.lo H5Zshuffle.lo H5Zszip.lo H5Zscaleoffset.lo \
 	H5Ztrans.lo
 libhdf5_la_OBJECTS = $(am_libhdf5_la_OBJECTS)
@@ -225,12 +253,199 @@ am__can_run_installinfo = \
   esac
 DATA = $(settings_DATA)
 HEADERS = $(include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+	$(LISP)H5config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -302,7 +517,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -514,7 +728,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 # Add libtool shared library version numbers to the HDF5 library
 # See libtool versioning documentation online.
 LT_VERS_INTERFACE = 8
-LT_VERS_REVISION = 1
+LT_VERS_REVISION = 2 
 LT_VERS_AGE = 0
 
 # Our main target, the HDF5 library
@@ -545,7 +759,7 @@ libhdf5_la_SOURCES = H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
         H5Fsfile.c H5Fsuper.c H5Fsuper_cache.c H5Ftest.c \
         H5FD.c H5FDcore.c  \
         H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
-        H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
+        H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
         H5FL.c H5FO.c H5FS.c H5FScache.c H5FSdbg.c H5FSsection.c H5FSstat.c H5FStest.c \
         H5G.c H5Gbtree2.c H5Gcache.c \
         H5Gcompact.c H5Gdense.c H5Gdeprec.c H5Gent.c \
@@ -588,7 +802,7 @@ libhdf5_la_SOURCES = H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
         H5Tfloat.c H5Tinit.c H5Tnative.c H5Toffset.c H5Toh.c \
         H5Topaque.c \
         H5Torder.c \
-        H5Tpad.c H5Tprecis.c H5Tstrpad.c H5Tvisit.c H5Tvlen.c H5TS.c H5V.c H5WB.c H5Z.c  \
+        H5Tpad.c H5Tprecis.c H5Tstrpad.c H5Tvisit.c H5Tvlen.c H5TS.c H5VM.c H5WB.c H5Z.c  \
         H5Zdeflate.c H5Zfletcher32.c H5Znbit.c H5Zshuffle.c H5Zszip.c  \
         H5Zscaleoffset.c H5Ztrans.c
 
@@ -597,8 +811,9 @@ libhdf5_la_SOURCES = H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
 include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5version.h \
         H5Apublic.h H5ACpublic.h \
         H5Cpublic.h H5Dpublic.h \
-        H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \
-	H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h              \
+        H5Epubgen.h H5Epublic.h H5Fpublic.h \
+        H5FDpublic.h H5FDcore.h H5FDdirect.h \
+	H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h \
         H5FDmulti.h H5FDsec2.h  H5FDstdio.h \
         H5Gpublic.h  H5Ipublic.h H5Lpublic.h \
         H5MMpublic.h H5Opublic.h H5Ppublic.h \
@@ -634,7 +849,7 @@ all: H5config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/lt_vers.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -668,8 +883,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; else :; fi
-	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/H5config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -683,6 +898,7 @@ distclean-hdr:
 	-rm -f H5config.h stamp-h1
 libhdf5.settings: $(top_builddir)/config.status $(srcdir)/libhdf5.settings.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -717,6 +933,7 @@ clean-libLTLIBRARIES:
 	  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)
 
@@ -728,9 +945,11 @@ 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) $(EXTRA_H5detect_DEPENDENCIES) 
 	@rm -f H5detect$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(H5detect_OBJECTS) $(H5detect_LDADD) $(LIBS)
+
 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)
@@ -790,7 +1009,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5FDlog.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5FDmpi.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5FDmpio.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5FDmpiposix.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5FDmulti.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5FDsec2.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5FDspace.Plo at am__quote@
@@ -965,7 +1183,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5Tstrpad.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5Tvisit.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5Tvlen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5V.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5VM.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5WB.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5Z.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/H5Zdeflate.Plo at am__quote@
@@ -989,14 +1207,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1053,26 +1271,15 @@ uninstall-includeHEADERS:
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES) H5config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS) H5config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -1084,15 +1291,11 @@ TAGS:  $(HEADERS) $(SOURCES) H5config.h.in $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES) H5config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS) H5config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -1101,9 +1304,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -1119,6 +1323,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1179,6 +1528,9 @@ install-strip:
 	fi
 mostlyclean-generic:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -1264,21 +1616,21 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
 
 .MAKE: all 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 \
-	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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am 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 \
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \
 	uninstall-includeHEADERS uninstall-libLTLIBRARIES \
 	uninstall-settingsDATA
 
diff --git a/src/libhdf5.settings.in b/src/libhdf5.settings.in
index 343fa34..0402ffa 100644
--- a/src/libhdf5.settings.in
+++ b/src/libhdf5.settings.in
@@ -69,7 +69,6 @@ Features:
 Clear file buffers before write: @CLEARFILEBUF@
            Using memory checker: @USINGMEMCHECKER@
          Function Stack Tracing: @CODESTACK@
-                           GPFS: @GPFS@
       Strict File Format Checks: @STRICT_FORMAT_CHECKS@
    Optimization Instrumentation: @INSTRUMENT@
        Large File Support (LFS): @LARGEFILE@
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index efa78e1..2f1b70a 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,84 +1,87 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TEST)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Generate the H5srcdir_str.h file containing user settings needed by compilation
 #-----------------------------------------------------------------------------
-SET (srcdir ${CMAKE_CURRENT_SOURCE_DIR})
-CONFIGURE_FILE (${HDF5_TEST_SOURCE_DIR}/H5srcdir_str.h.in H5srcdir_str.h  @ONLY)
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR})
+configure_file (${HDF5_TEST_SOURCE_DIR}/H5srcdir_str.h.in H5srcdir_str.h  @ONLY)
 INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR})
 
 #-----------------------------------------------------------------------------
 # Define Test Library Sources
 #-----------------------------------------------------------------------------
-SET (TEST_LIB_SRCS
+set (TEST_LIB_SRCS
     ${HDF5_TEST_SOURCE_DIR}/h5test.c
     ${HDF5_TEST_SOURCE_DIR}/testframe.c
     ${HDF5_TEST_SOURCE_DIR}/cache_common.c
 )
 
-SET (TEST_LIB_HEADERS
+set (TEST_LIB_HEADERS
     ${HDF5_TEST_SOURCE_DIR}/h5test.h
 )
 
-ADD_LIBRARY (${HDF5_TEST_LIB_TARGET} ${LIB_TYPE} ${TEST_LIB_SRCS} ${TEST_LIB_HEADERS})
+add_library (${HDF5_TEST_LIB_TARGET} ${LIB_TYPE} ${TEST_LIB_SRCS} ${TEST_LIB_HEADERS})
 TARGET_C_PROPERTIES (${HDF5_TEST_LIB_TARGET} " " " ")
-IF (MSVC)
-  TARGET_LINK_LIBRARIES (${HDF5_TEST_LIB_TARGET} "ws2_32.lib")
-ENDIF (MSVC)
-IF (MINGW)
-  TARGET_LINK_LIBRARIES (${HDF5_TEST_LIB_TARGET} "wsock32.lib")
-ENDIF (MINGW)
-TARGET_LINK_LIBRARIES (${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
+if (MSVC)
+  target_link_libraries (${HDF5_TEST_LIB_TARGET} "ws2_32.lib")
+endif (MSVC)
+if (MINGW)
+  target_link_libraries (${HDF5_TEST_LIB_TARGET} "wsock32.lib")
+endif (MINGW)
+target_link_libraries (${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
 H5_SET_LIB_OPTIONS (${HDF5_TEST_LIB_TARGET} ${HDF5_TEST_LIB_NAME} ${LIB_TYPE})
-SET_TARGET_PROPERTIES (${HDF5_TEST_LIB_TARGET} PROPERTIES FOLDER libraries/test)
+set_target_properties (${HDF5_TEST_LIB_TARGET} PROPERTIES
+    FOLDER libraries/test
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 #-----------------------------------------------------------------------------
 # If plugin library tests can be tested
 #-----------------------------------------------------------------------------
-IF (BUILD_SHARED_LIBS)
+if (BUILD_SHARED_LIBS)
   # make plugins dir
-  FILE (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/testdir1")
-  FILE (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/testdir2")
+  file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/testdir1")
+  file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/testdir2")
 
   #-----------------------------------------------------------------------------
   # Define Test Library Sources
   #-----------------------------------------------------------------------------
-  SET (TEST_PLUGIN_LIBS
+  set (TEST_PLUGIN_LIBS
       dynlib1
       dynlib3
   )
-  SET (TEST2_PLUGIN_LIBS
+  set (TEST2_PLUGIN_LIBS
       dynlib2
   )
 
-  FOREACH (test_lib ${TEST_PLUGIN_LIBS})
-    SET (HDF5_TEST_PLUGIN_LIB_CORENAME         "${test_lib}")
-    SET (HDF5_TEST_PLUGIN_LIB_NAME             "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_PLUGIN_LIB_CORENAME}")
-    SET (HDF5_TEST_PLUGIN_LIB_TARGET           ${HDF5_TEST_PLUGIN_LIB_CORENAME})
-    ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+  foreach (test_lib ${TEST_PLUGIN_LIBS})
+    set (HDF5_TEST_PLUGIN_LIB_CORENAME         "${test_lib}")
+    set (HDF5_TEST_PLUGIN_LIB_NAME             "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_PLUGIN_LIB_CORENAME}")
+    set (HDF5_TEST_PLUGIN_LIB_TARGET           ${HDF5_TEST_PLUGIN_LIB_CORENAME})
+    add_definitions (${HDF5_EXTRA_C_FLAGS})
     INCLUDE_DIRECTORIES (${HDF5_SRC_DIR})
 
-    ADD_LIBRARY (${HDF5_TEST_PLUGIN_LIB_TARGET} ${LIB_TYPE} ${HDF5_TEST_SOURCE_DIR}/${test_lib}.c)
+    add_library (${HDF5_TEST_PLUGIN_LIB_TARGET} ${LIB_TYPE} ${HDF5_TEST_SOURCE_DIR}/${test_lib}.c)
     TARGET_C_PROPERTIES (${HDF5_TEST_PLUGIN_LIB_TARGET} " " " ")
-    TARGET_LINK_LIBRARIES (${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+    target_link_libraries (${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
     H5_SET_LIB_OPTIONS (
         ${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_PLUGIN_LIB_NAME}
         ${LIB_TYPE}
         HDF5_TEST_PLUGIN_LIB_NAME_RELEASE
         HDF5_TEST_PLUGIN_LIB_NAME_DEBUG
     )
-    SET_TARGET_PROPERTIES (${HDF5_TEST_PLUGIN_LIB_TARGET} PROPERTIES FOLDER libraries/TEST_PLUGIN)
+    set_target_properties (${HDF5_TEST_PLUGIN_LIB_TARGET} PROPERTIES FOLDER libraries/TEST_PLUGIN)
 
     #-----------------------------------------------------------------------------
     # Copy plugin library to a plugins folder
     #-----------------------------------------------------------------------------
-    ADD_CUSTOM_COMMAND (
+    add_custom_command (
         TARGET     ${HDF5_TEST_PLUGIN_LIB_TARGET}
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
@@ -86,30 +89,30 @@ IF (BUILD_SHARED_LIBS)
           "$<TARGET_FILE:${HDF5_TEST_PLUGIN_LIB_TARGET}>"
           "${CMAKE_BINARY_DIR}/testdir1/$<TARGET_FILE_NAME:${HDF5_TEST_PLUGIN_LIB_TARGET}>"
     )
-  ENDFOREACH (test_lib ${TEST_PLUGIN_LIBS})
+  endforeach (test_lib ${TEST_PLUGIN_LIBS})
 
-  FOREACH (test_lib ${TEST2_PLUGIN_LIBS})
-    SET (HDF5_TEST_PLUGIN_LIB_CORENAME         "${test_lib}")
-    SET (HDF5_TEST_PLUGIN_LIB_NAME             "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_PLUGIN_LIB_CORENAME}")
-    SET (HDF5_TEST_PLUGIN_LIB_TARGET           ${HDF5_TEST_PLUGIN_LIB_CORENAME})
-    ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+  foreach (test_lib ${TEST2_PLUGIN_LIBS})
+    set (HDF5_TEST_PLUGIN_LIB_CORENAME         "${test_lib}")
+    set (HDF5_TEST_PLUGIN_LIB_NAME             "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_PLUGIN_LIB_CORENAME}")
+    set (HDF5_TEST_PLUGIN_LIB_TARGET           ${HDF5_TEST_PLUGIN_LIB_CORENAME})
+    add_definitions (${HDF5_EXTRA_C_FLAGS})
     INCLUDE_DIRECTORIES (${HDF5_SRC_DIR})
 
-    ADD_LIBRARY (${HDF5_TEST_PLUGIN_LIB_TARGET} ${LIB_TYPE} ${HDF5_TEST_SOURCE_DIR}/${test_lib}.c)
+    add_library (${HDF5_TEST_PLUGIN_LIB_TARGET} ${LIB_TYPE} ${HDF5_TEST_SOURCE_DIR}/${test_lib}.c)
     TARGET_C_PROPERTIES (${HDF5_TEST_PLUGIN_LIB_TARGET} " " " ")
-    TARGET_LINK_LIBRARIES (${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+    target_link_libraries (${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
     H5_SET_LIB_OPTIONS (
         ${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_PLUGIN_LIB_NAME}
         ${LIB_TYPE}
         HDF5_TEST_PLUGIN_LIB_NAME_RELEASE
         HDF5_TEST_PLUGIN_LIB_NAME_DEBUG
     )
-    SET_TARGET_PROPERTIES (${HDF5_TEST_PLUGIN_LIB_TARGET} PROPERTIES FOLDER libraries/TEST_PLUGIN)
+    set_target_properties (${HDF5_TEST_PLUGIN_LIB_TARGET} PROPERTIES FOLDER libraries/TEST_PLUGIN)
 
     #-----------------------------------------------------------------------------
     # Copy plugin library to a plugins folder
     #-----------------------------------------------------------------------------
-    ADD_CUSTOM_COMMAND (
+    add_custom_command (
         TARGET     ${HDF5_TEST_PLUGIN_LIB_TARGET}
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
@@ -117,10 +120,10 @@ IF (BUILD_SHARED_LIBS)
           "$<TARGET_FILE:${HDF5_TEST_PLUGIN_LIB_TARGET}>"
           "${CMAKE_BINARY_DIR}/testdir2/$<TARGET_FILE_NAME:${HDF5_TEST_PLUGIN_LIB_TARGET}>"
     )
-  ENDFOREACH (test_lib ${TEST2_PLUGIN_LIBS})
-ENDIF (BUILD_SHARED_LIBS)
+  endforeach (test_lib ${TEST2_PLUGIN_LIBS})
+endif (BUILD_SHARED_LIBS)
 
-SET (testhdf5_SRCS
+set (testhdf5_SRCS
     ${HDF5_TEST_SOURCE_DIR}/testhdf5.c
     ${HDF5_TEST_SOURCE_DIR}/tarray.c
     ${HDF5_TEST_SOURCE_DIR}/tattr.c
@@ -149,21 +152,21 @@ SET (testhdf5_SRCS
 )
 
 #-- Adding test for testhdf5
-ADD_EXECUTABLE (testhdf5 ${testhdf5_SRCS})
+add_executable (testhdf5 ${testhdf5_SRCS})
 TARGET_NAMING (testhdf5 ${LIB_TYPE})
 TARGET_C_PROPERTIES (testhdf5 " " " ")
-TARGET_LINK_LIBRARIES (testhdf5 ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (testhdf5 PROPERTIES FOLDER test)
+target_link_libraries (testhdf5 ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (testhdf5 PROPERTIES FOLDER test)
 
 MACRO (ADD_H5_EXE file)
-  ADD_EXECUTABLE (${file} ${HDF5_TEST_SOURCE_DIR}/${file}.c)
+  add_executable (${file} ${HDF5_TEST_SOURCE_DIR}/${file}.c)
   TARGET_NAMING (${file} ${LIB_TYPE})
   TARGET_C_PROPERTIES (${file} " " " ")
-  TARGET_LINK_LIBRARIES (${file} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
-  SET_TARGET_PROPERTIES (${file} PROPERTIES FOLDER test)
+  target_link_libraries (${file} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
+  set_target_properties (${file} PROPERTIES FOLDER test)
 ENDMACRO (ADD_H5_EXE file)
 
-SET (H5_TESTS
+set (H5_TESTS
     accum
     lheap
     ohdr
@@ -186,7 +189,7 @@ SET (H5_TESTS
     objcopy
     links
     unlink
-    big
+#    big
     mtime
     fillval
     mount
@@ -215,10 +218,13 @@ SET (H5_TESTS
     file_image
     unregister
 )
+if (NOT CYGWIN)
+  set (H5_TESTS ${H5_TESTS} big)
+endif (NOT CYGWIN)
 
-FOREACH (test ${H5_TESTS})
+foreach (test ${H5_TESTS})
   ADD_H5_EXE(${test})
-ENDFOREACH (test ${H5_TESTS})
+endforeach (test ${H5_TESTS})
 
 ##############################################################################
 ##############################################################################
@@ -227,21 +233,21 @@ ENDFOREACH (test ${H5_TESTS})
 ##############################################################################
 
 #-- Adding test for cache
-ADD_EXECUTABLE (cache ${HDF5_TEST_SOURCE_DIR}/cache.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
+add_executable (cache ${HDF5_TEST_SOURCE_DIR}/cache.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
 TARGET_NAMING (cache ${LIB_TYPE})
 TARGET_C_PROPERTIES (cache " " " ")
-TARGET_LINK_LIBRARIES (cache ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-SET_TARGET_PROPERTIES (cache PROPERTIES FOLDER test)
+target_link_libraries (cache ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (cache PROPERTIES FOLDER test)
 
 #-- Adding test for cache_api
-ADD_EXECUTABLE (cache_api ${HDF5_TEST_SOURCE_DIR}/cache_api.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
+add_executable (cache_api ${HDF5_TEST_SOURCE_DIR}/cache_api.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
 TARGET_NAMING (cache_api ${LIB_TYPE})
 TARGET_C_PROPERTIES (cache_api " " " ")
-TARGET_LINK_LIBRARIES (cache_api ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-SET_TARGET_PROPERTIES (cache_api PROPERTIES FOLDER test)
+target_link_libraries (cache_api ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (cache_api PROPERTIES FOLDER test)
 
 #-- Adding test for ttsafe
-ADD_EXECUTABLE (ttsafe
+add_executable (ttsafe
     ${HDF5_TEST_SOURCE_DIR}/ttsafe.c
     ${HDF5_TEST_SOURCE_DIR}/ttsafe_dcreate.c
     ${HDF5_TEST_SOURCE_DIR}/ttsafe_error.c
@@ -250,53 +256,53 @@ ADD_EXECUTABLE (ttsafe
 )
 TARGET_NAMING (ttsafe ${LIB_TYPE})
 TARGET_C_PROPERTIES (ttsafe " " " ")
-TARGET_LINK_LIBRARIES (ttsafe ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-SET_TARGET_PROPERTIES (ttsafe PROPERTIES FOLDER test)
+target_link_libraries (ttsafe ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (ttsafe PROPERTIES FOLDER test)
 
 #-- Adding test for err_compat
-IF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-  ADD_EXECUTABLE (err_compat ${HDF5_TEST_SOURCE_DIR}/err_compat.c)
+if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
+  add_executable (err_compat ${HDF5_TEST_SOURCE_DIR}/err_compat.c)
   TARGET_NAMING (err_compat ${LIB_TYPE})
   TARGET_C_PROPERTIES (err_compat " " " ")
-  TARGET_LINK_LIBRARIES (err_compat ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-  SET_TARGET_PROPERTIES (err_compat PROPERTIES FOLDER test)
-ENDIF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
+  target_link_libraries (err_compat ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+  set_target_properties (err_compat PROPERTIES FOLDER test)
+endif (HDF5_ENABLE_DEPRECATED_SYMBOLS)
 
 #-- Adding test for error_test
-ADD_EXECUTABLE (error_test ${HDF5_TEST_SOURCE_DIR}/error_test.c)
+add_executable (error_test ${HDF5_TEST_SOURCE_DIR}/error_test.c)
 TARGET_NAMING (error_test ${LIB_TYPE})
 TARGET_C_PROPERTIES (error_test " " " ")
-TARGET_LINK_LIBRARIES (error_test ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-SET_TARGET_PROPERTIES (error_test PROPERTIES FOLDER test)
+target_link_libraries (error_test ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (error_test PROPERTIES FOLDER test)
 
 #-- Adding test for links_env
-ADD_EXECUTABLE (links_env ${HDF5_TEST_SOURCE_DIR}/links_env.c)
+add_executable (links_env ${HDF5_TEST_SOURCE_DIR}/links_env.c)
 TARGET_NAMING (links_env ${LIB_TYPE})
 TARGET_C_PROPERTIES (links_env " " " ")
-TARGET_LINK_LIBRARIES (links_env ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-SET_TARGET_PROPERTIES (links_env PROPERTIES FOLDER test)
+target_link_libraries (links_env ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (links_env PROPERTIES FOLDER test)
 
 #-- Adding test for libinfo
-SET (GREP_RUNNER ${PROJECT_BINARY_DIR}/GrepRunner.cmake)
-FILE (WRITE ${GREP_RUNNER} 
-  "FILE (STRINGS \${TEST_PROGRAM} TEST_RESULT REGEX \"SUMMARY OF THE HDF5 CONFIGURATION\")
-IF (\${TEST_RESULT} STREQUAL \"0\")
-  MESSAGE (FATAL_ERROR \"Failed: The output: \${TEST_RESULT} of \${TEST_PROGRAM} did not contain SUMMARY OF THE HDF5 CONFIGURATION\")
-ELSE (\${TEST_RESULT} STREQUAL \"0\")
-  MESSAGE (STATUS \"COMMAND Result: \${TEST_RESULT}\")
-ENDIF (\${TEST_RESULT} STREQUAL \"0\")
+set (GREP_RUNNER ${PROJECT_BINARY_DIR}/GrepRunner.cmake)
+file (WRITE ${GREP_RUNNER} 
+  "file (STRINGS \${TEST_PROGRAM} TEST_RESULT REGEX \"SUMMARY OF THE HDF5 CONFIGURATION\")
+if (\${TEST_RESULT} STREQUAL \"0\")
+  message (FATAL_ERROR \"Failed: The output: \${TEST_RESULT} of \${TEST_PROGRAM} did not contain SUMMARY OF THE HDF5 CONFIGURATION\")
+else (\${TEST_RESULT} STREQUAL \"0\")
+  message (STATUS \"COMMAND Result: \${TEST_RESULT}\")
+endif (\${TEST_RESULT} STREQUAL \"0\")
 "
 )
 
 ##############################################################################
 ###    P L U G I N  T E S T S
 ##############################################################################
-IF (BUILD_SHARED_LIBS)
-  ADD_EXECUTABLE (plugin ${HDF5_TEST_SOURCE_DIR}/plugin.c)
+if (BUILD_SHARED_LIBS)
+  add_executable (plugin ${HDF5_TEST_SOURCE_DIR}/plugin.c)
   TARGET_NAMING (plugin ${LIB_TYPE})
   TARGET_C_PROPERTIES (plugin " " " ")
-  TARGET_LINK_LIBRARIES (plugin ${HDF5_TEST_PLUGIN_LIB_TARGET})
-  SET_TARGET_PROPERTIES (plugin PROPERTIES FOLDER test)
-ENDIF (BUILD_SHARED_LIBS)
+  target_link_libraries (plugin ${HDF5_TEST_PLUGIN_LIB_TARGET})
+  set_target_properties (plugin PROPERTIES FOLDER test)
+endif (BUILD_SHARED_LIBS)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake
index 0a67b86..a463748 100644
--- a/test/CMakeTests.cmake
+++ b/test/CMakeTests.cmake
@@ -8,25 +8,25 @@
 # --------------------------------------------------------------------
 # Copy all the HDF5 files from the test directory into the source directory
 # --------------------------------------------------------------------
-SET (HDF5_TEST_FILES
+set (HDF5_TEST_FILES
   tnullspace.h5
 )
 
-FOREACH (h5_tfile ${HDF5_TEST_FILES})
-  SET (dest "${PROJECT_BINARY_DIR}/${h5_tfile}")
-  #MESSAGE (STATUS " Copying ${h5_tfile}")
-  ADD_CUSTOM_COMMAND (
+foreach (h5_tfile ${HDF5_TEST_FILES})
+  set (dest "${PROJECT_BINARY_DIR}/${h5_tfile}")
+  #message (STATUS " Copying ${h5_tfile}")
+  add_custom_command (
       TARGET     ${HDF5_TEST_LIB_TARGET}
       POST_BUILD
       COMMAND    ${CMAKE_COMMAND}
       ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_tfile} ${dest}
   )
-ENDFOREACH (h5_tfile ${HDF5_TEST_FILES})
+endforeach (h5_tfile ${HDF5_TEST_FILES})
 
 # --------------------------------------------------------------------
 # Copy all the HDF5 files from the test directory into the source directory
 # --------------------------------------------------------------------
-SET (HDF5_REFERENCE_FILES
+set (HDF5_REFERENCE_FILES
     err_compat_1
     err_compat_2
     error_test_1
@@ -34,21 +34,21 @@ SET (HDF5_REFERENCE_FILES
     links_env.out
 )
 
-FOREACH (ref_file ${HDF5_REFERENCE_FILES})
-  SET (dest "${PROJECT_BINARY_DIR}/${ref_file}")
-  #MESSAGE (STATUS " Copying ${h5_file}")
-  ADD_CUSTOM_COMMAND (
+foreach (ref_file ${HDF5_REFERENCE_FILES})
+  set (dest "${PROJECT_BINARY_DIR}/${ref_file}")
+  #message (STATUS " Copying ${h5_file}")
+  add_custom_command (
       TARGET     ${HDF5_TEST_LIB_TARGET}
       POST_BUILD
-      COMMAND    ${XLATE_UTILITY}
-      ARGS       ${HDF5_TEST_SOURCE_DIR}/testfiles/${ref_file} ${dest} -l3
+      COMMAND    ${CMAKE_COMMAND}
+      ARGS       -E copy_if_different ${HDF5_TEST_SOURCE_DIR}/testfiles/${ref_file} ${dest}
   )
-ENDFOREACH (ref_file ${HDF5_REFERENCE_FILES})
+endforeach (ref_file ${HDF5_REFERENCE_FILES})
 
 # --------------------------------------------------------------------
 #-- Copy all the HDF5 files from the test directory into the source directory
 # --------------------------------------------------------------------
-SET (HDF5_REFERENCE_TEST_FILES
+set (HDF5_REFERENCE_TEST_FILES
     be_data.h5
     be_extlink1.h5
     be_extlink2.h5
@@ -83,20 +83,20 @@ SET (HDF5_REFERENCE_TEST_FILES
     tsizeslheap.h5
 )
 
-FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
-  SET (dest "${HDF5_TEST_BINARY_DIR}/${h5_file}")
-  #MESSAGE (STATUS " Copying ${h5_file} to ${dest}")
-  ADD_CUSTOM_COMMAND (
+foreach (h5_file ${HDF5_REFERENCE_TEST_FILES})
+  set (dest "${HDF5_TEST_BINARY_DIR}/${h5_file}")
+  #message (STATUS " Copying ${h5_file} to ${dest}")
+  add_custom_command (
       TARGET     ${HDF5_TEST_LIB_TARGET}
       POST_BUILD
       COMMAND    ${CMAKE_COMMAND}
       ARGS       -E copy_if_different ${HDF5_TEST_SOURCE_DIR}/${h5_file} ${dest}
   )
-ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES})
 
 # Remove any output file left over from previous test run
-ADD_TEST (
-    NAME h5test-clear-testhdf5-objects
+add_test (
+    NAME H5TEST-clear-testhdf5-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         coord.h5
@@ -118,23 +118,23 @@ ADD_TEST (
         tsohm_src.h5
 )
 
-IF (HDF5_ENABLE_USING_MEMCHECKER)
-  ADD_TEST (NAME testhdf5-base COMMAND $<TARGET_FILE:testhdf5> -x heap -x file -x select)
-  SET_TESTS_PROPERTIES(testhdf5-base PROPERTIES DEPENDS h5test-clear-testhdf5-objects)
-  SET_TESTS_PROPERTIES(testhdf5-base PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
-  ADD_TEST (NAME testhdf5-heap COMMAND $<TARGET_FILE:testhdf5> -o heap)
-  SET_TESTS_PROPERTIES(testhdf5-heap PROPERTIES DEPENDS h5test-clear-testhdf5-objects)
-  SET_TESTS_PROPERTIES(testhdf5-heap PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
-  ADD_TEST (NAME testhdf5-file COMMAND $<TARGET_FILE:testhdf5> -o file)
-  SET_TESTS_PROPERTIES(testhdf5-file PROPERTIES DEPENDS h5test-clear-testhdf5-objects)
-  SET_TESTS_PROPERTIES(testhdf5-file PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
-  ADD_TEST (NAME testhdf5-select COMMAND $<TARGET_FILE:testhdf5> -o select)
-  SET_TESTS_PROPERTIES(testhdf5-select PROPERTIES DEPENDS h5test-clear-testhdf5-objects)
-  SET_TESTS_PROPERTIES(testhdf5-select PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
-ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-  ADD_TEST (NAME testhdf5 COMMAND $<TARGET_FILE:testhdf5>)
-  SET_TESTS_PROPERTIES(testhdf5 PROPERTIES DEPENDS h5test-clear-testhdf5-objects)
-ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+if (HDF5_ENABLE_USING_MEMCHECKER)
+  add_test (NAME H5TEST-testhdf5-base COMMAND $<TARGET_FILE:testhdf5> -x heap -x file -x select)
+  set_tests_properties (H5TEST-testhdf5-base PROPERTIES DEPENDS H5TEST-clear-testhdf5-objects)
+  set_tests_properties (H5TEST-testhdf5-base PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
+  add_test (NAME H5TEST-testhdf5-heap COMMAND $<TARGET_FILE:testhdf5> -o heap)
+  set_tests_properties (H5TEST-testhdf5-heap PROPERTIES DEPENDS H5TEST-clear-testhdf5-objects)
+  set_tests_properties (H5TEST-testhdf5-heap PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
+  add_test (NAME H5TEST-testhdf5-file COMMAND $<TARGET_FILE:testhdf5> -o file)
+  set_tests_properties (H5TEST-testhdf5-file PROPERTIES DEPENDS H5TEST-clear-testhdf5-objects)
+  set_tests_properties (H5TEST-testhdf5-file PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
+  add_test (NAME H5TEST-testhdf5-select COMMAND $<TARGET_FILE:testhdf5> -o select)
+  set_tests_properties (H5TEST-testhdf5-select PROPERTIES DEPENDS H5TEST-clear-testhdf5-objects)
+  set_tests_properties (H5TEST-testhdf5-select PROPERTIES ENVIRONMENT HDF5_ALARM_SECONDS=3600)
+else (HDF5_ENABLE_USING_MEMCHECKER)
+  add_test (NAME H5TEST-testhdf5 COMMAND $<TARGET_FILE:testhdf5>)
+  set_tests_properties (H5TEST-testhdf5 PROPERTIES DEPENDS H5TEST-clear-testhdf5-objects)
+endif (HDF5_ENABLE_USING_MEMCHECKER)
   
 ##############################################################################
 ##############################################################################
@@ -143,8 +143,8 @@ ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
 ##############################################################################
 
 # Remove any output file left over from previous test run
-ADD_TEST (
-    NAME h5test-clear-objects
+add_test (
+    NAME H5TEST-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         dt_arith1.h5
@@ -206,12 +206,12 @@ ADD_TEST (
         unregister_filter_2.h5
 )
 
-FOREACH (test ${H5_TESTS})
-  ADD_TEST (NAME ${test} COMMAND $<TARGET_FILE:${test}>)
-  SET_TESTS_PROPERTIES(${test} PROPERTIES DEPENDS h5test-clear-objects)
-ENDFOREACH (test ${H5_TESTS})
+foreach (test ${H5_TESTS})
+  add_test (NAME H5TEST-${test} COMMAND $<TARGET_FILE:${test}>)
+  set_tests_properties (H5TEST-${test} PROPERTIES DEPENDS H5TEST-clear-objects)
+endforeach (test ${H5_TESTS})
 
-SET_TESTS_PROPERTIES(flush2 PROPERTIES DEPENDS flush1)
+set_tests_properties (H5TEST-flush2 PROPERTIES DEPENDS H5TEST-flush1)
 
 ##############################################################################
 ##############################################################################
@@ -220,28 +220,28 @@ SET_TESTS_PROPERTIES(flush2 PROPERTIES DEPENDS flush1)
 ##############################################################################
 
 #-- Adding test for cache
-ADD_TEST (
-    NAME h5test-clear-cache-objects
+add_test (
+    NAME H5TEST-clear-cache-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         cache_test.h5
 )
-ADD_TEST (NAME cache COMMAND $<TARGET_FILE:cache>)
-SET_TESTS_PROPERTIES(cache PROPERTIES DEPENDS h5test-clear-cache-objects)
+add_test (NAME H5TEST-cache COMMAND $<TARGET_FILE:cache>)
+set_tests_properties (H5TEST-cache PROPERTIES DEPENDS H5TEST-clear-cache-objects)
 
 #-- Adding test for cache_api
-ADD_TEST (
-    NAME h5test-clear-cache_api-objects
+add_test (
+    NAME H5TEST-clear-cache_api-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         cache_api_test.h5
 )
-ADD_TEST (NAME cache_api COMMAND $<TARGET_FILE:cache_api>)
-SET_TESTS_PROPERTIES(cache_api PROPERTIES DEPENDS h5test-clear-cache_api-objects)
+add_test (NAME H5TEST-cache_api COMMAND $<TARGET_FILE:cache_api>)
+set_tests_properties (H5TEST-cache_api PROPERTIES DEPENDS H5TEST-clear-cache_api-objects)
 
 #-- Adding test for ttsafe
-ADD_TEST (
-    NAME h5test-clear-ttsafe-objects
+add_test (
+    NAME H5TEST-clear-ttsafe-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         ttsafe_error.h5
@@ -249,19 +249,19 @@ ADD_TEST (
         ttsafe_cancel.h5
         ttsafe_acreate.h5
 )
-ADD_TEST (NAME ttsafe COMMAND $<TARGET_FILE:ttsafe>)
-SET_TESTS_PROPERTIES(ttsafe PROPERTIES DEPENDS h5test-clear-ttsafe-objects)
+add_test (NAME H5TEST-ttsafe COMMAND $<TARGET_FILE:ttsafe>)
+set_tests_properties (H5TEST-ttsafe PROPERTIES DEPENDS H5TEST-clear-ttsafe-objects)
 
 #-- Adding test for err_compat
-IF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-  ADD_TEST (
-      NAME h5test-clear-err_compat-objects
+if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
+  add_test (
+      NAME H5TEST-clear-err_compat-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
           err_compat.txt
           err_compat.txt.err
   )
-  ADD_TEST (NAME err_compat COMMAND "${CMAKE_COMMAND}"
+  add_test (NAME H5TEST-err_compat COMMAND "${CMAKE_COMMAND}"
       -D "TEST_PROGRAM=$<TARGET_FILE:err_compat>"
       -D "TEST_ARGS:STRING="
       -D "TEST_EXPECT=0"
@@ -271,18 +271,18 @@ IF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
       -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
       -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
   )
-  SET_TESTS_PROPERTIES(err_compat PROPERTIES DEPENDS h5test-clear-err_compat-objects)
-ENDIF (HDF5_ENABLE_DEPRECATED_SYMBOLS)
+  set_tests_properties (H5TEST-err_compat PROPERTIES DEPENDS H5TEST-clear-err_compat-objects)
+endif (HDF5_ENABLE_DEPRECATED_SYMBOLS)
 
 #-- Adding test for error_test
-ADD_TEST (
-    NAME h5test-clear-error_test-objects
+add_test (
+    NAME H5TEST-clear-error_test-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
         error_test.txt
         error_test.txt.err
 )
-ADD_TEST (NAME error_test COMMAND "${CMAKE_COMMAND}"
+add_test (NAME H5TEST-error_test COMMAND "${CMAKE_COMMAND}"
     -D "TEST_PROGRAM=$<TARGET_FILE:error_test>"
     -D "TEST_ARGS:STRING="
     -D "TEST_EXPECT=0"
@@ -292,12 +292,12 @@ ADD_TEST (NAME error_test COMMAND "${CMAKE_COMMAND}"
     -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
     -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
 )
-SET_TESTS_PROPERTIES(error_test PROPERTIES DEPENDS h5test-clear-error_test-objects)
-SET_TESTS_PROPERTIES (error_test PROPERTIES ENVIRONMENT "HDF5_PLUGIN_PRELOAD=::")
+set_tests_properties (H5TEST-error_test PROPERTIES DEPENDS H5TEST-clear-error_test-objects)
+set_tests_properties (H5TEST-error_test PROPERTIES ENVIRONMENT "HDF5_PLUGIN_PRELOAD=::")
 
 #-- Adding test for links_env
-ADD_TEST (
-    NAME h5test-clear-links_env-objects
+add_test (
+    NAME H5TEST-clear-links_env-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove
         links_env.txt
@@ -306,7 +306,7 @@ ADD_TEST (
         extlinks_env1.h5
         tmp/extlinks_env1.h5
 )
-ADD_TEST (NAME links_env COMMAND "${CMAKE_COMMAND}"
+add_test (NAME H5TEST-links_env COMMAND "${CMAKE_COMMAND}"
     -D "TEST_PROGRAM=$<TARGET_FILE:links_env>"
     -D "TEST_ARGS:STRING="
     -D "TEST_ENV_VAR:STRING=HDF5_EXT_PREFIX"
@@ -317,31 +317,31 @@ ADD_TEST (NAME links_env COMMAND "${CMAKE_COMMAND}"
     -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
     -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
 )
-SET_TESTS_PROPERTIES(links_env PROPERTIES DEPENDS h5test-clear-links_env-objects)
+set_tests_properties (H5TEST-links_env PROPERTIES DEPENDS H5TEST-clear-links_env-objects)
 
 #-- Adding test for libinfo
-ADD_TEST (NAME testlibinfo COMMAND ${CMAKE_COMMAND} -D "TEST_PROGRAM=$<TARGET_FILE:${HDF5_LIB_TARGET}>" -P "${GREP_RUNNER}")
+add_test (NAME H5TEST-testlibinfo COMMAND ${CMAKE_COMMAND} -D "TEST_PROGRAM=$<TARGET_FILE:${HDF5_LIB_TARGET}>" -P "${GREP_RUNNER}")
 
 ##############################################################################
 ###    P L U G I N  T E S T S
 ##############################################################################
-IF (BUILD_SHARED_LIBS)
-
-  IF (WIN32 AND NOT CYGWIN)
-    SET(CMAKE_SEP "\;")
-  ELSE (WIN32 AND NOT CYGWIN)
-    SET(CMAKE_SEP ":")
-  ENDIF(WIN32 AND NOT CYGWIN)
-
-  ADD_TEST (NAME H5PLUGIN-plugin COMMAND $<TARGET_FILE:plugin>)
-  SET_TESTS_PROPERTIES (H5PLUGIN-plugin PROPERTIES ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/testdir1${CMAKE_SEP}${CMAKE_BINARY_DIR}/testdir2")
-ELSE (BUILD_SHARED_LIBS)
-  MESSAGE (STATUS " **** Plugins libraries must be built as shared libraries **** ")
-  ADD_TEST (
+if (BUILD_SHARED_LIBS)
+
+  if (WIN32)
+    set (CMAKE_SEP "\;")
+  else (WIN32)
+    set (CMAKE_SEP ":")
+  endif (WIN32)
+
+  add_test (NAME H5PLUGIN-plugin COMMAND $<TARGET_FILE:plugin>)
+  set_tests_properties (H5PLUGIN-plugin PROPERTIES ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/testdir1${CMAKE_SEP}${CMAKE_BINARY_DIR}/testdir2")
+else (BUILD_SHARED_LIBS)
+  message (STATUS " **** Plugins libraries must be built as shared libraries **** ")
+  add_test (
       NAME H5PLUGIN-SKIPPED
       COMMAND ${CMAKE_COMMAND} -E echo "SKIP H5PLUGIN TESTING"
   )
-ENDIF (BUILD_SHARED_LIBS)
+endif (BUILD_SHARED_LIBS)
 
 ##############################################################################
 ##############################################################################
@@ -349,9 +349,9 @@ ENDIF (BUILD_SHARED_LIBS)
 ##############################################################################
 ##############################################################################
 
-IF (HDF5_TEST_VFD)
+if (HDF5_TEST_VFD)
 
-  SET (VFD_LIST
+  set (VFD_LIST
       sec2
       stdio
       core
@@ -360,7 +360,7 @@ IF (HDF5_TEST_VFD)
       family
   )
 
-  SET (H5_VFD_TESTS
+  set (H5_VFD_TESTS
       testhdf5
       accum
       lheap
@@ -412,17 +412,17 @@ IF (HDF5_TEST_VFD)
       links_env
       unregister
   )
-  IF (NOT CYGWIN)
-    SET (H5_VFD_TESTS "${H5_VFD_TESTS} big")
-  ENDIF (NOT CYGWIN)
+  if (NOT CYGWIN)
+    set (H5_VFD_TESTS ${H5_VFD_TESTS} big)
+  endif (NOT CYGWIN)
   
-  IF (DIRECT_VFD)
-    SET (VFD_LIST ${VFD_LIST} direct)
-  ENDIF (DIRECT_VFD)
+  if (DIRECT_VFD)
+    set (VFD_LIST ${VFD_LIST} direct)
+  endif (DIRECT_VFD)
 
   MACRO (ADD_VFD_TEST vfdname resultcode)
-    FOREACH (test ${H5_VFD_TESTS})
-      ADD_TEST (
+    foreach (test ${H5_VFD_TESTS})
+      add_test (
         NAME VFD-${vfdname}-${test} 
         COMMAND "${CMAKE_COMMAND}"
             -D "TEST_PROGRAM=$<TARGET_FILE:${test}>"
@@ -433,9 +433,9 @@ IF (HDF5_TEST_VFD)
             -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
             -P "${HDF5_RESOURCES_DIR}/vfdTest.cmake"
       )
-    ENDFOREACH (test ${H5_VFD_TESTS})
-    IF (HDF5_TEST_FHEAP_VFD)
-      ADD_TEST (
+    endforeach (test ${H5_VFD_TESTS})
+    if (HDF5_TEST_FHEAP_VFD)
+      add_test (
         NAME VFD-${vfdname}-fheap 
         COMMAND "${CMAKE_COMMAND}"
             -D "TEST_PROGRAM=$<TARGET_FILE:fheap>"
@@ -446,15 +446,15 @@ IF (HDF5_TEST_VFD)
             -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
             -P "${HDF5_RESOURCES_DIR}/vfdTest.cmake"
       )
-    ENDIF (HDF5_TEST_FHEAP_VFD)
+    endif (HDF5_TEST_FHEAP_VFD)
   ENDMACRO (ADD_VFD_TEST)
   
   # Run test with different Virtual File Driver
-  FOREACH (vfd ${VFD_LIST})
+  foreach (vfd ${VFD_LIST})
     ADD_VFD_TEST (${vfd} 0)
-  ENDFOREACH (vfd ${VFD_LIST})
+  endforeach (vfd ${VFD_LIST})
 
-ENDIF (HDF5_TEST_VFD)
+endif (HDF5_TEST_VFD)
 
 ##############################################################################
 ##############################################################################
@@ -462,23 +462,22 @@ ENDIF (HDF5_TEST_VFD)
 ##############################################################################
 ##############################################################################
 
-IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
   MACRO (ADD_H5_GENERATOR genfile)
-    ADD_EXECUTABLE (${genfile} ${HDF5_TEST_SOURCE_DIR}/${genfile}.c)
+    add_executable (${genfile} ${HDF5_TEST_SOURCE_DIR}/${genfile}.c)
     TARGET_NAMING (${genfile} ${LIB_TYPE})
     TARGET_C_PROPERTIES (${genfile} " " " ")
-    TARGET_LINK_LIBRARIES (${genfile} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
-    SET_TARGET_PROPERTIES (${genfile} PROPERTIES FOLDER generator/test)
+    target_link_libraries (${genfile} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
+    set_target_properties (${genfile} PROPERTIES FOLDER generator/test)
   ENDMACRO (ADD_H5_GENERATOR genfile)
 
   # generator executables
-  SET (H5_GENERATORS
+  set (H5_GENERATORS
       gen_bad_ohdr
       gen_bogus
       gen_cross
       gen_deflate
       gen_filters
-      gen_idx
       gen_new_array
       gen_new_fill
       gen_new_group
@@ -488,12 +487,15 @@ IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
       gen_nullspace
       gen_udlinks
       space_overflow
+      gen_filespace
+      gen_specmetaread
       gen_sizes_lheap
       gen_file_image
+      gen_plist
   )
 
-  FOREACH (gen ${H5_GENERATORS})
+  foreach (gen ${H5_GENERATORS})
     ADD_H5_GENERATOR (${gen})
-  ENDFOREACH (gen ${H5_GENERATORS})
+  endforeach (gen ${H5_GENERATORS})
 
-ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
diff --git a/test/H5srcdir.h b/test/H5srcdir.h
index 202d050..4f0f439 100644
--- a/test/H5srcdir.h
+++ b/test/H5srcdir.h
@@ -46,8 +46,8 @@ static const char *H5_get_srcdir_filename(const char *filename)
 
     /* Build path to test file */
     if((HDstrlen(srcdir) + HDstrlen(filename) + 2) < sizeof(srcdir_testpath)) {
-        HDstrcpy(srcdir_testpath, srcdir);
 #ifdef H5_VMS
+        HDstrcpy(srcdir_testpath, srcdir);
         if(filename[0] == '[') {
             char *tmp = filename;
 
@@ -57,8 +57,7 @@ static const char *H5_get_srcdir_filename(const char *filename)
         else
             HDstrcat(srcdir_testpath, filename);
 #else
-        HDstrcat(srcdir_testpath, "/");
-        HDstrcat(srcdir_testpath, filename);
+        HDsnprintf(srcdir_testpath, sizeof(srcdir_testpath), "%s/%s", srcdir, filename);
 #endif
         return(srcdir_testpath);
     } /* end if */
@@ -77,8 +76,7 @@ static const char *H5_get_srcdir(void)
 
     /* Build path to all test files */
     if((HDstrlen(srcdir) + 2) < sizeof(srcdir_path)) {
-        HDstrcpy(srcdir_path, srcdir);
-        HDstrcat(srcdir_path, "/");
+        HDsnprintf(srcdir_path, sizeof(srcdir_path), "%s/", srcdir);
         return(srcdir_path);
     } /* end if */
     else
diff --git a/test/Makefile.am b/test/Makefile.am
index 3dde488..08b8b4f 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -21,7 +21,7 @@
 
 include $(top_srcdir)/config/commence.am
 
-INCLUDES=-I$(top_srcdir)/src -I$(top_builddir)/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_builddir)/src
 
 # Test script for error_test and err_compat
 TEST_SCRIPT = testerror.sh testlibinfo.sh testcheck_version.sh testlinks_env.sh
@@ -103,7 +103,7 @@ LDADD=libh5test.la $(LIBHDF5)
 ttsafe_SOURCES=ttsafe.c ttsafe_dcreate.c ttsafe_error.c ttsafe_cancel.c       \
                ttsafe_acreate.c
 
-VFD_LIST = sec2 stdio core split multi family
+VFD_LIST = sec2 stdio core core_paged split multi family
 if DIRECT_VFD_CONDITIONAL
   VFD_LIST += direct
 endif
diff --git a/test/Makefile.in b/test/Makefile.in
index 7d4b4cc..aff56c9 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,23 +33,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -68,13 +96,14 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/H5srcdir_str.h.in $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/test_plugin.sh.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/testcheck_version.sh.in $(srcdir)/testerror.sh.in \
-	$(srcdir)/testlibinfo.sh.in $(srcdir)/testlinks_env.sh.in \
-	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am COPYING
+	$(srcdir)/H5srcdir_str.h.in $(srcdir)/testlibinfo.sh.in \
+	$(srcdir)/testlinks_env.sh.in $(srcdir)/test_plugin.sh.in \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver \
+	COPYING
 @HAVE_SHARED_CONDITIONAL_TRUE at am__append_1 = test_plugin.sh
 @HAVE_SHARED_CONDITIONAL_TRUE at am__append_2 = plugin$(EXEEXT)
 check_PROGRAMS = $(am__EXEEXT_1) error_test$(EXEEXT) \
@@ -532,12 +561,200 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -549,7 +766,8 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_builddir)/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -609,7 +827,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -850,7 +1067,6 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog accum.h5 cmpd_dset.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 \
 	unregister_filter_1.h5 unregister_filter_2.h5
-INCLUDES = -I$(top_srcdir)/src -I$(top_builddir)/src
 
 # Test script for error_test and err_compat
 TEST_SCRIPT = testerror.sh testlibinfo.sh testcheck_version.sh \
@@ -902,7 +1118,8 @@ LDADD = libh5test.la $(LIBHDF5)
 ttsafe_SOURCES = ttsafe.c ttsafe_dcreate.c ttsafe_error.c ttsafe_cancel.c       \
                ttsafe_acreate.c
 
-VFD_LIST = sec2 stdio core split multi family $(am__append_4)
+VFD_LIST = sec2 stdio core core_paged split multi family \
+	$(am__append_4)
 
 # Sources for testhdf5 executable
 testhdf5_SOURCES = testhdf5.c tarray.c tattr.c tchecksum.c tconfig.c tfile.c \
@@ -936,7 +1153,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -980,6 +1197,7 @@ testlinks_env.sh: $(top_builddir)/config.status $(srcdir)/testlinks_env.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 test_plugin.sh: $(top_builddir)/config.status $(srcdir)/test_plugin.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -1025,12 +1243,16 @@ clean-noinstLTLIBRARIES:
 	  echo rm -f $${locs}; \
 	  rm -f $${locs}; \
 	}
+
 libdynlib1.la: $(libdynlib1_la_OBJECTS) $(libdynlib1_la_DEPENDENCIES) $(EXTRA_libdynlib1_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK) $(am_libdynlib1_la_rpath) $(libdynlib1_la_OBJECTS) $(libdynlib1_la_LIBADD) $(LIBS)
+
 libdynlib2.la: $(libdynlib2_la_OBJECTS) $(libdynlib2_la_DEPENDENCIES) $(EXTRA_libdynlib2_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK) $(am_libdynlib2_la_rpath) $(libdynlib2_la_OBJECTS) $(libdynlib2_la_LIBADD) $(LIBS)
+
 libdynlib3.la: $(libdynlib3_la_OBJECTS) $(libdynlib3_la_DEPENDENCIES) $(EXTRA_libdynlib3_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK) $(am_libdynlib3_la_rpath) $(libdynlib3_la_OBJECTS) $(libdynlib3_la_LIBADD) $(LIBS)
+
 libh5test.la: $(libh5test_la_OBJECTS) $(libh5test_la_DEPENDENCIES) $(EXTRA_libh5test_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK) $(am_libh5test_la_rpath) $(libh5test_la_OBJECTS) $(libh5test_la_LIBADD) $(LIBS)
 
@@ -1051,210 +1273,279 @@ 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) $(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) $(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) $(EXTRA_big_DEPENDENCIES) 
 	@rm -f big$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(big_OBJECTS) $(big_LDADD) $(LIBS)
+
 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) $(EXTRA_btree2_DEPENDENCIES) 
 	@rm -f btree2$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(btree2_OBJECTS) $(btree2_LDADD) $(LIBS)
+
 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) $(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) $(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) $(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) $(EXTRA_dangle_DEPENDENCIES) 
 	@rm -f dangle$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dangle_OBJECTS) $(dangle_LDADD) $(LIBS)
+
 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) $(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) $(EXTRA_dtransform_DEPENDENCIES) 
 	@rm -f dtransform$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dtransform_OBJECTS) $(dtransform_LDADD) $(LIBS)
+
 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) $(EXTRA_efc_DEPENDENCIES) 
 	@rm -f efc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(efc_OBJECTS) $(efc_LDADD) $(LIBS)
+
 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) $(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) $(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) $(EXTRA_extend_DEPENDENCIES) 
 	@rm -f extend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(extend_OBJECTS) $(extend_LDADD) $(LIBS)
+
 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) $(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) $(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) $(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) $(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) $(EXTRA_flush1_DEPENDENCIES) 
 	@rm -f flush1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(flush1_OBJECTS) $(flush1_LDADD) $(LIBS)
+
 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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(EXTRA_getname_DEPENDENCIES) 
 	@rm -f getname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getname_OBJECTS) $(getname_LDADD) $(LIBS)
+
 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) $(EXTRA_hyperslab_DEPENDENCIES) 
 	@rm -f hyperslab$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(hyperslab_OBJECTS) $(hyperslab_LDADD) $(LIBS)
+
 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) $(EXTRA_lheap_DEPENDENCIES) 
 	@rm -f lheap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lheap_OBJECTS) $(lheap_LDADD) $(LIBS)
+
 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) $(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) $(EXTRA_mf_DEPENDENCIES) 
 	@rm -f mf$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mf_OBJECTS) $(mf_LDADD) $(LIBS)
+
 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) $(EXTRA_mtime_DEPENDENCIES) 
 	@rm -f mtime$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mtime_OBJECTS) $(mtime_LDADD) $(LIBS)
+
 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) $(EXTRA_objcopy_DEPENDENCIES) 
 	@rm -f objcopy$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(objcopy_OBJECTS) $(objcopy_LDADD) $(LIBS)
+
 ohdr$(EXEEXT): $(ohdr_OBJECTS) $(ohdr_DEPENDENCIES) $(EXTRA_ohdr_DEPENDENCIES) 
 	@rm -f ohdr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ohdr_OBJECTS) $(ohdr_LDADD) $(LIBS)
+
 plugin$(EXEEXT): $(plugin_OBJECTS) $(plugin_DEPENDENCIES) $(EXTRA_plugin_DEPENDENCIES) 
 	@rm -f plugin$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(plugin_OBJECTS) $(plugin_LDADD) $(LIBS)
+
 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) $(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) $(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) $(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) $(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) $(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) $(EXTRA_testhdf5_DEPENDENCIES) 
 	@rm -f testhdf5$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(testhdf5_OBJECTS) $(testhdf5_LDADD) $(LIBS)
+
 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) $(EXTRA_ttsafe_DEPENDENCIES) 
 	@rm -f ttsafe$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ttsafe_OBJECTS) $(ttsafe_LDADD) $(LIBS)
+
 unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES) $(EXTRA_unlink_DEPENDENCIES) 
 	@rm -f unlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(unlink_OBJECTS) $(unlink_LDADD) $(LIBS)
+
 unregister$(EXEEXT): $(unregister_OBJECTS) $(unregister_DEPENDENCIES) $(EXTRA_unregister_DEPENDENCIES) 
 	@rm -f unregister$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(unregister_OBJECTS) $(unregister_LDADD) $(LIBS)
+
 vfd$(EXEEXT): $(vfd_OBJECTS) $(vfd_DEPENDENCIES) $(EXTRA_vfd_DEPENDENCIES) 
 	@rm -f vfd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(vfd_OBJECTS) $(vfd_LDADD) $(LIBS)
@@ -1374,14 +1665,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1396,26 +1687,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -1427,15 +1707,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -1444,9 +1720,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -1462,6 +1739,473 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+testhdf5.log: testhdf5$(EXEEXT)
+	@p='testhdf5$(EXEEXT)'; \
+	b='testhdf5'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+lheap.log: lheap$(EXEEXT)
+	@p='lheap$(EXEEXT)'; \
+	b='lheap'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ohdr.log: ohdr$(EXEEXT)
+	@p='ohdr$(EXEEXT)'; \
+	b='ohdr'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+stab.log: stab$(EXEEXT)
+	@p='stab$(EXEEXT)'; \
+	b='stab'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+gheap.log: gheap$(EXEEXT)
+	@p='gheap$(EXEEXT)'; \
+	b='gheap'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cache.log: cache$(EXEEXT)
+	@p='cache$(EXEEXT)'; \
+	b='cache'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cache_api.log: cache_api$(EXEEXT)
+	@p='cache_api$(EXEEXT)'; \
+	b='cache_api'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pool.log: pool$(EXEEXT)
+	@p='pool$(EXEEXT)'; \
+	b='pool'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+accum.log: accum$(EXEEXT)
+	@p='accum$(EXEEXT)'; \
+	b='accum'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hyperslab.log: hyperslab$(EXEEXT)
+	@p='hyperslab$(EXEEXT)'; \
+	b='hyperslab'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+istore.log: istore$(EXEEXT)
+	@p='istore$(EXEEXT)'; \
+	b='istore'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bittests.log: bittests$(EXEEXT)
+	@p='bittests$(EXEEXT)'; \
+	b='bittests'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt_arith.log: dt_arith$(EXEEXT)
+	@p='dt_arith$(EXEEXT)'; \
+	b='dt_arith'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dtypes.log: dtypes$(EXEEXT)
+	@p='dtypes$(EXEEXT)'; \
+	b='dtypes'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dsets.log: dsets$(EXEEXT)
+	@p='dsets$(EXEEXT)'; \
+	b='dsets'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmpd_dset.log: cmpd_dset$(EXEEXT)
+	@p='cmpd_dset$(EXEEXT)'; \
+	b='cmpd_dset'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+filter_fail.log: filter_fail$(EXEEXT)
+	@p='filter_fail$(EXEEXT)'; \
+	b='filter_fail'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extend.log: extend$(EXEEXT)
+	@p='extend$(EXEEXT)'; \
+	b='extend'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+external.log: external$(EXEEXT)
+	@p='external$(EXEEXT)'; \
+	b='external'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+efc.log: efc$(EXEEXT)
+	@p='efc$(EXEEXT)'; \
+	b='efc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+objcopy.log: objcopy$(EXEEXT)
+	@p='objcopy$(EXEEXT)'; \
+	b='objcopy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+links.log: links$(EXEEXT)
+	@p='links$(EXEEXT)'; \
+	b='links'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+unlink.log: unlink$(EXEEXT)
+	@p='unlink$(EXEEXT)'; \
+	b='unlink'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+big.log: big$(EXEEXT)
+	@p='big$(EXEEXT)'; \
+	b='big'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mtime.log: mtime$(EXEEXT)
+	@p='mtime$(EXEEXT)'; \
+	b='mtime'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fillval.log: fillval$(EXEEXT)
+	@p='fillval$(EXEEXT)'; \
+	b='fillval'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mount.log: mount$(EXEEXT)
+	@p='mount$(EXEEXT)'; \
+	b='mount'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+flush1.log: flush1$(EXEEXT)
+	@p='flush1$(EXEEXT)'; \
+	b='flush1'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+flush2.log: flush2$(EXEEXT)
+	@p='flush2$(EXEEXT)'; \
+	b='flush2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+app_ref.log: app_ref$(EXEEXT)
+	@p='app_ref$(EXEEXT)'; \
+	b='app_ref'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+enum.log: enum$(EXEEXT)
+	@p='enum$(EXEEXT)'; \
+	b='enum'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+set_extent.log: set_extent$(EXEEXT)
+	@p='set_extent$(EXEEXT)'; \
+	b='set_extent'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ttsafe.log: ttsafe$(EXEEXT)
+	@p='ttsafe$(EXEEXT)'; \
+	b='ttsafe'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+getname.log: getname$(EXEEXT)
+	@p='getname$(EXEEXT)'; \
+	b='getname'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+vfd.log: vfd$(EXEEXT)
+	@p='vfd$(EXEEXT)'; \
+	b='vfd'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ntypes.log: ntypes$(EXEEXT)
+	@p='ntypes$(EXEEXT)'; \
+	b='ntypes'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dangle.log: dangle$(EXEEXT)
+	@p='dangle$(EXEEXT)'; \
+	b='dangle'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dtransform.log: dtransform$(EXEEXT)
+	@p='dtransform$(EXEEXT)'; \
+	b='dtransform'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+reserved.log: reserved$(EXEEXT)
+	@p='reserved$(EXEEXT)'; \
+	b='reserved'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cross_read.log: cross_read$(EXEEXT)
+	@p='cross_read$(EXEEXT)'; \
+	b='cross_read'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+freespace.log: freespace$(EXEEXT)
+	@p='freespace$(EXEEXT)'; \
+	b='freespace'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mf.log: mf$(EXEEXT)
+	@p='mf$(EXEEXT)'; \
+	b='mf'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+btree2.log: btree2$(EXEEXT)
+	@p='btree2$(EXEEXT)'; \
+	b='btree2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fheap.log: fheap$(EXEEXT)
+	@p='fheap$(EXEEXT)'; \
+	b='fheap'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+file_image.log: file_image$(EXEEXT)
+	@p='file_image$(EXEEXT)'; \
+	b='file_image'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+unregister.log: unregister$(EXEEXT)
+	@p='unregister$(EXEEXT)'; \
+	b='unregister'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1521,6 +2265,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -1608,21 +2355,22 @@ uninstall-am: uninstall-libLTLIBRARIES
 
 .MAKE: check-am install-am install-exec-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
-	clean-libtool 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-exec-hook install-html install-html-am \
-	install-info install-info-am install-libLTLIBRARIES \
-	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-libLTLIBRARIES
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic \
+	clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
+	clean-noinstPROGRAMS cscopelist-am ctags ctags-am 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-exec-hook \
+	install-html install-html-am install-info install-info-am \
+	install-libLTLIBRARIES 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 recheck tags tags-am uninstall uninstall-am \
+	uninstall-libLTLIBRARIES
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/test/big.c b/test/big.c
index 7465e47..db03c99 100644
--- a/test/big.c
+++ b/test/big.c
@@ -76,8 +76,6 @@
  * NOFILE stands for "no file" to be tested.
  */
 typedef enum fsizes_t { SFILE, LFILE, XLFILE, HUGEFILE, NOFILE} fsizes_t;
-/* Lists of vfd to test */
-typedef enum vfd_t { SEC2_VFD, STDIO_VFD, FAMILY_VFD } vfd_t;
 fsizes_t file_size= NOFILE;
 
 const char *FILENAME[] = {
@@ -91,9 +89,11 @@ int  sparse_support=0;  /* sparse file supported, default false */
 int  have_space=0;    /* enough space for huge file test, default false */
 hsize_t  family_size_def=FAMILY_SIZE;  /* default family file size */
 
-/* Protocols */
+/* Prototypes */
 static void usage(void);
-int testvfd(vfd_t vfd);
+static int test_sec2(hid_t fapl);
+static int test_stdio(hid_t fapl);
+static int test_family(hid_t fapl);
 
 /* Array used to record all addresses at which data has been written */
 /* so far.  Used to prevent overlapping writes. */
@@ -207,66 +207,55 @@ is_sparse(void)
  *-------------------------------------------------------------------------
  */
 static fsizes_t
-supports_big(vfd_t vfd)
+supports_big(void)
 {
     int		fd = -1;
     fsizes_t    fsize = NOFILE;
 
-    switch (vfd){
-    case FAMILY_VFD:
-    case SEC2_VFD:
-    case STDIO_VFD:
-        if ((fd=HDopen("y.h5", O_RDWR|O_TRUNC|O_CREAT, 0666)) < 0)
-            goto error;
-
-        /* Write a few byte at the beginning */
-        if (5!=HDwrite(fd, "hello", (size_t)5))
-            goto quit;
-        fsize = SFILE;
-
-        /* Write a few bytes at 2GB */
-        if (HDlseek(fd, 2*GB, SEEK_SET)!=2*GB)
-            goto quit;
-        if (5!=HDwrite(fd, "hello", (size_t)5))
-            goto quit;
-        fsize = LFILE;
-
-        /* Write a few bytes at 4GB */
-        if (HDlseek(fd, 4*GB, SEEK_SET) != 4*GB)
-            goto quit;
-        if (5!=HDwrite(fd, "hello", (size_t)5))
-            goto quit;
-        fsize = XLFILE;
-
-        /* If this supports sparse_file, write a few bytes at 32GB */
-        if (!sparse_support)
-            goto quit;
-        if (HDlseek(fd, 32*GB, SEEK_SET) != 32*GB)
-            goto quit;
-        if (5!=HDwrite(fd, "hello", (size_t)5))
-            goto quit;
-        fsize = HUGEFILE;
-
-        break;
-    default:
-        /* unknown or unsupported VFD */
+    if((fd=HDopen("y.h5", O_RDWR|O_TRUNC|O_CREAT, 0666)) < 0)
         goto error;
-        break;
-    }
+
+    /* Write a few byte at the beginning */
+    if(5!=HDwrite(fd, "hello", (size_t)5))
+        goto quit;
+    fsize = SFILE;
+
+    /* Write a few bytes at 2GB */
+    if(HDlseek(fd, 2*GB, SEEK_SET)!=2*GB)
+        goto quit;
+    if(5!=HDwrite(fd, "hello", (size_t)5))
+        goto quit;
+    fsize = LFILE;
+
+    /* Write a few bytes at 4GB */
+    if(HDlseek(fd, 4*GB, SEEK_SET) != 4*GB)
+        goto quit;
+    if(5!=HDwrite(fd, "hello", (size_t)5))
+        goto quit;
+    fsize = XLFILE;
+
+    /* If this supports sparse_file, write a few bytes at 32GB */
+    if(!sparse_support)
+        goto quit;
+    if(HDlseek(fd, 32*GB, SEEK_SET) != 32*GB)
+        goto quit;
+    if(5!=HDwrite(fd, "hello", (size_t)5))
+        goto quit;
+    fsize = HUGEFILE;
 
 quit:
-    if (HDclose(fd) < 0)
+    if(HDclose(fd) < 0)
         goto error;
-    if (HDremove("y.h5") < 0)
+    if(HDremove("y.h5") < 0)
         goto error;
-    return(fsize);
+    return fsize;
 
 error:
-    if (fd >= 0){
+    if(fd >= 0){
         HDclose(fd);
         HDremove("y.h5");
     }
-    return (fsize);
+    return fsize;
 }
 
 

@@ -301,11 +290,11 @@ enough_room(hid_t fapl)
 
     /* Get file name template */
     HDassert(H5FD_FAMILY==H5Pget_driver(fapl));
-    h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+    h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
 
     /* Create files */
     for (i=0; i<NELMTS(fd); i++) {
-        HDsnprintf(name, sizeof name, filename, i);
+        HDsnprintf(name, sizeof(name), filename, i);
         if ((fd[i]=HDopen(name, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0) {
             goto done;
         }
@@ -320,7 +309,7 @@ enough_room(hid_t fapl)
 
 done:
     for (i=0; i<NELMTS(fd) && fd[i]>=0; i++) {
-        HDsnprintf(name, sizeof name, filename, i);
+        HDsnprintf(name, sizeof(name), filename, i);
         if(HDclose(fd[i]) < 0)
             ret_value=0;
         HDremove(name);
@@ -603,123 +592,138 @@ usage(void)
             , (hsize_t)FAMILY_SIZE);
 }
 
-
-
-/* Flush stdout at the end of this test routine to ensure later output to */
-/* stderr will not come out before it.*/
-int testvfd(vfd_t vfd)
+static int
+test_sec2(hid_t fapl)
 {
-    hid_t	fapl=-1;
     char	filename[1024];
     fsizes_t	testsize;
 
+    testsize = supports_big();
+    if(testsize == NOFILE) {
+        HDfprintf(stdout, "Test for sec2 is skipped because file system does not support big files.\n");
+        goto quit;
+    }
+    /* Test big file with the SEC2 driver */
+    HDputs("Testing big file with the SEC2 Driver ");
 
-    switch(vfd){
-    case FAMILY_VFD:
-        /* Test huge file with the family driver */
-        HDputs("Testing big file with the Family Driver ");
-        if ((fapl=H5Pcreate(H5P_FILE_ACCESS)) < 0)
-            goto error;
+    h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
 
-        if (H5Pset_fapl_family(fapl, family_size_def, H5P_DEFAULT) < 0)
-            goto error;
+    if(writer(filename, fapl, testsize, WRT_N))
+        goto error;
+    if(reader(filename, fapl))
+        goto error;
 
-        if (cflag){
-            /*
-             * We shouldn't run this test if the file system doesn't support holes
-             * because we would generate multi-gigabyte files.
-             */
-            HDputs("Checking if file system is adequate for this test...");
-            if (sizeof(long long)<8 || 0==GB8LL) {
-                HDputs("Test skipped because sizeof(long long) is too small. This");
-                HDputs("hardware apparently doesn't support 64-bit integer types.");
-                usage();
-                goto quit;
-            }
-            if (!sparse_support) {
-                HDputs("Test skipped because file system does not support holes.");
-                usage();
-                goto quit;
-            }
-            if (!enough_room(fapl)) {
-                HDputs("Test skipped because of quota (file size or num open files).");
-                usage();
-                goto quit;
-            }
-        }
+    HDputs("Test passed with the SEC2 Driver.");
 
-        /* Do the test with the Family Driver */
-        h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+quit:
+    /* End with normal return code */
+    /* Clean up the test file */
+    if(h5_cleanup(FILENAME, fapl))
+        HDremove(DNAME);
+    return 0;
 
-        if (writer(filename, fapl, HUGEFILE, WRT_N)) goto error;
-        if (reader(filename, fapl)) goto error;
+error:
+    HDputs("*** TEST FAILED ***");
+    return 1;
+} /* end test_sec2() */
 
-        HDputs("Test passed with the Family Driver.");
-        break;
+static int 
+test_stdio(hid_t fapl)
+{
+    char	filename[1024];
+    fsizes_t	testsize;
 
-    case SEC2_VFD:
-        testsize = supports_big(SEC2_VFD);
-        if (testsize == NOFILE) {
-            HDfprintf(stdout, "Test for sec2 is skipped because file system does not support big files.\n");
-            goto quit;
-        }
-        /* Test big file with the SEC2 driver */
-        HDputs("Testing big file with the SEC2 Driver ");
+    testsize = supports_big();
+    if(testsize == NOFILE) {
+        HDfprintf(stdout, "Test for stdio is skipped because file system does not support big files.\n");
+        goto quit;
+    }
+    HDputs("\nTesting big file with the STDIO Driver ");
 
-        if ((fapl=H5Pcreate(H5P_FILE_ACCESS)) < 0)
-            goto error;
-        if(H5Pset_fapl_sec2(fapl) < 0)
-            goto error;
+    h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
 
-        h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
+    if(writer(filename, fapl, testsize, WRT_N))
+        goto error;
+    if(reader(filename, fapl))
+        goto error;
+    HDputs("Test passed with the STDIO Driver.");
 
-        if (writer(filename, fapl, testsize, WRT_N)) goto error;
-        if (reader(filename, fapl)) goto error;
+    /* Flush stdout at the end of this test routine to ensure later
+     * output to stderr will not come out before it.
+     */
 
-        HDputs("Test passed with the SEC2 Driver.");
-        break;
+quit:
+    /* End with normal return code */
+    /* Clean up the test file */
+    if(h5_cleanup(FILENAME, fapl))
+        HDremove(DNAME);
+    HDfflush(stdout);
+    return 0;
+
+error:
+    HDputs("*** TEST FAILED ***");
+    HDfflush(stdout);
+    return 1;
+} /* end test_stdio() */
 
-    case STDIO_VFD:
-        testsize = supports_big(STDIO_VFD);
-        if (testsize == NOFILE) {
-            HDfprintf(stdout, "Test for stdio is skipped because file system does not support big files.\n");
+static int
+test_family(hid_t fapl)
+{
+    char	filename[1024];
+
+    /* Test huge file with the family driver */
+    HDputs("Testing big file with the Family Driver ");
+    if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0)
+        goto error;
+
+    if(H5Pset_fapl_family(fapl, family_size_def, H5P_DEFAULT) < 0)
+        goto error;
+
+    if(cflag){
+        /*
+         * We shouldn't run this test if the file system doesn't support holes
+         * because we would generate multi-gigabyte files.
+         */
+        HDputs("Checking if file system is adequate for this test...");
+        if(sizeof(long long) < 8 || 0 == GB8LL) {
+            HDputs("Test skipped because sizeof(long long) is too small. This");
+            HDputs("hardware apparently doesn't support 64-bit integer types.");
+            usage();
             goto quit;
         }
-        HDputs("\nTesting big file with the STDIO Driver ");
-
-        if ((fapl=H5Pcreate(H5P_FILE_ACCESS)) < 0)
-            goto error;
-        if(H5Pset_fapl_stdio(fapl) < 0)
-            goto error;
+        if(!sparse_support) {
+            HDputs("Test skipped because file system does not support holes.");
+            usage();
+            goto quit;
+        }
+        if(!enough_room(fapl)) {
+            HDputs("Test skipped because of quota (file size or num open files).");
+            usage();
+            goto quit;
+        }
+    }
 
-        h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
+    /* Do the test with the Family Driver */
+    h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
 
-        if (writer(filename, fapl, testsize, WRT_N)) goto error;
-        if (reader(filename, fapl)) goto error;
-        HDputs("Test passed with the STDIO Driver.");
-        break;
+    if(writer(filename, fapl, HUGEFILE, WRT_N))
+        goto error;
+    if(reader(filename, fapl))
+        goto error;
 
-    default:
-        HDputs("Unsupprted VFD");
-        usage();
-        goto error;;
-    } /* end of switch (vfd) */
+    HDputs("Test passed with the Family Driver.");
 
 quit:
     /* End with normal return code */
     /* Clean up the test file */
-    if (h5_cleanup(FILENAME, fapl)) HDremove(DNAME);
-    HDfflush(stdout);
+    if(h5_cleanup(FILENAME, fapl))
+        HDremove(DNAME);
     return 0;
 
-
 error:
-    if (fapl>=0) H5Pclose(fapl);
     HDputs("*** TEST FAILED ***");
-    HDfflush(stdout);
     return 1;
-}
-
+} /* end test_family() */
 
 

 /*-------------------------------------------------------------------------
@@ -749,6 +753,8 @@ int
 main (int ac, char **av)
 {
     unsigned long seed = 0;             /* Random # seed */
+    hid_t fapl = -1;
+    hid_t driver = -1;
 
     /* parameters setup */
 
@@ -779,11 +785,16 @@ main (int ac, char **av)
         }
     }
 
+    /* check VFD to see if this is one we test */
+    if((fapl = h5_fileaccess()) < 0)
+        goto error;
+    if((driver = H5Pget_driver(fapl)) < 0)
+        goto error;
+
     /* check sparse file support unless cflag is not set. */
-    if (cflag)
+    if(cflag)
         sparse_support = is_sparse();
 
-
     /* Choose random # seed */
     seed = (unsigned long)HDtime(NULL);
 #ifdef QAK
@@ -792,19 +803,30 @@ main (int ac, char **av)
 #endif /* QAK */
     HDsrandom(seed);
 
-    /*=================================================*/
-    if (testvfd(FAMILY_VFD) != 0)
-        goto error;
-    if (testvfd(SEC2_VFD) != 0)
-        goto error;
-    if (testvfd(STDIO_VFD) != 0)
-        goto error;
+    /* run VFD-specific test */
+    if(H5FD_SEC2 == driver) {
+        if(test_sec2(fapl) != 0)
+            goto error;
+    }
+    else if(H5FD_STDIO == driver) {
+        if(test_stdio(fapl) != 0)
+            goto error;
+    }
+    else if(H5FD_FAMILY == driver) {
+        if(test_family(fapl) != 0)
+            goto error;
+    }
+    else
+        HDputs("This VFD is not supported");
 
     /* End with normal exit code */
+    /* fapls are cleaned up in the vfd test code */
     return 0;
 
 error:
     HDputs("*** TEST FAILED ***");
+    if(fapl > 0)
+        H5Pclose(fapl);
     return 1;
 }
 
diff --git a/test/cache_api.c b/test/cache_api.c
index 85b2407..66f8143 100644
--- a/test/cache_api.c
+++ b/test/cache_api.c
@@ -883,7 +883,6 @@ mdc_api_call_smoke_check(int express_test)
     hid_t properties;
     char dset_name[64];
     int i, j, k, l, m, n;
-    int progress_counter;
     herr_t status;
     hsize_t dims[2];
     hsize_t a_size[2];
@@ -1164,7 +1163,6 @@ mdc_api_call_smoke_check(int express_test)
 
     /* initialize all datasets on a round robin basis */
     i = 0;
-    progress_counter = 0;
 
     while ( ( pass ) && ( i < DSET_SIZE ) )
     {
@@ -1249,7 +1247,6 @@ mdc_api_call_smoke_check(int express_test)
 
     /* do random reads on all datasets */
     n = 0;
-    progress_counter = 0;
     while ( ( pass ) && ( n < NUM_RANDOM_ACCESSES ) )
     {
         m = rand() % NUM_DSETS;
@@ -1376,7 +1373,6 @@ mdc_api_call_smoke_check(int express_test)
     /* do random reads on data set 0 only */
     m = 0;
     n = 0;
-    progress_counter = 0;
     while ( ( pass ) && ( n < NUM_RANDOM_ACCESSES ) )
     {
         i = (rand() % (DSET_SIZE / CHUNK_SIZE)) * CHUNK_SIZE;
diff --git a/test/cross_read.c b/test/cross_read.c
index 308a0c1..ba99c9e 100644
--- a/test/cross_read.c
+++ b/test/cross_read.c
@@ -50,8 +50,10 @@ const char *FILENAME[] = {
 #define DATASETNAME15      "Fletcher_float_data_be"
 #define DATASETNAME16      "Deflate_float_data_le"
 #define DATASETNAME17      "Deflate_float_data_be"
+#ifdef H5_HAVE_FILTER_SZIP
 #define DATASETNAME18      "Szip_float_data_le"
 #define DATASETNAME19      "Szip_float_data_be"
+#endif /* H5_HAVE_FILTER_SZIP */
 #define DATASETNAME20      "Shuffle_float_data_le"
 #define DATASETNAME21      "Shuffle_float_data_be"
 #define DATASETNAME22      "Nbit_float_data_le"
diff --git a/test/dsets.c b/test/dsets.c
index c4d1fcc..85949bb 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -4034,7 +4034,7 @@ test_nbit_int_size(hid_t file)
    */
    for (i=0; i < DSET_DIM1; i++)
        for (j=0; j < DSET_DIM2; j++)
-           orig_data[i][j] = rand() % (int)pow(2, precision-1) <<offset;
+           orig_data[i][j] = rand() % (int)pow((double)2, (double)(precision-1)) << offset;
 
 
    /* Describe the dataspace. */
@@ -6690,8 +6690,17 @@ test_zero_dims(hid_t file)
     if(H5Pset_chunk(dcpl, 1, &csize) < 0) FAIL_STACK_ERROR
     if((d = H5Dcreate2(file, ZERODIM_DATASET, H5T_NATIVE_INT, s, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
 
-    /* Just a no-op */
+    /* Various no-op writes */
     if(H5Dwrite(d, H5T_NATIVE_INT, s, s, H5P_DEFAULT, (void*)911) < 0) FAIL_STACK_ERROR
+    if(H5Dwrite(d, H5T_NATIVE_INT, s, s, H5P_DEFAULT, NULL) < 0) FAIL_STACK_ERROR
+    if(H5Dwrite(d, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, (void*)911) < 0) FAIL_STACK_ERROR
+    if(H5Dwrite(d, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, NULL) < 0) FAIL_STACK_ERROR
+
+    /* Various no-op reads */
+    if(H5Dread(d, H5T_NATIVE_INT, s, s, H5P_DEFAULT, (void*)911) < 0) FAIL_STACK_ERROR
+    if(H5Dread(d, H5T_NATIVE_INT, s, s, H5P_DEFAULT, NULL) < 0) FAIL_STACK_ERROR
+    if(H5Dread(d, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, (void*)911) < 0) FAIL_STACK_ERROR
+    if(H5Dread(d, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, NULL) < 0) FAIL_STACK_ERROR
 
     if(H5Dclose(d) < 0) FAIL_STACK_ERROR
     if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
@@ -7824,13 +7833,15 @@ test_chunk_expand(hid_t fapl)
     H5D_alloc_time_t alloc_time;        /* Storage allocation time */
     unsigned    write_elem, read_elem;  /* Element written/read */
     unsigned    u;              /* Local index variable */
+    size_t      size;           /* Size of type */
     herr_t      status;         /* Generic return value */
 
     TESTING("filter expanding chunks too much");
 
     h5_fixname(FILENAME[10], fapl, filename, sizeof filename);
 
-    if(sizeof(size_t) <= 4) {
+    size = sizeof(size_t);
+    if(size <= 4) {
 	SKIPPED();
 	puts("    Current machine can't test for error");
     } /* end if */
@@ -8357,7 +8368,7 @@ test_scatter(void)
         scatter_info.size = 8;
 
         /* Scatter data */
-        if(H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
+        if(H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
             TEST_ERROR
 
         /* Verify data */
@@ -8397,7 +8408,7 @@ test_scatter(void)
         scatter_info.size = 12;
 
         /* Scatter data */
-        if(H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
+        if(H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
             TEST_ERROR
 
         /* Verify data */
@@ -8455,7 +8466,7 @@ test_scatter(void)
         scatter_info.size = 36;
 
         /* Scatter data */
-        if(H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
+        if(H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
             TEST_ERROR
 
         /* Verify data */
@@ -8511,7 +8522,7 @@ test_scatter(void)
         scatter_info.size = 16;
 
         /* Scatter data */
-        if(H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
+        if(H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
             TEST_ERROR
 
         /* Verify data */
@@ -8545,7 +8556,7 @@ test_scatter(void)
         scatter_info.size = 4;
 
         /* Scatter data */
-        if(H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
+        if(H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
             TEST_ERROR
 
         /* Verify data */
@@ -9022,7 +9033,7 @@ test_scatter_error(void)
     scatter_info.src_buf = src_buf;
     scatter_info.block = sizeof(src_buf)/sizeof(src_buf[0]);
     scatter_info.size = 6;
-    if(H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
+    if(H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
         TEST_ERROR
 
 
@@ -9039,21 +9050,21 @@ test_scatter_error(void)
     scatter_info.src_buf = src_buf;
     scatter_info.size = 6;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_cb, &scatter_info, sid, sid, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, sid, sid, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
     scatter_info.src_buf = src_buf;
     scatter_info.size = 6;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, H5T_NATIVE_INT, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, H5T_NATIVE_INT, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
     scatter_info.src_buf = src_buf;
     scatter_info.size = 6;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, NULL);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, NULL);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
@@ -9064,7 +9075,7 @@ test_scatter_error(void)
     scatter_info.src_buf = src_buf;
     scatter_info.size = 7;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
@@ -9075,7 +9086,7 @@ test_scatter_error(void)
     scatter_info.src_buf = src_buf;
     scatter_info.size = 6;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_error_cb_fail, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_fail, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
@@ -9086,7 +9097,7 @@ test_scatter_error(void)
     scatter_info.src_buf = src_buf;
     scatter_info.size = 6;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_error_cb_null, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_null, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
@@ -9096,7 +9107,7 @@ test_scatter_error(void)
      */
     cb_unalign_nbytes = 0;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
@@ -9107,13 +9118,13 @@ test_scatter_error(void)
      */
     cb_unalign_nbytes = sizeof(src_buf[0]) - 1;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
     cb_unalign_nbytes = sizeof(src_buf[0]) + 1;
     H5E_BEGIN_TRY {
-        ret = H5Dscatter(scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
+        ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
     } H5E_END_TRY
     if(ret >= 0) TEST_ERROR
 
diff --git a/test/dt_arith.c b/test/dt_arith.c
index a22bd6d..be795dd 100644
--- a/test/dt_arith.c
+++ b/test/dt_arith.c
@@ -531,15 +531,14 @@ except_func(H5T_conv_except_t except_type, hid_t UNUSED src_id, hid_t UNUSED dst
  * Programmer:	Robb Matzke
  *              Tuesday, July 21, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 void
 some_dummy_func(float x)
 {
     char	s[128];
-    sprintf(s, "%g", x);
+
+    HDsnprintf(s, sizeof(s), "%g", x);
 }
 
 

@@ -576,7 +575,8 @@ generates_sigfpe(void)
 	HDexit(1);
     } else if (0==pid) {
 	for (i=0; i<2000; i++) {
-	    for (j=0; j<sizeof(double); j++) dp[j] = HDrand();
+	    for(j = 0; j < sizeof(double); j++)
+                dp[j] = (unsigned char)HDrand();
 	    f = (float)d;
 	    some_dummy_func((float)f);
 	}
@@ -1050,14 +1050,14 @@ test_derived_flt(void)
      */
     src_size = H5Tget_size(H5T_NATIVE_INT);
     endian = H5Tget_order(H5T_NATIVE_INT);
-    buf = (unsigned char*)malloc(nelmts * (MAX(src_size, size)));
-    saved_buf = (unsigned char*)malloc(nelmts * src_size);
+    buf = (unsigned char *)HDmalloc(nelmts * (MAX(src_size, size)));
+    saved_buf = (unsigned char *)HDmalloc(nelmts * src_size);
     HDmemset(buf, 0, nelmts * MAX(src_size, size));
     HDmemset(saved_buf, 0, nelmts * src_size);
-    aligned = (int*)calloc((size_t)1, src_size);
+    aligned = (int *)HDcalloc((size_t)1, src_size);
 
     for(i = 0; i < nelmts * src_size; i++)
-        buf[i] = saved_buf[i] = HDrand();
+        buf[i] = saved_buf[i] = (unsigned char)HDrand();
 
     /* Convert data from native integer to derived floating-point type.
      * The mantissa is big enough to retain the integer's precision. */
@@ -1083,7 +1083,7 @@ test_derived_flt(void)
 
         /* Print errors */
         if (0==fails_this_test++) {
-	    sprintf(str, "\nTesting random sw derived floating-point -> derived floating-point conversions");
+	    HDsnprintf(str, sizeof(str), "\nTesting random sw derived floating-point -> derived floating-point conversions");
 	    printf("%-70s", str);
 	    HDfflush(stdout);
             H5_FAILED();
@@ -1210,13 +1210,13 @@ test_derived_flt(void)
     src_size = H5Tget_size(tid2);
     dst_size = H5Tget_size(tid1);
     endian = H5Tget_order(tid2);
-    buf = (unsigned char*)malloc(nelmts*(MAX(src_size, dst_size)));
-    saved_buf = (unsigned char*)malloc(nelmts*src_size);
-    HDmemset(buf, 0, nelmts*MAX(src_size, dst_size));
+    buf = (unsigned char *)HDmalloc(nelmts * (MAX(src_size, dst_size)));
+    saved_buf = (unsigned char *)HDmalloc(nelmts * src_size);
+    HDmemset(buf, 0, nelmts * MAX(src_size, dst_size));
     HDmemset(saved_buf, 0, nelmts*src_size);
 
     for(i=0; i<nelmts*src_size; i++)
-        buf[i] = saved_buf[i] = HDrand();
+        buf[i] = saved_buf[i] = (unsigned char)HDrand();
 
     /* Convert data from the 2nd to the 1st derived floating-point type.
      * The mantissa and exponent of the 2nd type are big enough to retain
@@ -1251,7 +1251,7 @@ test_derived_flt(void)
 
         /* Print errors */
         if (0==fails_this_test++) {
-	    sprintf(str, "\nTesting random sw derived floating-point -> derived floating-point conversions");
+	    HDsnprintf(str, sizeof(str), "\nTesting random sw derived floating-point -> derived floating-point conversions");
 	    printf("%-70s", str);
 	    HDfflush(stdout);
             H5_FAILED();
@@ -1520,13 +1520,13 @@ test_derived_integer(void)
     src_size = H5Tget_size(tid1);
     dst_size = H5Tget_size(tid2);
     endian = H5Tget_order(tid1);
-    buf = (unsigned char*)HDmalloc(nelmts*(MAX(src_size, dst_size)));
-    saved_buf = (unsigned char*)HDmalloc(nelmts*src_size);
-    HDmemset(buf, 0, nelmts*MAX(src_size, dst_size));
+    buf = (unsigned char *)HDmalloc(nelmts*(MAX(src_size, dst_size)));
+    saved_buf = (unsigned char *)HDmalloc(nelmts*src_size);
+    HDmemset(buf, 0, nelmts * MAX(src_size, dst_size));
     HDmemset(saved_buf, 0, nelmts*src_size);
 
-    for(i=0; i<nelmts*src_size; i++)
-        buf[i] = saved_buf[i] = HDrand();
+    for(i=0; i<nelmts * src_size; i++)
+        buf[i] = saved_buf[i] = (unsigned char)HDrand();
 
     /* Convert data from the 1st to the 2nd derived integer type.
      * The precision of the 2nd type are big enough to retain
@@ -1553,7 +1553,7 @@ test_derived_integer(void)
 
         /* Print errors */
         if (0==fails_this_test++) {
-	    sprintf(str, "\nTesting random sw derived integer -> derived integer conversions");
+	    HDsnprintf(str, sizeof(str), "\nTesting random sw derived integer -> derived integer conversions");
 	    printf("%-70s", str);
 	    HDfflush(stdout);
             H5_FAILED();
@@ -1754,14 +1754,14 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
 
     /* Sanity checks */
     if (OTHER==src_type || OTHER==dst_type) {
-	sprintf(str, "Testing %s %s -> %s conversions",
+	HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
 		name, src_type_name, dst_type_name);
 	printf("%-70s", str);
 	H5_FAILED();
 	HDputs("    Unknown data type.");
 	goto error;
     } else {
-        sprintf(str, "Testing %s %s -> %s conversions",
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
             name, src_type_name, dst_type_name);
         printf("%-70s", str);
         HDfflush(stdout);
@@ -2711,17 +2711,20 @@ my_isnan(dtype_t type, void *val)
     if (!retval) {
 	if (FLT_FLOAT==type) {
 	    float x;
+
 	    HDmemcpy(&x, val, sizeof(float));
-	    sprintf(s, "%g", x);
+	    HDsnprintf(s, sizeof(s), "%g", x);
 	} else if (FLT_DOUBLE==type) {
 	    double x;
+
 	    HDmemcpy(&x, val, sizeof(double));
-	    sprintf(s, "%g", x);
+	    HDsnprintf(s, sizeof(s), "%g", x);
 #if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0
 	} else if (FLT_LDOUBLE==type) {
 	    long double x;
+
 	    HDmemcpy(&x, val, sizeof(long double));
-	    sprintf(s, "%Lg", x);
+	    HDsnprintf(s, sizeof(s), "%Lg", x);
 #endif
 	} else {
 	    return 0;
@@ -2889,7 +2892,7 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst)
 	} else if (WIFEXITED(status)) {
 	    return WEXITSTATUS(status);
 	} else if (WIFSIGNALED(status)) {
-	    sprintf(str, "   Child caught signal %d.", WTERMSIG(status));
+	    HDsnprintf(str, sizeof(str), "   Child caught signal %d.", WTERMSIG(status));
 	    HDputs(str);
 	    return 1; /*child exit after catching non-SIGFPE signal */
 	} else {
@@ -2945,16 +2948,16 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst)
         HDputs("Sizeof(float)==sizeof(double) - some tests may not be sensible.");
     if (OTHER==src_type || OTHER==dst_type) {
         if(!strcmp(name, "noop"))
-	    sprintf(str, "Testing %s %s -> %s conversions",
+	    HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
 		name, src_type_name, dst_type_name);
         else if(run_test==TEST_SPECIAL)
-	    sprintf(str, "Testing %s special %s -> %s conversions",
+	    HDsnprintf(str, sizeof(str), "Testing %s special %s -> %s conversions",
 		name, src_type_name, dst_type_name);
         else if(run_test==TEST_NORMAL)
-	    sprintf(str, "Testing %s normalized %s -> %s conversions",
+	    HDsnprintf(str, sizeof(str), "Testing %s normalized %s -> %s conversions",
 		name, src_type_name, dst_type_name);
         else if(run_test==TEST_DENORM)
-	    sprintf(str, "Testing %s denormalized %s -> %s conversions",
+	    HDsnprintf(str, sizeof(str), "Testing %s denormalized %s -> %s conversions",
 		name, src_type_name, dst_type_name);
 
 	printf("%-70s", str);
@@ -2963,16 +2966,16 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst)
 	goto error;
     } else {
         if(!strcmp(name, "noop"))
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                 name, src_type_name, dst_type_name);
         else if(run_test==TEST_SPECIAL)
-            sprintf(str, "Testing %s special %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s special %s -> %s conversions",
                 name, src_type_name, dst_type_name);
         else if(run_test==TEST_NORMAL)
-            sprintf(str, "Testing %s normalized %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s normalized %s -> %s conversions",
                 name, src_type_name, dst_type_name);
         else if(run_test==TEST_DENORM)
-            sprintf(str, "Testing %s denormalized %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s denormalized %s -> %s conversions",
                 name, src_type_name, dst_type_name);
 
         printf("%-70s", str);
@@ -3090,10 +3093,10 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst)
     /* Check the software results against the hardware */
     for (j=0; j<nelmts; j++) {
         underflow = 0;
-        hw_f = 911.0;
-        hw_d = 911.0;
+        hw_f = 911.0f;
+        hw_d = 911.0f;
 #if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE
-        hw_ld = 911.0;
+        hw_ld = 911.0f;
 #endif
 
         /* The hardware conversion */
@@ -3167,10 +3170,11 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst)
          * 0s before compare the values.
          */
 #if H5_SIZEOF_LONG_DOUBLE !=0
-        if(sendian==H5T_ORDER_LE && dst_type==FLT_LDOUBLE) {
-            unsigned int q;
-            for(q=dst_nbits/8; q<dst_size; q++) {
-                buf[j*dst_size+q] = 0x00;
+        if(sendian == H5T_ORDER_LE && dst_type == FLT_LDOUBLE) {
+            size_t q;
+
+            for(q = dst_nbits / 8; q < dst_size; q++) {
+                buf[j * dst_size + q] = 0x00;
                 hw[q] = 0x00;
             }
         }
@@ -3645,7 +3649,7 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
 
     /* Sanity checks */
     if (OTHER==src_type || OTHER==dst_type) {
-	sprintf(str, "Testing %s %s -> %s conversions",
+	HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
 		name, src_type_name, dst_type_name);
 	printf("%-70s", str);
 	H5_FAILED();
@@ -3654,15 +3658,15 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
     }
 
     if ((INT_SCHAR==src_type || INT_UCHAR==src_type || INT_SHORT==src_type ||
-        INT_USHORT==src_type || INT_INT==src_type || INT_UINT==src_type ||
-        INT_LONG==src_type || INT_ULONG==src_type || INT_LLONG==src_type ||
-        INT_ULLONG==src_type) &&
-        (FLT_FLOAT!=dst_type && FLT_DOUBLE!=dst_type
+            INT_USHORT==src_type || INT_INT==src_type || INT_UINT==src_type ||
+            INT_LONG==src_type || INT_ULONG==src_type || INT_LLONG==src_type ||
+            INT_ULLONG==src_type) &&
+            (FLT_FLOAT!=dst_type && FLT_DOUBLE!=dst_type
 #if H5_SIZEOF_LONG_DOUBLE !=0
-        && FLT_LDOUBLE!=dst_type
+            && FLT_LDOUBLE!=dst_type
 #endif
-        )) {
-	sprintf(str, "Testing %s %s -> %s conversions",
+            )) {
+	HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
 	    name, src_type_name, dst_type_name);
 	printf("%-70s", str);
 	H5_FAILED();
@@ -3672,14 +3676,14 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
 
     if ((FLT_FLOAT==src_type || FLT_DOUBLE==src_type
 #if H5_SIZEOF_LONG_DOUBLE !=0
-        || FLT_LDOUBLE==src_type
+            || FLT_LDOUBLE==src_type
 #endif
-        )
-        && (INT_SCHAR!=dst_type && INT_UCHAR!=dst_type && INT_SHORT!=dst_type
-        && INT_USHORT!=dst_type && INT_INT!=dst_type && INT_UINT!=dst_type
-        && INT_LONG!=dst_type && INT_ULONG!=dst_type && INT_LLONG!=dst_type
-        && INT_ULLONG!=dst_type)) {
- 	sprintf(str, "Testing %s %s -> %s conversions",
+            )
+            && (INT_SCHAR!=dst_type && INT_UCHAR!=dst_type && INT_SHORT!=dst_type
+            && INT_USHORT!=dst_type && INT_INT!=dst_type && INT_UINT!=dst_type
+            && INT_LONG!=dst_type && INT_ULONG!=dst_type && INT_LLONG!=dst_type
+            && INT_ULLONG!=dst_type)) {
+ 	HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
 	    name, src_type_name, dst_type_name);
 	printf("%-70s", str);
 	H5_FAILED();
@@ -3688,23 +3692,23 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst)
     }
 
     if (INT_SCHAR==src_type || INT_UCHAR==src_type || INT_SHORT==src_type ||
-        INT_USHORT==src_type || INT_INT==src_type || INT_UINT==src_type ||
-        INT_LONG==src_type || INT_ULONG==src_type || INT_LLONG==src_type ||
-        INT_ULLONG==src_type) {
-        sprintf(str, "Testing %s %s -> %s conversions",
+            INT_USHORT==src_type || INT_INT==src_type || INT_UINT==src_type ||
+            INT_LONG==src_type || INT_ULONG==src_type || INT_LLONG==src_type ||
+            INT_ULLONG==src_type) {
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
             name, src_type_name, dst_type_name);
         printf("%-70s", str);
         HDfflush(stdout);
         fails_this_test=0;
     } else {
         if(run_test==TEST_NORMAL)
-            sprintf(str, "Testing %s normalized %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s normalized %s -> %s conversions",
                     name, src_type_name, dst_type_name);
         else if(run_test==TEST_DENORM)
-            sprintf(str, "Testing %s denormalized %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s denormalized %s -> %s conversions",
                     name, src_type_name, dst_type_name);
         else
-            sprintf(str, "Testing %s special %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s special %s -> %s conversions",
                     name, src_type_name, dst_type_name);
         printf("%-70s", str);
         HDfflush(stdout);
@@ -5122,13 +5126,13 @@ run_int_fp_conv(const char *name)
     {
         char		str[256];		/*hello string		*/
 
-        sprintf(str, "Testing %s %s -> %s conversions",
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                 name, "unsigned long long", "float");
         printf("%-70s", str);
         SKIPPED();
         HDputs("    Test skipped due to compiler not handling conversion.");
 
-        sprintf(str, "Testing %s %s -> %s conversions",
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                 name, "unsigned long long", "double");
         printf("%-70s", str);
         SKIPPED();
@@ -5150,19 +5154,19 @@ run_int_fp_conv(const char *name)
     nerrors += test_conv_int_fp(name, TEST_NORMAL, H5T_NATIVE_LONG, H5T_NATIVE_LDOUBLE);
     nerrors += test_conv_int_fp(name, TEST_NORMAL, H5T_NATIVE_ULONG, H5T_NATIVE_LDOUBLE);
 #else
-        {
-            char		str[256];		/*string		*/
+    {
+        char		str[256];		/*string		*/
 
-            sprintf(str, "Testing %s %s -> %s conversions",
-                    name, "(unsigned) long", "long double");
-            printf("%-70s", str);
-            SKIPPED();
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
+                name, "(unsigned) long", "long double");
+        printf("%-70s", str);
+        SKIPPED();
 #if H5_SIZEOF_LONG_DOUBLE!=0
-            HDputs("    Test skipped due to the special algorithm of hardware conversion.");
+        HDputs("    Test skipped due to the special algorithm of hardware conversion.");
 #else
-            HDputs("    Test skipped due to disabled long double.");
+        HDputs("    Test skipped due to disabled long double.");
 #endif
-        }
+    }
 #endif
 #endif /* H5_SIZEOF_LONG!=H5_SIZEOF_INT */
 #if H5_SIZEOF_LONG_LONG!=H5_SIZEOF_LONG
@@ -5172,7 +5176,7 @@ run_int_fp_conv(const char *name)
     {
         char		str[256];		/*hello string		*/
 
-        sprintf(str, "Testing %s %s -> %s conversions",
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                 name, "long long", "long double");
         printf("%-70s", str);
         SKIPPED();
@@ -5185,7 +5189,7 @@ run_int_fp_conv(const char *name)
     {
         char		str[256];		/*hello string		*/
 
-        sprintf(str, "Testing %s %s -> %s conversions",
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                 name, "unsigned long long", "long double");
         printf("%-70s", str);
         SKIPPED();
@@ -5198,7 +5202,7 @@ run_int_fp_conv(const char *name)
     {
         char		str[256];		/*string		*/
 
-        sprintf(str, "Testing %s %s -> %s conversions",
+        HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                 name, "all integers", "long double");
         printf("%-70s", str);
         SKIPPED();
@@ -5287,13 +5291,13 @@ run_fp_int_conv(const char *name)
         {
             char		str[256];		/*hello string		*/
 
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                     name, "float", "unsigned long long");
             printf("%-70s", str);
             SKIPPED();
             HDputs("    Test skipped due to hardware conversion error.");
 
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                     name, "double", "unsigned long long");
             printf("%-70s", str);
             SKIPPED();
@@ -5315,7 +5319,7 @@ run_fp_int_conv(const char *name)
         {
             char		str[256];		/*string		*/
 
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                     name, "long double", "unsigned int");
             printf("%-70s", str);
             SKIPPED();
@@ -5334,7 +5338,7 @@ run_fp_int_conv(const char *name)
         {
             char		str[256];		/*string		*/
 
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                     name, "long double", "(unsigned) long");
             printf("%-70s", str);
             SKIPPED();
@@ -5354,7 +5358,7 @@ run_fp_int_conv(const char *name)
         {
             char		str[256];		/*string		*/
 
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                     name, "long double", "long long");
             printf("%-70s", str);
             SKIPPED();
@@ -5371,7 +5375,7 @@ run_fp_int_conv(const char *name)
         {
             char		str[256];		/*string		*/
 
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                     name, "long double", "unsigned long long");
             printf("%-70s", str);
             SKIPPED();
@@ -5388,7 +5392,7 @@ run_fp_int_conv(const char *name)
         {
             char		str[256];		/*hello string		*/
 
-            sprintf(str, "Testing %s %s -> %s conversions",
+            HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
                     name, "long double", "all integers");
             printf("%-70s", str);
             SKIPPED();
@@ -5409,7 +5413,7 @@ run_fp_int_conv(const char *name)
  */
     char		str[256];		/*string		*/
 
-    sprintf(str, "Testing %s %s -> %s conversions",
+    HDsnprintf(str, sizeof(str), "Testing %s %s -> %s conversions",
             name, "all floating-point numbers", "all integers");
     printf("%-70s", str);
     SKIPPED();
diff --git a/test/dtypes.c b/test/dtypes.c
index ae74202..de81bd5 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -651,7 +651,7 @@ test_compound_1(void)
 
 error:
     if(tag)
-        HDfree(tag);
+        H5free_memory(tag);
     return retval;
 }
 
@@ -4423,7 +4423,7 @@ error:
     if(buf) 
         HDfree(buf);
     if(tag)
-        HDfree(tag);
+        H5free_memory(tag); /* Technically allocated by API call */
 
     reset_hdf5();
     return ret_value;  /* Number of errors */
@@ -4791,8 +4791,7 @@ test_bitfield_funcs(void)
  error:
 
     if (retval == -1) retval = 1;
-
-    HDfree(tag);
+    H5free_memory(tag);
     H5Tclose(ntype);
     H5Tclose(type);
     if (retval == 0) PASSED();
@@ -6474,7 +6473,7 @@ test_named_indirect_reopen(hid_t fapl)
     if(dt_size != H5Tget_size(type)) TEST_ERROR
     if(NULL == (tag_ret = H5Tget_tag(type))) TEST_ERROR
     if(HDstrcmp(tag, tag_ret)) TEST_ERROR
-    HDfree(tag_ret);
+    H5free_memory(tag_ret);
     tag_ret = NULL;
 
     /* Create dataset with opaque type */
@@ -6485,7 +6484,7 @@ test_named_indirect_reopen(hid_t fapl)
     if(dt_size != H5Tget_size(reopened_type)) TEST_ERROR
     if(NULL == (tag_ret = H5Tget_tag(type))) TEST_ERROR
     if(HDstrcmp(tag, tag_ret)) TEST_ERROR
-    HDfree(tag_ret);
+    H5free_memory(tag_ret);
     tag_ret = NULL;
 
     /* Close types and dataset */
@@ -6535,7 +6534,7 @@ error:
 	H5Fclose(file);
     } H5E_END_TRY;
     if(tag_ret)
-        HDfree(tag_ret);
+        H5free_memory(tag_ret);
     return 1;
 } /* end test_named_indirect_reopen() */
 
diff --git a/test/err_compat.c b/test/err_compat.c
index c08e259..346d397 100644
--- a/test/err_compat.c
+++ b/test/err_compat.c
@@ -144,16 +144,16 @@ custom_print_cb1(int n, H5E_error1_t *err_desc, void* client_data)
     fprintf(stream, "%*smajor: %s\n", indent * 2, "", maj);
     fprintf(stream, "%*sminor: %s\n", indent * 2, "", min);
 
-    HDfree(maj);
-    HDfree(min);
+    H5free_memory(maj);
+    H5free_memory(min);
 
     return 0;
 
 error:
     if(maj)
-        HDfree(maj);
+        H5free_memory(maj);
     if(min)
-        HDfree(min);
+        H5free_memory(min);
     
     return -1;
 }
@@ -197,16 +197,16 @@ custom_print_cb2(int n, H5E_error2_t *err_desc, void* client_data)
     fprintf(stream, "%*smajor: %s\n", indent * 2, "", maj);
     fprintf(stream, "%*sminor: %s\n", indent * 2, "", min);
 
-    HDfree(maj);
-    HDfree(min);
+    H5free_memory(maj);
+    H5free_memory(min);
 
     return 0;
 
 error:
     if(maj)
-        HDfree(maj);
+        H5free_memory(maj);
     if(min)
-        HDfree(min);
+        H5free_memory(min);
     
     return -1;
 }
diff --git a/test/fheap.c b/test/fheap.c
index 426de94..a256301 100644
--- a/test/fheap.c
+++ b/test/fheap.c
@@ -29,7 +29,7 @@
 /* Other private headers that this test requires */
 #include "H5Iprivate.h"
 #include "H5MMprivate.h"	/* Memory management			*/
-#include "H5Vprivate.h"		/* Vectors and arrays 			*/
+#include "H5VMprivate.h"		/* Vectors and arrays 			*/
 
 /* Max. testfile name length */
 #define FHEAP_FILENAME_LEN      1024
@@ -1559,7 +1559,7 @@ fill_all_2nd_indirect_rows(H5HF_t *fh, hid_t dxpl, size_t obj_size,
     width = DTABLE_WIDTH(fh);
 
     /* Loop over rows of 2nd level deep indirect blocks */
-    for(u = 0; u < (H5V_log2_of2(width) + 1); u++)
+    for(u = 0; u < (H5VM_log2_of2(width) + 1); u++)
         if(fill_2nd_indirect_row(fh, dxpl, (u + 1), obj_size, state, keep_ids))
             TEST_ERROR
 
@@ -1677,7 +1677,7 @@ fill_all_3rd_indirect_rows(H5HF_t *fh, hid_t dxpl, size_t obj_size,
     width = DTABLE_WIDTH(fh);
 
     /* Loop over rows of 3rd level deep indirect blocks */
-    for(u = 0; u < (H5V_log2_of2(width) + 1); u++)
+    for(u = 0; u < (H5VM_log2_of2(width) + 1); u++)
         /* Fill row of 3rd level indirect blocks */
         if(fill_3rd_indirect_row(fh, dxpl, (u + 1), obj_size, state, keep_ids))
             TEST_ERROR
@@ -1767,7 +1767,7 @@ fill_all_4th_indirect_rows(H5HF_t *fh, hid_t dxpl, size_t obj_size,
     width = DTABLE_WIDTH(fh);
 
     /* Loop over rows of 4th level deep indirect blocks */
-    for(u = 0; u < (H5V_log2_of2(width) + 1); u++) {
+    for(u = 0; u < (H5VM_log2_of2(width) + 1); u++) {
         /* Fill row of 4th level indirect blocks */
         if(fill_4th_indirect_row(fh, dxpl, (u + 1), obj_size, state, keep_ids))
             TEST_ERROR
diff --git a/test/fillval.c b/test/fillval.c
index 16247b5..c69f409 100644
--- a/test/fillval.c
+++ b/test/fillval.c
@@ -37,6 +37,7 @@ const char *FILENAME[] = {
     "fillval_6",
     "fillval_7",
     "fillval_8",
+    "fillval_9",
     NULL
 };
 
@@ -288,7 +289,7 @@ static int
 test_getset_vl(hid_t fapl)
 {
     hsize_t dims[1] = {2};
-    hid_t fileid = (-1), spaceid = (-1), typeid = (-1), datasetid = (-1), plistid = (-1);
+    hid_t fileid = (-1), spaceid = (-1), dtypeid = (-1), datasetid = (-1), plistid = (-1);
     char fill_value[] = "aaaa";
     char orig_fill_value[] = "aaaa";
     char *f1 = fill_value;
@@ -298,18 +299,18 @@ test_getset_vl(hid_t fapl)
     TESTING("property lists, with variable-length datatype");
 
     /* Create string type. */
-    if((typeid =  H5Tcopy(H5T_C_S1)) < 0) TEST_ERROR
-    if(H5Tset_size(typeid, H5T_VARIABLE) < 0) TEST_ERROR
+    if((dtypeid =  H5Tcopy(H5T_C_S1)) < 0) TEST_ERROR
+    if(H5Tset_size(dtypeid, H5T_VARIABLE) < 0) TEST_ERROR
 
     /* Set up dataset creation property list, with fill value */
     if((plistid = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR
-    if(H5Pset_fill_value(plistid, typeid, &f1) < 0) TEST_ERROR
+    if(H5Pset_fill_value(plistid, dtypeid, &f1) < 0) TEST_ERROR
 
     /* Modify original fill value string */
     fill_value[0] = 'b';
 
     /* Retrieve fill value from property */
-    if(H5Pget_fill_value(plistid, typeid, &f2) < 0) TEST_ERROR
+    if(H5Pget_fill_value(plistid, dtypeid, &f2) < 0) TEST_ERROR
 
     /* Verify that the fill value is the original value */
     if(HDstrcmp(f2, orig_fill_value)) TEST_ERROR
@@ -323,7 +324,7 @@ test_getset_vl(hid_t fapl)
 
     /* Write an dataset of this type. */
     if((spaceid = H5Screate_simple(1, dims, NULL)) < 0) TEST_ERROR
-    if((datasetid = H5Dcreate2(fileid, "Dataset", typeid, spaceid, H5P_DEFAULT, plistid, H5P_DEFAULT)) < 0) TEST_ERROR
+    if((datasetid = H5Dcreate2(fileid, "Dataset", dtypeid, spaceid, H5P_DEFAULT, plistid, H5P_DEFAULT)) < 0) TEST_ERROR
 
     /* Close IDs (except datatype) */
     if(H5Dclose(datasetid) < 0) TEST_ERROR
@@ -340,7 +341,7 @@ test_getset_vl(hid_t fapl)
     if((plistid = H5Dget_create_plist(datasetid)) < 0) TEST_ERROR
 
     /* Query fill value */
-    if(H5Pget_fill_value(plistid, typeid, &f2) < 0) TEST_ERROR
+    if(H5Pget_fill_value(plistid, dtypeid, &f2) < 0) TEST_ERROR
 
     /* Verify that the fill value is the original value */
     if(HDstrcmp(f2, orig_fill_value)) TEST_ERROR
@@ -352,7 +353,7 @@ test_getset_vl(hid_t fapl)
     if(H5Dclose(datasetid) < 0) TEST_ERROR
     if(H5Fclose(fileid) < 0) TEST_ERROR
     if(H5Pclose(plistid) < 0) TEST_ERROR
-    if(H5Tclose(typeid) < 0) TEST_ERROR
+    if(H5Tclose(dtypeid) < 0) TEST_ERROR
 
     PASSED();
     return 0;
@@ -2094,6 +2095,266 @@ error:
     return 1;
 }
 
+/*-------------------------------------------------------------------------
+ * Function:	test_partalloc_cases
+ *
+ * Purpose:	Tests fill values read and write for datasets.
+ *
+ * Return:	Success:	0
+ *
+ *		Failure:	1
+ *
+ * Programmer:	Joel Plutchak
+ *              April 15, 2013
+ *
+ * Modifications:
+ * 		This function is called by test_rdwr to write and read
+ *		dataset for different cases of chunked datasets with 
+ *              unallocated chunks.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+static int
+test_partalloc_cases(hid_t file, hid_t dcpl, const char *dname, H5D_fill_time_t fill_time)
+{
+    hid_t	fspace=-1, dset1=-1, rspace = -1;
+    herr_t	ret;
+    hsize_t	ds_size[2] = {4, 4};
+    hsize_t	max_size[2] = {H5S_UNLIMITED,4};
+    hsize_t     chunk_size[2] = {1, 4};
+    int		fillval=(-1);
+    int     w_values[] = {42};            /* New value to be written */
+    int     f_values[4] = {88,88,88,88};  /* pre-seed read buffer with known values */
+    int     r_values[4] = {88,88,88,88};  /* pre-seed read buffer with known values */
+    hsize_t coord[1][2];                  /* coordinate(s) of point to write */
+    hsize_t start[2], count[2];
+
+    fillval = 0;   /* default fill value is zero */
+
+    /* Create dataset with 4x4 integer dataset */
+    if((fspace = H5Screate_simple(2, ds_size, max_size)) < 0)
+        goto error;
+    if((dset1 = H5Dcreate2(file, dname, H5T_NATIVE_INT, fspace, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+        goto error;
+
+    /*
+     * Select a point in the file dataspace.
+     */
+    coord[0][0]=0; coord[0][1]=0; 
+    if (H5Sselect_elements( fspace, H5S_SELECT_SET, (size_t)1, (const hsize_t *)coord))
+        goto error;
+    
+    /*
+     * Write single data point to the dataset.
+     */
+    if ((ret = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, fspace, H5P_DEFAULT, w_values))< 0) {
+        goto error;
+    }
+    
+    /* Read a line/chunk and make sure values are right */
+    rspace = H5Screate_simple(2, chunk_size, NULL);
+
+    /* Read the first row of elements: one known plus three fill */
+    start[0] = 0;
+    start[1] = 0;
+    count[0] = 1;
+    count[1] = 4;
+    if ((ret = H5Sselect_hyperslab(fspace, H5S_SELECT_SET, start, NULL, count, NULL)) < 0)
+        goto error;
+    if ((ret = H5Sselect_all(rspace)) < 0)
+	goto error;
+    if(H5Dread(dset1, H5T_NATIVE_INT, rspace, fspace, H5P_DEFAULT, &r_values) < 0)
+        goto error;
+
+    /* Read the third row of elements: all fill */
+    start[0] = 2;
+    start[1] = 0;
+    count[0] = 1;
+    count[1] = 4;
+    if ((ret = H5Sselect_hyperslab(fspace, H5S_SELECT_SET, start, NULL, count, NULL)) < 0)
+        goto error;
+    if(H5Dread(dset1, H5T_NATIVE_INT, rspace, fspace, H5P_DEFAULT, &f_values) < 0)
+        goto error;
+
+    if(fill_time != H5D_FILL_TIME_NEVER) {
+        /* check allocated chunk */
+        if ((r_values[0] != w_values[0]) ||
+                (r_values[1] != fillval) ||
+                (r_values[2] != fillval) ||
+                (r_values[3] != fillval)) {
+            H5_FAILED();
+            HDfprintf(stdout, "%u: Allocated chunk value read was not correct.\n", (unsigned)__LINE__);
+            printf("    {%ld,%ld,%ld,%ld} should be {%ld,%ld,%ld,%ld}\n",
+                    (long)r_values[0], (long)r_values[1],
+                    (long)r_values[2], (long)r_values[3],
+                    (long)w_values[0], (long)fillval,
+                    (long)fillval, (long)fillval );
+            goto error;
+        }
+        /* check unallocated chunk */
+        if ((f_values[0] != fillval) ||
+                (f_values[1] != fillval) ||
+                (f_values[2] != fillval) ||
+                (f_values[3] != fillval)) {
+            H5_FAILED();
+            HDfprintf(stdout, "%u: Unallocated chunk value read was not correct.\n", (unsigned)__LINE__);
+            printf("    {%ld,%ld,%ld,%ld} should be {%ld,%ld,%ld,%ld}\n",
+                    (long)f_values[0], (long)f_values[1],
+                    (long)f_values[2], (long)f_values[3],
+                    (long)fillval, (long)fillval,
+                    (long)fillval, (long)fillval );
+            goto error;
+        }
+        /* for the "never fill" case expect to get trash values, so skip */
+    }
+    else if(fill_time == H5D_FILL_TIME_NEVER) {
+    }
+
+    if(H5Sclose(rspace) < 0) goto error;
+    if(H5Dclose(dset1) < 0) goto error;
+    if(H5Sclose(fspace) < 0) goto error;
+    return 0;
+
+ error:
+    H5E_BEGIN_TRY {
+	H5Dclose(dset1);
+	H5Sclose(fspace);
+	H5Sclose(rspace);
+    } H5E_END_TRY;
+
+    return 1;
+}
+
+

+/*-------------------------------------------------------------------------
+ * Function:    test_partalloc
+ *
+ * Purpose:     Tests fill values for chunked, partially-allocated datasets.
+ *              Regression test for HDFFV-8247.
+ *
+ * Return:      Success:        0
+ *
+ *              Failure:        number of errors
+ *
+ * Programmer:  Joel Plutchak
+ *              April 15, 2013
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_partalloc(hid_t fapl, const char *base_name)
+{
+    char        filename[1024];
+    hid_t 	file=-1, dcpl=-1;
+    hsize_t     ch_size[2] = {1, 4};
+    int		nerrors=0;
+
+    TESTING("chunked dataset partially allocated I/O");
+
+    h5_fixname(base_name, fapl, filename, sizeof filename);
+    if((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+        goto error;
+
+    if((dcpl=H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error;
+    if(H5Pset_chunk(dcpl, 2, ch_size) < 0) goto error;
+
+    /* I. Test H5D_ALLOC_TIME_LATE space allocation cases */
+    if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "\nALLOC_TIME_LATE\n" );
+#endif
+
+    /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_ALLOC\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset1", H5D_FILL_TIME_ALLOC);
+	        
+    /* case for H5D_FILL_TIME_NEVER as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_NEVER\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset2", H5D_FILL_TIME_NEVER );
+
+    /* case for H5D_FILL_TIME_IFSET as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_IFSET\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset3", H5D_FILL_TIME_IFSET );
+
+    /* II.  Test H5D_ALLOC_TIME_INCR space allocation cases */
+    if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "\nALLOC_TIME_INCR\n" );
+#endif
+
+    /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_ALLOC\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset4", H5D_FILL_TIME_ALLOC );
+
+    /* case for H5D_FILL_TIME_NEVER as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_NEVER\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset5", H5D_FILL_TIME_NEVER );
+
+    /* case for H5D_FILL_TIME_IFSET as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_IFSET\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset6", H5D_FILL_TIME_IFSET );
+
+    /* III.  Test H5D_ALLOC_TIME_EARLY space allocation cases */
+    if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "\nALLOC_TIME_EARLY\n" );
+#endif
+
+    /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_ALLOC\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset7", H5D_FILL_TIME_ALLOC );
+
+    /* case for H5D_FILL_TIME_NEVER as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_NEVER\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset8", H5D_FILL_TIME_NEVER );
+
+    /* case for H5D_FILL_TIME_IFSET as fill write time and fill value to be default */
+    if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET) < 0) goto error;
+#ifdef DEBUG
+    fprintf( stdout, "   FILL_TIME_IFSET\n" );
+#endif
+    nerrors += test_partalloc_cases(file, dcpl, "dset9", H5D_FILL_TIME_IFSET );
+
+    if(nerrors)
+	goto error;
+    if(H5Pclose(dcpl) < 0) goto error;
+    if(H5Fclose(file) < 0) goto error;
+    PASSED();
+    return 0;
+
+ error:
+    H5E_BEGIN_TRY {
+        H5Pclose(dcpl);
+        H5Fclose(file);
+    } H5E_END_TRY;
+    return nerrors;
+}
+
 

 /*-------------------------------------------------------------------------
  * Function:	main
@@ -2166,6 +2427,7 @@ main(int argc, char *argv[])
             nerrors += test_create(my_fapl, FILENAME[0], H5D_CHUNKED);
             nerrors += test_rdwr  (my_fapl, FILENAME[2], H5D_CHUNKED);
             nerrors += test_extend(my_fapl, FILENAME[4], H5D_CHUNKED);
+            nerrors += test_partalloc(my_fapl, FILENAME[8]);
         } /* end if */
 
         /* Contiguous storage layout tests */
diff --git a/test/freespace.c b/test/freespace.c
index c0df4c8..9ab0d75 100644
--- a/test/freespace.c
+++ b/test/freespace.c
@@ -26,7 +26,7 @@
 #define H5F_PACKAGE
 #include "H5Fpkg.h"
 #include "H5Iprivate.h"
-#include "H5Vprivate.h"
+#include "H5VMprivate.h"
 
 #define FILENAME_LEN	1024
 
@@ -191,7 +191,7 @@ typedef struct {
     hsize_t	tot_sect_count;
 } TEST_iter_ud_t;
 
-static herr_t TEST_sects_cb(const H5FS_section_info_t *_sect, void *_udata);
+static herr_t TEST_sects_cb(H5FS_section_info_t *_sect, void *_udata);
 
 
 /*
@@ -340,9 +340,9 @@ error:
  * iteration callback
  */
 static herr_t
-TEST_sects_cb(const H5FS_section_info_t *_sect, void *_udata)
+TEST_sects_cb(H5FS_section_info_t *_sect, void *_udata)
 {
-    const TEST_free_section_t *sect = (const TEST_free_section_t *)_sect;
+    TEST_free_section_t *sect = (TEST_free_section_t *)_sect;
     TEST_iter_ud_t *udata = (TEST_iter_ud_t *)_udata;
     herr_t      ret_value = SUCCEED;    /* Return value */
 
diff --git a/test/gen_cross.c b/test/gen_cross.c
index 8cbb2f5..3b0a56f 100644
--- a/test/gen_cross.c
+++ b/test/gen_cross.c
@@ -24,6 +24,7 @@
  *  under hdf5/test/ directory.
  */
 
+#include <stdio.h>
 #include "h5test.h"
 
 #define H5FILE_NAME        "data.h5"
@@ -46,8 +47,10 @@
 #define DATASETNAME15      "Fletcher_float_data_be"
 #define DATASETNAME16      "Deflate_float_data_le"
 #define DATASETNAME17      "Deflate_float_data_be"
+#ifdef H5_HAVE_FILTER_SZIP
 #define DATASETNAME18      "Szip_float_data_le"
 #define DATASETNAME19      "Szip_float_data_be"
+#endif /* H5_HAVE_FILTER_SZIP */
 #define DATASETNAME20      "Shuffle_float_data_le"
 #define DATASETNAME21      "Shuffle_float_data_be"
 #define DATASETNAME22      "Nbit_float_data_le"
@@ -68,7 +71,9 @@ int create_scale_offset_dsets_int(hid_t fid, hid_t fsid, hid_t msid);
 int create_scale_offset_dsets_long_long(hid_t fid, hid_t fsid, hid_t msid);
 int create_fletcher_dsets_float(hid_t fid, hid_t fsid, hid_t msid);
 int create_deflate_dsets_float(hid_t fid, hid_t fsid, hid_t msid);
+#ifdef H5_HAVE_FILTER_SZIP
 int create_szip_dsets_float(hid_t fid, hid_t fsid, hid_t msid);
+#endif /* H5_HAVE_FILTER_SZIP */
 int create_shuffle_dsets_float(hid_t fid, hid_t fsid, hid_t msid);
 int create_nbit_dsets_float(hid_t fid, hid_t fsid, hid_t msid);
 
@@ -1014,6 +1019,7 @@ error:
 #endif /* H5_HAVE_FILTER_DEFLATE */
 }
 
+#ifdef H5_HAVE_FILTER_SZIP
 

 /*-------------------------------------------------------------------------
  * Function:    create_szip_dsets_float
@@ -1033,7 +1039,6 @@ error:
 int
 create_szip_dsets_float(hid_t fid, hid_t fsid, hid_t msid)
 {
-#ifdef H5_HAVE_FILTER_SZIP
     hid_t       dataset;         /* dataset handles */
     hid_t       dcpl;
     float       data[NX][NY];          /* data to write */
@@ -1095,15 +1100,8 @@ create_szip_dsets_float(hid_t fid, hid_t fsid, hid_t msid)
     if(H5Pclose(dcpl) < 0)
         TEST_ERROR
 
-#else /* H5_HAVE_FILTER_SZIP */
-    const char          *not_supported= "Szip filter is not enabled. Can't create the dataset.";
-
-    puts(not_supported);
-#endif /* H5_HAVE_FILTER_SZIP */
-
     return 0;
 
-#ifdef H5_HAVE_FILTER_SZIP
 error:
     H5E_BEGIN_TRY {
         H5Pclose(dcpl);
@@ -1111,8 +1109,8 @@ error:
     } H5E_END_TRY;
 
     return -1;
-#endif /* H5_HAVE_FILTER_SZIP */
 }
+#endif /* H5_HAVE_FILTER_SZIP */
 
 

 /*-------------------------------------------------------------------------
@@ -1424,9 +1422,13 @@ main (void)
     if(create_deflate_dsets_float(file, filespace, memspace) < 0)
         {H5_FAILED(); AT(); return 1;}
 
+#ifdef H5_HAVE_FILTER_SZIP
     /* Create a dataset of FLOAT with szip filter */
     if(create_szip_dsets_float(file, filespace, memspace) < 0)
         {H5_FAILED(); AT(); return 1;}
+#else /* H5_HAVE_FILTER_SZIP */
+    puts("Szip filter is not enabled. Can't create the dataset.");
+#endif /* H5_HAVE_FILTER_SZIP */
 
     /* Create a dataset of FLOAT with shuffle filter */
     if(create_shuffle_dsets_float(file, filespace, memspace) < 0)
diff --git a/test/gen_new_group.c b/test/gen_new_group.c
index 6d16031..b998913 100644
--- a/test/gen_new_group.c
+++ b/test/gen_new_group.c
@@ -31,13 +31,6 @@
 
 #define FILENAME "group_new.h5"
 
-#ifndef TRUE
-#define TRUE 1
-#endif /* TRUE */
-#ifndef FALSE
-#define FALSE 0
-#endif /* FALSE */
-
 int main(void)
 {
     hid_t fid = -1;             /* File ID */
diff --git a/test/h5test.c b/test/h5test.c
index 32d78bd..2afda36 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -75,7 +75,6 @@ char  *paraprefix = NULL;  /* for command line option para-prefix */
 MPI_Info    h5_io_info_g=MPI_INFO_NULL;/* MPI INFO object for IO */
 #endif
 
-#define FILENAME_BUF_SIZE       1024
 #define READ_BUF_SIZE           4096
 
 /*
@@ -132,63 +131,61 @@ h5_errors(hid_t estack, void UNUSED *client_data)
  * Programmer:  Albert Cheng
  *              May 28, 1998
  *
- * Modifications:
- *    Albert Cheng, 2000-09-09
- *    Added the explicite base_name argument to replace the
- *    global variable FILENAME.
- *
  *-------------------------------------------------------------------------
  */
 int
 h5_cleanup(const char *base_name[], hid_t fapl)
 {
-    char  filename[1024];
-    char  temp[2048];
-    int    i, j;
-    int    retval=0;
-    hid_t  driver;
+    int    retval = 0;
+
+    if(GetTestCleanup()) {
+        int i;
+
+        for(i = 0; base_name[i]; i++) {
+            char filename[1024];
+            char temp[2048];
+            hid_t driver;
 
-    if (GetTestCleanup()){
-  for (i = 0; base_name[i]; i++) {
-      if (h5_fixname(base_name[i], fapl, filename, sizeof(filename)) == NULL)
-    continue;
+            if(NULL == h5_fixname(base_name[i], fapl, filename, sizeof(filename)))
+                continue;
 
             driver = H5Pget_driver(fapl);
 
-      if (driver == H5FD_FAMILY) {
-    for (j = 0; /*void*/; j++) {
-        HDsnprintf(temp, sizeof temp, filename, j);
+            if(driver == H5FD_FAMILY) {
+                int j;
 
-        if (HDaccess(temp, F_OK) < 0)
+                for(j = 0; /*void*/; j++) {
+                    HDsnprintf(temp, sizeof temp, filename, j);
+
+                    if(HDaccess(temp, F_OK) < 0)
                         break;
 
-        HDremove(temp);
-    }
-      } else if (driver == H5FD_CORE) {
+                    HDremove(temp);
+                } /* end for */
+            } else if(driver == H5FD_CORE) {
                 hbool_t backing;        /* Whether the core file has backing store */
 
-                H5Pget_fapl_core(fapl,NULL,&backing);
+                H5Pget_fapl_core(fapl, NULL, &backing);
 
                 /* If the file was stored to disk with bacing store, remove it */
                 if(backing)
                     HDremove(filename);
+            } else if (driver == H5FD_MULTI) {
+                H5FD_mem_t mt;
 
-      } else if (driver == H5FD_MULTI) {
-    H5FD_mem_t mt;
-    assert(HDstrlen(multi_letters)==H5FD_MEM_NTYPES);
+                HDassert(HDstrlen(multi_letters)==H5FD_MEM_NTYPES);
 
-    for (mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,mt)) {
-        HDsnprintf(temp, sizeof temp, "%s-%c.h5",
-             filename, multi_letters[mt]);
-        HDremove(temp); /*don't care if it fails*/
-    }
-      } else {
-    HDremove(filename);
-      }
-  }
+                for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,mt)) {
+                    HDsnprintf(temp, sizeof temp, "%s-%c.h5", filename, multi_letters[mt]);
+                    HDremove(temp); /*don't care if it fails*/
+                } /* end for */
+            } else {
+                HDremove(filename);
+            }
+        } /* end for */
 
-  retval = 1;
-    }
+        retval = 1;
+    } /* end if */
 
     H5Pclose(fapl);
     return retval;
@@ -205,8 +202,6 @@ h5_cleanup(const char *base_name[], hid_t fapl)
  * Programmer:  Robb Matzke
  *              Friday, November 20, 1998
  *
- * Modifications:
- *
  *-------------------------------------------------------------------------
  */
 void
@@ -268,16 +263,6 @@ h5_reset(void)
  * Programmer:  Robb Matzke
  *              Thursday, November 19, 1998
  *
- * Modifications:
- *    Robb Matzke, 1999-08-03
- *    Modified to use the virtual file layer.
- *
- *    Albert Cheng, 2000-01-25
- *    Added prefix for parallel test files.
- *
- *     Albert Cheng, 2003-05-08
- *    Changed the default parallel prefix back to NULL but added
- *              an explanation remark of $HDF5_PARAPREFIX.
  *-------------------------------------------------------------------------
  */
 char *
@@ -288,42 +273,41 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
     char           *ptr, last = '\0';
     size_t          i, j;
     hid_t           driver = -1;
-    int        isppdriver = 0;  /* if the driver is MPI parallel */
+    int             isppdriver = 0;  /* if the driver is MPI parallel */
 
     if (!base_name || !fullname || size < 1)
         return NULL;
 
-    memset(fullname, 0, size);
+    HDmemset(fullname, 0, size);
 
     /* figure out the suffix */
-    if (H5P_DEFAULT != fapl) {
-  if ((driver = H5Pget_driver(fapl)) < 0)
+    if(H5P_DEFAULT != fapl) {
+        if((driver = H5Pget_driver(fapl)) < 0)
             return NULL;
 
-  if (H5FD_FAMILY == driver)
-      suffix = "%05d.h5";
-  else if (H5FD_MULTI == driver)
-      suffix = NULL;
+        if(H5FD_FAMILY == driver)
+            suffix = "%05d.h5";
+        else if (H5FD_MULTI == driver)
+            suffix = NULL;
     }
 
     /* Must first check fapl is not H5P_DEFAULT (-1) because H5FD_XXX
      * could be of value -1 if it is not defined.
      */
-    isppdriver = H5P_DEFAULT != fapl &&
-  (H5FD_MPIO==driver || H5FD_MPIPOSIX==driver);
+    isppdriver = H5P_DEFAULT != fapl && (H5FD_MPIO==driver);
 
     /* Check HDF5_NOCLEANUP environment setting.
      * (The #ifdef is needed to prevent compile failure in case MPI is not
      * configured.)
      */
-    if (isppdriver){
+    if(isppdriver) {
 #ifdef H5_HAVE_PARALLEL
-  if (getenv_all(MPI_COMM_WORLD, 0, "HDF5_NOCLEANUP"))
-      SetTestNoCleanup();
+        if(getenv_all(MPI_COMM_WORLD, 0, "HDF5_NOCLEANUP"))
+            SetTestNoCleanup();
 #endif  /* H5_HAVE_PARALLEL */
-    }else{
-  if (HDgetenv("HDF5_NOCLEANUP"))
-      SetTestNoCleanup();
+    } else {
+        if(HDgetenv("HDF5_NOCLEANUP"))
+            SetTestNoCleanup();
     }
 
     /* Check what prefix to use for test files. Process HDF5_PARAPREFIX and
@@ -332,7 +316,7 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
      * (The #ifdef is needed to prevent compile failure in case MPI is not
      * configured.)
      */
-    if (isppdriver){
+    if(isppdriver) {
 #ifdef H5_HAVE_PARALLEL
   /*
          * For parallel:
@@ -341,45 +325,45 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
    */
         static int explained = 0;
 
-  prefix = (paraprefix ? paraprefix : getenv_all(MPI_COMM_WORLD, 0, "HDF5_PARAPREFIX"));
+        prefix = (paraprefix ? paraprefix : getenv_all(MPI_COMM_WORLD, 0, "HDF5_PARAPREFIX"));
 
-  if (!prefix && !explained) {
-      /* print hint by process 0 once. */
-      int mpi_rank;
+        if (!prefix && !explained) {
+            /* print hint by process 0 once. */
+            int mpi_rank;
 
-      MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
+            MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
 
-      if (mpi_rank == 0)
-    printf("*** Hint ***\n"
-       "You can use environment variable HDF5_PARAPREFIX to "
-       "run parallel test files in a\n"
-       "different directory or to add file type prefix. E.g.,\n"
-       "   HDF5_PARAPREFIX=pfs:/PFS/user/me\n"
-       "   export HDF5_PARAPREFIX\n"
-       "*** End of Hint ***\n");
+            if (mpi_rank == 0)
+                printf("*** Hint ***\n"
+                        "You can use environment variable HDF5_PARAPREFIX to "
+                        "run parallel test files in a\n"
+                        "different directory or to add file type prefix. E.g.,\n"
+                        "   HDF5_PARAPREFIX=pfs:/PFS/user/me\n"
+                        "   export HDF5_PARAPREFIX\n"
+                        "*** End of Hint ***\n");
 
-      explained = TRUE;
+            explained = TRUE;
 #ifdef HDF5_PARAPREFIX
             prefix = HDF5_PARAPREFIX;
 #endif  /* HDF5_PARAPREFIX */
-  }
+        }
 #endif  /* H5_HAVE_PARALLEL */
     } else {
-  /*
+        /*
          * For serial:
          *      First use the environment variable, then try the constant
-   */
-  prefix = HDgetenv("HDF5_PREFIX");
+        */
+        prefix = HDgetenv("HDF5_PREFIX");
 
 #ifdef HDF5_PREFIX
-  if (!prefix)
+        if (!prefix)
             prefix = HDF5_PREFIX;
 #endif  /* HDF5_PREFIX */
     }
 
     /* Prepend the prefix value to the base name */
     if (prefix && *prefix) {
-  if (isppdriver){
+        if (isppdriver) {
             /* This is a parallel system */
             char *subdir;
 
@@ -406,9 +390,11 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
                 }
             }
 
-            if (!fullname[0])
+            if (!fullname[0]) {
                 /* We didn't append the prefix yet */
-                HDstrncpy(fullname, prefix, MIN(HDstrlen(prefix), size));
+                HDstrncpy(fullname, prefix, size);
+                fullname[size -1] = '\0';
+            }
 
             if (HDstrlen(fullname) + HDstrlen(base_name) + 1 < size) {
                 /*
@@ -525,64 +511,71 @@ h5_fileaccess(void)
     /* First use the environment variable, then the constant */
     val = HDgetenv("HDF5_DRIVER");
 #ifdef HDF5_DRIVER
-    if (!val) val = HDF5_DRIVER;
+    if (!val)
+        val = HDF5_DRIVER;
 #endif
 
-    if ((fapl=H5Pcreate(H5P_FILE_ACCESS))<0) return -1;
-    if (!val || !*val) return fapl; /*use default*/
+    if ((fapl=H5Pcreate(H5P_FILE_ACCESS))<0)
+        return -1;
+    if (!val || !*val)
+        return fapl; /*use default*/
 
     HDstrncpy(s, val, sizeof s);
     s[sizeof(s)-1] = '\0';
     if (NULL==(name=HDstrtok(s, " \t\n\r"))) return fapl;
 
     if (!HDstrcmp(name, "sec2")) {
-  /* Unix read() and write() system calls */
-  if (H5Pset_fapl_sec2(fapl)<0) return -1;
+        /* Unix read() and write() system calls */
+        if (H5Pset_fapl_sec2(fapl)<0) return -1;
     } else if (!HDstrcmp(name, "stdio")) {
-  /* Standard C fread() and fwrite() system calls */
-  if (H5Pset_fapl_stdio(fapl)<0) return -1;
+        /* Standard C fread() and fwrite() system calls */
+        if (H5Pset_fapl_stdio(fapl)<0) return -1;
     } else if (!HDstrcmp(name, "core")) {
-  /* In-core temporary file with 1MB increment */
-  if (H5Pset_fapl_core(fapl, (size_t)1, TRUE)<0) return -1;
-    } else if (!HDstrcmp(name, "split")) {
-  /* Split meta data and raw data each using default driver */
-  if (H5Pset_fapl_split(fapl,
+        /* In-memory driver settings (backing store on, 1 MB increment) */
+        if (H5Pset_fapl_core(fapl, (size_t)1, TRUE)<0) return -1;
+    } else if (!HDstrcmp(name, "core_paged")) {
+        /* In-memory driver with write tracking and paging on */
+        if (H5Pset_fapl_core(fapl, (size_t)1, TRUE)<0) return -1;
+        if (H5Pset_core_write_tracking(fapl, TRUE, (size_t)524288)<0) return -1;
+     } else if (!HDstrcmp(name, "split")) {
+        /* Split meta data and raw data each using default driver */
+        if (H5Pset_fapl_split(fapl,
             "-m.h5", H5P_DEFAULT,
             "-r.h5", H5P_DEFAULT)<0)
-      return -1;
+            return -1;
     } else if (!HDstrcmp(name, "multi")) {
-  /* Multi-file driver, general case of the split driver */
-  H5FD_mem_t memb_map[H5FD_MEM_NTYPES];
-  hid_t memb_fapl[H5FD_MEM_NTYPES];
-  const char *memb_name[H5FD_MEM_NTYPES];
-  char sv[H5FD_MEM_NTYPES][1024];
-  haddr_t memb_addr[H5FD_MEM_NTYPES];
+        /* Multi-file driver, general case of the split driver */
+        H5FD_mem_t memb_map[H5FD_MEM_NTYPES];
+        hid_t memb_fapl[H5FD_MEM_NTYPES];
+        const char *memb_name[H5FD_MEM_NTYPES];
+        char sv[H5FD_MEM_NTYPES][1024];
+        haddr_t memb_addr[H5FD_MEM_NTYPES];
         H5FD_mem_t  mt;
 
-  HDmemset(memb_map, 0, sizeof memb_map);
-  HDmemset(memb_fapl, 0, sizeof memb_fapl);
-  HDmemset(memb_name, 0, sizeof memb_name);
-  HDmemset(memb_addr, 0, sizeof memb_addr);
-
-  HDassert(HDstrlen(multi_letters)==H5FD_MEM_NTYPES);
-  for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, mt)) {
-      memb_fapl[mt] = H5P_DEFAULT;
-      sprintf(sv[mt], "%%s-%c.h5", multi_letters[mt]);
-      memb_name[mt] = sv[mt];
-      memb_addr[mt] = (haddr_t)MAX(mt - 1, 0) * (HADDR_MAX / 10);
-  } /* end for */
-
-  if (H5Pset_fapl_multi(fapl, memb_map, memb_fapl, memb_name,
-            memb_addr, FALSE)<0) {
-      return -1;
-  }
+        HDmemset(memb_map, 0, sizeof memb_map);
+        HDmemset(memb_fapl, 0, sizeof memb_fapl);
+        HDmemset(memb_name, 0, sizeof memb_name);
+        HDmemset(memb_addr, 0, sizeof memb_addr);
+
+        HDassert(HDstrlen(multi_letters)==H5FD_MEM_NTYPES);
+        for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, mt)) {
+          memb_fapl[mt] = H5P_DEFAULT;
+            sprintf(sv[mt], "%%s-%c.h5", multi_letters[mt]);
+            memb_name[mt] = sv[mt];
+            memb_addr[mt] = (haddr_t)MAX(mt - 1, 0) * (HADDR_MAX / 10);
+        } /* end for */
+
+        if (H5Pset_fapl_multi(fapl, memb_map, memb_fapl, memb_name,
+          memb_addr, FALSE)<0) {
+            return -1;
+        }
     } else if (!HDstrcmp(name, "family")) {
         hsize_t fam_size = 100*1024*1024; /*100 MB*/
 
-  /* Family of files, each 1MB and using the default driver */
-  if ((val=HDstrtok(NULL, " \t\n\r")))
-      fam_size = (hsize_t)(HDstrtod(val, NULL) * 1024*1024);
-  if (H5Pset_fapl_family(fapl, fam_size, H5P_DEFAULT)<0)
+        /* Family of files, each 1MB and using the default driver */
+        if ((val=HDstrtok(NULL, " \t\n\r")))
+            fam_size = (hsize_t)(HDstrtod(val, NULL) * 1024*1024);
+        if (H5Pset_fapl_family(fapl, fam_size, H5P_DEFAULT)<0)
             return -1;
     } else if (!HDstrcmp(name, "log")) {
         unsigned log_flags = H5FD_LOG_LOC_IO | H5FD_LOG_ALLOC;
@@ -592,20 +585,21 @@ h5_fileaccess(void)
             log_flags = (unsigned)HDstrtol(val, NULL, 0);
 
         if (H5Pset_fapl_log(fapl, NULL, log_flags, (size_t)0) < 0)
-      return -1;
+            return -1;
     } else if (!HDstrcmp(name, "direct")) {
 #ifdef H5_HAVE_DIRECT
-  /* Linux direct read() and write() system calls.  Set memory boundary, file block size,
-   * and copy buffer size to the default values. */
-  if (H5Pset_fapl_direct(fapl, 1024, 4096, 8*4096)<0) return -1;
+        /* Linux direct read() and write() system calls.  Set memory boundary, file block size,
+         * and copy buffer size to the default values. */
+        if (H5Pset_fapl_direct(fapl, 1024, 4096, 8*4096)<0)
+            return -1;
 #endif
     } else if(!HDstrcmp(name, "latest")) {
-  /* use the latest format */
-  if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
+        /* use the latest format */
+        if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
             return -1;
     } else {
-  /* Unknown driver */
-  return -1;
+        /* Unknown driver */
+        return -1;
     }
 
     return fapl;
@@ -877,7 +871,7 @@ h5_get_file_size(const char *filename, hid_t fapl)
         /* Check for simple cases */
         if(driver == H5FD_SEC2 || driver == H5FD_STDIO || driver == H5FD_CORE ||
 #ifdef H5_HAVE_PARALLEL
-                driver == H5FD_MPIO || driver == H5FD_MPIPOSIX ||
+                driver == H5FD_MPIO || 
 #endif /* H5_HAVE_PARALLEL */
 #ifdef H5_HAVE_WINDOWS
                 driver == H5FD_WINDOWS ||
diff --git a/test/hyperslab.c b/test/hyperslab.c
index fdeaffd..5e2c109 100644
--- a/test/hyperslab.c
+++ b/test/hyperslab.c
@@ -25,7 +25,7 @@
 #include "h5test.h"
 #include "H5private.h"
 #include "H5Eprivate.h"
-#include "H5Vprivate.h"
+#include "H5VMprivate.h"
 
 #define TEST_SMALL	0x0001
 #define TEST_MEDIUM	0x0002
@@ -137,7 +137,7 @@ print_ref(size_t nx, size_t ny, size_t nz)
 /*-------------------------------------------------------------------------
  * Function:	test_fill
  *
- * Purpose:	Tests the H5V_hyper_fill() function.
+ * Purpose:	Tests the H5VM_hyper_fill() function.
  *
  * Return:	Success:	SUCCEED
  *
@@ -226,7 +226,7 @@ test_fill(size_t nx, size_t ny, size_t nz,
                                 ref_value += fill_value * dx * dy * dz;
 
                                 /* Fill the hyperslab with some value */
-                                H5V_hyper_fill(ndims, hs_size, dst_size, dst_offset, dst, fill_value);
+                                H5VM_hyper_fill(ndims, hs_size, dst_size, dst_offset, dst, fill_value);
 
                                 /*
                                  * Sum the array and compare it to the
@@ -285,7 +285,7 @@ error:
 /*-------------------------------------------------------------------------
  * Function:	test_copy
  *
- * Purpose:	Tests H5V_hyper_copy().
+ * Purpose:	Tests H5VM_hyper_copy().
  *
  *		The NX, NY, and NZ arguments are the size for the source and
  *		destination arrays.  You may pass zero for NZ or for NY and
@@ -466,7 +466,7 @@ test_copy(int mode,
                              * Copy a hyperslab from the global array to the
                              * local array.
                              */
-                            H5V_hyper_copy(ndims, hs_size, dst_size, dst_offset, dst, src_size, src_offset, src);
+                            H5VM_hyper_copy(ndims, hs_size, dst_size, dst_offset, dst, src_size, src_offset, src);
 
                             /*
                              * Sum the destination hyperslab.  It should be
@@ -569,7 +569,7 @@ error:
 /*-------------------------------------------------------------------------
  * Function:	test_multifill
  *
- * Purpose:	Tests the H5V_stride_copy() function by using it to fill a
+ * Purpose:	Tests the H5VM_stride_copy() function by using it to fill a
  *		hyperslab by replicating a multi-byte sequence.	 This might
  *		be useful to initialize an array of structs with a default
  *		struct value, or to initialize an array of floating-point
@@ -634,7 +634,7 @@ test_multifill(size_t nx)
      * Copy the fill value into each element
      */
     size = nx;
-    H5V_stride_copy(1, (hsize_t)sizeof(double), &size, &dst_stride,
+    H5VM_stride_copy(1, (hsize_t)sizeof(double), &size, &dst_stride,
             &(dst[0].mid), &src_stride, &(fill.mid));
 
     /*
@@ -690,7 +690,7 @@ error:
 /*-------------------------------------------------------------------------
  * Function:	test_endian
  *
- * Purpose:	Tests the H5V_stride_copy() function by using it to copy an
+ * Purpose:	Tests the H5VM_stride_copy() function by using it to copy an
  *		array of integers and swap the byte ordering from little
  *		endian to big endian or vice versa depending on the hardware.
  *
@@ -733,7 +733,7 @@ test_endian(size_t nx)
     size[1] = 4;
 
     /* Copy the array */
-    H5V_stride_copy_s(2, (hsize_t)1, size, dst_stride, dst + 3, src_stride, src);
+    H5VM_stride_copy_s(2, (hsize_t)1, size, dst_stride, dst + 3, src_stride, src);
 
     /* Compare */
     for(i = 0; i < nx; i++) {
@@ -824,10 +824,10 @@ test_transpose(size_t nx, size_t ny)
 
     /* Copy and transpose */
     if(nx == ny)
-        H5V_stride_copy(2, (hsize_t)sizeof(*src), size, dst_stride, dst,
+        H5VM_stride_copy(2, (hsize_t)sizeof(*src), size, dst_stride, dst,
                 src_stride, src);
     else
-        H5V_stride_copy(2, (hsize_t)sizeof(*src), size, dst_stride, dst,
+        H5VM_stride_copy(2, (hsize_t)sizeof(*src), size, dst_stride, dst,
                 src_stride, src);
 
     /* Check */
@@ -878,7 +878,7 @@ error:
 /*-------------------------------------------------------------------------
  * Function:	test_sub_super
  *
- * Purpose:	Tests H5V_stride_copy() to reduce the resolution of an image
+ * Purpose:	Tests H5VM_stride_copy() to reduce the resolution of an image
  *		by copying half the pixels in the X and Y directions.  Then
  *		we use the small image and duplicate every pixel to result in
  *		a 2x2 square.
@@ -929,7 +929,7 @@ test_sub_super(size_t nx, size_t ny)
     dst_stride[1] = 1;
 
     /* Copy */
-    H5V_stride_copy(2, (hsize_t)sizeof(uint8_t), size, dst_stride, half,
+    H5VM_stride_copy(2, (hsize_t)sizeof(uint8_t), size, dst_stride, half,
             src_stride, full);
 
     /* Check */
@@ -978,7 +978,7 @@ test_sub_super(size_t nx, size_t ny)
     dst_stride[3] = sizeof(uint8_t);
 
     /* Copy */
-    H5V_stride_copy(4, (hsize_t)sizeof(uint8_t), size, dst_stride, twice,
+    H5VM_stride_copy(4, (hsize_t)sizeof(uint8_t), size, dst_stride, twice,
             src_stride, half);
 
     /* Check */
@@ -1038,7 +1038,7 @@ error:
 /*-------------------------------------------------------------------------
  * Function:	test_array_fill
  *
- * Purpose:	Tests H5V_array_fill routine by copying a multibyte value
+ * Purpose:	Tests H5VM_array_fill routine by copying a multibyte value
  *              (an array of ints, in our case) into all the elements of an
  *              array.
  *
@@ -1072,7 +1072,7 @@ test_array_fill(size_t lo, size_t hi)
 
     /* Fill */
     for(w = lo; w <= hi; w++) {
-        H5V_array_fill(dst, src, sizeof(src), w);
+        H5VM_array_fill(dst, src, sizeof(src), w);
 
         /* Check */
         for(u = 0; u < w; u++)
@@ -1099,7 +1099,7 @@ error:
 /*-------------------------------------------------------------------------
  * Function:	test_array_offset_n_calc
  *
- * Purpose:	Tests H5V_array_offset and H5V_array_calc routines by comparing
+ * Purpose:	Tests H5VM_array_offset and H5VM_array_calc routines by comparing
  *              computed array offsets against calculated ones and then going
  *              back to the coordinates from the offset and checking those.
  *
@@ -1149,14 +1149,14 @@ test_array_offset_n_calc(size_t n, size_t x, size_t y, size_t z)
         coords[2] = (hssize_t)(HDrandom() % x);
 
         /* Get offset of coordinate */
-        off = H5V_array_offset(ARRAY_OFFSET_NDIMS, dims, coords);
+        off = H5VM_array_offset(ARRAY_OFFSET_NDIMS, dims, coords);
 
         /* Check offset of coordinate */
         if(a[off] != off)
             TEST_ERROR
 
         /* Get coordinates of offset */
-        if(H5V_array_calc(off, ARRAY_OFFSET_NDIMS, dims, new_coords) < 0)
+        if(H5VM_array_calc(off, ARRAY_OFFSET_NDIMS, dims, new_coords) < 0)
             TEST_ERROR
 
         /* Check computed coordinates */
diff --git a/test/istore.c b/test/istore.c
index f99e835..d088fe8 100644
--- a/test/istore.c
+++ b/test/istore.c
@@ -31,7 +31,7 @@
 #include "H5Gprivate.h"
 #include "H5Oprivate.h"
 #include "H5Pprivate.h"
-#include "H5Vprivate.h"
+#include "H5VMprivate.h"
 
 const char *FILENAME[] = {
     "istore",
@@ -308,7 +308,7 @@ test_extend(hid_t f, const char *prefix,
     if((fspace=H5Dget_space(dataset)) < 0) TEST_ERROR;
 
     for (ctr = 0;
-	 H5V_vector_lt_u((unsigned)ndims, max_corner, whole_size);
+	 H5VM_vector_lt_u((unsigned)ndims, max_corner, whole_size);
 	 ctr++) {
 
 	/* Size and location */
@@ -318,7 +318,7 @@ test_extend(hid_t f, const char *prefix,
 	    nelmts = 1;
 	} else {
 	    for (i=0, nelmts=1; i<(size_t)ndims; i++) {
-		if (ctr % ndims == i) {
+		if (ctr % (size_t)ndims == i) {
 		    offset[i] = max_corner[i];
 		    size[i] = MIN(1, whole_size[i] - offset[i]);
 		} else {
@@ -388,9 +388,9 @@ test_extend(hid_t f, const char *prefix,
         if(H5Sclose(mspace) < 0) TEST_ERROR;
 
 	/* Write to `whole' buffer for later checking */
-	H5V_hyper_copy((unsigned)ndims, size,
+	H5VM_hyper_copy((unsigned)ndims, size,
 		       whole_size, offset, whole,	/*dst*/
-		       size, H5V_ZERO, buf);		/*src*/
+		       size, H5VM_ZERO, buf);		/*src*/
 
 	/* Update max corner */
 	for (i=0; i<(size_t)ndims; i++)
diff --git a/test/links.c b/test/links.c
index b66c495..ef854f4 100644
--- a/test/links.c
+++ b/test/links.c
@@ -4001,6 +4001,9 @@ external_set_elink_acc_flags(hid_t fapl, hbool_t new_format)
     /* Create a group through the external link using gapl (should succeed) */
     if((group = H5Gcreate2(file1, "/ext_link/group", H5P_DEFAULT, H5P_DEFAULT, gapl)) < 0) TEST_ERROR
 
+    /* Close group */
+    if(H5Gclose(group) < 0) TEST_ERROR
+
     /* Unset elink access flags on gapl */
     if(H5Pset_elink_acc_flags(gapl, H5F_ACC_DEFAULT) < 0) TEST_ERROR
 
@@ -4028,8 +4031,7 @@ external_set_elink_acc_flags(hid_t fapl, hbool_t new_format)
     } H5E_END_TRY;
     if(ret != FAIL) TEST_ERROR
 
-    /* Close file1 and group */
-    if(H5Gclose(group) < 0) TEST_ERROR
+    /* Close file1 */
     if(H5Fclose(file1) < 0) TEST_ERROR
 
     /* Verify that H5Fcreate and H5Fopen reject H5F_ACC_DEFAULT */
@@ -4143,11 +4145,10 @@ external_set_elink_cb(hid_t fapl, hbool_t new_format)
     op_data.target_file = filename2;
     /* Core file driver has issues when used as the member file driver for a family file */
     /* Family file driver cannot be used with family or multi drivers for member files */
-    /* Also disable parellel member drivers, because IS_H5FD_MPI whould report FALSE, causing problems */
+    /* Also disable parallel member drivers, because IS_H5FD_MPI whould report FALSE, causing problems */
     base_driver = H5Pget_driver(fapl);
     op_data.base_fapl = (base_driver == H5FD_FAMILY || base_driver ==  H5FD_MULTI
-            || base_driver == H5FD_MPIO || base_driver == H5FD_MPIPOSIX
-            || base_driver == H5FD_CORE) ? H5P_DEFAULT : fapl;
+            || base_driver == H5FD_MPIO || base_driver == H5FD_CORE) ? H5P_DEFAULT : fapl;
     op_data.fam_size = ELINK_CB_FAM_SIZE;
     op_data.code = 0;
 
diff --git a/test/mf.c b/test/mf.c
index c2ecc09..b5d1255 100644
--- a/test/mf.c
+++ b/test/mf.c
@@ -35,7 +35,7 @@
 
 #include "H5FLprivate.h"
 #include "H5Iprivate.h"
-#include "H5Vprivate.h"
+#include "H5VMprivate.h"
 
 #define FILENAME_LEN		1024
 
diff --git a/test/tarray.c b/test/tarray.c
index 2f0b002..2d6581b 100644
--- a/test/tarray.c
+++ b/test/tarray.c
@@ -637,7 +637,7 @@ test_array_compound_atomic(void)
     CHECK(mname, NULL, "H5Tget_member_name");
     if(HDstrcmp(mname, "i") != 0)
         TestErrPrintf("Compound field name doesn't match!, mname=%s\n", mname);
-    free(mname);
+    H5free_memory(mname);
 
     /* Check the 1st field's offset */
     off = H5Tget_member_offset(tid2, 0);
@@ -656,7 +656,7 @@ test_array_compound_atomic(void)
     CHECK(mname, NULL, "H5Tget_member_name");
     if(HDstrcmp(mname, "f") != 0)
         TestErrPrintf("Compound field name doesn't match!, mname=%s\n", mname);
-    free(mname);
+    H5free_memory(mname);
 
     /* Check the 2nd field's offset */
     off = H5Tget_member_offset(tid2, 1);
@@ -849,7 +849,7 @@ test_array_compound_array(void)
     CHECK(mname, NULL, "H5Tget_member_name");
     if(HDstrcmp(mname,"i")!=0)
         TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-    free(mname);
+    H5free_memory(mname);
 
     /* Check the 1st field's offset */
     off=H5Tget_member_offset(tid2,0);
@@ -868,7 +868,7 @@ test_array_compound_array(void)
     CHECK(mname, NULL, "H5Tget_member_name");
     if(HDstrcmp(mname,"f")!=0)
         TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-    free(mname);
+    H5free_memory(mname);
 
     /* Check the 2nd field's offset */
     off=H5Tget_member_offset(tid2,1);
@@ -1855,7 +1855,7 @@ test_compat(void)
         CHECK(mname, NULL, "H5Tget_member_name");
         if(HDstrcmp(mname,"i")!=0)
             TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-        free(mname);
+        H5free_memory(mname);
 
         /* Check the 1st field's offset */
         off=H5Tget_member_offset(tid1,0);
@@ -1874,7 +1874,7 @@ test_compat(void)
         CHECK(mname, NULL, "H5Tget_member_name");
         if(HDstrcmp(mname,"f")!=0)
             TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-        free(mname);
+        H5free_memory(mname);
 
         /* Check the 2nd field's offset */
         off=H5Tget_member_offset(tid1,1);
@@ -1893,7 +1893,7 @@ test_compat(void)
         CHECK(mname, NULL, "H5Tget_member_name");
         if(HDstrcmp(mname,"l")!=0)
             TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-        free(mname);
+        H5free_memory(mname);
 
         /* Check the 3rd field's offset */
         off=H5Tget_member_offset(tid1,2);
@@ -1937,7 +1937,7 @@ test_compat(void)
         CHECK(mname, NULL, "H5Tget_member_name");
         if(mname && HDstrcmp(mname,"i")!=0)
             TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-        if(mname) free(mname);
+        if(mname) H5free_memory(mname);
 
         /* Check the 1st field's offset */
         off=H5Tget_member_offset(tid1,0);
@@ -1956,7 +1956,7 @@ test_compat(void)
         CHECK(mname, NULL, "H5Tget_member_name");
         if(mname && HDstrcmp(mname,"f")!=0)
             TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-        if(mname) free(mname);
+        if(mname) H5free_memory(mname);
 
         /* Check the 2nd field's offset */
         off=H5Tget_member_offset(tid1,1);
@@ -2001,7 +2001,7 @@ test_compat(void)
         CHECK(mname, NULL, "H5Tget_member_name");
         if(mname && HDstrcmp(mname,"l")!=0)
             TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-        if(mname) free(mname);
+        if(mname) H5free_memory(mname);
 
         /* Check the 3rd field's offset */
         off=H5Tget_member_offset(tid1,2);
@@ -2046,7 +2046,7 @@ test_compat(void)
         CHECK(mname, NULL, "H5Tget_member_name");
         if(mname && HDstrcmp(mname,"d")!=0)
             TestErrPrintf("Compound field name doesn't match!, mname=%s\n",mname);
-        if(mname) free(mname);
+        if(mname) H5free_memory(mname);
 
         /* Check the 4th field's offset */
         off=H5Tget_member_offset(tid1,3);
diff --git a/test/tattr.c b/test/tattr.c
index b23080c..e9430fe 100644
--- a/test/tattr.c
+++ b/test/tattr.c
@@ -829,7 +829,7 @@ test_attr_compound_read(hid_t fapl)
                 HDstrcmp(fieldname, ATTR4_FIELDNAME2) ||
                 HDstrcmp(fieldname, ATTR4_FIELDNAME3)))
             TestErrPrintf("invalid field name for field #%d: %s\n", i, fieldname);
-        free(fieldname);
+        H5free_memory(fieldname);
       } /* end for */
     offset = H5Tget_member_offset(type, 0);
     VERIFY(offset, attr4_field1_off, "H5Tget_member_offset");
diff --git a/test/testerror.sh.in b/test/testerror.sh.in
index eb01fb1..7c03414 100644
--- a/test/testerror.sh.in
+++ b/test/testerror.sh.in
@@ -61,10 +61,6 @@ TEST() {
    # Run test.
    TESTING $TEST_ERR
    (
-      echo "#############################"
-      echo "Expected output for $TEST_ERR" 
-      echo "#############################"
-
       # Skip the plugin for testing missing filter.
       $ENVCMD $RUNSERIAL $TEST_ERR_BIN 
    ) >$actual 2>$actual_err
diff --git a/test/testfiles/err_compat_1 b/test/testfiles/err_compat_1
index 5f4fd47..3a85b86 100644
--- a/test/testfiles/err_compat_1
+++ b/test/testfiles/err_compat_1
@@ -1,6 +1,3 @@
-#############################
-Expected output for err_compat
-#############################
 Testing error API H5Eset/get_auto                                     Testing error API based on data I/O                                   All error API tests passed.
    This program tests the Error API compatible with HDF5 version (number).  There're supposed to be some error messages
 ********* Print error stack in HDF5 default way *********
diff --git a/test/testfiles/err_compat_2 b/test/testfiles/err_compat_2
index be6c40d..75e8769 100644
--- a/test/testfiles/err_compat_2
+++ b/test/testfiles/err_compat_2
@@ -1,4 +1 @@
-#############################
-Expected output for err_compat
-#############################
 Test skipped because backward compatbility with v1.6 is NOT configured in
diff --git a/test/testfiles/error_test_1 b/test/testfiles/error_test_1
index ddc995e..0acd288 100644
--- a/test/testfiles/error_test_1
+++ b/test/testfiles/error_test_1
@@ -1,6 +1,3 @@
-#############################
-Expected output for error_test
-#############################
    This program tests the Error API.  There're supposed to be some error messages
 ********* Print error stack in HDF5 default way *********
 Second Test-DIAG: Error detected in Second Program (1.0) thread (IDs):
diff --git a/test/testfiles/error_test_2 b/test/testfiles/error_test_2
index f9d7317..6852f6f 100644
--- a/test/testfiles/error_test_2
+++ b/test/testfiles/error_test_2
@@ -1,4 +1 @@
-#############################
-Expected output for error_test
-#############################
 Test skipped because backward compatbility with v1.6 is configured in
diff --git a/test/testfiles/links_env.out b/test/testfiles/links_env.out
index 3ca9b99..3f10fc6 100644
--- a/test/testfiles/links_env.out
+++ b/test/testfiles/links_env.out
@@ -1,6 +1,3 @@
-#############################
-Expected output for links_env
-#############################
 Testing external links via environment variable                        PASSED
 Testing external links via environment variable (w/new group format)   PASSED
 All external Link (HDF5_EXT_PREFIX) tests passed.
diff --git a/test/testhdf5.c b/test/testhdf5.c
index f14c2c3..eade815 100644
--- a/test/testhdf5.c
+++ b/test/testhdf5.c
@@ -86,6 +86,11 @@ main(int argc, char *argv[])
     if (GetTestCleanup() && !getenv("HDF5_NOCLEANUP"))
         TestCleanup();
 
-    return (GetTestNumErrs());
+    /* Exit failure if errors encountered; else exit success. */
+    /* No need to print anything since PerformTests() already does. */
+    if (GetTestNumErrs() > 0)
+	exit(EXIT_FAILURE);
+    else
+	exit(EXIT_SUCCESS);
 }   /* end main() */
 
diff --git a/test/testmeta.c b/test/testmeta.c
index 9aa4972..a008cc7 100644
--- a/test/testmeta.c
+++ b/test/testmeta.c
@@ -29,14 +29,12 @@
 
 #define FILEN		"testmeta.h5"
 
-#define MEMB_SIZE		100000000
 #define CHUNK_SIZE		512
 
 #define NDATAARRAYS		3
 /*#define NPOINTS			2048*/
 #define NPOINTS			20
 #define NEXTARRAYS		10
-#define NWATTRS			2
 #define NDATAOBJECTS	100000
 
 int main(void)
diff --git a/test/tfile.c b/test/tfile.c
index 7a52e2c..bf4a8c2 100644
--- a/test/tfile.c
+++ b/test/tfile.c
@@ -102,6 +102,10 @@
 /* Declaration for test_libver_macros2() */
 #define FILE5		"tfile5.h5"	/* Test file */
 
+/* Declaration for test_get_obj_ids() */
+#define FILE6			"tfile6.h5"	/* Test file */
+#define NGROUPS			2
+#define NDSETS			4
 
 static void
 create_objects(hid_t, hid_t, hid_t *, hid_t *, hid_t *, hid_t *);
@@ -924,6 +928,131 @@ create_objects(hid_t fid1, hid_t fid2, hid_t *ret_did, hid_t *ret_gid1,
 
 /****************************************************************
 **
+**  test_get_obj_ids(): Test the bug and the fix for Jira 8528.
+**                      H5Fget_obj_ids overfilled the list of 
+**                      object IDs by one.  This is an enhancement
+**                      for test_obj_count_and_id().
+**
+****************************************************************/
+static void
+test_get_obj_ids(void)
+{
+    hid_t    fid, gid[NGROUPS], dset[NDSETS];
+    hid_t    filespace;
+    hsize_t  file_dims[F2_RANK] = {F2_DIM0, F2_DIM1};
+    ssize_t  oid_count, ret_count;
+    hid_t *oid_list = NULL;
+    herr_t   ret;
+    int i, m, n;
+    ssize_t oid_list_size = NDSETS;
+    char gname[64], dname[64];
+
+    /* Create a new file */
+    fid = H5Fcreate(FILE6, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    CHECK(fid, FAIL, "H5Fcreate");
+
+    filespace = H5Screate_simple(F2_RANK, file_dims,  NULL);
+    CHECK(filespace, FAIL, "H5Screate_simple");
+
+    /* creates NGROUPS groups under the root group */
+    for(m = 0; m < NGROUPS; m++) {
+        sprintf(gname, "group%d", m);
+        gid[m] = H5Gcreate2(fid, gname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+        CHECK(gid[m], FAIL, "H5Gcreate2");
+    }
+
+    /* create NDSETS datasets under the root group */
+    for(n = 0; n < NDSETS; n++) {
+         sprintf(dname, "dataset%d", n);
+         dset[n] = H5Dcreate2(fid, dname, H5T_NATIVE_INT, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+         CHECK(dset[n], FAIL, "H5Dcreate2");
+    }
+
+    /* The number of opened objects should be NGROUPS + NDSETS + 1.  One is opened file. */
+    oid_count = H5Fget_obj_count(fid, H5F_OBJ_ALL);
+    CHECK(oid_count, FAIL, "H5Fget_obj_count");
+    VERIFY(oid_count, (NGROUPS + NDSETS + 1), "H5Fget_obj_count");
+
+    oid_list = (hid_t *)HDcalloc((size_t)oid_list_size, sizeof(hid_t));
+    CHECK(oid_list, NULL, "HDcalloc");
+
+    /* Call the public function H5F_get_obj_ids to use H5F_get_objects.  User reported having problem here. 
+     * that the returned size (ret_count) from H5Fget_obj_ids is one greater than the size passed in 
+     * (oid_list_size) */
+    ret_count = H5Fget_obj_ids(fid, H5F_OBJ_ALL, (size_t)oid_list_size, oid_list);
+    CHECK(ret_count, FAIL, "H5Fget_obj_ids");
+    VERIFY(ret_count, oid_list_size, "H5Fget_obj_count");
+
+    /* Close all object IDs on the list except the file ID. The first ID is supposed to be file ID according 
+     * to the library design */
+    for(i = 0; i< ret_count; i++) {
+        if(fid != oid_list[i]) {
+            ret = H5Oclose(oid_list[i]);
+            CHECK(ret, FAIL, "H5Oclose");
+        }
+    }
+
+    /* The number of opened objects should be NGROUPS + 1 + 1.  The first one is opened file. The second one
+     * is the dataset ID left open from the previous around of H5Fget_obj_ids */
+    oid_count = H5Fget_obj_count(fid, H5F_OBJ_ALL);
+    CHECK(oid_count, FAIL, "H5Fget_obj_count");
+    VERIFY(oid_count, NGROUPS + 2, "H5Fget_obj_count");
+
+    /* Get the IDs of the left opend objects */ 
+    ret_count = H5Fget_obj_ids(fid, H5F_OBJ_ALL, (size_t)oid_list_size, oid_list);
+    CHECK(ret_count, FAIL, "H5Fget_obj_ids");
+    VERIFY(ret_count, oid_list_size, "H5Fget_obj_count");
+
+    /* Close all object IDs on the list except the file ID. The first ID is still the file ID */
+    for(i = 0; i< ret_count; i++) {
+        if(fid != oid_list[i]) {
+            ret = H5Oclose(oid_list[i]);
+            CHECK(ret, FAIL, "H5Oclose");
+        }
+    }
+  
+    H5Sclose(filespace);
+    H5Fclose(fid);
+
+    HDfree(oid_list);
+
+    /* Reopen the file to check whether H5Fget_obj_count and H5Fget_obj_ids still works 
+     * when the file is closed first */ 
+    fid = H5Fopen(FILE6, H5F_ACC_RDONLY, H5P_DEFAULT);
+    CHECK(fid, FAIL, "H5Fopen");
+
+    /* Open NDSETS datasets under the root group */
+    for(n = 0; n < NDSETS; n++) {
+         sprintf(dname, "dataset%d", n);
+         dset[n] = H5Dopen2(fid, dname, H5P_DEFAULT);
+         CHECK(dset[n], FAIL, "H5Dcreate2");
+    }
+
+    /* Close the file first */
+    H5Fclose(fid);
+
+    /* Get the number of all opened objects */
+    oid_count = H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL);
+    CHECK(oid_count, FAIL, "H5Fget_obj_count");
+    VERIFY(oid_count, NDSETS, "H5Fget_obj_count");
+
+    oid_list = (hid_t *)HDcalloc((size_t)oid_count, sizeof(hid_t));
+    CHECK(oid_list, NULL, "HDcalloc");
+
+    /* Get the list of all opened objects */
+    ret_count = H5Fget_obj_ids(H5F_OBJ_ALL, H5F_OBJ_ALL, (size_t)oid_count, oid_list);
+    CHECK(ret_count, FAIL, "H5Fget_obj_ids");
+    VERIFY(ret_count, NDSETS, "H5Fget_obj_count");
+
+    /* Close all open objects with H5Oclose */
+    for(n = 0; n < oid_count; n++)
+         H5Oclose(oid_list[n]);
+
+    HDfree(oid_list);
+}
+
+/****************************************************************
+**
 **  test_get_file_id(): Test H5Iget_file_id()
 **
 *****************************************************************/
@@ -2832,6 +2961,7 @@ test_file(void)
     test_file_close();          /* Test file close behavior */
 #endif /* H5_NO_SHARED_WRITING */
     test_get_file_id();         /* Test H5Iget_file_id */
+    test_get_obj_ids();         /* Test H5Fget_obj_ids for Jira Issue 8528 */
     test_file_perm();           /* Test file access permissions */
     test_file_perm2();          /* Test file access permission again */
     test_file_freespace();      /* Test file free space information */
diff --git a/test/tgenprop.c b/test/tgenprop.c
index f304f11..4e93dd5 100644
--- a/test/tgenprop.c
+++ b/test/tgenprop.c
@@ -88,7 +88,7 @@ test_genprop_basic_class(void)
     CHECK_PTR(name, "H5Pget_class_name");
     if(HDstrcmp(name,CLASS1_NAME)!=0)
         TestErrPrintf("Class names don't match!, name=%s, CLASS1_NAME=%s\n",name,CLASS1_NAME);
-    free(name);
+    H5free_memory(name);
 
     /* Check class parent */
     cid2 = H5Pget_class_parent(cid1);
@@ -119,7 +119,7 @@ test_genprop_basic_class(void)
     CHECK_PTR(name, "H5Pget_class_name");
     if(HDstrcmp(name,CLASS2_NAME)!=0)
         TestErrPrintf("Class names don't match!, name=%s, CLASS2_NAME=%s\n",name,CLASS2_NAME);
-    free(name);
+    H5free_memory(name);
 
     /* Check class parent */
     cid2 = H5Pget_class_parent(cid1);
@@ -1868,7 +1868,7 @@ test_genprop_refcount(void)
     CHECK_PTR(name, "H5Pget_class_name");
     if(HDstrcmp(name,CLASS1_NAME)!=0)
         TestErrPrintf("Class names don't match!, name=%s, CLASS1_NAME=%s\n",name,CLASS1_NAME);
-    HDfree(name);
+    H5free_memory(name);
 
     /* Close class */
     ret = H5Pclose_class(cid1);
@@ -1887,7 +1887,7 @@ test_genprop_refcount(void)
     CHECK_PTR(name, "H5Pget_class_name");
     if(HDstrcmp(name,CLASS1_NAME)!=0)
         TestErrPrintf("Class names don't match!, name=%s, CLASS1_NAME=%s\n",name,CLASS1_NAME);
-    HDfree(name);
+    H5free_memory(name);
 
     /* Close list */
     ret = H5Pclose(lid1);
@@ -1898,7 +1898,7 @@ test_genprop_refcount(void)
     CHECK_PTR(name, "H5Pget_class_name");
     if(HDstrcmp(name,CLASS1_NAME)!=0)
         TestErrPrintf("Class names don't match!, name=%s, CLASS1_NAME=%s\n",name,CLASS1_NAME);
-    HDfree(name);
+    H5free_memory(name);
 
     /* Close class */
     ret = H5Pclose_class(cid1);
diff --git a/test/titerate.c b/test/titerate.c
index d41df84..049e258 100644
--- a/test/titerate.c
+++ b/test/titerate.c
@@ -40,7 +40,6 @@
 #define NAMELEN     80
 
 /* 1-D dataset with fixed dimensions */
-#define SPACE1_NAME  "Space1"
 #define SPACE1_RANK	1
 #define SPACE1_DIM1	4
 
diff --git a/test/tmisc.c b/test/tmisc.c
index e28b124..d599199 100644
--- a/test/tmisc.c
+++ b/test/tmisc.c
@@ -316,6 +316,15 @@ unsigned m13_rdata[MISC13_DIM1][MISC13_DIM2];          /* Data read from dataset
 /* Definitions for misc. test #30 */
 #define MISC30_FILE             "tmisc30.h5"
 
+/* Definitions for misc. test #31 */
+#define MISC31_FILE             "tmisc31.h5"
+#define MISC31_DSETNAME         "dset"
+#define MISC31_ATTRNAME1        "attr1"
+#define MISC31_ATTRNAME2        "attr2"
+#define MISC31_GROUPNAME        "group"
+#define MISC31_PROPNAME         "misc31_prop"
+#define MISC31_DTYPENAME        "dtype"
+
 /****************************************************************
 **
 **  test_misc1(): test unlinking a dataset from a group and immediately
@@ -5239,6 +5248,105 @@ test_misc30(void)
     VERIFY(file_size[0], file_size[1], "test_misc30");
 } /* end test_misc30() */
 
+

+/****************************************************************
+**
+**  test_misc31(): Test reentering library through deprecated
+*                  routines that register an id after calling
+*                  H5close().
+**
+****************************************************************/
+static void
+test_misc31(void)
+{
+    hid_t file_id;              /* File id */
+    hid_t space_id;             /* Dataspace id */
+    hid_t dset_id;              /* Dataset id */
+    hid_t attr_id;              /* Attribute id */
+    hid_t group_id;             /* Group id */
+    hid_t dtype_id;             /* Datatype id */
+    herr_t ret;                 /* Generic return value */
+
+    /* Output message about test being performed */
+    MESSAGE(5, ("Deprecated routines initialize after H5close()\n"));
+
+#ifndef H5_NO_DEPRECATED_SYMBOLS
+    file_id = H5Fcreate(MISC31_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    CHECK(file_id, FAIL, "H5Fcreate");
+
+    /* Test dataset package */
+    space_id = H5Screate(H5S_SCALAR);
+    CHECK(space_id, FAIL, "H5Screate");
+    dset_id = H5Dcreate1(file_id, MISC31_DSETNAME, H5T_NATIVE_INT, space_id, H5P_DEFAULT);
+    CHECK(dset_id, FAIL, "H5Dcreate1");
+    ret = H5close();
+    CHECK(ret, FAIL, "H5close");
+    file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+    CHECK(file_id, FAIL, "H5Fopen");
+    dset_id = H5Dopen1(file_id, MISC31_DSETNAME);
+    CHECK(dset_id, FAIL, "H5Dopen1");
+
+    /* Test attribute package */
+    space_id = H5Screate(H5S_SCALAR);
+    CHECK(space_id, FAIL, "H5Screate");
+    attr_id = H5Acreate1(dset_id, MISC31_ATTRNAME1, H5T_NATIVE_INT, space_id, H5P_DEFAULT);
+    CHECK(attr_id, FAIL, "H5Acreate1");
+    ret = H5close();
+    CHECK(ret, FAIL, "H5close");
+    file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+    CHECK(file_id, FAIL, "H5Fopen");
+    dset_id = H5Dopen1(file_id, MISC31_DSETNAME);
+    CHECK(dset_id, FAIL, "H5Dopen1");
+    space_id = H5Screate(H5S_SCALAR);
+    CHECK(space_id, FAIL, "H5Screate");
+    attr_id = H5Acreate1(dset_id, MISC31_ATTRNAME2, H5T_NATIVE_INT, space_id, H5P_DEFAULT);
+    CHECK(attr_id, FAIL, "H5Acreate1");
+
+    /* Test group package */
+    group_id = H5Gcreate1(file_id, MISC31_GROUPNAME, 0);
+    CHECK(group_id, FAIL, "H5Gcreate1");
+    ret = H5close();
+    CHECK(ret, FAIL, "H5close");
+    file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+    CHECK(file_id, FAIL, "H5Fopen");
+    group_id = H5Gopen1(file_id, MISC31_GROUPNAME);
+    CHECK(group_id, FAIL, "H5Gopen1");
+
+    /* Test property list package */
+    ret = H5Pregister1(H5P_OBJECT_CREATE, MISC31_PROPNAME, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK(ret, FAIL, "H5Pregister1");
+    ret = H5close();
+    CHECK(ret, FAIL, "H5close");
+    ret = H5Pregister1(H5P_OBJECT_CREATE, MISC31_PROPNAME, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+    CHECK(ret, FAIL, "H5Pregister1");
+    ret = H5close();
+    CHECK(ret, FAIL, "H5close");
+
+    /* Test datatype package */
+    file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+    CHECK(file_id, FAIL, "H5Fopen");
+    dtype_id = H5Tcopy(H5T_NATIVE_INT);
+    CHECK(dtype_id, FAIL, "H5Tcopy");
+    ret = H5Tcommit1(file_id, MISC31_DTYPENAME, dtype_id);
+    CHECK(ret, FAIL, "H5Tcommit1");
+    ret = H5close();
+    CHECK(ret, FAIL, "H5close");
+    file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+    CHECK(file_id, FAIL, "H5Fopen");
+    dtype_id = H5Topen1(file_id, MISC31_DTYPENAME);
+    CHECK(ret, FAIL, "H5Topen1");
+    ret = H5Fclose(file_id);
+    CHECK(ret, FAIL, "H5Fclose");
+    ret = H5Tclose(dtype_id);
+    CHECK(ret, FAIL, "H5Tclose");
+    
+#else /* H5_NO_DEPRECATED_SYMBOLS */
+    /* Output message about test being skipped */
+    MESSAGE(5, (" ...Skipped"));
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
+} /* end test_misc31() */
+
+

 /****************************************************************
 **
 **  test_misc(): Main misc. test routine.
@@ -5284,6 +5392,7 @@ test_misc(void)
     test_misc28();      /* Test that chunks are cached appropriately */
     test_misc29();      /* Test that speculative metadata reads are handled correctly */
     test_misc30();      /* Exercise local heap loading bug where free lists were getting dropped */
+    test_misc31();      /* Test Reentering library through deprecated routines after H5close() */
 
 } /* test_misc() */
 
@@ -5340,5 +5449,6 @@ cleanup_misc(void)
     HDremove(MISC28_FILE);
     HDremove(MISC29_COPY_FILE);
     HDremove(MISC30_FILE);
+    HDremove(MISC31_FILE);
 }
 
diff --git a/test/tselect.c b/test/tselect.c
index 973a63f..7dfb6d7 100644
--- a/test/tselect.c
+++ b/test/tselect.c
@@ -292,11 +292,15 @@ test_select_hyper(hid_t xfer_plist)
     ret=H5Dwrite(dataset,H5T_NATIVE_UCHAR,sid2,sid1,xfer_plist,wbuf);
     CHECK(ret, FAIL, "H5Dwrite");
 
-    /* Exercise check for NULL buffer and valid selection */
+    /* Exercise checks for NULL buffer and valid selection */
     H5E_BEGIN_TRY {
         ret=H5Dwrite(dataset,H5T_NATIVE_UCHAR,sid2,sid1,xfer_plist,NULL);
     } H5E_END_TRY;
     VERIFY(ret, FAIL, "H5Dwrite");
+    H5E_BEGIN_TRY {
+        ret=H5Dwrite(dataset,H5T_NATIVE_UCHAR,H5S_ALL,H5S_ALL,xfer_plist,NULL);
+    } H5E_END_TRY;
+    VERIFY(ret, FAIL, "H5Dwrite");
 
     /* Close memory dataspace */
     ret = H5Sclose(sid2);
@@ -326,11 +330,15 @@ test_select_hyper(hid_t xfer_plist)
     ret=H5Dread(dataset,H5T_NATIVE_UCHAR,sid2,sid1,xfer_plist,rbuf);
     CHECK(ret, FAIL, "H5Dread");
 
-    /* Exercise check for NULL buffer and valid selection */
+    /* Exercise checks for NULL buffer and valid selection */
     H5E_BEGIN_TRY {
         ret=H5Dread(dataset,H5T_NATIVE_UCHAR,sid2,sid1,xfer_plist,NULL);
     } H5E_END_TRY;
     VERIFY(ret, FAIL, "H5Dread");
+    H5E_BEGIN_TRY {
+        ret=H5Dread(dataset,H5T_NATIVE_UCHAR,H5S_ALL,H5S_ALL,xfer_plist,NULL);
+    } H5E_END_TRY;
+    VERIFY(ret, FAIL, "H5Dread");
 
     /* Check that the values match with a dataset iterator */
     tbuf=wbuf+(15*SPACE2_DIM2);
@@ -2734,7 +2742,6 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
     hid_t dset_type, hid_t xfer_plist)
 {
     hbool_t		data_ok;
-    hbool_t		start_in_checker[5];
     hid_t               fapl;                   /* File access property list */
     hid_t		fid;			/* HDF5 File IDs		*/
     hid_t		full_small_cube_sid;    /* Dataspace for small cube w/all selection */
@@ -2955,7 +2962,6 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
      * large cube.
      */
 
-    start_in_checker[0] = TRUE;
     u = 0;
     do {
         if(small_rank_offset > 0)
@@ -3063,7 +3069,6 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
                                                              sel_start);
 
 
-    start_in_checker[0] = TRUE;
     u = 0;
     do {
         if(0 < small_rank_offset)
@@ -3207,7 +3212,6 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
                                                              small_rank,
                                                              sel_start);
 
-    start_in_checker[0] = TRUE;
     u = 0;
     do {
         if(small_rank_offset > 0)
@@ -3340,7 +3344,6 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
                                                              small_rank,
                                                              sel_start);
 
-    start_in_checker[0] = TRUE;
     u = 0;
     do {
         if(small_rank_offset > 0)
diff --git a/test/ttime.c b/test/ttime.c
index 4762656..16acd3e 100644
--- a/test/ttime.c
+++ b/test/ttime.c
@@ -26,7 +26,9 @@
 #include "hdf5.h"
 
 #define DATAFILE   "ttime.h5"
+#ifdef NOT_YET
 #define DATASETNAME   "Dataset"
+#endif /* NOT_YET */
 
 /****************************************************************
 **
diff --git a/test/ttsafe_dcreate.c b/test/ttsafe_dcreate.c
index f83332d..df51f72 100644
--- a/test/ttsafe_dcreate.c
+++ b/test/ttsafe_dcreate.c
@@ -45,7 +45,6 @@
 #ifdef H5_HAVE_THREADSAFE
 
 #define FILENAME		"ttsafe_dcreate.h5"
-#define DATASETNAME_LENGTH	10
 #define NUM_THREAD		16
 
 void *tts_dcreate_creator(void *);
diff --git a/test/tunicode.c b/test/tunicode.c
index bd3090c..6f3e3a9 100644
--- a/test/tunicode.c
+++ b/test/tunicode.c
@@ -29,16 +29,13 @@
 #define LONG_BUF_SIZE (2 * MAX_STRING_LENGTH + 4)
 
 #define DSET1_NAME "fl_string_dataset"
-#define DSET2_NAME "dataset2"
 #define DSET3_NAME "dataset3"
 #define DSET4_NAME "dataset4"
 #define VL_DSET1_NAME "vl_dset_1"
-#define VL_DSET2_NAME "vl_dset_2"
 #define GROUP1_NAME "group1"
 #define GROUP2_NAME "group2"
 #define GROUP3_NAME "group3"
 #define GROUP4_NAME "group4"
-#define SLINK_NAME "soft_link"
 
 #define RANK 1
 #define COMP_INT_VAL 7
@@ -605,7 +602,7 @@ void test_compound(hid_t fid, const char * string)
   readbuf = H5Tget_member_name(s1_tid, 0);
   ret = HDstrcmp(readbuf, string);
   VERIFY(ret, 0, "strcmp");
-  free(readbuf);
+  H5free_memory(readbuf);
 
   /* Add the other fields to the datatype */
   ret = H5Tinsert(s1_tid, "c_name", HOFFSET(s1_t, c), H5T_NATIVE_DOUBLE);
@@ -718,7 +715,7 @@ void test_opaque(hid_t UNUSED fid, const char * string)
   read_buf = H5Tget_tag(type_id);
   ret = strcmp(read_buf, string);
   VERIFY(ret, 0, "H5Tget_tag");
-  free(read_buf);
+  H5free_memory(read_buf);
 
   ret = H5Tclose(type_id);
   CHECK(ret, FAIL, "H5Tclose");
diff --git a/test/tvltypes.c b/test/tvltypes.c
index ab4d880..516974e 100644
--- a/test/tvltypes.c
+++ b/test/tvltypes.c
@@ -32,11 +32,6 @@
 #define SPACE1_RANK	1
 #define SPACE1_DIM1     4
 
-/* 2-D dataset with fixed dimensions */
-#define SPACE2_RANK	2
-#define SPACE2_DIM1	10
-#define SPACE2_DIM2	10
-
 /* 1-D dataset with fixed dimensions */
 #define SPACE3_RANK	1
 #define SPACE3_DIM1     128
diff --git a/test/vfd.c b/test/vfd.c
index b85c054..4ece2ba 100644
--- a/test/vfd.c
+++ b/test/vfd.c
@@ -28,6 +28,7 @@
 #define FAMILY_SIZE2    (5*KB)
 #define MULTI_SIZE      128
 #define CORE_INCREMENT  (4*KB)
+#define CORE_PAGE_SIZE  (1024 * 1024)
 #define DSET1_NAME   "dset1"
 #define DSET1_DIM1   1024
 #define DSET1_DIM2   32
@@ -376,6 +377,8 @@ test_core(void)
     char        filename[1024];
     void        *fhandle=NULL;
     hsize_t     file_size;
+    hbool_t     use_write_tracking;
+    size_t      write_tracking_page_size;
     int    *points = NULL, *check = NULL, *p1, *p2;
     hid_t  dset1=-1, space1=-1;
     hsize_t  dims1[2];
@@ -387,6 +390,8 @@ test_core(void)
     fapl = h5_fileaccess();
     if(H5Pset_fapl_core(fapl, (size_t)CORE_INCREMENT, TRUE) < 0)
         TEST_ERROR;
+    if(H5Pset_core_write_tracking(fapl, TRUE, CORE_PAGE_SIZE) < 0)
+        TEST_ERROR;
     h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
 
     if((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
@@ -400,6 +405,14 @@ test_core(void)
     if(H5FD_CORE != H5Pget_driver(access_fapl))
         TEST_ERROR;
 
+    /* Check that the backing store write tracking info was saved */
+    if(H5Pget_core_write_tracking(fapl, &use_write_tracking, &write_tracking_page_size) < 0)
+        TEST_ERROR;
+    if(TRUE != use_write_tracking)
+        TEST_ERROR;
+    if(CORE_PAGE_SIZE != write_tracking_page_size)
+        TEST_ERROR;
+
     /* ...and close the property list */
     if (H5Pclose(access_fapl) < 0)
         TEST_ERROR;
diff --git a/testpar/CMakeLists.txt b/testpar/CMakeLists.txt
index a3ef96d..968eba6 100644
--- a/testpar/CMakeLists.txt
+++ b/testpar/CMakeLists.txt
@@ -1,10 +1,10 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TEST_PAR)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
 INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib )
@@ -12,7 +12,7 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib )
 # Define Tests
 #-----------------------------------------------------------------------------
 
-SET (testphdf5_SRCS
+set (testphdf5_SRCS
     ${HDF5_TEST_PAR_SOURCE_DIR}/testphdf5.c
     ${HDF5_TEST_PAR_SOURCE_DIR}/t_dset.c
     ${HDF5_TEST_PAR_SOURCE_DIR}/t_file.c
@@ -26,21 +26,21 @@ SET (testphdf5_SRCS
 )
 
 #-- Adding test for testhdf5
-ADD_EXECUTABLE (testphdf5 ${testphdf5_SRCS})
+add_executable (testphdf5 ${testphdf5_SRCS})
 TARGET_NAMING (testphdf5 ${LIB_TYPE})
 TARGET_C_PROPERTIES (testphdf5 " " " ")
-TARGET_LINK_LIBRARIES (testphdf5 ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET} ${LINK_LIBS})
-SET_TARGET_PROPERTIES (testphdf5 PROPERTIES FOLDER test/par)
+target_link_libraries (testphdf5 ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET} ${LINK_LIBS})
+set_target_properties (testphdf5 PROPERTIES FOLDER test/par)
 
 MACRO (ADD_H5P_EXE file)
-  ADD_EXECUTABLE (${file} ${HDF5_TEST_PAR_SOURCE_DIR}/${file}.c)
+  add_executable (${file} ${HDF5_TEST_PAR_SOURCE_DIR}/${file}.c)
   TARGET_NAMING (${file} ${LIB_TYPE})
   TARGET_C_PROPERTIES (${file} " " " ")
-  TARGET_LINK_LIBRARIES (${file} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET} ${LINK_LIBS})
-  SET_TARGET_PROPERTIES (${file} PROPERTIES FOLDER test/par)
+  target_link_libraries (${file} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET} ${LINK_LIBS})
+  set_target_properties (${file} PROPERTIES FOLDER test/par)
 ENDMACRO (ADD_H5P_EXE file)
 
-SET (H5P_TESTS
+set (H5P_TESTS
     t_mpi
 #    t_posix_compliant
     t_cache
@@ -49,12 +49,12 @@ SET (H5P_TESTS
     t_shapesame
 )
 
-FOREACH (testp ${H5P_TESTS})
+foreach (testp ${H5P_TESTS})
   ADD_H5P_EXE(${testp})
-ENDFOREACH (testp ${H5P_TESTS})
+endforeach (testp ${H5P_TESTS})
 
-IF (NOT WIN32)
+if (NOT WIN32)
   ADD_H5P_EXE(t_posix_compliant)
-ENDIF (NOT WIN32)
+endif (NOT WIN32)
 
-INCLUDE (CMakeTests.cmake)
+include (CMakeTests.cmake)
diff --git a/testpar/CMakeTests.cmake b/testpar/CMakeTests.cmake
index bc8fc90..8165eff 100644
--- a/testpar/CMakeTests.cmake
+++ b/testpar/CMakeTests.cmake
@@ -5,21 +5,17 @@
 ##############################################################################
 ##############################################################################
 
-ADD_TEST (NAME TEST_PAR_testphdf5 COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:testphdf5>)
+add_test (NAME TEST_PAR_testphdf5 COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:testphdf5>)
 
-FOREACH (testp ${H5P_TESTS})
-  ADD_TEST (NAME TEST_PAR_${testp} COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:${testp}>)
-ENDFOREACH (testp ${H5P_TESTS})
+foreach (testp ${H5P_TESTS})
+  add_test (NAME TEST_PAR_${testp} COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:${testp}>)
+endforeach (testp ${H5P_TESTS})
 
 SET_TESTS_PROPERTIES(TEST_PAR_t_pflush2 PROPERTIES DEPENDS TEST_PAR_t_pflush1)
 
-IF (NOT WIN32)
-  ADD_TEST (NAME TEST_PAR_t_posix_compliant COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:t_posix_compliant>)
-ENDIF (NOT WIN32)
-  
-IF (HDF5_TEST_VFD)
+if (HDF5_TEST_VFD)
 
-  SET (VFD_LIST
+  set (VFD_LIST
       sec2
       stdio
       core
@@ -28,20 +24,20 @@ IF (HDF5_TEST_VFD)
       family
   )
 
-  SET (H5P_VFD_TESTS
+  set (H5P_VFD_TESTS
       t_pflush1
       t_pflush2
   )
   
-  IF (DIRECT_VFD)
-    SET (VFD_LIST ${VFD_LIST} direct)
-  ENDIF (DIRECT_VFD)
+  if (DIRECT_VFD)
+    set (VFD_LIST ${VFD_LIST} direct)
+  endif (DIRECT_VFD)
 
   MACRO (ADD_VFD_TEST vfdname resultcode)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      FOREACH (test ${H5P_VFD_TESTS})
-        ADD_TEST (
-          NAME VFD-${vfdname}-${test} 
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      foreach (test ${H5P_VFD_TESTS})
+        add_test (
+          NAME TEST_PAR_VFD-${vfdname}-${test} 
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:${test}>"
               -D "TEST_ARGS:STRING="
@@ -51,13 +47,13 @@ IF (HDF5_TEST_VFD)
               -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
               -P "${HDF5_RESOURCES_DIR}/vfdTest.cmake"
         )
-      ENDFOREACH (test ${H5P_VFD_TESTS})
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      endforeach (test ${H5P_VFD_TESTS})
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_VFD_TEST)
   
   # Run test with different Virtual File Driver
-  FOREACH (vfd ${VFD_LIST})
+  foreach (vfd ${VFD_LIST})
     ADD_VFD_TEST (${vfd} 0)
-  ENDFOREACH (vfd ${VFD_LIST})
+  endforeach (vfd ${VFD_LIST})
 
-ENDIF (HDF5_TEST_VFD)
+endif (HDF5_TEST_VFD)
diff --git a/testpar/Makefile.am b/testpar/Makefile.am
index b2fb97c..8619e97 100644
--- a/testpar/Makefile.am
+++ b/testpar/Makefile.am
@@ -21,15 +21,13 @@
 
 include $(top_srcdir)/config/commence.am
 
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/test
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test
 
-# Test programs and scripts.  These are our main targets.
+# Test programs.  These are our main targets.
 #
-TEST_PROG_PARA=t_mpi t_posix_compliant testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
-TEST_SCRIPT_PARA=testph5.sh
+TEST_PROG_PARA=t_mpi testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
 
 check_PROGRAMS = $(TEST_PROG_PARA)
-check_SCRIPTS= $(TEST_SCRIPT)
 
 testphdf5_SOURCES=testphdf5.c t_dset.c t_file.c t_file_image.c t_mdset.c \
 	t_ph5basic.c t_coll_chunk.c t_span_tree.c t_chunk_alloc.c t_filter_read.c
@@ -42,6 +40,5 @@ LDADD = $(LIBH5TEST) $(LIBHDF5)
 # Para*.h5 are from testphdf
 # go is used for debugging. See testphdf5.c.
 CHECK_CLEANFILES+=MPItest.h5 Para*.h5 CacheTestDummy.h5 go
-DISTCLEANFILES=testph5.sh
 
 include $(top_srcdir)/config/conclude.am
diff --git a/testpar/Makefile.in b/testpar/Makefile.in
index ced5e34..87d0e29 100644
--- a/testpar/Makefile.in
+++ b/testpar/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # hdf5 Parallel Library Test Makefile(.in)
 #
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,11 +94,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/testph5.sh.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am COPYING
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver \
+	COPYING
 check_PROGRAMS = $(am__EXEEXT_1)
 TESTS =
 subdir = testpar
@@ -80,11 +108,10 @@ 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 = testph5.sh
+CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__EXEEXT_1 = t_mpi$(EXEEXT) t_posix_compliant$(EXEEXT) \
-	testphdf5$(EXEEXT) t_cache$(EXEEXT) t_pflush1$(EXEEXT) \
-	t_pflush2$(EXEEXT) t_shapesame$(EXEEXT)
+am__EXEEXT_1 = t_mpi$(EXEEXT) testphdf5$(EXEEXT) t_cache$(EXEEXT) \
+	t_pflush1$(EXEEXT) t_pflush2$(EXEEXT) t_shapesame$(EXEEXT)
 t_cache_SOURCES = t_cache.c
 t_cache_OBJECTS = t_cache.$(OBJEXT)
 t_cache_LDADD = $(LDADD)
@@ -105,10 +132,6 @@ t_pflush2_SOURCES = t_pflush2.c
 t_pflush2_OBJECTS = t_pflush2.$(OBJEXT)
 t_pflush2_LDADD = $(LDADD)
 t_pflush2_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
-t_posix_compliant_SOURCES = t_posix_compliant.c
-t_posix_compliant_OBJECTS = t_posix_compliant.$(OBJEXT)
-t_posix_compliant_LDADD = $(LDADD)
-t_posix_compliant_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
 t_shapesame_SOURCES = t_shapesame.c
 t_shapesame_OBJECTS = t_shapesame.$(OBJEXT)
 t_shapesame_LDADD = $(LDADD)
@@ -155,21 +178,234 @@ 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)
+SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.c t_shapesame.c \
+	$(testphdf5_SOURCES)
+DIST_SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.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
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -181,7 +417,8 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/test
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -241,7 +478,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -455,20 +691,16 @@ TRACE = perl $(top_srcdir)/bin/trace
 # go is used for debugging. See testphdf5.c.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog MPItest.h5 Para*.h5 \
 	CacheTestDummy.h5 go
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/test
 
-# Test programs and scripts.  These are our main targets.
+# Test programs.  These are our main targets.
 #
-TEST_PROG_PARA = t_mpi t_posix_compliant testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
-TEST_SCRIPT_PARA = testph5.sh
-check_SCRIPTS = $(TEST_SCRIPT)
+TEST_PROG_PARA = t_mpi testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
 testphdf5_SOURCES = testphdf5.c t_dset.c t_file.c t_file_image.c t_mdset.c \
 	t_ph5basic.c t_coll_chunk.c t_span_tree.c t_chunk_alloc.c t_filter_read.c
 
 
 # The tests all depend on the hdf5 library and the test library
 LDADD = $(LIBH5TEST) $(LIBHDF5)
-DISTCLEANFILES = testph5.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.,
@@ -492,7 +724,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -524,8 +756,6 @@ $(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):
-testph5.sh: $(top_builddir)/config.status $(srcdir)/testph5.sh.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 clean-checkPROGRAMS:
 	@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
@@ -535,24 +765,27 @@ 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) $(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) $(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) $(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) $(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) $(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) $(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) $(EXTRA_testphdf5_DEPENDENCIES) 
 	@rm -f testphdf5$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(testphdf5_OBJECTS) $(testphdf5_LDADD) $(LIBS)
@@ -575,7 +808,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_pflush1.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_pflush2.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_ph5basic.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_posix_compliant.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_shapesame.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_span_tree.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testphdf5.Po at am__quote@
@@ -585,14 +817,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -607,26 +839,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -638,15 +859,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -655,9 +872,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -673,6 +891,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -704,7 +1067,7 @@ distdir: $(DISTFILES)
 	  fi; \
 	done
 check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
 	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
 check: check-am
 all-am: Makefile all-local
@@ -729,13 +1092,15 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -813,19 +1178,19 @@ 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 \
-	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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/testpar/t_coll_chunk.c b/testpar/t_coll_chunk.c
index 73e7f09..133b91d 100644
--- a/testpar/t_coll_chunk.c
+++ b/testpar/t_coll_chunk.c
@@ -16,6 +16,9 @@
 #include "testphdf5.h"
 #include "H5Dprivate.h"
 
+#define HYPER 1
+#define POINT 2
+#define ALL 3 
 
 /* some commonly used routines for collective chunk IO tests*/
 
@@ -23,14 +26,17 @@ static void ccslab_set(int mpi_rank,int mpi_size,hsize_t start[],hsize_t count[]
 		       hsize_t stride[],hsize_t block[],int mode);
 
 static void ccdataset_fill(hsize_t start[],hsize_t count[],
-			   hsize_t stride[],hsize_t block[],DATATYPE*dataset);
+			   hsize_t stride[],hsize_t block[],DATATYPE*dataset,
+                           int mem_selection);
 
 static void ccdataset_print(hsize_t start[],hsize_t block[],DATATYPE*dataset);
 
 static int ccdataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[],
-			  hsize_t block[], DATATYPE *dataset, DATATYPE *original);
+			  hsize_t block[], DATATYPE *dataset, DATATYPE *original,
+                          int mem_selection);
 
-static void coll_chunktest(const char* filename,int chunk_factor,int select_factor,int api_option);
+static void coll_chunktest(const char* filename, int chunk_factor, int select_factor,
+                           int api_option, int file_selection, int mem_selection, int mode);
 
 
 /*-------------------------------------------------------------------------
@@ -73,7 +79,15 @@ coll_chunk1(void)
 {
     const char *filename = GetTestParameters();
 
-    coll_chunktest(filename, 1, BYROW_CONT, API_NONE);
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, 1, BYROW_CONT, API_NONE, POINT, HYPER, IN_ORDER);
 }
 
 
@@ -117,7 +131,15 @@ coll_chunk2(void)
 {
     const char *filename = GetTestParameters();
 
-    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE);
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, 1, BYROW_DISCONT, API_NONE, POINT, HYPER, IN_ORDER);
 }
 
 
@@ -164,7 +186,15 @@ coll_chunk3(void)
     int mpi_size;
 
     MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
-    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE);
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, mpi_size, BYROW_CONT, API_NONE, POINT, HYPER, IN_ORDER);
 }
 
 /*-------------------------------------------------------------------------
@@ -208,7 +238,15 @@ coll_chunk4(void)
 {
     const char *filename = GetTestParameters();
 
-    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE);
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, 1, BYROW_SELECTNONE, API_NONE, POINT, HYPER, IN_ORDER);
 }
 
 /*-------------------------------------------------------------------------
@@ -252,7 +290,15 @@ coll_chunk5(void)
 {
     const char *filename = GetTestParameters();
 
-    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_HARD, POINT, HYPER, IN_ORDER);
 }
 
 /*-------------------------------------------------------------------------
@@ -298,7 +344,15 @@ coll_chunk6(void)
 {
     const char *filename = GetTestParameters();
 
-    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_HARD, POINT, HYPER, IN_ORDER);
 }
 
 /*-------------------------------------------------------------------------
@@ -342,7 +396,15 @@ coll_chunk7(void)
 {
     const char *filename = GetTestParameters();
 
-    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_TRUE, POINT, HYPER, IN_ORDER);
 }
 
 /*-------------------------------------------------------------------------
@@ -386,7 +448,15 @@ coll_chunk8(void)
 {
     const char *filename = GetTestParameters();
 
-    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, HYPER, HYPER, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, HYPER, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, POINT, ALL, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, POINT, POINT, OUT_OF_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, POINT, HYPER, OUT_OF_ORDER);
+
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, POINT, ALL, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, POINT, POINT, IN_ORDER);
+    coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_LINK_FALSE, POINT, HYPER, IN_ORDER);
 }
 
 /*-------------------------------------------------------------------------
@@ -430,7 +500,15 @@ coll_chunk9(void)
 {
   const char *filename = GetTestParameters();
 
-  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL);
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, HYPER, HYPER, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, HYPER, POINT, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, POINT, ALL, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, POINT, POINT, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, POINT, HYPER, OUT_OF_ORDER);
+
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, POINT, ALL, IN_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, POINT, POINT, IN_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTUNBALANCE, API_MULTI_COLL, POINT, HYPER, IN_ORDER);
 }
 
 /*-------------------------------------------------------------------------
@@ -474,7 +552,15 @@ coll_chunk10(void)
 {
   const char *filename = GetTestParameters();
 
-  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND);
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, HYPER, HYPER, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, HYPER, POINT, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, POINT, ALL, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, POINT, POINT, OUT_OF_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, POINT, HYPER, OUT_OF_ORDER);
+
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, POINT, ALL, IN_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, POINT, POINT, IN_ORDER);
+  coll_chunktest(filename, 4, BYROW_SELECTINCHUNK, API_MULTI_IND, POINT, HYPER, IN_ORDER);
 }
 
 
@@ -505,14 +591,16 @@ coll_chunk10(void)
  *-------------------------------------------------------------------------
  */
 
-
 static void
 coll_chunktest(const char* filename,
 	       int chunk_factor,
 	       int select_factor,
-               int api_option)
+               int api_option,
+               int file_selection,
+               int mem_selection,
+               int mode)
 {
-  hid_t	   file,dataset, file_dataspace;
+  hid_t	   file, dataset, file_dataspace, mem_dataspace;
   hid_t    acc_plist,xfer_plist,crp_plist;
 
   hsize_t  dims[RANK], chunk_dims[RANK];
@@ -525,20 +613,24 @@ coll_chunktest(const char* filename,
   unsigned prop_value;
 #endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
 
-  hbool_t  use_gpfs = FALSE;
   int      mpi_size,mpi_rank;
 
   herr_t   status;
   MPI_Comm comm = MPI_COMM_WORLD;
   MPI_Info info = MPI_INFO_NULL;
 
+  size_t  num_points;           /* for point selection */
+  hsize_t *coords = NULL;       /* for point selection */
+  hsize_t current_dims;         /* for point selection */
+  int i;
+
   /* set up MPI parameters */
   MPI_Comm_size(comm,&mpi_size);
   MPI_Comm_rank(comm,&mpi_rank);
 
   /* Create the data space */
 
-  acc_plist = create_faccess_plist(comm,info,facc_type,use_gpfs);
+  acc_plist = create_faccess_plist(comm,info,facc_type);
   VRFY((acc_plist >= 0),"");
 
   file = H5Fcreate(filename,H5F_ACC_TRUNC,H5P_DEFAULT,acc_plist);
@@ -551,7 +643,6 @@ coll_chunktest(const char* filename,
   dims[0] = SPACE_DIM1*mpi_size;
   dims[1] = SPACE_DIM2;
 
-
   /* allocate memory for data buffer */
   data_array1 = (int *)malloc(dims[0] * dims[1] * sizeof(int));
   VRFY((data_array1 != NULL), "data_array1 malloc succeeded");
@@ -559,9 +650,25 @@ coll_chunktest(const char* filename,
   /* set up dimensions of the slab this process accesses */
   ccslab_set(mpi_rank, mpi_size, start, count, stride, block, select_factor);
 
+  /* set up the coords array selection */
+  num_points = block[0] * block[1] * count[0] * count[1];
+  coords = (hsize_t *)HDmalloc(num_points * RANK * sizeof(hsize_t));
+  VRFY((coords != NULL), "coords malloc succeeded");
+  point_set(start, count, stride, block, num_points, coords, mode);
+
   file_dataspace = H5Screate_simple(2, dims, NULL);
   VRFY((file_dataspace >= 0), "file dataspace created succeeded");
 
+  if(ALL != mem_selection) {
+      mem_dataspace = H5Screate_simple(2, dims, NULL);
+      VRFY((mem_dataspace >= 0), "mem dataspace created succeeded");
+  }
+  else {
+      current_dims = num_points;
+      mem_dataspace = H5Screate_simple (1, &current_dims, NULL);
+      VRFY((mem_dataspace >= 0), "mem_dataspace create succeeded");
+  }
+
   crp_plist = H5Pcreate(H5P_DATASET_CREATE);
   VRFY((crp_plist >= 0),"");
 
@@ -569,25 +676,67 @@ coll_chunktest(const char* filename,
   chunk_dims[0] = dims[0]/chunk_factor;
 
   /* to decrease the testing time, maintain bigger chunk size */
-
   (chunk_factor == 1) ? (chunk_dims[1] = SPACE_DIM2) : (chunk_dims[1] = SPACE_DIM2/2);
   status = H5Pset_chunk(crp_plist, 2, chunk_dims);
   VRFY((status >= 0),"chunk creation property list succeeded");
 
   dataset = H5Dcreate2(file, DSET_COLLECTIVE_CHUNK_NAME, H5T_NATIVE_INT,
-		      file_dataspace, H5P_DEFAULT, crp_plist, H5P_DEFAULT);
+                       file_dataspace, H5P_DEFAULT, crp_plist, H5P_DEFAULT);
   VRFY((dataset >= 0),"dataset created succeeded");
 
   status = H5Pclose(crp_plist);
   VRFY((status >= 0), "");
 
   /*put some trivial data in the data array */
-  ccdataset_fill(start, stride, count,block, data_array1);
+  ccdataset_fill(start, stride, count,block, data_array1, mem_selection);
+
   MESG("data_array initialized");
 
-  status = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride,
-			     count, block);
-  VRFY((status >= 0),"hyperslab selection succeeded");
+  switch (file_selection) {
+      case HYPER:
+          status = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, block);
+          VRFY((status >= 0),"hyperslab selection succeeded");
+          break;
+
+      case POINT:
+          if (num_points) {
+              status = H5Sselect_elements(file_dataspace, H5S_SELECT_SET, num_points, coords);
+              VRFY((status >= 0),"Element selection succeeded");
+          }
+          else {
+              status = H5Sselect_none(file_dataspace);
+              VRFY((status >= 0),"none selection succeeded");
+          }
+          break;
+
+      case ALL:
+          status = H5Sselect_all(file_dataspace);
+          VRFY((status >= 0), "H5Sselect_all succeeded");
+          break;
+  }
+
+  switch (mem_selection) {
+      case HYPER:
+          status = H5Sselect_hyperslab(mem_dataspace, H5S_SELECT_SET, start, stride, count, block);
+          VRFY((status >= 0),"hyperslab selection succeeded");
+          break;
+
+      case POINT:
+          if (num_points) {
+              status = H5Sselect_elements(mem_dataspace, H5S_SELECT_SET, num_points, coords);
+              VRFY((status >= 0),"Element selection succeeded");
+          }
+          else {
+              status = H5Sselect_none(mem_dataspace);
+              VRFY((status >= 0),"none selection succeeded");
+          }
+          break;
+
+      case ALL:
+          status = H5Sselect_all(mem_dataspace);
+          VRFY((status >= 0), "H5Sselect_all succeeded");
+          break;
+  }
 
   /* set up the collective transfer property list */
   xfer_plist = H5Pcreate(H5P_DATASET_XFER);
@@ -604,33 +753,39 @@ coll_chunktest(const char* filename,
 	case API_LINK_HARD:
 	   status = H5Pset_dxpl_mpio_chunk_opt(xfer_plist,H5FD_MPIO_CHUNK_ONE_IO);
            VRFY((status>= 0),"collective chunk optimization succeeded");
-	break;
+           break;
+
 	case API_MULTI_HARD:
 	   status = H5Pset_dxpl_mpio_chunk_opt(xfer_plist,H5FD_MPIO_CHUNK_MULTI_IO);
 	   VRFY((status>= 0),"collective chunk optimization succeeded ");
-	break;
+           break;
+
 	case API_LINK_TRUE:
            status = H5Pset_dxpl_mpio_chunk_opt_num(xfer_plist,2);
 	   VRFY((status>= 0),"collective chunk optimization set chunk number succeeded");
-	break;
+           break;
+
 	case API_LINK_FALSE:
            status = H5Pset_dxpl_mpio_chunk_opt_num(xfer_plist,6);
            VRFY((status>= 0),"collective chunk optimization set chunk number succeeded");
-	break;
+           break;
+
 	case API_MULTI_COLL:
            status = H5Pset_dxpl_mpio_chunk_opt_num(xfer_plist,8);/* make sure it is using multi-chunk IO */
            VRFY((status>= 0),"collective chunk optimization set chunk number succeeded");
 	   status = H5Pset_dxpl_mpio_chunk_opt_ratio(xfer_plist,50);
            VRFY((status>= 0),"collective chunk optimization set chunk ratio succeeded");
-	break;
+           break;
+
 	case API_MULTI_IND:
            status = H5Pset_dxpl_mpio_chunk_opt_num(xfer_plist,8);/* make sure it is using multi-chunk IO */
            VRFY((status>= 0),"collective chunk optimization set chunk number succeeded");
 	   status = H5Pset_dxpl_mpio_chunk_opt_ratio(xfer_plist,100);
            VRFY((status>= 0),"collective chunk optimization set chunk ratio succeeded");
-	break;
+           break;
+
 	default:
-	;
+            ;
    }
 
 #ifdef H5_HAVE_INSTRUMENTED_LIBRARY
@@ -641,44 +796,42 @@ coll_chunktest(const char* filename,
                status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_LINK_HARD_NAME, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
                            NULL, NULL, NULL, NULL, NULL, NULL);
                VRFY((status >= 0),"testing property list inserted succeeded");
-
-            break;
+               break;
 
             case API_MULTI_HARD:
                prop_value = H5D_XFER_COLL_CHUNK_DEF;
                status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_MULTI_HARD_NAME, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
                            NULL, NULL, NULL, NULL, NULL, NULL);
                VRFY((status >= 0),"testing property list inserted succeeded");
-            break;
+               break;
 
             case API_LINK_TRUE:
                prop_value = H5D_XFER_COLL_CHUNK_DEF;
                status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_LINK_NUM_TRUE_NAME, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
                            NULL, NULL, NULL, NULL, NULL, NULL);
                VRFY((status >= 0),"testing property list inserted succeeded");
-
-            break;
+               break;
 
             case API_LINK_FALSE:
                prop_value = H5D_XFER_COLL_CHUNK_DEF;
                status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_LINK_NUM_FALSE_NAME, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
                            NULL, NULL, NULL, NULL, NULL, NULL);
                VRFY((status >= 0),"testing property list inserted succeeded");
-            break;
+               break;
 
             case API_MULTI_COLL:
                prop_value = H5D_XFER_COLL_CHUNK_DEF;
                status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_MULTI_RATIO_COLL_NAME, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
                            NULL, NULL, NULL, NULL, NULL, NULL);
                VRFY((status >= 0),"testing property list inserted succeeded");
-            break;
+               break;
 
             case API_MULTI_IND:
                prop_value = H5D_XFER_COLL_CHUNK_DEF;
                status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_MULTI_RATIO_IND_NAME, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
                            NULL, NULL, NULL, NULL, NULL, NULL);
                VRFY((status >= 0),"testing property list inserted succeeded");
-            break;
+               break;
 
             default:
                 ;
@@ -687,7 +840,7 @@ coll_chunktest(const char* filename,
 #endif
 
   /* write data collectively */
-  status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, file_dataspace,
+  status = H5Dwrite(dataset, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
 		    xfer_plist, data_array1);
   VRFY((status >= 0),"dataset write succeeded");
 
@@ -698,32 +851,38 @@ coll_chunktest(const char* filename,
                status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_HARD_NAME,&prop_value);
                VRFY((status >= 0),"testing property list get succeeded");
                VRFY((prop_value == 0),"API to set LINK COLLECTIVE IO directly succeeded");
-            break;
+               break;
+
             case API_MULTI_HARD:
                status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_MULTI_HARD_NAME,&prop_value);
                VRFY((status >= 0),"testing property list get succeeded");
                VRFY((prop_value == 0),"API to set MULTI-CHUNK COLLECTIVE IO optimization succeeded");
-            break;
+               break;
+
             case API_LINK_TRUE:
                status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_NUM_TRUE_NAME,&prop_value);
                VRFY((status >= 0),"testing property list get succeeded");
                VRFY((prop_value == 0),"API to set LINK COLLECTIVE IO succeeded");
-            break;
+               break;
+
             case API_LINK_FALSE:
                status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_NUM_FALSE_NAME,&prop_value);
                VRFY((status >= 0),"testing property list get succeeded");
                VRFY((prop_value == 0),"API to set LINK IO transferring to multi-chunk IO succeeded");
-            break;
+               break;
+
             case API_MULTI_COLL:
                status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_MULTI_RATIO_COLL_NAME,&prop_value);
                VRFY((status >= 0),"testing property list get succeeded");
                VRFY((prop_value == 0),"API to set MULTI-CHUNK COLLECTIVE IO with optimization succeeded");
-            break;
+               break;
+
             case API_MULTI_IND:
                status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_MULTI_RATIO_IND_NAME,&prop_value);
                VRFY((status >= 0),"testing property list get succeeded");
                VRFY((prop_value == 0),"API to set MULTI-CHUNK IO transferring to independent IO  succeeded");
-            break;
+               break;
+
             default:
             ;
        }
@@ -739,12 +898,15 @@ coll_chunktest(const char* filename,
   status = H5Sclose(file_dataspace);
   VRFY((status >= 0),"");
 
+  status = H5Sclose(mem_dataspace);
+  VRFY((status >= 0),"");
+
+
   status = H5Fclose(file);
   VRFY((status >= 0),"");
 
   if (data_array1) HDfree(data_array1);
 
-
   /* Use collective read to verify the correctness of collective write. */
 
   /* allocate memory for data buffer */
@@ -755,7 +917,7 @@ coll_chunktest(const char* filename,
   data_origin1 = (int *)malloc(dims[0]*dims[1]*sizeof(int));
   VRFY((data_origin1 != NULL), "data_origin1 malloc succeeded");
 
-  acc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+  acc_plist = create_faccess_plist(comm, info, facc_type);
   VRFY((acc_plist >= 0),"MPIO creation property list succeeded");
 
   file = H5Fopen(filename,H5F_ACC_RDONLY,acc_plist);
@@ -771,15 +933,68 @@ coll_chunktest(const char* filename,
   /* set up dimensions of the slab this process accesses */
   ccslab_set(mpi_rank, mpi_size, start, count, stride, block, select_factor);
 
-  /* obtain the file dataspace*/
+  /* obtain the file and mem dataspace*/
   file_dataspace = H5Dget_space (dataset);
   VRFY((file_dataspace >= 0), "");
 
-  status=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, block);
-  VRFY((status >= 0), "");
+  if (ALL != mem_selection) {
+      mem_dataspace = H5Dget_space (dataset);
+      VRFY((mem_dataspace >= 0), "");
+  }
+  else {
+      current_dims = num_points;
+      mem_dataspace = H5Screate_simple (1, &current_dims, NULL);
+      VRFY((mem_dataspace >= 0), "mem_dataspace create succeeded");
+  }
+
+  switch (file_selection) {
+      case HYPER:
+          status = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, block);
+          VRFY((status >= 0),"hyperslab selection succeeded");
+          break;
+
+      case POINT:
+          if (num_points) {
+              status = H5Sselect_elements(file_dataspace, H5S_SELECT_SET, num_points, coords);
+              VRFY((status >= 0),"Element selection succeeded");
+          }
+          else {
+              status = H5Sselect_none(file_dataspace);
+              VRFY((status >= 0),"none selection succeeded");
+          }
+          break;
+
+      case ALL:
+          status = H5Sselect_all(file_dataspace);
+          VRFY((status >= 0), "H5Sselect_all succeeded");
+          break;
+  }
+
+  switch (mem_selection) {
+      case HYPER:
+          status = H5Sselect_hyperslab(mem_dataspace, H5S_SELECT_SET, start, stride, count, block);
+          VRFY((status >= 0),"hyperslab selection succeeded");
+          break;
+
+      case POINT:
+          if (num_points) {
+              status = H5Sselect_elements(mem_dataspace, H5S_SELECT_SET, num_points, coords);
+              VRFY((status >= 0),"Element selection succeeded");
+          }
+          else {
+              status = H5Sselect_none(mem_dataspace);
+              VRFY((status >= 0),"none selection succeeded");
+          }
+          break;
+
+      case ALL:
+          status = H5Sselect_all(mem_dataspace);
+          VRFY((status >= 0), "H5Sselect_all succeeded");
+          break;
+  }
 
   /* fill dataset with test data */
-  ccdataset_fill(start, stride,count,block, data_origin1);
+  ccdataset_fill(start, stride,count,block, data_origin1, mem_selection);
   xfer_plist = H5Pcreate (H5P_DATASET_XFER);
   VRFY((xfer_plist >= 0),"");
 
@@ -790,13 +1005,12 @@ coll_chunktest(const char* filename,
      VRFY((status>= 0),"set independent IO collectively succeeded");
   }
 
-
-  status = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, file_dataspace,
+  status = H5Dread(dataset, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
                    xfer_plist, data_array1);
   VRFY((status >=0),"dataset read succeeded");
 
   /* verify the read data with original expected data */
-  status = ccdataset_vrfy(start, count, stride, block, data_array1, data_origin1);
+  status = ccdataset_vrfy(start, count, stride, block, data_array1, data_origin1, mem_selection);
   if (status) nerrors++;
 
   status = H5Pclose(xfer_plist);
@@ -804,17 +1018,23 @@ coll_chunktest(const char* filename,
 
   /* close dataset collectively */
   status=H5Dclose(dataset);
-  VRFY((status >= 0), "");
+  VRFY((status >= 0), "H5Dclose");
 
   /* release all IDs created */
-  H5Sclose(file_dataspace);
+  status = H5Sclose(file_dataspace);
+  VRFY((status >= 0),"H5Sclose");
+
+  status = H5Sclose(mem_dataspace);
+  VRFY((status >= 0),"H5Sclose");
 
   /* close the file collectively */
-  H5Fclose(file);
+  status = H5Fclose(file);
+  VRFY((status >= 0),"H5Fclose");
 
   /* release data buffers */
-  if (data_array1) free(data_array1);
-  if (data_origin1) free(data_origin1);
+  if(coords) HDfree(coords);
+  if(data_array1) HDfree(data_array1);
+  if(data_origin1) HDfree(data_origin1);
 
 }
 
@@ -933,12 +1153,12 @@ ccdataset_fill(hsize_t start[],
 	       hsize_t stride[],
 	       hsize_t count[],
 	       hsize_t block[],
-	       DATATYPE * dataset)
+	       DATATYPE * dataset,
+               int mem_selection)
 {
     DATATYPE *dataptr = dataset;
     DATATYPE *tmptr;
-    hsize_t   i,j,k1,k2;
-
+    hsize_t   i,j,k1,k2,k=0;
     /* put some trivial data in the data_array */
     tmptr = dataptr;
 
@@ -950,10 +1170,16 @@ ccdataset_fill(hsize_t start[],
         for(k2 = 0; k2 < count[1]; k2++) {
           for(j = 0;j < block[1]; j++) {
 
-            dataptr  =  tmptr + ((start[0]+k1*stride[0]+i)*SPACE_DIM2+
-				  start[1]+k2*stride[1]+j);
+            if (ALL != mem_selection) {
+                dataptr  =  tmptr + ((start[0]+k1*stride[0]+i)*SPACE_DIM2+
+                                     start[1]+k2*stride[1]+j);
+            }
+            else {
+                dataptr = tmptr + k;
+                k++;
+            }
 
-	    *dataptr = (DATATYPE)(k1+k2+i+j);
+            *dataptr = (DATATYPE)(k1+k2+i+j);
           }
         }
       }
@@ -1000,9 +1226,10 @@ ccdataset_vrfy(hsize_t start[],
 	       hsize_t stride[],
 	       hsize_t block[],
 	       DATATYPE *dataset,
-	       DATATYPE *original)
+	       DATATYPE *original,
+               int mem_selection)
 {
-    hsize_t i, j,k1,k2;
+    hsize_t i, j,k1,k2,k=0;
     int vrfyerrs;
     DATATYPE *dataptr,*oriptr;
 
@@ -1020,26 +1247,31 @@ ccdataset_vrfy(hsize_t start[],
 
     vrfyerrs = 0;
 
-    for (k1 = 0; k1 < count[0];k1++) {
-      for(i = 0;i < block[0];i++) {
-        for(k2 = 0; k2<count[1];k2++) {
-          for(j=0;j<block[1];j++) {
-
-             dataptr = dataset + ((start[0]+k1*stride[0]+i)*SPACE_DIM2+
-			           start[1]+k2*stride[1]+j);
-	     oriptr =  original + ((start[0]+k1*stride[0]+i)*SPACE_DIM2+
-			            start[1]+k2*stride[1]+j);
-
-	    if (*dataptr != *oriptr){
-		if (vrfyerrs++ < MAX_ERR_REPORT || VERBOSE_MED){
-		    printf("Dataset Verify failed at [%lu][%lu]: expect %d, got %d\n",
-			(unsigned long)i, (unsigned long)j,
-	     	    	*(original), *(dataset));
-		}
-	    }
-	  }
-	}
-      }
+    for (k1=0;k1<count[0];k1++) {
+        for(i=0;i<block[0];i++) {
+            for(k2=0; k2<count[1];k2++) {
+                for(j=0;j<block[1];j++) {
+                    if (ALL != mem_selection) {
+                        dataptr = dataset + ((start[0]+k1*stride[0]+i)*SPACE_DIM2+
+                                             start[1]+k2*stride[1]+j);
+                        oriptr =  original + ((start[0]+k1*stride[0]+i)*SPACE_DIM2+
+                                              start[1]+k2*stride[1]+j);
+                    }
+                    else {
+                        dataptr = dataset + k;
+                        oriptr = original + k;
+                        k++;
+                    }
+                    if (*dataptr != *oriptr){
+                        if (vrfyerrs++ < MAX_ERR_REPORT || VERBOSE_MED){
+                            printf("Dataset Verify failed at [%lu][%lu]: expect %d, got %d\n",
+                                   (unsigned long)i, (unsigned long)j,
+                                   *(original), *(dataset));
+                        }
+                    }
+                }
+            }
+        }
     }
     if (vrfyerrs > MAX_ERR_REPORT && !VERBOSE_MED)
 	printf("[more errors ...]\n");
diff --git a/testpar/t_dset.c b/testpar/t_dset.c
index 743de3a..96d3836 100644
--- a/testpar/t_dset.c
+++ b/testpar/t_dset.c
@@ -118,6 +118,54 @@ if(VERBOSE_MED){
     }
 }
 
+/*
+ * Setup the coordinates for point selection.
+ */
+void point_set(hsize_t start[],
+               hsize_t count[],
+               hsize_t stride[],
+               hsize_t block[],
+               size_t num_points, 
+               hsize_t coords[],
+               int order)
+{
+    hsize_t i,j, k = 0, m ,n, s1 ,s2;
+
+    HDcompile_assert(RANK == 2);
+
+    if(OUT_OF_ORDER == order)
+        k = (num_points * RANK) - 1;
+    else if(IN_ORDER == order)
+        k = 0;
+
+    s1 = start[0];
+    s2 = start[1];
+
+    for(i = 0 ; i < count[0]; i++)
+        for(j = 0 ; j < count[1]; j++)
+            for(m = 0 ; m < block[0]; m++)
+                for(n = 0 ; n < block[1]; n++)
+                    if(OUT_OF_ORDER == order) {
+                        coords[k--] = s2 + (stride[1] * j) + n;
+                        coords[k--] = s1 + (stride[0] * i) + m;
+                    }
+                    else if(IN_ORDER == order) {
+                        coords[k++] = s1 + stride[0] * i + m;
+                        coords[k++] = s2 + stride[1] * j + n;
+                    }
+
+    if(VERBOSE_MED) {
+        printf("start[]=(%lu, %lu), count[]=(%lu, %lu), stride[]=(%lu, %lu), block[]=(%lu, %lu), total datapoints=%lu\n",
+               (unsigned long)start[0], (unsigned long)start[1], (unsigned long)count[0], (unsigned long)count[1],
+               (unsigned long)stride[0], (unsigned long)stride[1], (unsigned long)block[0], (unsigned long)block[1],
+               (unsigned long)(block[0] * block[1] * count[0] * count[1]));
+        k = 0;
+        for(i = 0; i < num_points ; i++) {
+            printf("(%d, %d)\n", (int)coords[k], (int)coords[k + 1]);
+            k += 2;
+        }
+    }
+}
 
 /*
  * Fill the dataset with trivial data for testing.
@@ -231,7 +279,6 @@ dataset_writeInd(void)
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
     hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     hsize_t dims[RANK];   	/* dataset dim sizes */
     DATATYPE *data_array1 = NULL;	/* data buffer */
     const char *filename;
@@ -262,7 +309,7 @@ dataset_writeInd(void)
      * CREATE AN HDF5 FILE WITH PARALLEL ACCESS
      * ---------------------------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* create the file collectively */
@@ -377,7 +424,6 @@ dataset_readInd(void)
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
     hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     DATATYPE *data_array1 = NULL;	/* data buffer */
     DATATYPE *data_origin1 = NULL; 	/* expected data buffer */
     const char *filename;
@@ -407,7 +453,7 @@ dataset_readInd(void)
     VRFY((data_origin1 != NULL), "data_origin1 malloc succeeded");
 
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* open the file collectively */
@@ -501,9 +547,9 @@ dataset_writeAll(void)
     hid_t sid;   		/* Dataspace ID */
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
-    hid_t dataset1, dataset2, dataset3, dataset4;	/* Dataset ID */
+    hid_t dataset1, dataset2, dataset3, dataset4; /* Dataset ID */
+    hid_t dataset5, dataset6, dataset7; /* Dataset ID */
     hid_t datatype;		/* Datatype ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     hsize_t dims[RANK];   	/* dataset dim sizes */
     DATATYPE *data_array1 = NULL;	/* data buffer */
     const char *filename;
@@ -512,6 +558,11 @@ dataset_writeAll(void)
     hsize_t count[RANK], stride[RANK];		/* for hyperslab setting */
     hsize_t block[RANK];			/* for hyperslab setting */
 
+    size_t  num_points;         /* for point selection */
+    hsize_t *coords = NULL;     /* for point selection */
+    hsize_t current_dims;       /* for point selection */
+    int i;
+
     herr_t ret;         	/* Generic return value */
     int mpi_size, mpi_rank;
 
@@ -526,6 +577,11 @@ dataset_writeAll(void)
     MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
     MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank);
 
+    /* set up the coords array selection */
+    num_points = dim1;
+    coords = (hsize_t *)HDmalloc(dim1 * RANK * sizeof(hsize_t));
+    VRFY((coords != NULL), "coords malloc succeeded");
+
     /* allocate memory for data buffer */
     data_array1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE));
     VRFY((data_array1 != NULL), "data_array1 malloc succeeded");
@@ -534,7 +590,7 @@ dataset_writeAll(void)
      * START AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* create the file collectively */
@@ -573,6 +629,13 @@ dataset_writeAll(void)
     dataset3 = H5Dcreate2(fid, DATASETNAME3, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
     VRFY((dataset3 >= 0), "H5Dcreate2 succeeded");
 
+    dataset5 = H5Dcreate2(fid, DATASETNAME7, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    VRFY((dataset5 >= 0), "H5Dcreate2 succeeded");
+    dataset6 = H5Dcreate2(fid, DATASETNAME8, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    VRFY((dataset6 >= 0), "H5Dcreate2 succeeded");
+    dataset7 = H5Dcreate2(fid, DATASETNAME9, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+    VRFY((dataset7 >= 0), "H5Dcreate2 succeeded");
+
     /* release 2-D space ID created */
     H5Sclose(sid);
 
@@ -827,8 +890,6 @@ dataset_writeAll(void)
       VRFY((ret>= 0),"set independent IO collectively succeeded");
     }
 
-
-
     /* write data collectively */
     MESG("writeAll with scalar dataspace");
     ret = H5Dwrite(dataset4, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
@@ -846,6 +907,137 @@ dataset_writeAll(void)
     H5Sclose(mem_dataspace);
     H5Pclose(xfer_plist);
 
+
+    if(data_array1) free(data_array1);
+    data_array1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE));
+    VRFY((data_array1 != NULL), "data_array1 malloc succeeded");
+
+    block[0] = 1;
+    block[1] = dim1;
+    stride[0] = 1;
+    stride[1] = dim1;
+    count[0] = 1;
+    count[1] = 1;
+    start[0] = dim0/mpi_size * mpi_rank;
+    start[1] = 0;
+
+    dataset_fill(start, block, data_array1);
+    MESG("data_array initialized");
+    if(VERBOSE_MED){
+	MESG("data_array created");
+	dataset_print(start, block, data_array1);
+    }
+
+    /* Dataset5: point selection in File - Hyperslab selection in Memory*/
+    /* create a file dataspace independently */
+    point_set (start, count, stride, block, num_points, coords, OUT_OF_ORDER);
+    file_dataspace = H5Dget_space (dataset5);
+    VRFY((file_dataspace >= 0), "H5Dget_space succeeded");    
+    ret = H5Sselect_elements(file_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    start[0] = 0;
+    start[1] = 0;
+    mem_dataspace = H5Dget_space (dataset5);
+    VRFY((mem_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_hyperslab(mem_dataspace, H5S_SELECT_SET, start, stride, count, block);
+    VRFY((ret >= 0), "H5Sset_hyperslab succeeded");
+
+    /* set up the collective transfer properties list */
+    xfer_plist = H5Pcreate (H5P_DATASET_XFER);
+    VRFY((xfer_plist >= 0), "");
+    ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
+    VRFY((ret >= 0), "H5Pcreate xfer succeeded");
+    if(dxfer_coll_type == DXFER_INDEPENDENT_IO) {
+        ret = H5Pset_dxpl_mpio_collective_opt(xfer_plist,H5FD_MPIO_INDIVIDUAL_IO);
+        VRFY((ret>= 0),"set independent IO collectively succeeded");
+    }
+
+    /* write data collectively */
+    ret = H5Dwrite(dataset5, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
+                   xfer_plist, data_array1);
+    VRFY((ret >= 0), "H5Dwrite dataset5 succeeded");
+
+    /* release all temporary handles. */
+    H5Sclose(file_dataspace);
+    H5Sclose(mem_dataspace);
+    H5Pclose(xfer_plist);
+
+    /* Dataset6: point selection in File - Point selection in Memory*/
+    /* create a file dataspace independently */
+    start[0] = dim0/mpi_size * mpi_rank;
+    start[1] = 0;
+    point_set (start, count, stride, block, num_points, coords, OUT_OF_ORDER);
+    file_dataspace = H5Dget_space (dataset6);
+    VRFY((file_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_elements(file_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    start[0] = 0;
+    start[1] = 0;
+    point_set (start, count, stride, block, num_points, coords, IN_ORDER);
+    mem_dataspace = H5Dget_space (dataset6);
+    VRFY((mem_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_elements(mem_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    /* set up the collective transfer properties list */
+    xfer_plist = H5Pcreate (H5P_DATASET_XFER);
+    VRFY((xfer_plist >= 0), "");
+    ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
+    VRFY((ret >= 0), "H5Pcreate xfer succeeded");
+    if(dxfer_coll_type == DXFER_INDEPENDENT_IO) {
+        ret = H5Pset_dxpl_mpio_collective_opt(xfer_plist,H5FD_MPIO_INDIVIDUAL_IO);
+        VRFY((ret>= 0),"set independent IO collectively succeeded");
+    }
+
+    /* write data collectively */
+    ret = H5Dwrite(dataset6, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
+                   xfer_plist, data_array1);
+    VRFY((ret >= 0), "H5Dwrite dataset6 succeeded");
+
+    /* release all temporary handles. */
+    H5Sclose(file_dataspace);
+    H5Sclose(mem_dataspace);
+    H5Pclose(xfer_plist);
+
+    /* Dataset7: point selection in File - All selection in Memory*/
+    /* create a file dataspace independently */
+    start[0] = dim0/mpi_size * mpi_rank;
+    start[1] = 0;
+    point_set (start, count, stride, block, num_points, coords, IN_ORDER);
+    file_dataspace = H5Dget_space (dataset7);
+    VRFY((file_dataspace >= 0), "H5Dget_space succeeded");    
+    ret = H5Sselect_elements(file_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    current_dims = num_points;
+    mem_dataspace = H5Screate_simple (1, &current_dims, NULL);
+    VRFY((mem_dataspace >= 0), "mem_dataspace create succeeded");
+
+    ret = H5Sselect_all(mem_dataspace);
+    VRFY((ret >= 0), "H5Sselect_all succeeded");
+
+    /* set up the collective transfer properties list */
+    xfer_plist = H5Pcreate (H5P_DATASET_XFER);
+    VRFY((xfer_plist >= 0), "");
+    ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
+    VRFY((ret >= 0), "H5Pcreate xfer succeeded");
+    if(dxfer_coll_type == DXFER_INDEPENDENT_IO) {
+        ret = H5Pset_dxpl_mpio_collective_opt(xfer_plist,H5FD_MPIO_INDIVIDUAL_IO);
+        VRFY((ret>= 0),"set independent IO collectively succeeded");
+    }
+
+    /* write data collectively */
+    ret = H5Dwrite(dataset7, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
+                   xfer_plist, data_array1);
+    VRFY((ret >= 0), "H5Dwrite dataset7 succeeded");
+
+    /* release all temporary handles. */
+    H5Sclose(file_dataspace);
+    H5Sclose(mem_dataspace);
+    H5Pclose(xfer_plist);
+
     /*
      * All writes completed.  Close datasets collectively
      */
@@ -856,13 +1048,20 @@ dataset_writeAll(void)
     ret = H5Dclose(dataset3);
     VRFY((ret >= 0), "H5Dclose3 succeeded");
     ret = H5Dclose(dataset4);
-    VRFY((ret >= 0), "H5Dclose3 succeeded");
+    VRFY((ret >= 0), "H5Dclose4 succeeded");
+    ret = H5Dclose(dataset5);
+    VRFY((ret >= 0), "H5Dclose5 succeeded");
+    ret = H5Dclose(dataset6);
+    VRFY((ret >= 0), "H5Dclose6 succeeded");
+    ret = H5Dclose(dataset7);
+    VRFY((ret >= 0), "H5Dclose7 succeeded");
 
     /* close the file collectively */
     H5Fclose(fid);
 
     /* release data buffers */
-    if(data_array1) free(data_array1);
+    if(coords) HDfree(coords);
+    if(data_array1) HDfree(data_array1);
 }
 
 /*
@@ -882,8 +1081,7 @@ dataset_readAll(void)
     hid_t xfer_plist;		/* Dataset transfer properties list */
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
-    hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
+    hid_t dataset1, dataset2, dataset5, dataset6, dataset7; /* Dataset ID */
     DATATYPE *data_array1 = NULL;	/* data buffer */
     DATATYPE *data_origin1 = NULL; 	/* expected data buffer */
     const char *filename;
@@ -892,6 +1090,11 @@ dataset_readAll(void)
     hsize_t count[RANK], stride[RANK];		/* for hyperslab setting */
     hsize_t block[RANK];			/* for hyperslab setting */
 
+    size_t num_points;          /* for point selection */
+    hsize_t *coords = NULL;     /* for point selection */
+    hsize_t current_dims;       /* for point selection */
+    int i,j,k;
+
     herr_t ret;         	/* Generic return value */
     int mpi_size, mpi_rank;
 
@@ -906,6 +1109,11 @@ dataset_readAll(void)
     MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
     MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank);
 
+    /* set up the coords array selection */
+    num_points = dim1;
+    coords = (hsize_t *)HDmalloc(dim0 * dim1 * RANK * sizeof(hsize_t));
+    VRFY((coords != NULL), "coords malloc succeeded");
+
     /* allocate memory for data buffer */
     data_array1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE));
     VRFY((data_array1 != NULL), "data_array1 malloc succeeded");
@@ -916,7 +1124,7 @@ dataset_readAll(void)
      * OPEN AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* open the file collectively */
@@ -939,6 +1147,14 @@ dataset_readAll(void)
     dataset2 = H5Dopen2(fid, DATASETNAME2, H5P_DEFAULT);
     VRFY((dataset2 >= 0), "H5Dopen2 2 succeeded");
 
+    /* open another dataset collectively */
+    dataset5 = H5Dopen2(fid, DATASETNAME7, H5P_DEFAULT);
+    VRFY((dataset5 >= 0), "H5Dopen2 5 succeeded");
+    dataset6 = H5Dopen2(fid, DATASETNAME8, H5P_DEFAULT);
+    VRFY((dataset6 >= 0), "H5Dopen2 6 succeeded");
+    dataset7 = H5Dopen2(fid, DATASETNAME9, H5P_DEFAULT);
+    VRFY((dataset7 >= 0), "H5Dopen2 7 succeeded");
+
     /*
      * Set up dimensions of the slab this process accesses.
      */
@@ -1077,6 +1293,162 @@ dataset_readAll(void)
     H5Sclose(mem_dataspace);
     H5Pclose(xfer_plist);
 
+    if(data_array1) free(data_array1);
+    if(data_origin1) free(data_origin1);
+    data_array1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE));
+    VRFY((data_array1 != NULL), "data_array1 malloc succeeded");
+    data_origin1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE));
+    VRFY((data_origin1 != NULL), "data_origin1 malloc succeeded");
+
+    block[0] = 1;
+    block[1] = dim1;
+    stride[0] = 1;
+    stride[1] = dim1;
+    count[0] = 1;
+    count[1] = 1;
+    start[0] = dim0/mpi_size * mpi_rank;
+    start[1] = 0;
+
+    dataset_fill(start, block, data_origin1);
+    MESG("data_array initialized");
+    if(VERBOSE_MED){
+	MESG("data_array created");
+	dataset_print(start, block, data_origin1);
+    }
+
+    /* Dataset5: point selection in memory - Hyperslab selection in file*/
+    /* create a file dataspace independently */
+    file_dataspace = H5Dget_space (dataset5);
+    VRFY((file_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, block);
+    VRFY((ret >= 0), "H5Sset_hyperslab succeeded");
+
+    start[0] = 0;
+    start[1] = 0;
+    point_set (start, count, stride, block, num_points, coords, OUT_OF_ORDER);
+    mem_dataspace = H5Dget_space (dataset5);
+    VRFY((mem_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_elements(mem_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    /* set up the collective transfer properties list */
+    xfer_plist = H5Pcreate (H5P_DATASET_XFER);
+    VRFY((xfer_plist >= 0), "");
+    ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
+    VRFY((ret >= 0), "H5Pcreate xfer succeeded");
+    if(dxfer_coll_type == DXFER_INDEPENDENT_IO) {
+     ret = H5Pset_dxpl_mpio_collective_opt(xfer_plist,H5FD_MPIO_INDIVIDUAL_IO);
+     VRFY((ret>= 0),"set independent IO collectively succeeded");
+    }
+
+    /* read data collectively */
+    ret = H5Dread(dataset5, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
+                  xfer_plist, data_array1);
+    VRFY((ret >= 0), "H5Dread dataset5 succeeded");
+
+    
+    ret = dataset_vrfy(start, count, stride, block, data_array1, data_origin1);
+    if(ret) nerrors++;
+
+    /* release all temporary handles. */
+    H5Sclose(file_dataspace);
+    H5Sclose(mem_dataspace);
+    H5Pclose(xfer_plist);
+
+
+    if(data_array1) free(data_array1);
+    data_array1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE));
+    VRFY((data_array1 != NULL), "data_array1 malloc succeeded");
+
+    /* Dataset6: point selection in File - Point selection in Memory*/
+    /* create a file dataspace independently */
+    start[0] = dim0/mpi_size * mpi_rank;
+    start[1] = 0;
+    point_set (start, count, stride, block, num_points, coords, IN_ORDER);
+    file_dataspace = H5Dget_space (dataset6);
+    VRFY((file_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_elements(file_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    start[0] = 0;
+    start[1] = 0;
+    point_set (start, count, stride, block, num_points, coords, OUT_OF_ORDER);
+    mem_dataspace = H5Dget_space (dataset6);
+    VRFY((mem_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_elements(mem_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    /* set up the collective transfer properties list */
+    xfer_plist = H5Pcreate (H5P_DATASET_XFER);
+    VRFY((xfer_plist >= 0), "");
+    ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
+    VRFY((ret >= 0), "H5Pcreate xfer succeeded");
+    if(dxfer_coll_type == DXFER_INDEPENDENT_IO) {
+        ret = H5Pset_dxpl_mpio_collective_opt(xfer_plist,H5FD_MPIO_INDIVIDUAL_IO);
+        VRFY((ret>= 0),"set independent IO collectively succeeded");
+    }
+
+    /* read data collectively */
+    ret = H5Dread(dataset6, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
+                  xfer_plist, data_array1);
+    VRFY((ret >= 0), "H5Dread dataset6 succeeded");
+
+    ret = dataset_vrfy(start, count, stride, block, data_array1, data_origin1);
+    if(ret) nerrors++;
+
+    /* release all temporary handles. */
+    H5Sclose(file_dataspace);
+    H5Sclose(mem_dataspace);
+    H5Pclose(xfer_plist);
+
+    if(data_array1) free(data_array1);
+    data_array1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE));
+    VRFY((data_array1 != NULL), "data_array1 malloc succeeded");
+
+    /* Dataset7: point selection in memory - All selection in file*/
+    /* create a file dataspace independently */
+    file_dataspace = H5Dget_space (dataset7);
+    VRFY((file_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_all(file_dataspace);
+    VRFY((ret >= 0), "H5Sselect_all succeeded");
+
+    num_points = dim0 * dim1;
+    k=0;
+    for (i=0 ; i<dim0; i++) {
+        for (j=0 ; j<dim1; j++) {
+            coords[k++] = i;
+            coords[k++] = j;
+        }
+    }
+    mem_dataspace = H5Dget_space (dataset7);
+    VRFY((mem_dataspace >= 0), "H5Dget_space succeeded");
+    ret = H5Sselect_elements(mem_dataspace, H5S_SELECT_SET, num_points, coords);
+    VRFY((ret >= 0), "H5Sselect_elements succeeded");
+
+    /* set up the collective transfer properties list */
+    xfer_plist = H5Pcreate (H5P_DATASET_XFER);
+    VRFY((xfer_plist >= 0), "");
+    ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
+    VRFY((ret >= 0), "H5Pcreate xfer succeeded");
+    if(dxfer_coll_type == DXFER_INDEPENDENT_IO) {
+        ret = H5Pset_dxpl_mpio_collective_opt(xfer_plist,H5FD_MPIO_INDIVIDUAL_IO);
+        VRFY((ret>= 0),"set independent IO collectively succeeded");
+    }
+
+    /* read data collectively */
+    ret = H5Dread(dataset7, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
+                  xfer_plist, data_array1);
+    VRFY((ret >= 0), "H5Dread dataset7 succeeded");
+
+    start[0] = dim0/mpi_size * mpi_rank;
+    start[1] = 0;
+    ret = dataset_vrfy(start, count, stride, block, data_array1+(dim0/mpi_size * dim1 * mpi_rank), data_origin1);
+    if(ret) nerrors++;
+
+    /* release all temporary handles. */
+    H5Sclose(file_dataspace);
+    H5Sclose(mem_dataspace);
+    H5Pclose(xfer_plist);
 
     /*
      * All reads completed.  Close datasets collectively
@@ -1085,13 +1457,20 @@ dataset_readAll(void)
     VRFY((ret >= 0), "H5Dclose1 succeeded");
     ret = H5Dclose(dataset2);
     VRFY((ret >= 0), "H5Dclose2 succeeded");
+    ret = H5Dclose(dataset5);
+    VRFY((ret >= 0), "H5Dclose5 succeeded");
+    ret = H5Dclose(dataset6);
+    VRFY((ret >= 0), "H5Dclose6 succeeded");
+    ret = H5Dclose(dataset7);
+    VRFY((ret >= 0), "H5Dclose7 succeeded");
 
     /* close the file collectively */
     H5Fclose(fid);
 
     /* release data buffers */
-    if(data_array1) free(data_array1);
-    if(data_origin1) free(data_origin1);
+    if(coords) HDfree(coords);
+    if(data_array1) HDfree(data_array1);
+    if(data_origin1) HDfree(data_origin1);
 }
 
 
@@ -1116,7 +1495,6 @@ extend_writeInd(void)
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
     hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     const char *filename;
     hsize_t dims[RANK];   	/* dataset dim sizes */
     hsize_t max_dims[RANK] =
@@ -1156,7 +1534,7 @@ extend_writeInd(void)
      * START AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
 /* Reduce the number of metadata cache slots, so that there are cache
@@ -1347,7 +1725,6 @@ extend_writeInd2(void)
     hid_t fs;   		/* File dataspace ID */
     hid_t ms;   		/* Memory dataspace ID */
     hid_t dataset;		/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     hsize_t orig_size=10;   	/* Original dataset dim size */
     hsize_t new_size=20;   	/* Extended dataset dim size */
     hsize_t one=1;
@@ -1372,7 +1749,7 @@ extend_writeInd2(void)
      * START AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     VRFY((fapl >= 0), "create_faccess_plist succeeded");
 
     /* create the file collectively */
@@ -1509,7 +1886,6 @@ extend_readInd(void)
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
     hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     hsize_t dims[RANK];   	/* dataset dim sizes */
     DATATYPE *data_array1 = NULL;	/* data buffer */
     DATATYPE *data_array2 = NULL;	/* data buffer */
@@ -1546,7 +1922,7 @@ extend_readInd(void)
      * OPEN AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* open the file collectively */
@@ -1690,7 +2066,6 @@ extend_writeAll(void)
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
     hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     const char *filename;
     hsize_t dims[RANK];   	/* dataset dim sizes */
     hsize_t max_dims[RANK] =
@@ -1730,7 +2105,7 @@ extend_writeAll(void)
      * START AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
 /* Reduce the number of metadata cache slots, so that there are cache
@@ -1941,7 +2316,6 @@ extend_readAll(void)
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
     hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     const char *filename;
     hsize_t dims[RANK];   	/* dataset dim sizes */
     DATATYPE *data_array1 = NULL;	/* data buffer */
@@ -1978,7 +2352,7 @@ extend_readAll(void)
      * OPEN AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* open the file collectively */
@@ -2142,7 +2516,6 @@ compress_readAll(void)
     int rank=1;                 /* Dataspace rank */
     hsize_t dim=dim0;           /* Dataspace dimensions */
     unsigned u;                 /* Local index variable */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     DATATYPE *data_read = NULL;	/* data buffer */
     DATATYPE *data_orig = NULL; /* expected data buffer */
     const char *filename;
@@ -2223,7 +2596,7 @@ compress_readAll(void)
      * -------------------*/
 
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* open the file collectively */
@@ -2308,7 +2681,6 @@ none_selection_chunk(void)
     hid_t file_dataspace;	/* File dataspace ID */
     hid_t mem_dataspace;	/* memory dataspace ID */
     hid_t dataset1, dataset2;	/* Dataset ID */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     const char *filename;
     hsize_t dims[RANK];   	/* dataset dim sizes */
     DATATYPE	*data_origin = NULL;		/* data buffer */
@@ -2344,7 +2716,7 @@ none_selection_chunk(void)
      * START AN HDF5 FILE
      * -------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* create the file collectively */
@@ -2599,7 +2971,6 @@ test_actual_io_mode(int selection_mode) {
     hsize_t     stride[RANK];
     hsize_t     count[RANK];
     hsize_t     block[RANK];
-    hbool_t     use_gpfs = FALSE;
     char message[256];
     herr_t      ret;
    
@@ -2639,7 +3010,7 @@ test_actual_io_mode(int selection_mode) {
     HDassert(filename != NULL);
 
     /* Setup the file access template */
-    fapl = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+    fapl = create_faccess_plist(mpi_comm, mpi_info, facc_type);
     VRFY((fapl >= 0), "create_faccess_plist() succeeded");
 
     /* Create the file */
@@ -2703,7 +3074,10 @@ test_actual_io_mode(int selection_mode) {
             
             test_name = "Multi Chunk - Collective";
             actual_chunk_opt_mode_expected = H5D_MPIO_MULTI_CHUNK;
-            actual_io_mode_expected = H5D_MPIO_CHUNK_COLLECTIVE;
+            if(mpi_size > 1)
+                actual_io_mode_expected = H5D_MPIO_CHUNK_COLLECTIVE;
+            else
+                actual_io_mode_expected = H5D_MPIO_CHUNK_INDEPENDENT;
             break;
         
         /* Mixed I/O with optimization */
@@ -2780,11 +3154,14 @@ test_actual_io_mode(int selection_mode) {
                 test_name = "Multi Chunk - Mixed (Disagreement)";
             
             actual_chunk_opt_mode_expected = H5D_MPIO_MULTI_CHUNK;
-               
-            if(mpi_rank == 0)
-                actual_io_mode_expected = H5D_MPIO_CHUNK_COLLECTIVE;
+            if(mpi_size > 1) {
+                if(mpi_rank == 0)
+                    actual_io_mode_expected = H5D_MPIO_CHUNK_COLLECTIVE;
+                else
+                    actual_io_mode_expected = H5D_MPIO_CHUNK_MIXED;
+            }
             else
-                actual_io_mode_expected = H5D_MPIO_CHUNK_MIXED;
+                actual_io_mode_expected = H5D_MPIO_CHUNK_INDEPENDENT;
             
             break; 
 
@@ -2824,13 +3201,6 @@ test_actual_io_mode(int selection_mode) {
             break;
     }
 
-    /* Reset the expected values to defulats if the MPI_POSIX driver is in use. 
-     * This property is defined only for mpio, not MPI POSIX. */
-    if (facc_type == FACC_MPIPOSIX) {
-        actual_chunk_opt_mode_expected = H5D_MPIO_NO_CHUNK_OPTIMIZATION;
-        actual_io_mode_expected = H5D_MPIO_NO_COLLECTIVE;
-    }
-
     ret = H5Sselect_hyperslab(file_space, H5S_SELECT_SET, start, stride, count, block);
     VRFY((ret >= 0), "H5Sset_hyperslab succeeded");
  
@@ -2843,7 +3213,6 @@ test_actual_io_mode(int selection_mode) {
     ret = H5Sselect_hyperslab(mem_space, H5S_SELECT_SET, start, stride, count, block);
     VRFY((ret >= 0), "H5Sset_hyperslab succeeded");
 
-
     /* Get the number of elements in the selection */
     length = dim0 * dim1;
 
@@ -2921,7 +3290,6 @@ test_actual_io_mode(int selection_mode) {
     VRFY((actual_chunk_opt_mode_read == actual_chunk_opt_mode_write),
         "reading and writing are the same for actual_chunk_opt_mode");
 
-    
     /* Test values */
     if(actual_chunk_opt_mode_expected != (unsigned) -1 && actual_io_mode_expected != (unsigned) -1) {
         sprintf(message, "Actual Chunk Opt Mode has the correct value for %s.\n",test_name);
@@ -3012,7 +3380,7 @@ actual_io_mode_tests(void) {
      */
     test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_IND);
     test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_COL);
-    
+
     /* The Multi Chunk Mixed test requires atleast three processes. */
     if (mpi_size > 2)
         test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_MIX);
@@ -3063,15 +3431,9 @@ actual_io_mode_tests(void) {
  *       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.
  *
@@ -3110,8 +3472,8 @@ test_no_collective_cause_mode(int selection_mode)
     int         length;
     int         * buffer;
     int         i;
-    MPI_Comm    mpi_comm = MPI_COMM_NULL;
-    MPI_Info    mpi_info = MPI_INFO_NULL;
+    MPI_Comm    mpi_comm;
+    MPI_Info    mpi_info;
     hid_t       fid = -1;
     hid_t       sid = -1;
     hid_t       dataset = -1;
@@ -3124,7 +3486,6 @@ test_no_collective_cause_mode(int selection_mode)
     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;
@@ -3138,7 +3499,7 @@ test_no_collective_cause_mode(int selection_mode)
     MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
 
     MPI_Barrier(MPI_COMM_WORLD);
-    
+
     HDassert(mpi_size >= 1);
 
     mpi_comm = MPI_COMM_WORLD;
@@ -3148,35 +3509,30 @@ test_no_collective_cause_mode(int selection_mode)
     dcpl = H5Pcreate(H5P_DATASET_CREATE);
     VRFY((dcpl >= 0), "dataset creation plist created successfully");
 
-    if (selection_mode & TEST_SET_MPIPOSIX) {
-        l_facc_type = FACC_MPIPOSIX;
+    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;
     }
-    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;
-        }
+    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");
+    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 = 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 */
+        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);
@@ -3196,7 +3552,7 @@ test_no_collective_cause_mode(int selection_mode)
     HDassert(filename != NULL);
 
     /* Setup the file access template */
-    fapl = create_faccess_plist(mpi_comm, mpi_info, l_facc_type, use_gpfs);
+    fapl = create_faccess_plist(mpi_comm, mpi_info, l_facc_type);
     VRFY((fapl >= 0), "create_faccess_plist() succeeded");
 
     /* Create the file */
@@ -3243,12 +3599,6 @@ test_no_collective_cause_mode(int selection_mode)
         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";
@@ -3264,12 +3614,6 @@ test_no_collective_cause_mode(int selection_mode)
     }
 #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;
@@ -3284,13 +3628,6 @@ test_no_collective_cause_mode(int selection_mode)
         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) {
@@ -3307,17 +3644,6 @@ test_no_collective_cause_mode(int selection_mode)
         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;
 
@@ -3433,7 +3759,7 @@ test_no_collective_cause_mode(int selection_mode)
  *    have the correct values.
  *
  * NOTE: 
- *    This is a temprary function. 
+ *    This is a temporary function. 
  *    test_no_collective_cause_mode(TEST_FILTERS) will replace this when
  *    H5Dcreate and H5write support for mpio and filter feature.
  *
@@ -3474,7 +3800,6 @@ test_no_collective_cause_mode_filter(int selection_mode)
     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;
@@ -3523,7 +3848,7 @@ test_no_collective_cause_mode_filter(int selection_mode)
     HDassert(filename != NULL);
 
     /* Setup the file access template */
-    fapl_write = create_faccess_plist(mpi_comm, mpi_info, FACC_DEFAULT, use_gpfs);
+    fapl_write = create_faccess_plist(mpi_comm, mpi_info, FACC_DEFAULT);
     VRFY((fapl_write >= 0), "create_faccess_plist() succeeded");
 
     fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_write);
@@ -3551,13 +3876,6 @@ test_no_collective_cause_mode_filter(int selection_mode)
     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");
@@ -3616,7 +3934,7 @@ test_no_collective_cause_mode_filter(int selection_mode)
      *---------------------*/
 
     /* Setup the file access template */
-    fapl_read = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+    fapl_read = create_faccess_plist(mpi_comm, mpi_info, facc_type);
     VRFY((fapl_read >= 0), "create_faccess_plist() succeeded");
 
     fid = H5Fopen (filename, H5F_ACC_RDONLY, fapl_read);
@@ -3675,11 +3993,6 @@ test_no_collective_cause_mode_filter(int selection_mode)
 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 
      */
@@ -3687,9 +4000,7 @@ no_collective_cause_tests(void)
     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            
@@ -3703,9 +4014,9 @@ no_collective_cause_tests(void)
     /* 
      * Test combined causes 
      */
-    test_no_collective_cause_mode (TEST_SET_MPIPOSIX | TEST_DATATYPE_CONVERSION);
+    test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL | 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);
+    test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL | TEST_DATATYPE_CONVERSION | TEST_DATA_TRANSFORMS);
 
     return;
 }
@@ -3728,7 +4039,6 @@ dataset_atomicity(void)
     hid_t acc_tpl;		/* File access templates */
     hid_t sid;   		/* Dataspace ID */
     hid_t dataset1;      	/* Dataset IDs */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     hsize_t dims[RANK];   	/* dataset dim sizes */
     int *write_buf = NULL;	/* data buffer */
     int *read_buf = NULL;	/* data buffer */
@@ -3770,7 +4080,7 @@ dataset_atomicity(void)
     VRFY((read_buf != NULL), "read_buf malloc succeeded");
 
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* create the file collectively */
@@ -3833,7 +4143,7 @@ dataset_atomicity(void)
     MPI_Barrier (comm);
 
     /* setup file access template */
-    acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(comm, info, facc_type);
     VRFY((acc_tpl >= 0), "");
 
     /* open the file collectively */
diff --git a/testpar/t_file.c b/testpar/t_file.c
index 5cd3e9d..70ca60e 100644
--- a/testpar/t_file.c
+++ b/testpar/t_file.c
@@ -40,7 +40,6 @@ test_split_comm_access(void)
     int newrank, newprocs;
     hid_t fid;			/* file IDs */
     hid_t acc_tpl;		/* File access properties */
-    hbool_t use_gpfs = FALSE;   /* Use GPFS hints */
     herr_t ret;			/* generic return value */
     const char *filename;
 
@@ -68,7 +67,7 @@ test_split_comm_access(void)
 	MPI_Comm_rank(comm,&sub_mpi_rank);
 
 	/* setup file access template */
-	acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+	acc_tpl = create_faccess_plist(comm, info, facc_type);
 	VRFY((acc_tpl >= 0), "");
 
 	/* create the file collectively */
diff --git a/testpar/t_mdset.c b/testpar/t_mdset.c
index 8fc739e..fa1a980 100644
--- a/testpar/t_mdset.c
+++ b/testpar/t_mdset.c
@@ -88,7 +88,6 @@ void multiple_dset_write(void)
     int i, j, n, mpi_size, mpi_rank, size;
     hid_t iof, plist, dataset, memspace, filespace;
     hid_t dcpl;                         /* Dataset creation property list */
-    hbool_t use_gpfs = FALSE;           /* Use GPFS hints */
     hsize_t chunk_origin [DIM];
     hsize_t chunk_dims [DIM], file_dims [DIM];
     hsize_t count[DIM]={1,1};
@@ -112,7 +111,7 @@ void multiple_dset_write(void)
     outme = HDmalloc((size_t)(size * size * sizeof(double)));
     VRFY((outme != NULL), "HDmalloc succeeded for outme");
 
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     VRFY((plist>=0), "create_faccess_plist succeeded");
     iof = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
     VRFY((iof>=0), "H5Fcreate succeeded");
@@ -175,7 +174,6 @@ void multiple_dset_write(void)
 void compact_dataset(void)
 {
     int i, j, mpi_size, mpi_rank, size, err_num=0;
-    hbool_t use_gpfs = FALSE;
     hid_t iof, plist, dcpl, dxpl, dataset, filespace;
     hsize_t file_dims [DIM];
     double * outme;
@@ -201,7 +199,7 @@ void compact_dataset(void)
     filename = GetTestParameters();
     VRFY((mpi_size <= size), "mpi_size <= size");
 
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     iof = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
 
     /* Define data space */
@@ -244,7 +242,7 @@ void compact_dataset(void)
     H5Fclose(iof);
 
     /* Open the file and dataset, read and compare the data. */
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     iof = H5Fopen(filename, H5F_ACC_RDONLY, plist);
     VRFY((iof >= 0), "H5Fopen succeeded");
 
@@ -295,7 +293,6 @@ void compact_dataset(void)
 void null_dataset(void)
 {
     int mpi_size, mpi_rank;
-    hbool_t use_gpfs = FALSE;
     hid_t iof, plist, dxpl, dataset, attr, sid;
     unsigned uval=2;    /* Buffer for writing to dataset */
     int val=1;          /* Buffer for writing to attribute */
@@ -310,8 +307,7 @@ void null_dataset(void)
 
     filename = GetTestParameters();
 
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL,
-                                 facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     iof = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
 
     /* Define data space */
@@ -355,7 +351,7 @@ void null_dataset(void)
     H5Fclose(iof);
 
     /* Open the file and dataset, read and compare the data. */
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     iof = H5Fopen(filename, H5F_ACC_RDONLY, plist);
     VRFY((iof >= 0), "H5Fopen succeeded");
 
@@ -409,7 +405,6 @@ void null_dataset(void)
 void big_dataset(void)
 {
     int mpi_size, mpi_rank;     /* MPI info */
-    hbool_t use_gpfs = FALSE;   /* Don't use GPFS stuff for this test */
     hid_t iof,                  /* File ID */
         fapl,                   /* File access property list ID */
         dataset,                /* Dataset ID */
@@ -428,7 +423,7 @@ void big_dataset(void)
 
     filename = GetTestParameters();
 
-    fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     VRFY((fapl >= 0), "create_faccess_plist succeeded");
 
     /*
@@ -540,7 +535,6 @@ void big_dataset(void)
 void dataset_fillvalue(void)
 {
     int mpi_size, mpi_rank;     /* MPI info */
-    hbool_t use_gpfs = FALSE;   /* Don't use GPFS stuff for this test */
     int err_num;                /* Number of errors */
     hid_t iof,                  /* File ID */
         fapl,                   /* File access property list ID */
@@ -575,7 +569,7 @@ void dataset_fillvalue(void)
     wdata=HDmalloc((size_t)(dset_size*sizeof(int)));
     VRFY((wdata != NULL), "HDmalloc succeeded for write buffer");
 
-    fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     VRFY((fapl >= 0), "create_faccess_plist succeeded");
 
     /*
@@ -656,7 +650,7 @@ void dataset_fillvalue(void)
     ret = H5Dwrite(dataset, H5T_NATIVE_INT, memspace, filespace, dxpl, wdata);
     VRFY((ret >= 0), "H5Dwrite succeeded");
 
-    /* Barrier here, to allow MPI-posix I/O to sync */
+    /* Barrier here, to allow processes to sync */
     MPI_Barrier(MPI_COMM_WORLD);
 
     /*
@@ -731,7 +725,6 @@ void collective_group_write(void)
 {
     int mpi_rank, mpi_size, size;
     int i, j, m;
-    hbool_t use_gpfs = FALSE;
     char gname[64], dname[32];
     hid_t fid, gid, did, plist, dcpl, memspace, filespace;
     DATATYPE * outme = NULL;
@@ -758,7 +751,7 @@ void collective_group_write(void)
     outme = HDmalloc((size_t)(size * size * sizeof(DATATYPE)));
     VRFY((outme != NULL), "HDmalloc succeeded for outme");
 
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
     H5Pclose(plist);
 
@@ -827,7 +820,6 @@ void independent_group_read(void)
 {
     int      mpi_rank, m;
     hid_t    plist, fid;
-    hbool_t  use_gpfs = FALSE;
     const H5Ptest_param_t *pt;
     char	*filename;
     int		ngroups;
@@ -838,7 +830,7 @@ void independent_group_read(void)
 
     MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
 
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     fid = H5Fopen(filename, H5F_ACC_RDONLY, plist);
     H5Pclose(plist);
 
@@ -950,7 +942,6 @@ void multiple_group_write(void)
 {
     int mpi_rank, mpi_size, size;
     int m;
-    hbool_t use_gpfs = FALSE;
     char gname[64];
     hid_t fid, gid, plist, memspace, filespace;
     hsize_t chunk_origin[DIM];
@@ -969,7 +960,7 @@ void multiple_group_write(void)
 
     size = get_size();
 
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
     H5Pclose(plist);
 
@@ -1120,7 +1111,6 @@ void multiple_group_read(void)
 {
     int      mpi_rank, mpi_size, error_num, size;
     int      m;
-    hbool_t  use_gpfs = FALSE;
     char     gname[64];
     hid_t    plist, fid, gid, memspace, filespace;
     hsize_t  chunk_origin[DIM];
@@ -1138,7 +1128,7 @@ void multiple_group_read(void)
 
     size = get_size();
 
-    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+    plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
     fid = H5Fopen(filename, H5F_ACC_RDONLY, plist);
     H5Pclose(plist);
 
@@ -1779,12 +1769,9 @@ void rr_obj_hdr_flush_confusion(void)
      */
     MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
     MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
-    if (mpi_size < 3){
-	HDfprintf(stdout, "%s needs at least 3 processes to run. Terminated.\n",
-	    fcn_name);
-	nerrors++;
-	return;
-    }
+
+    HDassert(mpi_size > 2);
+
     is_reader = mpi_rank % 2;
     mrc = MPI_Comm_split(MPI_COMM_WORLD, is_reader, mpi_rank, &comm);
     VRFY((mrc==MPI_SUCCESS), "MPI_Comm_split");
diff --git a/testpar/t_ph5basic.c b/testpar/t_ph5basic.c
index 1e5d3b3..76eeaef 100644
--- a/testpar/t_ph5basic.c
+++ b/testpar/t_ph5basic.c
@@ -191,117 +191,3 @@ test_fapl_mpio_dup(void)
     }
 }
 
-
-/*-------------------------------------------------------------------------
- * Function:    test_fapl_mpiposix_dup
- *
- * Purpose:     Test if fapl_mpiposix property list keeps a duplicate of the
- * 		communicator object given when set; and returns a duplicate
- * 		of its component when H5Pget_fapl_mpiposix is called.
- * 		Note that fapl_mpiposix does not use INFO object.
- *
- * Return:      Success:        None
- *
- *              Failure:        Abort
- *
- * Programmer:  Albert Cheng
- *              January 9, 2003
- *
- * Modifications:
- *-------------------------------------------------------------------------
- */
-void
-test_fapl_mpiposix_dup(void)
-{
-    int mpi_size, mpi_rank;
-    MPI_Comm comm, comm_tmp;
-    int mpi_size_old, mpi_rank_old;
-    int mpi_size_tmp, mpi_rank_tmp;
-    int mrc;			/* MPI return value */
-    hid_t acc_pl;		/* File access properties */
-    hbool_t use_gpfs = FALSE;
-    herr_t ret;			/* hdf5 return value */
-
-    if (VERBOSE_MED)
-	printf("Verify fapl_mpiposix duplicates communicator object\n");
-
-    /* set up MPI parameters */
-    MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
-    MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank);
-    if (VERBOSE_MED)
-	printf("rank/size of MPI_COMM_WORLD are %d/%d\n", mpi_rank, mpi_size);
-
-    /* Create a new communicator that has the same processes as MPI_COMM_WORLD.
-     * Use MPI_Comm_split because it is simplier than MPI_Comm_create
-     */
-    mrc = MPI_Comm_split(MPI_COMM_WORLD, 0, 0, &comm);
-    VRFY((mrc==MPI_SUCCESS), "MPI_Comm_split");
-    MPI_Comm_size(comm,&mpi_size_old);
-    MPI_Comm_rank(comm,&mpi_rank_old);
-    if (VERBOSE_MED)
-	printf("rank/size of comm are %d/%d\n", mpi_rank_old, mpi_size_old);
-
-    acc_pl = H5Pcreate (H5P_FILE_ACCESS);
-    VRFY((acc_pl >= 0), "H5P_FILE_ACCESS");
-
-    ret = H5Pset_fapl_mpiposix(acc_pl, comm, use_gpfs);
-    VRFY((ret >= 0), "");
-
-    /* Case 1:
-     * Free the created communicator object.
-     * Check if the access property list is still valid and can return
-     * valid communicator object.
-     */
-    mrc = MPI_Comm_free(&comm);
-    VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free");
-
-    ret = H5Pget_fapl_mpiposix(acc_pl, &comm_tmp, &use_gpfs);
-    VRFY((ret >= 0), "H5Pget_fapl_mpiposix");
-    MPI_Comm_size(comm_tmp,&mpi_size_tmp);
-    MPI_Comm_rank(comm_tmp,&mpi_rank_tmp);
-    if (VERBOSE_MED)
-	printf("After H5Pget_fapl_mpiposix: rank/size of comm are %d/%d\n",
-	mpi_rank_tmp, mpi_size_tmp);
-    VRFY((mpi_size_tmp==mpi_size), "MPI_Comm_size");
-    VRFY((mpi_rank_tmp==mpi_rank), "MPI_Comm_rank");
-
-    /* Case 2:
-     * Free the retrieved communicator object.
-     * Check if the access property list is still valid and can return
-     * valid communicator object.
-     * Also verify the NULL argument option.
-     */
-    mrc = MPI_Comm_free(&comm_tmp);
-    VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free");
-
-    /* check NULL argument options. */
-    ret = H5Pget_fapl_mpiposix(acc_pl, NULL, NULL);
-    VRFY((ret >= 0), "H5Pget_fapl_mpiposix neither");
-
-    /* now get it again and check validity too. */
-    /* Don't free the returned object which is used in the next case. */
-    ret = H5Pget_fapl_mpiposix(acc_pl, &comm_tmp, &use_gpfs);
-    VRFY((ret >= 0), "H5Pget_fapl_mpiposix");
-    MPI_Comm_size(comm_tmp,&mpi_size_tmp);
-    MPI_Comm_rank(comm_tmp,&mpi_rank_tmp);
-    if (VERBOSE_MED)
-	printf("After second H5Pget_fapl_mpiposix: rank/size of comm are %d/%d\n",
-	mpi_rank_tmp, mpi_size_tmp);
-    VRFY((mpi_size_tmp==mpi_size), "MPI_Comm_size");
-    VRFY((mpi_rank_tmp==mpi_rank), "MPI_Comm_rank");
-
-    /* Case 3:
-     * Close the property list and verify the retrieved communicator
-     * object is still valid.
-     */
-    H5Pclose(acc_pl);
-    MPI_Comm_size(comm_tmp,&mpi_size_tmp);
-    MPI_Comm_rank(comm_tmp,&mpi_rank_tmp);
-    if (VERBOSE_MED)
-	printf("After Property list closed: rank/size of comm are %d/%d\n",
-	mpi_rank_tmp, mpi_size_tmp);
-
-    /* clean up */
-    mrc = MPI_Comm_free(&comm_tmp);
-    VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free");
-}
diff --git a/testpar/t_posix_compliant.c b/testpar/t_posix_compliant.c
deleted file mode 100644
index 5ea089d..0000000
--- a/testpar/t_posix_compliant.c
+++ /dev/null
@@ -1,927 +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.     *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/* A series of tests for posix compliance
- *
- * These tests do increasingly complicated sets of writes followed by reads.
- * POSIX standards say that any read that can be proven to occur after a write
- * must include the data in that write.  These tests attempt to verify whether the
- * underlying filesystem and i/o layer provide such guarantees.
- *
- * There are two sets of tests, one which uses POSIX i/o (fread, fwrite) and one which
- * uses MPI I/O (MPI_File_read, MPI_File_write).  Each set has multiple sub-tests, which
- * test varying patters of writes and reads.
- *
- *
- * TODO:
- *   Add corresponding posix i/o tests for each MPI i/o test.  Currently, not all of the
- *   MPI IO tests are implemented using fwrite/fread.
- *
- * Leon Arber
- * larber at ncsa.uiuc.edu
-*/
-
-/* To compile this outside of the HDF5 library, you can do so by defining the
- * macro STANDALONE. E.g.,
- *     mpicc -DSTANDALONE t_posix_compliant.c -o t_posix_compliant
- * then run it as an MPI application.  E.g.,
- *     mpiexec -np 3 ./t_posix_compliant
- */
-
-#ifdef H5_HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <mpi.h>
-#ifndef STANDALONE
-#include "h5test.h"
-#else
-#define HDmalloc(sz)  malloc(sz)
-#define HDfree(p)  free(p)
-#define getenv_all(comm, root, name)  getenv(name)
-#endif
-#define  TESTFNAME  "posix_test"  /* test file name */
-
-static char*    testfile = NULL;
-static int    err_flag = 0;
-static int    max_err_print = 5;
-int      nmismatches = 0;  /* warnings encountered */
-
-/* globals needed for getopt
- * Although they *should* be defined in unistd.h */
-extern char *optarg;
-extern int optind, opterr;
-
-
-#define CHECK_SUCCESS(res)  \
-{        \
-    char        err_got[MPI_MAX_ERROR_STRING];  \
-    int    err_len;      \
-    if(res != MPI_SUCCESS)      \
-    {            \
-  MPI_Error_string(res, err_got, &err_len);  \
-  fprintf(stderr, "Line %d, Error: %s\n", __LINE__, err_got); \
-  MPI_Abort(MPI_COMM_WORLD, -2);    \
-    }            \
-}
-
-#define PRINT_RESULT()                \
-{                    \
-    int err_result;                \
-    MPI_Reduce(&err_flag, &err_result, 1, MPI_INT, MPI_MIN, 0, MPI_COMM_WORLD);  \
-    if( (rank == 0) && (err_result == 0) )          \
-  printf("PASSED\n");              \
-    fflush(stdout);                \
-    fflush(stderr);                \
-    err_flag = 0;                \
-}
-
-static void vrfy_elements(int* a, int* b, int size, int rank);
-static int find_writesize(int rank, int numprocs, int write_size);
-
-
-/* All writes are to non-overlapping locations in the file
- * Then, each task reads another tasks' data
- * */
-
-static int allwrite_allread_blocks(int numprocs, int rank, int write_size)
-{
-    MPI_File  fh = MPI_FILE_NULL;
-    int    mpio_result;
-    int    amode, i;
-    MPI_Offset  offset = rank*write_size*sizeof(int);
-    MPI_Status  Status;
-    int* writebuf = (int*)malloc(write_size*sizeof(int));
-    int* readbuf = (int*)malloc (write_size*sizeof(int));
-
-    for(i=0; i<write_size; i++)
-  writebuf[i] = i;
-
-    amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
-
-    mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode,
-      MPI_INFO_NULL, &fh);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_File_write_at(fh, offset, writebuf, write_size, MPI_INT, &Status);
-    CHECK_SUCCESS(mpio_result);
-
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    offset = ( (rank+(numprocs-1)) % numprocs)*write_size*sizeof(int);
-
-    mpio_result = MPI_File_read_at(fh, offset, readbuf, write_size, MPI_INT, &Status);
-    CHECK_SUCCESS(mpio_result);
-
-    vrfy_elements(writebuf, readbuf, write_size, rank);
-
-    mpio_result = MPI_File_close(&fh);
-    CHECK_SUCCESS(mpio_result);
-    HDfree(writebuf);
-    HDfree(readbuf);
-
-    return err_flag;
-
-}
-
-static int posix_allwrite_allread_blocks(int numprocs, int rank, int write_size)
-{
-    int    ret;
-    int    i;
-    int  offset = rank*write_size*sizeof(int);
-    int* writebuf = (int*)malloc(write_size*sizeof(int));
-    int* readbuf = (int*)malloc (write_size*sizeof(int));
-    FILE*  file = NULL;
-
-    for(i=0; i<write_size; i++)
-  writebuf[i] = i;
-
-    if(rank==0)
-  file = fopen(testfile, "w+");
-    MPI_Barrier(MPI_COMM_WORLD);
-    if(rank != 0)
-  file = fopen(testfile, "r+");
-
-    if(file == NULL)
-    {
-  fprintf(stderr, "Could not create testfile\n");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    ret = fseek(file, offset, SEEK_SET);
-    if(ret == -1)
-    {
-  perror("fseek");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-
-    ret = fwrite(writebuf, sizeof(int), write_size, file);
-    if(ret != write_size)
-    {
-  perror("fwrite");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    offset = ( (rank+(numprocs-1)) % numprocs)*write_size*sizeof(int);
-
-    ret = fseek(file, offset, SEEK_SET);
-    if(ret == -1)
-    {
-  perror("fseek");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    ret = fread(readbuf, sizeof(int), write_size, file);
-    if( (ret == 0) && feof(file))
-  printf("Process %d: Error.  Prematurely reached end of file\n", rank);
-    else if( (ret != write_size) && ferror(file))
-    {
-  perror("Error encountered in fread");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    vrfy_elements(writebuf, readbuf, write_size, rank);
-
-    fclose(file);
-
-    MPI_Barrier(MPI_COMM_WORLD);
-    if(rank == 0)
-  unlink(testfile);
-
-    HDfree(writebuf);
-    HDfree(readbuf);
-    return err_flag;
-
-}
-
-static int posix_onewrite_allread_blocks(int numprocs, int rank, int write_size)
-{
-    int    ret;
-    int    i;
-    int  offset = rank*write_size*sizeof(int);
-    int* writebuf = (int*)malloc(write_size*sizeof(int));
-    int* readbuf = (int*)malloc (write_size*sizeof(int));
-    FILE*  file = NULL;
-
-    for(i=0; i<write_size; i++)
-  writebuf[i] = i;
-
-    if(rank==0)
-  file = fopen(testfile, "w+");
-    MPI_Barrier(MPI_COMM_WORLD);
-    if(rank != 0)
-  file = fopen(testfile, "r+");
-
-    if(file == NULL)
-    {
-  fprintf(stderr, "Could not create testfile\n");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    if(rank == 0)
-    {
-  for(offset = 0; offset<numprocs*write_size*sizeof(int); offset+=(write_size*sizeof(int)))
-  {
-      ret = fseek(file, offset, SEEK_SET);
-      if(ret == -1)
-      {
-    perror("fseek");
-    MPI_Abort(MPI_COMM_WORLD, 1);
-      }
-
-
-      ret = fwrite(writebuf, sizeof(int), write_size, file);
-      if(ret != write_size)
-      {
-    perror("fwrite");
-    MPI_Abort(MPI_COMM_WORLD, 1);
-      }
-  }
-
-    }
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    offset = rank*write_size*sizeof(int);
-
-    ret = fseek(file, offset, SEEK_SET);
-    if(ret == -1)
-    {
-  perror("fseek");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    ret = fread(readbuf, sizeof(int), write_size, file);
-    if( (ret == 0) && feof(file))
-  printf("Process %d: Error.  Prematurely reached end of file\n", rank);
-    else if( (ret != write_size) && ferror(file))
-    {
-  perror("Error encountered in fread");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    vrfy_elements(writebuf, readbuf, write_size, rank);
-
-    fclose(file);
-
-    MPI_Barrier(MPI_COMM_WORLD);
-    if(rank == 0)
-  unlink(testfile);
-
-    HDfree(writebuf);
-    HDfree(readbuf);
-    return err_flag;
-
-}
-
-static int posix_onewrite_allread_interlaced(int numprocs, int rank, int write_size)
-{
-    int    ret;
-    int    i, fill, index;
-    int  offset = rank*write_size*sizeof(int);
-    int* writebuf = (int*)malloc(write_size*sizeof(int));
-    int* readbuf = (int*)malloc (write_size*sizeof(int));
-    FILE*  file = NULL;
-
-    if(rank==0)
-  file = fopen(testfile, "w+");
-    MPI_Barrier(MPI_COMM_WORLD);
-    if(rank != 0)
-  file = fopen(testfile, "r+");
-
-    if(file == NULL)
-    {
-  fprintf(stderr, "Could not create testfile\n");
-  MPI_Abort(MPI_COMM_WORLD, 1);
-    }
-
-    if(rank == 0)
-    {
-  for(offset = 0; offset<numprocs*write_size*sizeof(int); offset+=(numprocs*sizeof(int)))
-  {
-      ret = fseek(file, offset, SEEK_SET);
-      if(ret == -1)
-      {
-    perror("fseek");
-    MPI_Abort(MPI_COMM_WORLD, 1);
-      }
-
-      fill = offset / (numprocs*sizeof(int));
-      for(i=0; i<numprocs; i++)
-    writebuf[i] = fill;
-
-
-      ret = fwrite(writebuf, sizeof(int), numprocs, file);
-      if(ret != numprocs)
-      {
-    perror("fwrite");
-    MPI_Abort(MPI_COMM_WORLD, 1);
-      }
-  }
-
-    }
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    index = 0;
-    for(offset = rank*sizeof(int); offset<numprocs*write_size*sizeof(int); offset+=(numprocs*sizeof(int)))
-    {
-
-  ret = fseek(file, offset, SEEK_SET);
-  if(ret == -1)
-  {
-      perror("fseek");
-      MPI_Abort(MPI_COMM_WORLD, 1);
-  }
-
-  ret = fread(readbuf+index, sizeof(int), 1, file);
-  if( (ret == 0) && feof(file))
-      printf("Process %d: Error.  Prematurely reached end of file\n", rank);
-  else if( (ret != 1) && ferror(file))
-  {
-      perror("Error encountered in fread");
-      MPI_Abort(MPI_COMM_WORLD, 1);
-  }
-
-  index++;
-    }
-
-    for(i=0; i<write_size; i++)
-  writebuf[i] = i;
-
-    vrfy_elements(writebuf, readbuf, write_size, rank);
-
-    fclose(file);
-
-    MPI_Barrier(MPI_COMM_WORLD);
-    if(rank == 0)
-  unlink(testfile);
-
-    HDfree(writebuf);
-    HDfree(readbuf);
-    return err_flag;
-
-}
-/* Each proc wites out 0 1 2 3 with displacement i, so file contents are:
- * 0000 1111 2222 3333 etc. (with 4 procs)
- *
- * Each proc then reads in the whole file and verifies that the data is what it is supposed to be*/
-
-static int allwrite_allread_interlaced(int numprocs, int rank, int write_size)
-{
-    MPI_File  fh = MPI_FILE_NULL;
-    int    mpio_result;
-    int    amode, i, counter = 0;
-    MPI_Datatype filetype;
-    MPI_Status  Status;
-    int* writebuf = (int*)malloc(write_size*sizeof(int));
-    int*  readbuf = (int*) malloc(numprocs*sizeof(int));
-    int    offset=0;
-
-    for(i=0; i<write_size; i++)
-  writebuf[i] = i;
-
-
-    amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
-    mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode, MPI_INFO_NULL, &fh);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_Type_vector(write_size, 1, numprocs, MPI_INT, &filetype);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_Type_commit(&filetype);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_File_set_view(fh, rank*sizeof(int), MPI_INT, filetype, "native", MPI_INFO_NULL);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_File_write(fh, writebuf, write_size, MPI_INT, &Status);
-    CHECK_SUCCESS(mpio_result);
-
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    mpio_result = MPI_File_set_view(fh, 0, MPI_BYTE, MPI_BYTE, "native", MPI_INFO_NULL);
-    CHECK_SUCCESS(mpio_result);
-
-    for(offset = 0; offset<(write_size*numprocs*sizeof(int)); offset+=(numprocs*sizeof(int)))
-    {
-  mpio_result = MPI_File_read_at(fh, offset, readbuf, numprocs, MPI_INT, &Status);
-  CHECK_SUCCESS(mpio_result);
-
-  for(i=0; i<numprocs; i++)
-  {
-      if(writebuf[offset/(numprocs*sizeof(int))] != readbuf[i])
-      {
-    if( (rank == 0) && (counter == 0))
-        printf("\n");
-    if(counter++ < max_err_print)
-        fprintf(stderr, "Arrays do not match!  Prcoess %d, element %d: [%d, %d]\n", rank, i, writebuf[offset/(numprocs*sizeof(int))], readbuf[i]);
-    else if(counter++ == max_err_print+1)
-        fprintf(stderr, "Printed %d errors.  Omitting the rest\n", max_err_print);
-    err_flag = -1;
-      }
-
-  }
-    }
-    nmismatches += counter;
-    mpio_result = MPI_File_close(&fh);
-    CHECK_SUCCESS(mpio_result);
-
-    HDfree(writebuf);
-    HDfree(readbuf);
-    return err_flag;
-
-
-}
-
-/* Overlapping pattern works as follows (this test requires at least 2 procs:
- * Writes:
- * Task 0: 0  2  4  6  etc...
- * Task 1:    1      3       5      7    etc...
- * Task 2: 0      3    6  etc..
- * Task 3: 0    4    8  etc...
- *
- * The above describes only the pattern of the elements being written.  The actual
- * number of elements written is going to be:
- *
- * Task i where i=(numprocs-1) writes write_size elements.  All other tasks do:
- *  x = ((write_size-1)*numprocs)
- *  Task i's write_size is the smallest multiple of i<=x divided by i, with the exception
- *  of tasks 0 and 1, for whom i is 2, since they are writing the even and odd multiples.
- *
- *  So, if there are 5 tasks with write_size=4, the resulting pattern of writes is:
- *
- *  Task 0: 0  2  4  6  8  10  12  14
- *  Task 1:   1     3       5       7       9       11      13       15
- *  Task 2: 0       3    6      9    12       15
- *  Task 3: 0    4    8    12
- *  Task 4: 0        5      10         15
- *
- *
- *
- *  * * All the entires that overlap will therefore be writing the same value
- *
- *  At the end, all tasks read in the file and verify that it is correct should be
- *  (1,2...((numprocs-1)*WRTE_SIZE).
- *  */
-
-static int allwrite_allread_overlap(int numprocs, int rank, int write_size)
-{
-
-    MPI_File  fh = MPI_FILE_NULL;
-    int    mpio_result;
-    int    amode, i, counter = 0;
-    MPI_Datatype filetype;
-    MPI_Status  Status;
-    int*  writebuf = (int*) malloc(write_size*(numprocs-1)*sizeof(int)); /* An upper bound...not all the elements will be written */
-    int*  readbuf = (int*) malloc(write_size*(numprocs-1)*sizeof(int));
-
-    if(numprocs < 2)
-    {
-  fprintf(stderr, "The allwrite_allread_overlap test requires at least 2 procs\n");
-  return -1;
-    }
-
-    if(rank == 0)
-    {
-  for(i=0; i<write_size*(numprocs-1); i++)
-      writebuf[i] = 2*i;
-    }
-    else if(rank == 1)
-    {
-  for(i=0; i<write_size*(numprocs-1); i++)
-      writebuf[i] = (2*i)+1;
-    }
-    else
-    {
-  for(i=0; i<write_size*(numprocs-1); i++)
-      writebuf[i] = (rank+1)*i;
-    }
-
-    amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
-    mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode, MPI_INFO_NULL, &fh);
-    CHECK_SUCCESS(mpio_result);
-
-    if( (rank == 0) || (rank == 1) )
-  mpio_result = MPI_Type_vector(write_size*(numprocs-1), 1, 2, MPI_INT, &filetype);
-    else
-  mpio_result = MPI_Type_vector(write_size*(numprocs-1), 1, rank+1, MPI_INT, &filetype);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_Type_commit(&filetype);
-    CHECK_SUCCESS(mpio_result);
-
-    if( rank == 1)
-  mpio_result = MPI_File_set_view(fh, sizeof(int), MPI_INT, filetype, "native", MPI_INFO_NULL);
-    else
-  mpio_result = MPI_File_set_view(fh, 0, MPI_INT, filetype, "native", MPI_INFO_NULL);
-    CHECK_SUCCESS(mpio_result);
-
-    if( rank == (numprocs - 1))
-  mpio_result = MPI_File_write(fh, writebuf, write_size, MPI_INT, &Status);
-    else
-  mpio_result = MPI_File_write(fh, writebuf, find_writesize(rank, numprocs, write_size), MPI_INT, &Status);
-
-    CHECK_SUCCESS(mpio_result);
-
-    MPI_Barrier(MPI_COMM_WORLD);
-    mpio_result = MPI_File_set_view(fh, 0, MPI_BYTE, MPI_BYTE, "native", MPI_INFO_NULL);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_File_read_at(fh, 0, readbuf, write_size*(numprocs-1), MPI_INT, &Status);
-    CHECK_SUCCESS(mpio_result);
-
-    for(i=0; i<write_size*(numprocs-1); i++)
-    {
-  if(i != readbuf[i])
-  {
-          if( (rank == 0) && (counter == 0))
-        printf("\n");
-      if(counter++ < max_err_print)
-    fprintf(stderr, "Arrays do not match!  Prcoess %d, element %d: [%d, %d]\n", rank, i, i, readbuf[i]);
-      else if(counter++ == max_err_print+1)
-    fprintf(stderr, "Printed %d errors.  Omitting the rest\n", max_err_print);
-      err_flag = -1;
-      }
-    }
-
-    nmismatches += counter;
-    mpio_result = MPI_File_close(&fh);
-    CHECK_SUCCESS(mpio_result);
-    HDfree(writebuf);
-    HDfree(readbuf);
-
-    return err_flag;
-
-}
-
-/* A random process writes out the following to the file:
- * 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 (assuming write_size=5, and numprocs=3)
- *
- * Process i read's in write_size bytes at offset=i*write_size
- */
-static int onewrite_allread_blocks(int numprocs, int rank, int write_size)
-{
-    MPI_File  fh = MPI_FILE_NULL;
-    int    mpio_result;
-    int    amode, i;
-    MPI_Status  Status;
-    int* writebuf = (int*)malloc(write_size*sizeof(int));
-    int* readbuf = (int*)malloc (write_size*sizeof(int));
-
-    for(i=0; i<write_size; i++)
-  writebuf[i] = i;
-
-    amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
-
-    mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode,
-      MPI_INFO_NULL, &fh);
-    CHECK_SUCCESS(mpio_result);
-
-    /* A random process writes out all the data */
-    if(rank == (rand() % numprocs))
-    {
-  for(i=0; i<numprocs; i++)
-  {
-      mpio_result = MPI_File_write_at(fh, write_size*i*sizeof(int), writebuf, write_size, MPI_INT, &Status);
-      CHECK_SUCCESS(mpio_result);
-  }
-    }
-
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    mpio_result = MPI_File_read_at(fh, write_size*rank*sizeof(int), readbuf, write_size, MPI_INT, &Status);
-    CHECK_SUCCESS(mpio_result);
-
-    vrfy_elements(writebuf, readbuf, write_size, rank);
-
-    mpio_result = MPI_File_close(&fh);
-    CHECK_SUCCESS(mpio_result);
-    HDfree(writebuf);
-    HDfree(readbuf);
-
-    return err_flag;
-
-
-
-}
-
-/* Process zero writes out:
- * 0000 1111 2222 3333 etc. (with 4 procs)
- *
- * Each proc reads out 0 1 2 3 starting at displacement i */
-static int onewrite_allread_interlaced(int numprocs, int rank, int write_size)
-{
-    MPI_File  fh = MPI_FILE_NULL;
-    int    mpio_result;
-    int    amode, i;
-    MPI_Datatype filetype;
-    MPI_Status  Status;
-    int*  writebuf = (int*) malloc(numprocs*write_size*sizeof(int)); /* Upper bound, not all used */
-    int* readbuf = (int*)malloc (write_size*sizeof(int));
-
-
-    amode = MPI_MODE_CREATE | MPI_MODE_RDWR;
-    amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
-    mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode, MPI_INFO_NULL, &fh);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_Type_vector(write_size, 1, numprocs, MPI_INT, &filetype);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_Type_commit(&filetype);
-    CHECK_SUCCESS(mpio_result);
-
-    if(rank == (rand() % numprocs))
-    {
-  for(i=0; i<write_size; i++)
-  {
-      int j;
-      for(j=0; j<numprocs; j++)
-    writebuf[j] = i;
-
-      mpio_result = MPI_File_write_at(fh, i*numprocs*sizeof(int), writebuf, numprocs, MPI_INT, &Status);
-      CHECK_SUCCESS(mpio_result);
-  }
-    }
-
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    mpio_result = MPI_File_set_view(fh, rank*sizeof(int), MPI_INT, filetype, "native", MPI_INFO_NULL);
-    CHECK_SUCCESS(mpio_result);
-
-    mpio_result = MPI_File_read_at(fh, 0, readbuf, write_size, MPI_INT, &Status);
-    CHECK_SUCCESS(mpio_result);
-
-    for(i=0; i<write_size; i++)
-  writebuf[i] = i;
-
-    vrfy_elements(writebuf, readbuf, write_size, rank);
-
-    mpio_result = MPI_File_close(&fh);
-    CHECK_SUCCESS(mpio_result);
-    HDfree(writebuf);
-    HDfree(readbuf);
-
-    return err_flag;
-
-}
-
-static int find_writesize(int rank, int numprocs, int size)
-{
-    /* Largest number in the file */
-    int tmp = (size-1)*numprocs;
-    int x = 0;
-    int write_size = 0;
-
-    /* Find largest multiple not greater than tmp */
-    while(x <= tmp)
-    {
-  if( (rank == 0) || (rank == 1) )
-      x+=2;
-  else
-      x += (rank+1);
-
-  write_size++;
-    }
-
-    return write_size;
-}
-
-static void
-vrfy_elements(int* a, int* b, int size, int rank)
-{
-    int i, counter = 0;
-
-    for(i=0; i<size; i++)
-    {
-  if(a[i] != b[i])
-  {
-      if( (rank == 0) && (counter == 0))
-    printf("\n");
-      if(counter++ < max_err_print)
-    fprintf(stderr, "Arrays do not match!  Prcoess %d, element %d: [%d, %d]\n", rank, i, a[i], b[i]);
-      else if(counter++ == max_err_print+1)
-    fprintf(stderr, "Printed %d errors.  Omitting the rest\n", max_err_print);
-      err_flag = -1;
-  }
-    }
-    nmismatches += counter;
-    fflush(stderr);
-    fflush(stdout);
-}
-
-/* print an explanation message by MAIN (0) process.
- */
-static void
-header_msg(void)
-{
-    printf(
-"Purpose:\n"
-"This tests if the file system is posix compliant when POSIX and MPI IO APIs\n"
-"are used.  This is for information only and always exits with 0 even when\n"
-"non-compliance errors are encounter.  This is to prevent this test from\n"
-"aborting the remaining parallel HDF5 tests unnecessarily.\n\n"
-    );
-}
-
-int
-main(int argc, char* argv[])
-{
-
-    int numprocs, rank, opt, mpi_tests=1, posix_tests=1;
-    int lb, ub, inc;
-    int  write_size = 0;
-    char    optstring[] = "h x m p: s: v:";
-    char *prefix;
-
-    err_flag = 0;
-
-    MPI_Init(&argc, &argv);
-    MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
-    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
-    if (rank == 0)
-  header_msg();
-    while((opt = getopt(argc, argv, optstring)) != -1)
-    {
-  switch(opt)
-  {
-      case 'h':
-    if(rank == 0)
-        printf("Usage: %s [options]\n"
-          "-h       prints this help message\n"
-          "-x        run the posix i/o tests ONLY (default: posix and MPI)\n"
-          "-m        run the mpi i/o tests ONLY (default: posix and MPI)\n"
-          "-s size  Run the test for the specific size.  Default is 1024, 4096, 16384, ..., 1048576\n"
-          "-p path   specifies path for test file.  Default is current directory\n"
-          "-v num   Specifies number of unmatching entries to print (default 10, pass -1 for all)\n", argv[0]);
-    goto done;
-      case 'x':
-    mpi_tests = 0;
-    posix_tests = 1;
-    break;
-      case 'm':
-    mpi_tests = 1;
-    posix_tests = 0;
-    break;
-      case 'p':
-    /* need 2 extra--1 for the / and 1 for the terminating NULL. */
-    testfile = (char*) HDmalloc(strlen(optarg) + 2 + strlen(TESTFNAME));
-    strcpy(testfile, optarg);
-    /* Append a / just in case they didn't end their path with one */
-    strcat(testfile, "/" TESTFNAME);
-    break;
-      case 's':
-    write_size = atoi(optarg);
-    break;
-      case 'v':
-    max_err_print = atoi(optarg);
-    break;
-  }
-    }
-
-    if( (optind < argc) && (rank == 0))
-  fprintf(stderr, "Unkown command-line argument passed.  Continuing anyway...\n");
-
-    if (!testfile){
-  /* Try environment variable if not given as option. */
-  prefix = getenv_all(MPI_COMM_WORLD, 0, "HDF5_PARAPREFIX");
-  if (prefix)
-  {
-      /* need 2 extra--1 for the / and 1 for the terminating NULL. */
-      testfile = (char*) HDmalloc(strlen(prefix) + 2 + strlen(TESTFNAME));
-      strcpy(testfile, prefix);
-      /* Append a / just in case they didn't end their path with one */
-      strcat(testfile, "/" TESTFNAME);
-  }
-  else
-  {
-      testfile = strdup(TESTFNAME);
-  }
-    }
-    printf("Process %d: testfile=%s\n", rank, testfile);
-    fflush(stdout);
-    MPI_Barrier(MPI_COMM_WORLD);
-
-    if(write_size == 0)
-    {
-  lb = 16*numprocs*sizeof(int);
-  /* 1MB MPIO-IO overlapping is failing in copper. Lower it now pending
-     permenant fix for copper.*/
-  /* ub = 1024*1024;*/
-  ub = lb*128;
-  inc = 4;
-    }
-    else
-    {
-  lb = write_size;
-  ub = write_size+1;
-  inc = 2;
-    }
-
-#ifndef STANDALONE
-    /* set alarm. */
-    ALARM_ON;
-#endif
-
-    for(write_size = lb; write_size <= ub; write_size*=inc)
-    {
-  if(rank == 0)
-      printf("\nTesting size %d\n", write_size);
-
-  if(mpi_tests)
-  {
-      if(rank == 0)
-    printf("Testing allwrite_allread_blocks with MPI IO\t\t"); fflush(stdout);
-      allwrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-
-      if(rank == 0)
-    printf("Testing allwrite_allread_interlaced with MPI IO\t\t"); fflush(stdout);
-      allwrite_allread_interlaced(numprocs, rank, write_size/(numprocs*sizeof(int)));
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-
-      if(rank == 0)
-    printf("Testing allwrite_allread_overlap with MPI IO\t\t"); fflush(stdout);
-      allwrite_allread_overlap(numprocs, rank, write_size);
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-
-      if(rank == 0)
-    printf("Testing onewrite_allread_blocks with MPI IO\t\t"); fflush(stdout);
-      onewrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-
-      if(rank == 0)
-    printf("Testing onewrite_allread_interlaced with MPI IO\t\t"); fflush(stdout);
-      onewrite_allread_interlaced(numprocs, rank, write_size/(numprocs*sizeof(int)));
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-  }
-
-  if(posix_tests)
-  {
-      if(rank == 0)
-    printf("Testing allwrite_allread_blocks with POSIX IO\t\t"); fflush(stdout);
-      posix_allwrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-
-      if(rank == 0)
-    printf("Testing onewrite_allread_blocks with POSIX IO\t\t"); fflush(stdout);
-      posix_onewrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-
-      if(rank == 0)
-    printf("Testing onewrite_allread_interlaced with POSIX IO\t"); fflush(stdout);
-      posix_onewrite_allread_interlaced(numprocs, rank, write_size/(numprocs*sizeof(int)));
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-
-  /*    if(rank == 0)
-    printf("Testing allwrite_allread_overlap with POSIX IO\t\t"); fflush(stdout);
-      posix_allwrite_allread_overlap(numprocs, rank, write_size);
-      PRINT_RESULT();
-      MPI_Barrier(MPI_COMM_WORLD);
-*/
-  }
-    }
-
-#ifndef STANDALONE
-    /* turn off alarm */
-    ALARM_OFF;
-#endif
-
-done:
-    if (testfile)
-  HDfree(testfile);
-    if (rank == 0){
-  printf("\nSummary:\n");
-  fflush(stdout);
-    }
-    MPI_Barrier(MPI_COMM_WORLD);
-    printf("Process %d: encountered %d mismatches.\n", rank, nmismatches);
-    MPI_Finalize();
-
-    return 0;
-}
diff --git a/testpar/t_shapesame.c b/testpar/t_shapesame.c
index 2d379d6..1a74295 100644
--- a/testpar/t_shapesame.c
+++ b/testpar/t_shapesame.c
@@ -139,7 +139,6 @@ hs_dr_pio_test__setup(const int test_num,
     const char *fcnName = "hs_dr_pio_test__setup()";
 #endif /* CONTIG_HS_DR_PIO_TEST__SETUP__DEBUG */
     const char *filename;
-    hbool_t	use_gpfs = FALSE;   /* Use GPFS hints */
     hbool_t	mis_match = FALSE;
     int		i;
     int         mrc;
@@ -282,7 +281,7 @@ hs_dr_pio_test__setup(const int test_num,
      * CREATE AN HDF5 FILE WITH PARALLEL ACCESS
      * ---------------------------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(tv_ptr->mpi_comm, tv_ptr->mpi_info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(tv_ptr->mpi_comm, tv_ptr->mpi_info, facc_type);
     VRFY((acc_tpl >= 0), "create_faccess_plist() succeeded");
 
     /* set the alignment -- need it large so that we aren't always hitting the
@@ -4789,7 +4788,6 @@ usage(void)
         "\tset number of groups for the multiple group test\n");
     printf("\t-f <prefix>\tfilename prefix\n");
     printf("\t-2\t\tuse Split-file together with MPIO\n");
-    printf("\t-p\t\tuse combo MPI-POSIX driver\n");
     printf("\t-d <factor0> <factor1>\tdataset dimensions factors. Defaults (%d,%d)\n",
 	ROW_FACTOR, COL_FACTOR);
     printf("\t-c <dim0> <dim1>\tdataset chunk dimensions. Defaults (dim0/10,dim1/10)\n");
@@ -4840,9 +4838,6 @@ parse_options(int argc, char **argv)
 			    }
 			    paraprefix = *argv;
 			    break;
-		case 'p':   /* Use the MPI-POSIX driver access */
-			    facc_type = FACC_MPIPOSIX;
-			    break;
 		case 'i':   /* Collective MPI-IO access with independent IO  */
 			    dxfer_coll_type = DXFER_INDEPENDENT_IO;
 			    break;
@@ -4928,8 +4923,7 @@ parse_options(int argc, char **argv)
  * Create the appropriate File access property list
  */
 hid_t
-create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
-                     hbool_t use_gpfs)
+create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type)
 {
     hid_t ret_pl = -1;
     herr_t ret;                 /* generic return value */
@@ -4970,13 +4964,6 @@ create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
 	return(ret_pl);
     }
 
-    if (l_facc_type == FACC_MPIPOSIX) {
-	/* set Parallel access with communicator */
-	ret = H5Pset_fapl_mpiposix(ret_pl, comm, use_gpfs);
-	VRFY((ret >= 0), "H5Pset_fapl_mpiposix succeeded");
-	return(ret_pl);
-    }
-
     /* unknown file access types */
     return (ret_pl);
 }
@@ -5108,12 +5095,6 @@ int main(int argc, char **argv)
     /* Parse command line arguments */
     TestParseCmdLine(argc, argv);
 
-    if (facc_type == FACC_MPIPOSIX && MAINPROCESS){
-	printf("===================================\n"
-	       "   Using MPIPOSIX driver\n"
-	       "===================================\n");
-    }
-
     if (dxfer_coll_type == DXFER_INDEPENDENT_IO && MAINPROCESS){
 	printf("===================================\n"
 	       "   Using Independent I/O with file set view to replace collective I/O \n"
diff --git a/testpar/t_span_tree.c b/testpar/t_span_tree.c
index 2730ea2..6e233a9 100644
--- a/testpar/t_span_tree.c
+++ b/testpar/t_span_tree.c
@@ -261,7 +261,6 @@ void coll_write_test(int chunk_factor)
 
   int      *matrix_out, *matrix_out1, *vector;
 
-  hbool_t  use_gpfs = FALSE;
   int      mpi_size,mpi_rank;
 
   MPI_Comm comm = MPI_COMM_WORLD;
@@ -293,7 +292,7 @@ void coll_write_test(int chunk_factor)
   for (i = 1; i < MSPACE1_DIM*mpi_size - 1; i++) vector[i] = i;
 
   /* Grab file access property list */
-  facc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+  facc_plist = create_faccess_plist(comm, info, facc_type);
   VRFY((facc_plist >= 0),"");
 
   /*
@@ -474,7 +473,7 @@ void coll_write_test(int chunk_factor)
   ***/
 
   /* Obtain file access property list with MPI-IO driver */
-  facc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+  facc_plist = create_faccess_plist(comm, info, facc_type);
   VRFY((facc_plist >= 0),"");
 
   file = H5Fopen(filename, H5F_ACC_RDONLY, facc_plist);
@@ -724,7 +723,6 @@ coll_read_test(int chunk_factor)
 						       dataset */
 
 #endif
-  hbool_t  use_gpfs = FALSE;
   int      mpi_size,mpi_rank;
 
   MPI_Comm comm = MPI_COMM_WORLD;
@@ -749,7 +747,7 @@ coll_read_test(int chunk_factor)
   /*** For testing collective hyperslab selection read ***/
 
   /* Obtain file access property list */
-  facc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+  facc_plist = create_faccess_plist(comm, info, facc_type);
   VRFY((facc_plist >= 0),"");
 
    /*
@@ -1582,7 +1580,6 @@ lower_dim_size_comp_test__run_test(const int chunk_edge_size,
     hsize_t	  max_dims[32];
 #endif /* LOWER_DIM_SIZE_COMP_TEST__RUN_TEST__DEBUG */
     const char   *filename;
-    hbool_t	  use_gpfs = FALSE;   /* Use GPFS hints */
     hbool_t	  data_ok = FALSE;
     hbool_t	  mis_match = FALSE;
     int           i;
@@ -1717,7 +1714,7 @@ lower_dim_size_comp_test__run_test(const int chunk_edge_size,
      * CREATE AN HDF5 FILE WITH PARALLEL ACCESS
      * ---------------------------------------*/
     /* setup file access template */
-    acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type);
     VRFY((acc_tpl >= 0), "create_faccess_plist() succeeded");
 
     /* create the file collectively */
@@ -2681,7 +2678,6 @@ link_chunk_collective_io_test(void)
     /* const char *fcnName = "link_chunk_collective_io_test()"; */
     const char *filename;
     hbool_t    mis_match = FALSE;
-    hbool_t    use_gpfs = FALSE;   /* Use GPFS hints */
     int	       i;
     int	       mrc;
     int        mpi_rank;
@@ -2718,7 +2714,7 @@ link_chunk_collective_io_test(void)
     HDassert( filename != NULL );
 
     /* setup file access template */
-    acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+    acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type);
     VRFY((acc_tpl >= 0), "create_faccess_plist() succeeded");
 
     /* create the file collectively */
diff --git a/testpar/testph5.sh.in b/testpar/testph5.sh.in
deleted file mode 100644
index 83327ca..0000000
--- a/testpar/testph5.sh.in
+++ /dev/null
@@ -1,77 +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.
-#
-
-# Scripts for running testphdf5 program with a variety of parameters
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-
-TEST_APP=testphdf5               # The tool name
-TEST_APP_BIN=`pwd`/$TEST_APP    # The path of the tool binary
-
-nerrors=0
-verbose=yes
-
-# 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 $RUNPARALLEL $TEST_APP_BIN "$@"
-    eval $RUNPARALLEL $TEST_APP_BIN "$@"
-
-    # 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                                ###
-##############################################################################
-##############################################################################
-
-# testphdf5 test using the MPI-POSIX VFL driver
-TOOLTEST -p
-
-# Temporary patch:
-# Run t_shapesame this way. Need more permanent solution.
-echo $RUNPARALLEL ./t_shapesame -p
-eval $RUNPARALLEL ./t_shapesame -p
-
-# Check if the command failed and increment nerrors if so.
-if test $? -ne 0 ; then
-    nerrors="`expr $nerrors + 1`"
-fi
-# Temporary patch ended.
-
-# Emit message about testing status
-if test $nerrors -eq 0 ; then
-   echo "All $TEST_APP tests passed."
-else
-   echo "ERROR! One or more $TEST_APP tests failed."
-fi
-
-# Propagate a useful exit code
-exit $nerrors
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c
index b594053..d91c24c 100644
--- a/testpar/testphdf5.c
+++ b/testpar/testphdf5.c
@@ -118,7 +118,6 @@ usage(void)
         "\tset number of groups for the multiple group test\n");
     printf("\t-f <prefix>\tfilename prefix\n");
     printf("\t-2\t\tuse Split-file together with MPIO\n");
-    printf("\t-p\t\tuse combo MPI-POSIX driver\n");
     printf("\t-d <factor0> <factor1>\tdataset dimensions factors. Defaults (%d,%d)\n",
   ROW_FACTOR, COL_FACTOR);
     printf("\t-c <dim0> <dim1>\tdataset chunk dimensions. Defaults (dim0/10,dim1/10)\n");
@@ -169,9 +168,6 @@ parse_options(int argc, char **argv)
           }
           paraprefix = *argv;
           break;
-    case 'p':   /* Use the MPI-POSIX driver access */
-          facc_type = FACC_MPIPOSIX;
-          break;
     case 'i':   /* Collective MPI-IO access with independent IO  */
           dxfer_coll_type = DXFER_INDEPENDENT_IO;
           break;
@@ -257,8 +253,7 @@ parse_options(int argc, char **argv)
  * Create the appropriate File access property list
  */
 hid_t
-create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
-                     hbool_t use_gpfs)
+create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type)
 {
     hid_t ret_pl = -1;
     herr_t ret;                 /* generic return value */
@@ -299,13 +294,6 @@ create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
   return(ret_pl);
     }
 
-    if (l_facc_type == FACC_MPIPOSIX) {
-  /* set Parallel access with communicator */
-  ret = H5Pset_fapl_mpiposix(ret_pl, comm, use_gpfs);
-  VRFY((ret >= 0), "H5Pset_fapl_mpiposix succeeded");
-  return(ret_pl);
-    }
-
     /* unknown file access types */
     return (ret_pl);
 }
@@ -342,7 +330,7 @@ int main(int argc, char **argv)
      * calls.  By then, MPI calls may not work.
      */
     if (H5dont_atexit() < 0){
-  printf("Failed to turn off atexit processing. Continue.\n", mpi_rank);
+	printf("Failed to turn off atexit processing. Continue.\n");
     };
     H5open();
     h5_show_hostname();
@@ -353,8 +341,6 @@ int main(int argc, char **argv)
     /* Tests are generally arranged from least to most complexity... */
     AddTest("mpiodup", test_fapl_mpio_dup, NULL,
       "fapl_mpio duplicate", NULL);
-    AddTest("posixdup", test_fapl_mpiposix_dup, NULL,
-      "fapl_mpiposix duplicate", NULL);
 
     AddTest("split", test_split_comm_access, NULL,
       "dataset using split communicators", PARATESTFILE);
@@ -486,11 +472,17 @@ int main(int argc, char **argv)
       "I/O mode confusion test -- hangs quickly on failure",
             &io_mode_confusion_params);
 
-    rr_obj_flush_confusion_params.name = PARATESTFILE;
-    rr_obj_flush_confusion_params.count = 0; /* value not used */
-    AddTest("rrobjflushconf", rr_obj_hdr_flush_confusion, NULL,
-      "round robin object header flush confusion test",
-            &rr_obj_flush_confusion_params);
+    if((mpi_size < 3) && MAINPROCESS) {
+        printf("rr_obj_hdr_flush_confusion test needs at least 3 processes.\n");
+        printf("rr_obj_hdr_flush_confusion test will be skipped \n");
+    }
+    if(mpi_size > 2) {
+        rr_obj_flush_confusion_params.name = PARATESTFILE;
+        rr_obj_flush_confusion_params.count = 0; /* value not used */
+        AddTest("rrobjflushconf", rr_obj_hdr_flush_confusion, NULL,
+                "round robin object header flush confusion test",
+                &rr_obj_flush_confusion_params);
+    }
 
     AddTest("tldsc",
             lower_dim_size_comp_test, NULL,
@@ -543,12 +535,6 @@ int main(int argc, char **argv)
     /* Parse command line arguments */
     TestParseCmdLine(argc, argv);
 
-    if (facc_type == FACC_MPIPOSIX && MAINPROCESS){
-  printf("===================================\n"
-         "   Using MPIPOSIX driver\n"
-         "===================================\n");
-    }
-
     if (dxfer_coll_type == DXFER_INDEPENDENT_IO && MAINPROCESS){
   printf("===================================\n"
          "   Using Independent I/O with file set view to replace collective I/O \n"
diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h
index 1dd4bfa..100fa41 100644
--- a/testpar/testphdf5.h
+++ b/testpar/testphdf5.h
@@ -45,6 +45,13 @@ enum H5TEST_COLL_CHUNK_API {API_NONE=0,API_LINK_HARD,
 #define DATASETNAME4	"Data4"
 #define DATASETNAME5	"Data5"
 #define DATASETNAME6	"Data6"
+#define DATASETNAME7	"Data7"
+#define DATASETNAME8	"Data8"
+#define DATASETNAME9	"Data9"
+
+/* point selection order */
+#define IN_ORDER 1
+#define OUT_OF_ORDER 2
 
 /* Hyperslab layout styles */
 #define BYROW           1       /* divide into slabs of rows */
@@ -56,8 +63,6 @@ enum H5TEST_COLL_CHUNK_API {API_NONE=0,API_LINK_HARD,
 #define FACC_DEFAULT    0x0     /* default */
 #define FACC_MPIO       0x1     /* MPIO */
 #define FACC_SPLIT      0x2     /* Split File */
-#define FACC_MULTI      0x4     /* Multi File */
-#define FACC_MPIPOSIX   0x8     /* MPIPOSIX */
 
 #define DXFER_COLLECTIVE_IO 0x1  /* Collective IO*/
 #define DXFER_INDEPENDENT_IO 0x2 /* Independent IO collectively */
@@ -179,15 +184,13 @@ enum H5TEST_COLL_CHUNK_API {API_NONE=0,API_LINK_HARD,
 #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
+#define TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES            0x010
+#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT  0x020
+#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL 0x040
+#define TEST_FILTERS                                    0x080
 /* TEST_FILTERS will take place of this after supporting mpio + filter for 
  * H5Dcreate and H5Dwrite */
-#define TEST_FILTERS_READ                               0x400
+#define TEST_FILTERS_READ                               0x100
 
 /* Don't erase these lines, they are put here for debugging purposes */
 /*
@@ -239,7 +242,6 @@ void multiple_group_read(void);
 void collective_group_write(void);
 void independent_group_read(void);
 void test_fapl_mpio_dup(void);
-void test_fapl_mpiposix_dup(void);
 void test_split_comm_access(void);
 void dataset_atomicity(void);
 void dataset_writeInd(void);
@@ -291,9 +293,10 @@ void compress_readAll(void);
 void test_dense_attr(void);
 
 /* commonly used prototypes */
-hid_t create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type, hbool_t use_gpfs);
+hid_t create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type);
 MPI_Offset h5_mpi_get_file_size(const char *filename, MPI_Comm comm, MPI_Info info);
 int dataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[],
                  hsize_t block[], DATATYPE *dataset, DATATYPE *original);
-
+void point_set (hsize_t start[], hsize_t count[], hsize_t stride[], hsize_t block[],
+                size_t num_points, hsize_t coords[], int order);
 #endif /* PHDF5TEST_H */
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 3bb4a1f..27820ae 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -1,10 +1,10 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Setup include Directories
@@ -14,33 +14,33 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SOURCE_DIR}/lib)
 # --------------------------------------------------------------------
 # If testing was NOT enabled, then we need to build the tools library
 # --------------------------------------------------------------------
-IF (NOT BUILD_TESTING)
-  ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/lib)
-ENDIF (NOT BUILD_TESTING)
+if (NOT BUILD_TESTING)
+  add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/lib)
+endif (NOT BUILD_TESTING)
 
 #-- Add the h5diff and test executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5diff)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5diff)
 
 #-- Add the h5ls executable
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5ls)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5ls)
 
 #-- Misc Executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/misc)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/misc)
 
 #-- Add the h5import and test executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5import)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5import)
 
 #-- h5Repack executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5repack)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5repack)
 
 #-- Add the h5dump and test executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5jam)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5jam)
 
 #-- Add the h5copy and test executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5copy)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5copy)
 
 #-- Add the h5stat and test executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5stat)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5stat)
 
 #-- Add the h5dump and test executables
-ADD_SUBDIRECTORY (${HDF5_TOOLS_SOURCE_DIR}/h5dump)
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5dump)
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 4af6d74..c592973 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,23 +31,51 @@
 # Tools HDF5 Makefile(.in)
 #
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -66,10 +94,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/test-driver COPYING
 TESTS =
 subdir = tools
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -94,13 +122,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -108,15 +137,230 @@ am__can_run_installinfo = \
   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
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
@@ -214,7 +458,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -449,6 +692,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .log .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -493,14 +737,13 @@ clean-libtool:
 # (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 \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -521,31 +764,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-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)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -561,12 +786,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -578,15 +798,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -595,9 +811,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -613,6 +830,151 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -694,6 +1056,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -771,14 +1136,11 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	cscopelist-recursive ctags-recursive install-am install-strip \
-	tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-libtool cscopelist cscopelist-recursive \
-	ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 \
@@ -787,8 +1149,8 @@ uninstall-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
+	mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am \
+	recheck tags tags-am uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5copy/CMakeLists.txt b/tools/h5copy/CMakeLists.txt
index 6faf332..e5a1a9f 100644
--- a/tools/h5copy/CMakeLists.txt
+++ b/tools/h5copy/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5COPY)
 
 #-----------------------------------------------------------------------------
@@ -9,27 +9,27 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 # --------------------------------------------------------------------
 # Add the h5copy and test executables
 # --------------------------------------------------------------------
-ADD_EXECUTABLE (h5copy ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copy.c)
+add_executable (h5copy ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copy.c)
 TARGET_NAMING (h5copy ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5copy " " " ")
-TARGET_LINK_LIBRARIES (h5copy  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5copy PROPERTIES FOLDER tools)
+target_link_libraries (h5copy  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5copy PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES h5copy)
+set (H5_DEP_EXECUTABLES h5copy)
 
-IF (BUILD_TESTING)
-  IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-    ADD_EXECUTABLE (h5copygentest ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copygentest.c)
+if (BUILD_TESTING)
+  if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    add_executable (h5copygentest ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copygentest.c)
     TARGET_NAMING (h5copygentest ${LIB_TYPE})
     TARGET_C_PROPERTIES (h5copygentest " " " ")
-    TARGET_LINK_LIBRARIES (h5copygentest ${HDF5_LIB_TARGET})
-    SET_TARGET_PROPERTIES (h5copygentest PROPERTIES FOLDER generator/tools)
+    target_link_libraries (h5copygentest ${HDF5_LIB_TARGET})
+    set_target_properties (h5copygentest PROPERTIES FOLDER generator/tools)
 
-    #ADD_TEST (NAME h5copygentest COMMAND $<TARGET_FILE:h5copygentest>)
-  ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    #add_test (NAME h5copygentest COMMAND $<TARGET_FILE:h5copygentest>)
+  endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -43,7 +43,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5copy ${HDF5_INSTALL_BIN_DIR} toolsapplications)
   
-INSTALL (
+install (
     TARGETS
         h5copy
     RUNTIME DESTINATION
diff --git a/tools/h5copy/CMakeTests.cmake b/tools/h5copy/CMakeTests.cmake
index a4cce03..77399a8 100644
--- a/tools/h5copy/CMakeTests.cmake
+++ b/tools/h5copy/CMakeTests.cmake
@@ -8,30 +8,30 @@
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the source directory into the test directory
   # --------------------------------------------------------------------
-  SET (LIST_HDF5_TEST_FILES
+  set (LIST_HDF5_TEST_FILES
       ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_extlinks_src.h5
       ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_extlinks_trg.h5
       ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_ref.h5
       ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copytst.h5
   )
 
-  SET (LIST_OTHER_TEST_FILES
+  set (LIST_OTHER_TEST_FILES
       ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_misc1.out
   )
 
-  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
-  FOREACH (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
     GET_FILENAME_COMPONENT(fname "${listfiles}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
-    #MESSAGE (STATUS " Copying ${listfiles}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #message (STATUS " Copying ${listfiles}")
+    add_custom_command (
         TARGET     h5copy
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${listfiles} ${dest}
     )
-  ENDFOREACH (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  endforeach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
   
 ##############################################################################
 ##############################################################################
@@ -43,157 +43,157 @@
   # Perform h5copy according to passing parmeters
   #
   MACRO (ADD_H5_F_TEST testname resultcode infile fparam vparam sparam srcname dparam dstname)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
       # Remove any output file left over from previous test run
-      ADD_TEST (
+      add_test (
           NAME H5COPY_F-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
               ./testfiles/${testname}.out.h5
       )
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
 
-    ADD_TEST (
+    add_test (
         NAME H5COPY_F-${testname}
         COMMAND $<TARGET_FILE:h5copy> -f ${fparam} -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN}
     )
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5COPY_F-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      SET_TESTS_PROPERTIES (H5COPY_F-${testname} PROPERTIES DEPENDS H5COPY_F-${testname}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5COPY_F-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5COPY_F-${testname} PROPERTIES DEPENDS H5COPY_F-${testname}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
 
     # resultcode=2 will cause the test to skip the diff test
-    IF (NOT ${resultcode} STREQUAL "2")
-      ADD_TEST (
+    if (NOT ${resultcode} STREQUAL "2")
+      add_test (
           NAME H5COPY_F-${testname}-DIFF
           COMMAND $<TARGET_FILE:h5diff> -q ./testfiles/${infile} ./testfiles/${testname}.out.h5 ${srcname} ${dstname}
       )
       SET_TESTS_PROPERTIES(H5COPY_F-${testname}-DIFF PROPERTIES DEPENDS H5COPY_F-${testname})
-      IF (${resultcode} STREQUAL "1")
-        SET_TESTS_PROPERTIES (H5COPY_F-${testname}-DIFF PROPERTIES WILL_FAIL "true")
-      ENDIF (${resultcode} STREQUAL "1")
-    ENDIF (NOT ${resultcode} STREQUAL "2")
+      if (${resultcode} STREQUAL "1")
+        set_tests_properties (H5COPY_F-${testname}-DIFF PROPERTIES WILL_FAIL "true")
+      endif (${resultcode} STREQUAL "1")
+    endif (NOT ${resultcode} STREQUAL "2")
   ENDMACRO (ADD_H5_F_TEST)
   
   MACRO (ADD_H5_TEST testname resultcode infile vparam sparam srcname dparam dstname)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
       # Remove any output file left over from previous test run
-      ADD_TEST (
+      add_test (
           NAME H5COPY-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
               ./testfiles/${testname}.out.h5
       )
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
 
-    ADD_TEST (
+    add_test (
         NAME H5COPY-${testname}
         COMMAND $<TARGET_FILE:h5copy> -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN}
     )
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5COPY-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      SET_TESTS_PROPERTIES (H5COPY-${testname} PROPERTIES DEPENDS H5COPY-${testname}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5COPY-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5COPY-${testname} PROPERTIES DEPENDS H5COPY-${testname}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
 
     # resultcode=2 will cause the test to skip the diff test
-    IF (NOT ${resultcode} STREQUAL "2")
-      ADD_TEST (
+    if (NOT ${resultcode} STREQUAL "2")
+      add_test (
           NAME H5COPY-${testname}-DIFF
           COMMAND $<TARGET_FILE:h5diff> -q ./testfiles/${infile} ./testfiles/${testname}.out.h5 ${srcname} ${dstname}
       )
       SET_TESTS_PROPERTIES(H5COPY-${testname}-DIFF PROPERTIES DEPENDS H5COPY-${testname})
-      IF (${resultcode} STREQUAL "1")
-        SET_TESTS_PROPERTIES (H5COPY-${testname}-DIFF PROPERTIES WILL_FAIL "true")
-      ENDIF (${resultcode} STREQUAL "1")
-    ENDIF (NOT ${resultcode} STREQUAL "2")
+      if (${resultcode} STREQUAL "1")
+        set_tests_properties (H5COPY-${testname}-DIFF PROPERTIES WILL_FAIL "true")
+      endif (${resultcode} STREQUAL "1")
+    endif (NOT ${resultcode} STREQUAL "2")
   ENDMACRO (ADD_H5_TEST)
   
   MACRO (ADD_H5_TEST2 testname resultcode infile  psparam pdparam vparam sparam srcname dparam dstname)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
       # Remove any output file left over from previous test run
-      ADD_TEST (
+      add_test (
           NAME H5COPY-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
               ./testfiles/${testname}.out.h5
       )
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
 
-    ADD_TEST (
+    add_test (
         NAME H5COPY-${testname}-prefill
         COMMAND $<TARGET_FILE:h5copy> -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 -v -s ${psparam} -d ${pdparam}
     )
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5COPY-${testname}-prefill PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      SET_TESTS_PROPERTIES (H5COPY-${testname}-prefill PROPERTIES DEPENDS H5COPY-${testname}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
-
-    ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5COPY-${testname}-prefill PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5COPY-${testname}-prefill PROPERTIES DEPENDS H5COPY-${testname}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
+
+    add_test (
         NAME H5COPY-${testname}
         COMMAND $<TARGET_FILE:h5copy> -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN}
     )
-    SET_TESTS_PROPERTIES (H5COPY-${testname} PROPERTIES DEPENDS H5COPY-${testname}-prefill)
+    set_tests_properties (H5COPY-${testname} PROPERTIES DEPENDS H5COPY-${testname}-prefill)
     # resultcode=2 will cause the test to skip the diff test
-    IF (NOT ${resultcode} STREQUAL "2")
-      ADD_TEST (
+    if (NOT ${resultcode} STREQUAL "2")
+      add_test (
           NAME H5COPY-${testname}-DIFF
           COMMAND $<TARGET_FILE:h5diff> -q ./testfiles/${infile} ./testfiles/${testname}.out.h5 ${srcname} ${dstname}
       )
       SET_TESTS_PROPERTIES(H5COPY-${testname}-DIFF PROPERTIES DEPENDS H5COPY-${testname})
-      IF (${resultcode} STREQUAL "1")
-        SET_TESTS_PROPERTIES (H5COPY-${testname}-DIFF PROPERTIES WILL_FAIL "true")
-      ENDIF (${resultcode} STREQUAL "1")
-    ENDIF (NOT ${resultcode} STREQUAL "2")
+      if (${resultcode} STREQUAL "1")
+        set_tests_properties (H5COPY-${testname}-DIFF PROPERTIES WILL_FAIL "true")
+      endif (${resultcode} STREQUAL "1")
+    endif (NOT ${resultcode} STREQUAL "2")
   ENDMACRO (ADD_H5_TEST2)
   
   MACRO (ADD_H5_TEST_SAME testname resultcode pfile psparam pdparam vparam sparam srcname dparam dstname)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
       # Remove any output file left over from previous test run
-      ADD_TEST (
+      add_test (
           NAME H5COPY_SAME-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
               ./testfiles/${testname}.out.h5
       )
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
 
-    ADD_TEST (
+    add_test (
         NAME H5COPY_SAME-${testname}-prefill
         COMMAND $<TARGET_FILE:h5copy> -i ./testfiles/${pfile} -o ./testfiles/${testname}.out.h5 -v -s ${psparam} -d ${pdparam}
     )
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5COPY_SAME-${testname}-prefill PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      SET_TESTS_PROPERTIES (H5COPY_SAME-${testname}-prefill PROPERTIES DEPENDS H5COPY_SAME-${testname}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
-
-    ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5COPY_SAME-${testname}-prefill PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5COPY_SAME-${testname}-prefill PROPERTIES DEPENDS H5COPY_SAME-${testname}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
+
+    add_test (
         NAME H5COPY_SAME-${testname}
         COMMAND $<TARGET_FILE:h5copy> -i ./testfiles/${testname}.out.h5 -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN}
     )
-    SET_TESTS_PROPERTIES (H5COPY_SAME-${testname} PROPERTIES DEPENDS H5COPY_SAME-${testname}-prefill)
+    set_tests_properties (H5COPY_SAME-${testname} PROPERTIES DEPENDS H5COPY_SAME-${testname}-prefill)
     # resultcode=2 will cause the test to skip the diff test
-    IF (NOT ${resultcode} STREQUAL "2")
-      ADD_TEST (
+    if (NOT ${resultcode} STREQUAL "2")
+      add_test (
           NAME H5COPY_SAME-${testname}-DIFF
           COMMAND $<TARGET_FILE:h5diff> -q ./testfiles/${testname}.out.h5 ./testfiles/${testname}.out.h5 ${srcname} ${dstname}
       )
       SET_TESTS_PROPERTIES(H5COPY_SAME-${testname}-DIFF PROPERTIES DEPENDS H5COPY_SAME-${testname})
-      IF (${resultcode} STREQUAL "1")
-        SET_TESTS_PROPERTIES (H5COPY_SAME-${testname}-DIFF PROPERTIES WILL_FAIL "true")
-      ENDIF (${resultcode} STREQUAL "1")
-    ENDIF (NOT ${resultcode} STREQUAL "2")
+      if (${resultcode} STREQUAL "1")
+        set_tests_properties (H5COPY_SAME-${testname}-DIFF PROPERTIES WILL_FAIL "true")
+      endif (${resultcode} STREQUAL "1")
+    endif (NOT ${resultcode} STREQUAL "2")
   ENDMACRO (ADD_H5_TEST_SAME)
 
   #
@@ -202,17 +202,17 @@
   #
   MACRO (ADD_H5_CMP_TEST testname resultcode infile vparam sparam srcname dparam dstname)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5COPY-CMP-${testname} COMMAND $<TARGET_FILE:h5copy> -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN})
-      IF (${resultcode} STREQUAL "1")
-        SET_TESTS_PROPERTIES (H5COPY-CMP-${testname} PROPERTIES WILL_FAIL "true")
-      ENDIF (${resultcode} STREQUAL "1")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5COPY-CMP-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5COPY-CMP-${testname} COMMAND $<TARGET_FILE:h5copy> -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN})
+      if (${resultcode} STREQUAL "1")
+        set_tests_properties (H5COPY-CMP-${testname} PROPERTIES WILL_FAIL "true")
+      endif (${resultcode} STREQUAL "1")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5COPY-CMP-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
       # Remove any output file left over from previous test run
-      ADD_TEST (
+      add_test (
           NAME H5COPY-CMP-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
@@ -220,7 +220,7 @@
               ./testfiles/${testname}.out.out
               ./testfiles/${testname}.out.out.err
       )
-      ADD_TEST (
+      add_test (
           NAME H5COPY-CMP-${testname}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5copy>"
@@ -232,8 +232,8 @@
               -D "TEST_MASK=true"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5COPY-CMP-${testname} PROPERTIES DEPENDS H5COPY-CMP-${testname}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5COPY-CMP-${testname} PROPERTIES DEPENDS H5COPY-CMP-${testname}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_CMP_TEST)
 
 ##############################################################################
@@ -245,14 +245,14 @@
   # --------------------------------------------------------------------
   # test file names 
   # --------------------------------------------------------------------
-  SET (HDF_FILE1 h5copytst)
-  SET (HDF_FILE2 h5copy_ref)
-  SET (HDF_EXT_SRC_FILE h5copy_extlinks_src)
-  SET (HDF_EXT_TRG_FILE h5copy_extlinks_trg)
+  set (HDF_FILE1 h5copytst)
+  set (HDF_FILE2 h5copy_ref)
+  set (HDF_EXT_SRC_FILE h5copy_extlinks_src)
+  set (HDF_EXT_TRG_FILE h5copy_extlinks_trg)
 
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
         NAME H5COPY-clearall-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove 
@@ -291,12 +291,12 @@
             h5copy_misc1.out.out
             h5copy_misc1.out.out.err
     )
-    SET_TESTS_PROPERTIES (H5COPY-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5COPY-clearall-objects PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "H5COPY-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    set_tests_properties (H5COPY-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (H5COPY-clearall-objects PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "H5COPY-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
   
   # "Test copying various forms of datasets"
   ADD_H5_TEST (simple 0 ${HDF_FILE1}.h5 -v -s simple -d simple)
diff --git a/tools/h5copy/Makefile.am b/tools/h5copy/Makefile.am
index 47e8685..9d326ce 100644
--- a/tools/h5copy/Makefile.am
+++ b/tools/h5copy/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src and tools/lib directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG=h5copygentest
diff --git a/tools/h5copy/Makefile.in b/tools/h5copy/Makefile.in
index 3278f80..fef0136 100644
--- a/tools/h5copy/Makefile.in
+++ b/tools/h5copy/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,11 +95,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/testh5copy.sh.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+	$(top_srcdir)/bin/test-driver
 bin_PROGRAMS = h5copy$(EXEEXT)
 check_PROGRAMS = $(am__EXEEXT_1)
 TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
@@ -143,12 +171,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -160,7 +403,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src and tools/lib directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -220,7 +466,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -432,9 +677,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # copied to the testfiles/ directory if update is required.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
 
-# Include src and tools/lib directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
-
 # Test programs and scripts
 TEST_PROG = h5copygentest
 TEST_SCRIPT = testh5copy.sh
@@ -472,7 +714,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -515,10 +757,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -539,7 +783,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -561,9 +806,11 @@ 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) $(EXTRA_h5copy_DEPENDENCIES) 
 	@rm -f h5copy$(EXEEXT)
 	$(AM_V_CCLD)$(h5copy_LINK) $(h5copy_OBJECTS) $(h5copy_LDADD) $(LIBS)
+
 h5copygentest$(EXEEXT): $(h5copygentest_OBJECTS) $(h5copygentest_DEPENDENCIES) $(EXTRA_h5copygentest_DEPENDENCIES) 
 	@rm -f h5copygentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5copygentest_OBJECTS) $(h5copygentest_LDADD) $(LIBS)
@@ -582,14 +829,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -604,26 +851,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -635,15 +871,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -652,9 +884,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -670,6 +903,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+h5copygentest.log: h5copygentest$(EXEEXT)
+	@p='h5copygentest$(EXEEXT)'; \
+	b='h5copygentest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -729,6 +1114,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -812,20 +1200,21 @@ 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-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-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
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 recheck tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt
index d79c290..5620968 100644
--- a/tools/h5diff/CMakeLists.txt
+++ b/tools/h5diff/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5DIFF)
 
 #-----------------------------------------------------------------------------
@@ -9,45 +9,45 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 # --------------------------------------------------------------------
 # Add the h5diff executables
 # --------------------------------------------------------------------
-ADD_EXECUTABLE (h5diff
+add_executable (h5diff
     ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c
     ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_main.c
 )
 TARGET_NAMING (h5diff ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5diff " " " ")
-TARGET_LINK_LIBRARIES (h5diff  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5diff PROPERTIES FOLDER tools)
+target_link_libraries (h5diff  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5diff PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES h5diff)
+set (H5_DEP_EXECUTABLES h5diff)
 
-IF (H5_HAVE_PARALLEL)
-  ADD_EXECUTABLE (ph5diff
+if (H5_HAVE_PARALLEL)
+  add_executable (ph5diff
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/ph5diff_main.c
   )
   TARGET_NAMING (ph5diff ${LIB_TYPE})
   TARGET_C_PROPERTIES (ph5diff " " " ")
-  TARGET_LINK_LIBRARIES (ph5diff  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-  SET_TARGET_PROPERTIES (ph5diff PROPERTIES FOLDER tools)
-ENDIF (H5_HAVE_PARALLEL)
+  target_link_libraries (ph5diff  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+  set_target_properties (ph5diff PROPERTIES FOLDER tools)
+endif (H5_HAVE_PARALLEL)
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Add the h5diff and test executables
   # --------------------------------------------------------------------
-  IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-    ADD_EXECUTABLE (h5diffgentest ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diffgentest.c)
+  if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    add_executable (h5diffgentest ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diffgentest.c)
     TARGET_NAMING (h5diffgentest ${LIB_TYPE})
     TARGET_C_PROPERTIES (h5diffgentest " " " ")
-    TARGET_LINK_LIBRARIES (h5diffgentest ${HDF5_LIB_TARGET})
-    SET_TARGET_PROPERTIES (h5diffgentest PROPERTIES FOLDER generator/tools)
+    target_link_libraries (h5diffgentest ${HDF5_LIB_TARGET})
+    set_target_properties (h5diffgentest PROPERTIES FOLDER generator/tools)
     
-    #ADD_TEST (NAME h5diffgentest COMMAND $<TARGET_FILE:h5diffgentest>)
-  ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    #add_test (NAME h5diffgentest COMMAND $<TARGET_FILE:h5diffgentest>)
+  endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
  
-ENDIF (BUILD_TESTING)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -61,7 +61,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5diff
     RUNTIME DESTINATION
@@ -70,11 +70,11 @@ INSTALL (
         toolsapplications
 )
 
-IF (H5_HAVE_PARALLEL)
+if (H5_HAVE_PARALLEL)
 
   #INSTALL_PROGRAM_PDB (ph5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-  INSTALL (
+  install (
       TARGETS
           ph5diff
       RUNTIME DESTINATION
@@ -82,4 +82,4 @@ IF (H5_HAVE_PARALLEL)
       COMPONENT
           toolsapplications
   )
-ENDIF (H5_HAVE_PARALLEL)
+endif (H5_HAVE_PARALLEL)
diff --git a/tools/h5diff/CMakeTests.cmake b/tools/h5diff/CMakeTests.cmake
index cac4f84..0986d89 100644
--- a/tools/h5diff/CMakeTests.cmake
+++ b/tools/h5diff/CMakeTests.cmake
@@ -8,7 +8,7 @@
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the test directory into the source directory
   # --------------------------------------------------------------------
-  SET (LIST_HDF5_TEST_FILES
+  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
@@ -52,7 +52,7 @@
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables2.h5
   )
 
-  SET (LIST_OTHER_TEST_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
@@ -234,55 +234,55 @@
   )
 
   # Make testfiles dir under build dir
-  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
   #
   # copy test files from source to build dir
   #
-  FOREACH (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  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 (
+    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 ${h5_tstfiles} ${dest}
     )
-  ENDFOREACH (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  endforeach (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
 
 
   #
   # Overwrite system dependent files (Windows)
   #
-  IF (WIN32 AND NOT CYGWIN)
-    ADD_CUSTOM_COMMAND (
+  if (WIN32)
+    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}/testfiles/h5diff_101.txt
     )
 
-    ADD_CUSTOM_COMMAND (
+    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}/testfiles/h5diff_102.txt
     )
-    ADD_CUSTOM_COMMAND (
+    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}/testfiles/h5diff_103.txt
     )
 
-    ADD_CUSTOM_COMMAND (
+    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}/testfiles/h5diff_104.txt
     )
-  ENDIF (WIN32 AND NOT CYGWIN)
+  endif (WIN32)
   
 ##############################################################################
 ##############################################################################
@@ -292,22 +292,22 @@
 
   MACRO (ADD_H5_TEST resultfile resultcode)
     # 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")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    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")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DIFF-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ./testfiles/${resultfile}.out ./testfiles/${resultfile}.out.err
       )
-      ADD_TEST (
+      add_test (
           NAME H5DIFF-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5diff>"
@@ -319,31 +319,31 @@
               -D "TEST_APPEND=EXIT CODE:"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DIFF-${resultfile} PROPERTIES DEPENDS "H5DIFF-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
-    IF (H5_HAVE_PARALLEL)
+      set_tests_properties (H5DIFF-${resultfile} PROPERTIES DEPENDS "H5DIFF-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
+    if (H5_HAVE_PARALLEL)
       ADD_PH5_TEST (${resultfile} ${resultcode} ${ARGN})
-    ENDIF (H5_HAVE_PARALLEL)
+    endif (H5_HAVE_PARALLEL)
   ENDMACRO (ADD_H5_TEST file)
 
   MACRO (ADD_PH5_TEST resultfile resultcode)
     # 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")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (PH5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    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")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (PH5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME PH5DIFF-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ./testfiles/${resultfile}_p.out ./testfiles/${resultfile}_p.out.err
       )
-      ADD_TEST (
+      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>"
@@ -357,8 +357,8 @@
               -D "TEST_SKIP_COMPARE=TRUE"
               -P "${HDF5_RESOURCES_DIR}/prunTest.cmake"
       )
-      SET_TESTS_PROPERTIES (PH5DIFF-${resultfile} PROPERTIES DEPENDS "PH5DIFF-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (PH5DIFF-${resultfile} PROPERTIES DEPENDS "PH5DIFF-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_PH5_TEST file)
 
    # ADD_H5_NO_OUTPUT_TEST
@@ -366,30 +366,30 @@
    # Don't use this if possible; this may be removed.
    MACRO (ADD_H5_NO_OUTPUT_TEST testname resultcode)
     # If using memchecker add tests without using scripts
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DIFF-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err
       )
       # if there was a previous test
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DIFF-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-
-    ADD_TEST (NAME H5DIFF-${testname} COMMAND $<TARGET_FILE:h5diff> ${ARGN})
-    IF (NOT ${resultcode} STREQUAL "0")
-      SET_TESTS_PROPERTIES (H5DIFF-${testname} PROPERTIES WILL_FAIL "true")
-    ENDIF (NOT ${resultcode} STREQUAL "0")
-
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DIFF-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      SET_TESTS_PROPERTIES (H5DIFF-${testname} PROPERTIES DEPENDS H5DIFF-${testname}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DIFF-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+
+    add_test (NAME H5DIFF-${testname} COMMAND $<TARGET_FILE:h5diff> ${ARGN})
+    if (NOT ${resultcode} STREQUAL "0")
+      set_tests_properties (H5DIFF-${testname} PROPERTIES WILL_FAIL "true")
+    endif (NOT ${resultcode} STREQUAL "0")
+
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DIFF-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DIFF-${testname} PROPERTIES DEPENDS H5DIFF-${testname}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_NO_OUTPUT_TEST)
 
 ##############################################################################
@@ -401,56 +401,56 @@
   # --------------------------------------------------------------------
   # test file names 
   # --------------------------------------------------------------------
-  SET (FILE1 h5diff_basic1.h5)
-  SET (FILE2 h5diff_basic2.h5)
-  SET (FILE3 h5diff_types.h5)
-  SET (FILE4 h5diff_dtypes.h5)
-  SET (FILE5 h5diff_attr1.h5)
-  SET (FILE6 h5diff_attr2.h5)
-  SET (FILE7 h5diff_dset1.h5)
-  SET (FILE8 h5diff_dset2.h5)
-  SET (FILE9 h5diff_hyper1.h5)
-  SET (FILE10 h5diff_hyper2.h5)
-  SET (FILE11 h5diff_empty.h5)
-  SET (FILE12 h5diff_links.h5)
-  SET (FILE13 h5diff_softlinks.h5)
-  SET (FILE14 h5diff_linked_softlink.h5)
-  SET (FILE15 h5diff_extlink_src.h5)
-  SET (FILE16 h5diff_extlink_trg.h5)
-  SET (FILE17 h5diff_ext2softlink_src.h5)
-  SET (FILE18 h5diff_ext2softlink_trg.h5)
-  SET (FILE19 h5diff_dset_zero_dim_size1.h5)
-  SET (FILE20 h5diff_dset_zero_dim_size2.h5)
-  SET (DANGLE_LINK_FILE1 h5diff_danglelinks1.h5)
-  SET (DANGLE_LINK_FILE2 h5diff_danglelinks2.h5)
-  SET (GRP_RECURSE_FILE1 h5diff_grp_recurse1.h5)
-  SET (GRP_RECURSE_FILE2 h5diff_grp_recurse2.h5)
+  set (FILE1 h5diff_basic1.h5)
+  set (FILE2 h5diff_basic2.h5)
+  set (FILE3 h5diff_types.h5)
+  set (FILE4 h5diff_dtypes.h5)
+  set (FILE5 h5diff_attr1.h5)
+  set (FILE6 h5diff_attr2.h5)
+  set (FILE7 h5diff_dset1.h5)
+  set (FILE8 h5diff_dset2.h5)
+  set (FILE9 h5diff_hyper1.h5)
+  set (FILE10 h5diff_hyper2.h5)
+  set (FILE11 h5diff_empty.h5)
+  set (FILE12 h5diff_links.h5)
+  set (FILE13 h5diff_softlinks.h5)
+  set (FILE14 h5diff_linked_softlink.h5)
+  set (FILE15 h5diff_extlink_src.h5)
+  set (FILE16 h5diff_extlink_trg.h5)
+  set (FILE17 h5diff_ext2softlink_src.h5)
+  set (FILE18 h5diff_ext2softlink_trg.h5)
+  set (FILE19 h5diff_dset_zero_dim_size1.h5)
+  set (FILE20 h5diff_dset_zero_dim_size2.h5)
+  set (DANGLE_LINK_FILE1 h5diff_danglelinks1.h5)
+  set (DANGLE_LINK_FILE2 h5diff_danglelinks2.h5)
+  set (GRP_RECURSE_FILE1 h5diff_grp_recurse1.h5)
+  set (GRP_RECURSE_FILE2 h5diff_grp_recurse2.h5)
   # group recursive - same structure via external links through files 
-  SET (GRP_RECURSE1_EXT h5diff_grp_recurse_ext1.h5)
-  SET (GRP_RECURSE2_EXT1 h5diff_grp_recurse_ext2-1.h5)
-  SET (GRP_RECURSE2_EXT2 h5diff_grp_recurse_ext2-2.h5)
-  SET (GRP_RECURSE2_EXT3 h5diff_grp_recurse_ext2-3.h5)
+  set (GRP_RECURSE1_EXT h5diff_grp_recurse_ext1.h5)
+  set (GRP_RECURSE2_EXT1 h5diff_grp_recurse_ext2-1.h5)
+  set (GRP_RECURSE2_EXT2 h5diff_grp_recurse_ext2-2.h5)
+  set (GRP_RECURSE2_EXT3 h5diff_grp_recurse_ext2-3.h5)
   # same structure, same obj name with different value
-  SET (EXCLUDE_FILE1_1 h5diff_exclude1-1.h5)
-  SET (EXCLUDE_FILE1_2 h5diff_exclude1-2.h5)
+  set (EXCLUDE_FILE1_1 h5diff_exclude1-1.h5)
+  set (EXCLUDE_FILE1_2 h5diff_exclude1-2.h5)
   # different structure and obj names
-  SET (EXCLUDE_FILE2_1 h5diff_exclude2-1.h5)
-  SET (EXCLUDE_FILE2_2 h5diff_exclude2-2.h5)
+  set (EXCLUDE_FILE2_1 h5diff_exclude2-1.h5)
+  set (EXCLUDE_FILE2_2 h5diff_exclude2-2.h5)
   # Only one file contains unique objs. Common objs are same.
-  SET (EXCLUDE_FILE3_1 h5diff_exclude3-1.h5)
-  SET (EXCLUDE_FILE3_2 h5diff_exclude3-2.h5)
+  set (EXCLUDE_FILE3_1 h5diff_exclude3-1.h5)
+  set (EXCLUDE_FILE3_2 h5diff_exclude3-2.h5)
   # compound type with multiple vlen string types
-  SET (COMP_VL_STRS_FILE h5diff_comp_vl_strs.h5)
+  set (COMP_VL_STRS_FILE h5diff_comp_vl_strs.h5)
   # container types (array,vlen) with multiple nested compound types
-  SET (COMPS_ARRAY_VLEN_FILE1 compounds_array_vlen1.h5)
-  SET (COMPS_ARRAY_VLEN_FILE2 compounds_array_vlen2.h5)
+  set (COMPS_ARRAY_VLEN_FILE1 compounds_array_vlen1.h5)
+  set (COMPS_ARRAY_VLEN_FILE2 compounds_array_vlen2.h5)
   # attrs with verbose option level
-  SET (ATTR_VERBOSE_LEVEL_FILE1 h5diff_attr_v_level1.h5)
-  SET (ATTR_VERBOSE_LEVEL_FILE2 h5diff_attr_v_level2.h5)
+  set (ATTR_VERBOSE_LEVEL_FILE1 h5diff_attr_v_level1.h5)
+  set (ATTR_VERBOSE_LEVEL_FILE2 h5diff_attr_v_level2.h5)
 
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
       NAME H5DIFF-clearall-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -801,12 +801,12 @@
           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 "")
-    SET (last_test "H5DIFF-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    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 "")
+    set (last_test "H5DIFF-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
 # ############################################################################
 # # Common usage
@@ -1074,7 +1074,7 @@ ADD_H5_TEST (h5diff_90 0 -v ${FILE2} ${FILE2})
 # 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
-#    MESSAGE (STATUS "SKIP -v ${FILE9} ${FILE10})
+#    message (STATUS "SKIP -v ${FILE9} ${FILE10})
 #else
 #    ADD_H5_TEST (h5diff_100 1 -v ${FILE9} ${FILE10}) 
 #fi
diff --git a/tools/h5diff/Makefile.am b/tools/h5diff/Makefile.am
index 05417f5..7e3b620 100644
--- a/tools/h5diff/Makefile.am
+++ b/tools/h5diff/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src and tools/lib directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Always build and test h5diff but build and test ph5diff only if parallel
 # is enabled.
diff --git a/tools/h5diff/Makefile.in b/tools/h5diff/Makefile.in
index 9b46f4e..08008d7 100644
--- a/tools/h5diff/Makefile.in
+++ b/tools/h5diff/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,11 +95,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(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
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver
 bin_PROGRAMS = h5diff$(EXEEXT) $(am__EXEEXT_1)
 check_PROGRAMS = $(am__EXEEXT_2)
 TESTS = $(am__EXEEXT_2) $(TEST_SCRIPT)
@@ -150,12 +178,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -167,7 +410,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src and tools/lib directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -227,7 +473,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -440,9 +685,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 expect_sorted \
 	actual_sorted
 
-# Include src and tools/lib directories
-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
@@ -488,7 +730,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -533,10 +775,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -557,7 +801,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -579,12 +824,15 @@ 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) $(EXTRA_h5diff_DEPENDENCIES) 
 	@rm -f h5diff$(EXEEXT)
 	$(AM_V_CCLD)$(h5diff_LINK) $(h5diff_OBJECTS) $(h5diff_LDADD) $(LIBS)
+
 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) $(EXTRA_ph5diff_DEPENDENCIES) 
 	@rm -f ph5diff$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ph5diff_OBJECTS) $(ph5diff_LDADD) $(LIBS)
@@ -605,14 +853,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -627,26 +875,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -658,15 +895,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -675,9 +908,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -693,6 +927,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+h5diffgentest.log: h5diffgentest$(EXEEXT)
+	@p='h5diffgentest$(EXEEXT)'; \
+	b='h5diffgentest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -752,6 +1138,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -835,20 +1224,21 @@ 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-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-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
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 recheck tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5diff/h5diff_common.c b/tools/h5diff/h5diff_common.c
index cf46e74..a371cc0 100644
--- a/tools/h5diff/h5diff_common.c
+++ b/tools/h5diff/h5diff_common.c
@@ -103,6 +103,13 @@ void parse_command_line(int argc,
     /* NaNs are handled by default */
     options->do_nans = 1;
 
+    /* not Listing objects that are not comparable */
+    options->m_list_not_cmp = 0;
+
+    /* initially no not-comparable. */
+    /**this is bad in mixing option with results**/
+    options->not_cmp=0;
+
     /* init for exclude-path option */
     exclude_head = NULL;
 
@@ -174,7 +181,7 @@ void parse_command_line(int argc,
             options->exclude_path = 1;
             
             /* create linked list of excluding objects */
-            if( (exclude_node = (struct exclude_path_list*) malloc(sizeof(struct exclude_path_list))) == NULL)
+            if( (exclude_node = (struct exclude_path_list*) HDmalloc(sizeof(struct exclude_path_list))) == NULL)
             {
                 printf("Error: lack of memory!\n");
                 h5diff_exit(EXIT_FAILURE);
diff --git a/tools/h5diff/ph5diff_main.c b/tools/h5diff/ph5diff_main.c
index 1fc563b..62e1e73 100644
--- a/tools/h5diff/ph5diff_main.c
+++ b/tools/h5diff/ph5diff_main.c
@@ -13,11 +13,12 @@
  * access to either file, you may request a copy from help at hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
-#include "h5diff.h"
-#include "ph5diff.h"
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
+#include "H5private.h"
+#include "h5diff.h"
+#include "ph5diff.h"
 #include "h5diff_common.h"
 #include "h5tools.h"
 #include "h5tools_utils.h"
@@ -30,9 +31,9 @@ static void ph5diff_worker(int );
 /*-------------------------------------------------------------------------
  * Function: main
  *
- * Purpose: h5diff/ph5diff main program
+ * Purpose: ph5diff main program
  *
- * Return: An  exit status of 0 means no differences were found, 1 means some
+ * Return: An exit status of 0 means no differences were found, 1 means some
  *   differences were found.
  *
  * Programmer: Pedro Vicente, pvn at ncsa.uiuc.edu
@@ -41,16 +42,6 @@ static void ph5diff_worker(int );
  *
  * Comments:
  *
- * Modifications: July 2004
- *  Introduced the four modes:
- *   Normal mode: print the number of differences found and where they occured
- *   Report mode: print the above plus the differences
- *   Verbose mode: print the above plus a list of objects and warnings
- *   Quiet mode: do not print output
- *
- * November 2004: Leon Arber (larber at uiuc.edu)
- *        Additions that allow h5diff to be run in parallel
- *
  * This function drives the diff process and will do a serial or parallel diff depending
  * on the value of the global variable g_Parallel (default is 0), set to 1 when the program
  * is run as "ph5diff"
@@ -140,112 +131,165 @@ int main(int argc, const char *argv[])
 static void
 ph5diff_worker(int nID)
 {
-    struct diff_mpi_args args;
-    hid_t file1_id, file2_id;
-    char    filenames[2][MAX_FILENAME];
-    char    out_data[PRINT_DATA_MAX_SIZE] = {0};
-    struct diffs_found  diffs;
-    int i;
-    MPI_Status Status;
-
-    outBuffOffset = 0;
+    hid_t file1_id = -1, file2_id = -1;
 
-    MPI_Recv(filenames, MAX_FILENAME*2, MPI_CHAR, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
-    if(Status.MPI_TAG == MPI_TAG_PARALLEL)
+    while(1)
     {
-        /* disable error reporting */
-        H5E_BEGIN_TRY
+        MPI_Status Status;
+
+        MPI_Probe(0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
+
+        /* Check for filenames */
+        if(Status.MPI_TAG == MPI_TAG_PARALLEL)
         {
-            /* Open the files */
-            if ((file1_id = H5Fopen (filenames[0], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
+            char    filenames[2][MAX_FILENAME];
+
+            /* Retrieve filenames */
+            MPI_Recv(filenames, MAX_FILENAME*2, MPI_CHAR, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
+
+            /* disable error reporting */
+            H5E_BEGIN_TRY
             {
-            printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[0]);
-            MPI_Abort(MPI_COMM_WORLD, 0);
+                /* Open the files */
+                if ((file1_id = H5Fopen (filenames[0], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
+                {
+                    printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[0]);
+                    MPI_Abort(MPI_COMM_WORLD, 0);
+                }
+                if ((file2_id = H5Fopen (filenames[1], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
+                {
+                    printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[1]);
+                    MPI_Abort(MPI_COMM_WORLD, 0);
+                }
+                /* enable error reporting */
             }
-            if ((file2_id = H5Fopen (filenames[1], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
+            H5E_END_TRY;
+        }
+        /* Check for work */
+        else if(Status.MPI_TAG == MPI_TAG_ARGS)
+        {
+            struct diff_mpi_args args;
+            struct diffs_found  diffs;
+            int i;
+
+            /* Make certain we've received the filenames and opened the files already */
+            if(file1_id < 0 || file2_id < 0)
             {
-            printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[1]);
-            MPI_Abort(MPI_COMM_WORLD, 0);
+                printf("ph5diff_worker: ERROR: work received before/without filenames\n");
+                break;
             }
-            /* enable error reporting */
-        }
-        H5E_END_TRY;
 
+            /* Recv parameters for diff from manager task */
+            MPI_Recv(&args, sizeof(args), MPI_BYTE, 0, MPI_TAG_ARGS, MPI_COMM_WORLD, &Status);
 
-        while(1)
-        {
-            MPI_Probe(0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
+            /* Do the diff */
+            diffs.nfound = diff(file1_id, args.name1, file2_id, args.name2, &(args.options), &(args.argdata));
+            diffs.not_cmp = args.options.not_cmp;
 
-            if(Status.MPI_TAG == MPI_TAG_ARGS)
+            /* If print buffer has something in it, request print token.*/
+            if(outBuffOffset>0)
             {
-                /*Recv parameters for diff from manager task */
-                MPI_Recv(&args, sizeof(args), MPI_BYTE, 0, MPI_TAG_ARGS, MPI_COMM_WORLD, &Status);
-                /*Do the diff */
-                diffs.nfound = diff(file1_id, args.name1, file2_id, args.name2, &(args.options), &(args.argdata));
-                diffs.not_cmp = args.options.not_cmp;
-
-                /*If print buffer has something in it, request print token.*/
-                if(outBuffOffset>0)
-                {
-                    MPI_Send(NULL, 0, MPI_BYTE, 0, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD);
-                    /*Wait for print token. */
-                    MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD, &Status);
+                MPI_Send(NULL, 0, MPI_BYTE, 0, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD);
 
-                    /*When get token, send all of our output to the manager task and then return the token */
-                    for(i=0; i<outBuffOffset; i+=PRINT_DATA_MAX_SIZE)
-                        MPI_Send(outBuff+i, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD);
+                /* Wait for print token. */
+                MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD, &Status);
 
+                /* When get token, send all of our output to the manager task and then return the token */
+                for(i=0; i<outBuffOffset; i+=PRINT_DATA_MAX_SIZE)
+                    MPI_Send(outBuff+i, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD);
 
-                    /* An overflow file exists, so we send it's output to the manager too and then delete it */
-                    if(overflow_file)
-                    {
-                        int tmp;
+                /* An overflow file exists, so we send it's output to the manager too and then delete it */
+                if(overflow_file)
+                {
+                    char out_data[PRINT_DATA_MAX_SIZE];
+                    int tmp;
 
-                        memset(out_data, 0, PRINT_DATA_MAX_SIZE);
-                        i=0;
+                    memset(out_data, 0, PRINT_DATA_MAX_SIZE);
+                    i=0;
 
-                        rewind(overflow_file);
-                        while((tmp = getc(overflow_file)) >= 0)
+                    rewind(overflow_file);
+                    while((tmp = getc(overflow_file)) >= 0)
+                    {
+                        *(out_data + i++) = (char)tmp;
+                        if(i==PRINT_DATA_MAX_SIZE)
                         {
-                            *(out_data + i++) = (char)tmp;
-                            if(i==PRINT_DATA_MAX_SIZE)
-                            {
-                                MPI_Send(out_data, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD);
-                                i=0;
-                                memset(out_data, 0, PRINT_DATA_MAX_SIZE);
-                            }
-                        }
-
-                        if(i>0)
                             MPI_Send(out_data, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD);
-
-                        fclose(overflow_file);
-                        overflow_file = NULL;
+                            i=0;
+                            memset(out_data, 0, PRINT_DATA_MAX_SIZE);
+                        }
                     }
 
-                    fflush(stdout);
-                    memset(outBuff, 0, OUTBUFF_SIZE);
-                    outBuffOffset = 0;
+                    if(i>0)
+                        MPI_Send(out_data, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD);
 
-                    MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD);
+                    fclose(overflow_file);
+                    overflow_file = NULL;
                 }
-                else
-                    MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_DONE, MPI_COMM_WORLD);
-            }
-            else if(Status.MPI_TAG == MPI_TAG_END)
-            {
-                MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_END, MPI_COMM_WORLD, &Status);
-            /*  printf("exiting..., task: %d\n", nID);
-                fflush(stdout);*/
-                break;
+
+                fflush(stdout);
+                memset(outBuff, 0, OUTBUFF_SIZE);
+                outBuffOffset = 0;
+
+                MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD);
             }
             else
-            {
-                printf("ph5diff_worker: ERROR: invalid tag (%d) received\n", Status.MPI_TAG);
-                MPI_Abort(MPI_COMM_WORLD, 0);
-            }
+                MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_DONE, MPI_COMM_WORLD);
+        }
+        /* Check for leaving */
+        else if(Status.MPI_TAG == MPI_TAG_END)
+        {
+            MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_END, MPI_COMM_WORLD, &Status);
+            break;
+        }
+        else
+        {
+            printf("ph5diff_worker: ERROR: invalid tag (%d) received\n", Status.MPI_TAG);
+            break;
+        }
 
+    }
+
+    return;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: print_manager_output
+ *
+ * Purpose: special function that prints any output accumulated by the
+ *      manager task.
+ *
+ * Return: none
+ *
+ * Programmer: Leon Arber
+ *
+ * Date: Feb 7, 2005
+ *
+ *-------------------------------------------------------------------------
+ */
+void print_manager_output(void)
+{
+    /* If there was something we buffered, let's print it now */
+    if( (outBuffOffset>0) && g_Parallel)
+    {
+        printf("%s", outBuff);
+
+        if(overflow_file)
+        {
+            int     tmp;
+            rewind(overflow_file);
+            while((tmp = getc(overflow_file)) >= 0)
+                putchar(tmp);
+            fclose(overflow_file);
+            overflow_file = NULL;
         }
+
+        HDfflush(stdout);
+        HDmemset(outBuff, 0, OUTBUFF_SIZE);
+        outBuffOffset = 0;
+    }
+    else if( (outBuffOffset>0) && !g_Parallel)
+    {
+        HDfprintf(stderr, "h5diff error: outBuffOffset>0, but we're not in parallel!\n");
     }
 }
 
@@ -268,12 +312,14 @@ ph5diff_worker(int nID)
 void h5diff_exit(int status)
 {
     /* if in parallel mode, dismiss workers, close down MPI, then exit */
-    if((g_nTasks > 1) && g_Parallel) {
-        phdiff_dismiss_workers();
-        MPI_Barrier(MPI_COMM_WORLD);
-    }
-    if(g_Parallel)
+    if(g_Parallel) {
+        if(g_nTasks > 1) {
+            phdiff_dismiss_workers();
+            MPI_Barrier(MPI_COMM_WORLD);
+        }
         MPI_Finalize();
+        status = EXIT_SUCCESS;  /* Reset exit status, since some mpiexec commands generate output on failure status */
+    }
 
     exit(status);
 }
diff --git a/tools/h5diff/testfiles/h5diff_tmp1.txt b/tools/h5diff/testfiles/h5diff_tmp1.txt
new file mode 100644
index 0000000..40e3fb6
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_tmp1.txt
@@ -0,0 +1,5 @@
+--------------------------------
+Some objects are not comparable
+--------------------------------
+Use -c for a list of objects.
+EXIT CODE: 0
diff --git a/tools/h5diff/testfiles/h5diff_tmp2.txt b/tools/h5diff/testfiles/h5diff_tmp2.txt
new file mode 100644
index 0000000..a2d6da6
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_tmp2.txt
@@ -0,0 +1,13 @@
+dataset: </G/down/Data> and </G/down/Data>
+1599 differences found
+dataset: </G/down/Tail/array> and </G/down/Tail/array>
+8 differences found
+dataset: </G/up/Data> and </G/up/Data>
+1845 differences found
+dataset: </G/up/Tail/array> and </G/up/Tail/array>
+10 differences found
+--------------------------------
+Some objects are not comparable
+--------------------------------
+Use -c for a list of objects.
+EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5 b/tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5
new file mode 100644
index 0000000..bbcfb63
Binary files /dev/null and b/tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5 differ
diff --git a/tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5 b/tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5
new file mode 100644
index 0000000..6b19ed7
Binary files /dev/null and b/tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5 differ
diff --git a/tools/h5diff/testfiles/tmptest.he5 b/tools/h5diff/testfiles/tmptest.he5
new file mode 100644
index 0000000..edcfcd2
Binary files /dev/null and b/tools/h5diff/testfiles/tmptest.he5 differ
diff --git a/tools/h5diff/testfiles/tmptest2.he5 b/tools/h5diff/testfiles/tmptest2.he5
new file mode 100644
index 0000000..a6ab02b
Binary files /dev/null and b/tools/h5diff/testfiles/tmptest2.he5 differ
diff --git a/tools/h5diff/testh5diff.sh.in b/tools/h5diff/testh5diff.sh.in
index 549da49..ee8a09b 100755
--- a/tools/h5diff/testh5diff.sh.in
+++ b/tools/h5diff/testh5diff.sh.in
@@ -302,6 +302,12 @@ $SRC_H5DIFF_TESTFILES/h5diff_709.txt
 $SRC_H5DIFF_TESTFILES/h5diff_710.txt
 $SRC_H5DIFF_TESTFILES/h5diff_80.txt
 $SRC_H5DIFF_TESTFILES/h5diff_90.txt
+$SRC_H5DIFF_TESTFILES/h5diff_tmp1.txt
+$SRC_H5DIFF_TESTFILES/h5diff_tmp2.txt
+$SRC_H5DIFF_TESTFILES/tmptest.he5
+$SRC_H5DIFF_TESTFILES/tmptest2.he5
+$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.reference.h5
+$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.output.h5
 "
 
 #
@@ -757,6 +763,10 @@ TOOLTEST h5diff_631.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h
 # 7.  attributes
 # ##############################################################################
 TOOLTEST h5diff_70.txt -v h5diff_attr1.h5 h5diff_attr2.h5 
+# temporary test to verify HDF5-8625
+TOOLTEST h5diff_tmp1.txt tmptest2.he5 tmptest.he5
+# temporary test to verify HDF5-8639
+TOOLTEST h5diff_tmp2.txt tmpSingleSiteBethe.output.h5 tmpSingleSiteBethe.reference.h5
 
 # ##################################################
 #  attrs with verbose option level
diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt
index 30ff215..1a46586 100644
--- a/tools/h5dump/CMakeLists.txt
+++ b/tools/h5dump/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5DUMP)
 
 #-----------------------------------------------------------------------------
@@ -9,38 +9,38 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 # --------------------------------------------------------------------
 # Add the h5dump executables
 # --------------------------------------------------------------------
-ADD_EXECUTABLE (h5dump
+add_executable (h5dump
     ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump.c
     ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump_ddl.c
     ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump_xml.c
 )
 TARGET_NAMING (h5dump ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5dump " " " ")
-TARGET_LINK_LIBRARIES (h5dump  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5dump PROPERTIES FOLDER tools)
+target_link_libraries (h5dump  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5dump PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES h5dump)
+set (H5_DEP_EXECUTABLES h5dump)
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Add the h5dump test executable
   # --------------------------------------------------------------------
-  IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-    ADD_EXECUTABLE (h5dumpgentest ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dumpgentest.c)
+  if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    add_executable (h5dumpgentest ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dumpgentest.c)
     TARGET_NAMING (h5dumpgentest ${LIB_TYPE})
     TARGET_C_PROPERTIES (h5dumpgentest " " " ")
-    TARGET_LINK_LIBRARIES (h5dumpgentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-    SET_TARGET_PROPERTIES (h5dumpgentest PROPERTIES FOLDER generator/tools)
+    target_link_libraries (h5dumpgentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+    set_target_properties (h5dumpgentest PROPERTIES FOLDER generator/tools)
     
-    #ADD_TEST (NAME h5dumpgentest COMMAND $<TARGET_FILE:h5dumpgentest>)
-  ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    #add_test (NAME h5dumpgentest COMMAND $<TARGET_FILE:h5dumpgentest>)
+  endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
 
-  INCLUDE (CMakeTestsPBITS.cmake)
+  include (CMakeTestsPBITS.cmake)
 
-  INCLUDE (CMakeTestsXML.cmake)
-ENDIF (BUILD_TESTING)
+  include (CMakeTestsXML.cmake)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -54,7 +54,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5dump ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5dump
     RUNTIME DESTINATION
diff --git a/tools/h5dump/CMakeTests.cmake b/tools/h5dump/CMakeTests.cmake
index 9a17f25..c42882a 100644
--- a/tools/h5dump/CMakeTests.cmake
+++ b/tools/h5dump/CMakeTests.cmake
@@ -8,7 +8,7 @@
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the test directory into the source directory
   # --------------------------------------------------------------------
-  SET (HDF5_REFERENCE_FILES
+  set (HDF5_REFERENCE_FILES
       ${HDF5_TOOLS_SRC_DIR}/testfiles/charsets.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/filter_fail.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/packedbits.ddl
@@ -56,6 +56,8 @@
       ${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/tcmpdintarray.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdints.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdintsize.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tcomp-1.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tcomp-2.ddl
@@ -98,6 +100,7 @@
       ${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/tintsattrs.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tlarge_objname.ddl
       #${HDF5_TOOLS_SRC_DIR}/testfiles/tldouble.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tlonglinks.ddl
@@ -117,9 +120,6 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tnoddlfile.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tno-subset.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tnullspace.ddl
-      ${HDF5_TOOLS_SRC_DIR}/testfiles/trawdatafile.ddl
-      ${HDF5_TOOLS_SRC_DIR}/testfiles/trawssetfile.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
@@ -134,10 +134,15 @@
       ${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/trawdatafile.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/trawssetfile.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/treadfilter.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/treadintfilter.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/treference.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tsaf.ddl
-      ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarintsize.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarattrintsize.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarintattrsize.ddl
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarintsize.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarstring.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tscaleoffset.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tshuffle.ddl
@@ -165,8 +170,9 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/twithddlfile.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/h5dump-help.txt
       ${HDF5_TOOLS_SRC_DIR}/testfiles/out3.h5import
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/zerodim.ddl
   )
-  SET (HDF5_REFERENCE_EXP_FILES
+  set (HDF5_REFERENCE_EXP_FILES
       tall-6.exp
       tnoddlfile.exp
       trawdatafile.exp
@@ -176,7 +182,7 @@
       twithddl.exp
       twithddlfile.exp
   )
-  SET (HDF5_REFERENCE_TEST_FILES
+  set (HDF5_REFERENCE_TEST_FILES
       ${HDF5_TOOLS_SRC_DIR}/testfiles/charsets.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/filter_fail.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/packedbits.h5
@@ -200,6 +206,8 @@
       ${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/tcmpdintarray.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdints.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tcmpdintsize.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound_complex.h5
@@ -231,6 +239,7 @@
       ${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/tintsattrs.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tlarge_objname.h5
       #${HDF5_TOOLS_SRC_DIR}/testfiles/tldouble.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tlonglinks.h5
@@ -246,12 +255,12 @@
       ${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/tscalarintsize.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarattrintsize.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarintattrsize.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarintsize.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarstring.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tslink.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tsplit_file-m.h5
@@ -267,8 +276,9 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes5.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvlstr.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvms.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/zerodim.h5
   )
-  SET (HDF5_ERROR_REFERENCE_TEST_FILES
+  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
@@ -295,82 +305,82 @@
   )
 
   # make test dir
-  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
   #
   # copy test files from source dir to test dir
   #
-  FOREACH (tst_h5_file ${HDF5_REFERENCE_TEST_FILES})
+  foreach (tst_h5_file ${HDF5_REFERENCE_TEST_FILES})
     GET_FILENAME_COMPONENT(fname "${tst_h5_file}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/std/${fname}")
-    #MESSAGE (STATUS " Copying ${tst_h5_file}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/std/${fname}")
+    #message (STATUS " Copying ${tst_h5_file}")
+    add_custom_command (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${tst_h5_file} ${dest}
     )
-  ENDFOREACH (tst_h5_file ${HDF5_REFERENCE_TEST_FILES})
+  endforeach (tst_h5_file ${HDF5_REFERENCE_TEST_FILES})
   
-  FOREACH (tst_exp_file ${HDF5_REFERENCE_EXP_FILES})
-    IF (WIN32 AND NOT CYGWIN)
-      FILE (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/${tst_exp_file} TEST_STREAM)
-      FILE (WRITE ${PROJECT_BINARY_DIR}/testfiles/std/${tst_exp_file} "${TEST_STREAM}")
-    ELSE (WIN32 AND NOT CYGWIN)
-      ADD_CUSTOM_COMMAND (
+  foreach (tst_exp_file ${HDF5_REFERENCE_EXP_FILES})
+    if (WIN32)
+      file (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/${tst_exp_file} TEST_STREAM)
+      file (WRITE ${PROJECT_BINARY_DIR}/testfiles/std/${tst_exp_file} "${TEST_STREAM}")
+    else (WIN32)
+      add_custom_command (
           TARGET     h5dump
           POST_BUILD
           COMMAND    ${CMAKE_COMMAND}
           ARGS       -E copy_if_different  ${HDF5_TOOLS_SRC_DIR}/testfiles/${tst_exp_file}  ${PROJECT_BINARY_DIR}/testfiles/std/${tst_exp_file}
       )
-    ENDIF (WIN32 AND NOT CYGWIN)
-  ENDFOREACH (tst_exp_file ${HDF5_REFERENCE_EXP_FILES})
+    endif (WIN32)
+  endforeach (tst_exp_file ${HDF5_REFERENCE_EXP_FILES})
 
-  FOREACH (tst_other_file ${HDF5_REFERENCE_FILES})
+  foreach (tst_other_file ${HDF5_REFERENCE_FILES})
     GET_FILENAME_COMPONENT(fname "${tst_other_file}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/std/${fname}")
-    #MESSAGE (STATUS " Copying ${tst_other_file}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/std/${fname}")
+    #message (STATUS " Copying ${tst_other_file}")
+    add_custom_command (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${tst_other_file} ${dest}
     )
-  ENDFOREACH (tst_other_file ${HDF5_REFERENCE_FILES})
+  endforeach (tst_other_file ${HDF5_REFERENCE_FILES})
 
-  FOREACH (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES})
+  foreach (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES})
     GET_FILENAME_COMPONENT(fname "${tst_error_file}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/std/${fname}")
-    #MESSAGE (STATUS " Copying ${tst_error_file}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/std/${fname}")
+    #message (STATUS " Copying ${tst_error_file}")
+    add_custom_command (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${tst_error_file} ${dest}
     )
-  ENDFOREACH (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES})
+  endforeach (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES})
 
   # --------------------------------------------------------------------
   # Special file handling
   # --------------------------------------------------------------------
-  ADD_CUSTOM_COMMAND (
+  add_custom_command (
       TARGET     h5dump
       POST_BUILD
       COMMAND    ${CMAKE_COMMAND}
       ARGS       -E copy_if_different  ${HDF5_TOOLS_SOURCE_DIR}/testfiles/tbin1.ddl  ${PROJECT_BINARY_DIR}/testfiles/std/tbin1LE.ddl
   )
   
-  IF (WIN32 AND NOT CYGWIN)
-    FILE (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp TEST_STREAM)
-    FILE (WRITE ${PROJECT_BINARY_DIR}/testfiles/std/tbinregR.exp "${TEST_STREAM}")
-  ELSE (WIN32 AND NOT CYGWIN)
-    ADD_CUSTOM_COMMAND (
+  if (WIN32)
+    file (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp TEST_STREAM)
+    file (WRITE ${PROJECT_BINARY_DIR}/testfiles/std/tbinregR.exp "${TEST_STREAM}")
+  else (WIN32)
+    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}/testfiles/std/tbinregR.exp
     )
-  ENDIF (WIN32 AND NOT CYGWIN)
+  endif (WIN32)
   
 ##############################################################################
 ##############################################################################
@@ -380,21 +390,21 @@
 
   MACRO (ADD_HELP_TEST testname resultcode)
     # 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/std")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DUMP-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      SET (last_test "H5DUMP-${testname}")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    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/std")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DUMP-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      set (last_test "H5DUMP-${testname}")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-h5dump-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove h5dump-${testname}.out h5dump-${testname}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-h5dump-${testname}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-h5dump-${testname}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-h5dump-${testname}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -405,42 +415,42 @@
               -D "TEST_REFERENCE=h5dump-${testname}.txt"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-h5dump-${testname} PROPERTIES DEPENDS "H5DUMP-h5dump-${testname}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-h5dump-${testname} PROPERTIES DEPENDS "H5DUMP-h5dump-${testname}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_HELP_TEST)
 
   MACRO (ADD_SKIP_H5_TEST skipresultfile skipresultcode testtype)
-    IF (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+    if (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5DUMP-${skipresultfile}-SKIPPED
             COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${skipresultfile} ${ARGN}"
         )
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ELSE (${testtype} STREQUAL "SKIP")
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else (${testtype} STREQUAL "SKIP")
       ADD_H5_TEST (${skipresultfile} ${skipresultcode} ${ARGN})
-    ENDIF (${testtype} STREQUAL "SKIP")
+    endif (${testtype} STREQUAL "SKIP")
   ENDMACRO (ADD_SKIP_H5_TEST)
 
   MACRO (ADD_H5_TEST resultfile resultcode)
     # 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/std")
-      IF (NOT ${resultcode} STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT ${resultcode} STREQUAL "0")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    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/std")
+      if (NOT ${resultcode} STREQUAL "0")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT ${resultcode} STREQUAL "0")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.bin ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -451,29 +461,29 @@
               -D "TEST_REFERENCE=${resultfile}.ddl"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST file)
 
   MACRO (ADD_H5_TEST_N resultfile resultcode)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5DUMP-N-${resultfile} COMMAND $<TARGET_FILE:h5dump> ${ARGN})
-      SET_TESTS_PROPERTIES (H5DUMP-N-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      IF (NOT ${resultcode} STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5DUMP-N-${resultfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT ${resultcode} STREQUAL "0")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DUMP-N-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5DUMP-N-${resultfile} COMMAND $<TARGET_FILE:h5dump> ${ARGN})
+      set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      if (NOT ${resultcode} STREQUAL "0")
+        set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT ${resultcode} STREQUAL "0")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-N-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}-N.bin ${resultfile}-N.out ${resultfile}-N.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-N-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-N-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-N-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -484,29 +494,29 @@
               -D "TEST_REFERENCE=${resultfile}.ddl"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-N-${resultfile} PROPERTIES DEPENDS "H5DUMP-N-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES DEPENDS "H5DUMP-N-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST_N file)
 
   MACRO (ADD_H5_TEST_EXPORT resultfile targetfile resultcode)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> ${ARGN} ${resultfile}.txt ${targetfile})
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      IF (NOT ${resultcode} STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT ${resultcode} STREQUAL "0")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> ${ARGN} ${resultfile}.txt ${targetfile})
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      if (NOT ${resultcode} STREQUAL "0")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT ${resultcode} STREQUAL "0")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.txt ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -517,36 +527,36 @@
               -D "TEST_REFERENCE=${resultfile}.ddl"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
+      add_test (
           NAME H5DUMP-${resultfile}-output-cmp
           COMMAND ${CMAKE_COMMAND}
                 -E compare_files ${resultfile}.txt ${resultfile}.exp
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-output-cmp PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile})
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile})
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST_EXPORT file)
 
   MACRO (ADD_H5_TEST_EXPORT_DDL resultfile targetfile resultcode ddlfile)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> --ddl=${ddlfile}.txt ${ARGN} ${resultfile}.txt ${targetfile})
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      IF (NOT ${resultcode} STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT ${resultcode} STREQUAL "0")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> --ddl=${ddlfile}.txt ${ARGN} ${resultfile}.txt ${targetfile})
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      if (NOT ${resultcode} STREQUAL "0")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT ${resultcode} STREQUAL "0")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${ddlfile}.txt ${resultfile}.txt ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -557,57 +567,57 @@
               -D "TEST_REFERENCE=${resultfile}.ddl"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
+      add_test (
           NAME H5DUMP-${resultfile}-output-cmp
           COMMAND ${CMAKE_COMMAND}
                 -E compare_files ${resultfile}.txt ${resultfile}.exp
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-output-cmp PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile})
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile})
+      add_test (
           NAME H5DUMP-${resultfile}-output-cmp-ddl
           COMMAND ${CMAKE_COMMAND}
                 -E compare_files ${ddlfile}.txt ${ddlfile}.exp
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-output-cmp-ddl PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-output-cmp-ddl PROPERTIES DEPENDS H5DUMP-${resultfile}-output-cmp)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-${resultfile}-output-cmp-ddl PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      set_tests_properties (H5DUMP-${resultfile}-output-cmp-ddl PROPERTIES DEPENDS H5DUMP-${resultfile}-output-cmp)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST_EXPORT_DDL file)
 
   MACRO (ADD_H5_EXPORT_TEST resultfile targetfile resultcode)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-output-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.txt
       )
-      SET_TESTS_PROPERTIES (H5DUMP-output-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-output-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-output-${resultfile}
           COMMAND $<TARGET_FILE:h5dump> ${ARGN} ${resultfile}.txt ${targetfile}
       )
-      SET_TESTS_PROPERTIES (H5DUMP-output-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      SET_TESTS_PROPERTIES (H5DUMP-output-${resultfile} PROPERTIES DEPENDS H5DUMP-output-${resultfile}-clear-objects)
-      ADD_TEST (
+      set_tests_properties (H5DUMP-output-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      set_tests_properties (H5DUMP-output-${resultfile} PROPERTIES DEPENDS H5DUMP-output-${resultfile}-clear-objects)
+      add_test (
           NAME H5DUMP-output-cmp-${resultfile}
           COMMAND ${CMAKE_COMMAND}
                 -E compare_files ${resultfile}.txt ${resultfile}.exp
       )
-      SET_TESTS_PROPERTIES (H5DUMP-output-cmp-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      SET_TESTS_PROPERTIES (H5DUMP-output-cmp-${resultfile} PROPERTIES DEPENDS H5DUMP-output-${resultfile})
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-output-cmp-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      set_tests_properties (H5DUMP-output-cmp-${resultfile} PROPERTIES DEPENDS H5DUMP-output-${resultfile})
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_EXPORT_TEST file)
 
   MACRO (ADD_H5_MASK_TEST resultfile resultcode)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -619,19 +629,19 @@
               -D "TEST_MASK_ERROR=true"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
+    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 (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -644,19 +654,19 @@
               -D "TEST_MASK_ERROR=true"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5ERR_MASK_TEST file)
 
   MACRO (ADD_H5ERR_MASK_ENV_TEST resultfile resultcode envvar envval)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -671,20 +681,20 @@
               -D "TEST_ENV_VALUE:STRING=${envval}"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5ERR_MASK_ENV_TEST)
 
   MACRO (ADD_H5_TEST_IMPORT conffile resultfile testfile resultcode)
     # If using memchecker add tests without using scripts
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-IMPORT-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${conffile}.out ${conffile}.out.err ${resultfile}.bin ${resultfile}.h5
       )
-      SET_TESTS_PROPERTIES (H5DUMP-IMPORT-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-IMPORT-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      add_test (
           NAME H5DUMP-IMPORT-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -695,14 +705,14 @@
               -D "TEST_REFERENCE=${conffile}.ddl"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-IMPORT-${resultfile} PROPERTIES DEPENDS "H5DUMP-IMPORT-${resultfile}-clear-objects")
-      ADD_TEST (NAME H5DUMP-IMPORT-h5import-${resultfile} COMMAND h5import ${resultfile}.bin -c ${conffile}.out -o ${resultfile}.h5)
-      SET_TESTS_PROPERTIES (H5DUMP-IMPORT-h5import-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      SET_TESTS_PROPERTIES (H5DUMP-IMPORT-h5import-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-${resultfile})
-      ADD_TEST (NAME H5DUMP-IMPORT-h5diff-${resultfile} COMMAND h5diff ${testfile} ${resultfile}.h5 /integer /integer)
-      SET_TESTS_PROPERTIES (H5DUMP-IMPORT-h5diff-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-      SET_TESTS_PROPERTIES (H5DUMP-IMPORT-h5diff-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-h5import-${resultfile})
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-IMPORT-${resultfile} PROPERTIES DEPENDS "H5DUMP-IMPORT-${resultfile}-clear-objects")
+      add_test (NAME H5DUMP-IMPORT-h5import-${resultfile} COMMAND h5import ${resultfile}.bin -c ${conffile}.out -o ${resultfile}.h5)
+      set_tests_properties (H5DUMP-IMPORT-h5import-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      set_tests_properties (H5DUMP-IMPORT-h5import-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-${resultfile})
+      add_test (NAME H5DUMP-IMPORT-h5diff-${resultfile} COMMAND h5diff ${testfile} ${resultfile}.h5 /integer /integer)
+      set_tests_properties (H5DUMP-IMPORT-h5diff-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+      set_tests_properties (H5DUMP-IMPORT-h5diff-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-h5import-${resultfile})
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST_IMPORT file)
 
 ##############################################################################
@@ -711,9 +721,9 @@
 ##############################################################################
 ##############################################################################
 
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
       NAME H5DUMP-clearall-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -805,6 +815,10 @@
           tchunked.out.err
           tcmpdattrintsize.out
           tcmpdattrintsize.out.err
+          tcmpdintarray.out
+          tcmpdintarray.out.err
+          tcmpdints.out
+          tcmpdints.out.err
           tcmpdintsize.out
           tcmpdintsize.out.err
           tcomp-1.out
@@ -889,6 +903,8 @@
           texceedsubblock.out.err
           tindicesyes.out
           tindicesyes.out.err
+          tintsattrs.out
+          tintsattrs.out.err
           tlarge_objname.out
           tlarge_objname.out.err
           tldouble.out
@@ -907,12 +923,12 @@
 #          tstarfile.out.err
           tnamed_dtype_attr.out
           tnamed_dtype_attr.out.err
+          tnbit.out
+          tnbit.out.err
           tnestcomp-1.out
           tnestcomp-1.out.err
           tnestedcmpddt.out
           tnestedcmpddt.out.err
-          tnbit.out
-          tnbit.out.err
           tnoattrdata.out
           tnoattrdata.out.err
           tnoattrddl.out
@@ -923,18 +939,10 @@
           tnoddl.out.err
           tnoddlfile.out
           tnoddlfile.out.err
-          trawdatafile.out
-          trawdatafile.out.err
-          trawdatafile.txt
-          trawssetfile.out
-          trawssetfile.out.err
-          trawssetfile.txt
           tno-subset.out
           tno-subset.out.err
           tnullspace.out
           tnullspace.out.err
-          zerodim.out
-          zerodim.out.err
           tordergr1.out
           tordergr1.out.err
           tordergr2.out
@@ -963,14 +971,26 @@
           torderlinks2.out.err
           tperror.out
           tperror.out.err
+          trawdatafile.out
+          trawdatafile.out.err
+          trawdatafile.txt
+          trawssetfile.out
+          trawssetfile.out.err
+          trawssetfile.txt
+          treadfilter.out
+          treadfilter.out.err
+          treadintfilter.out
+          treadintfilter.out.err
           treference.out
           treference.out.err
           tsaf.out
           tsaf.out.err
-          tscalarintsize.out
-          tscalarintsize.out.err
           tscalarattrintsize.out
           tscalarattrintsize.out.err
+          tscalarintattrsize.out
+          tscalarintattrsize.out.err
+          tscalarintsize.out
+          tscalarintsize.out.err
           tscalarstring.out
           tscalarstring.out.err
           tscaleoffset.out
@@ -1025,13 +1045,15 @@
           twithddlfile.out
           twithddlfile.out.err
           twithddlfile.txt
+          zerodim.out
+          zerodim.out.err
     )
-    SET_TESTS_PROPERTIES (H5DUMP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5DUMP-clearall-objects PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "H5DUMP-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    set_tests_properties (H5DUMP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std")
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (H5DUMP-clearall-objects PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "H5DUMP-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
   ADD_HELP_TEST(help 0 -h)
 
@@ -1054,6 +1076,8 @@
   # test for signed/unsigned datasets
   ADD_H5_TEST (packedbits 0 --enable-error-stack packedbits.h5)
   # test for compound signed/unsigned datasets
+  ADD_H5_TEST (tcmpdintarray 0 --enable-error-stack tcmpdintarray.h5)
+  ADD_H5_TEST (tcmpdints 0 --enable-error-stack tcmpdints.h5)
   ADD_H5_TEST (tcmpdintsize 0 --enable-error-stack tcmpdintsize.h5)
   # test for signed/unsigned scalar datasets
   ADD_H5_TEST (tscalarintsize 0 --enable-error-stack tscalarintsize.h5)
@@ -1065,6 +1089,10 @@
   ADD_H5_TEST (tscalarattrintsize 0 --enable-error-stack tscalarattrintsize.h5)
   # test for string scalar dataset and attribute
   ADD_H5_TEST (tscalarstring 0 --enable-error-stack tscalarstring.h5)
+  # test for signed/unsigned scalar datasets with attributes
+  ADD_H5_TEST (tscalarintattrsize 0 --enable-error-stack tscalarintattrsize.h5)
+  # test for signed/unsigned datasets attributes
+  ADD_H5_TEST (tintsattrs 0 --enable-error-stack tintsattrs.h5)
   # test for displaying groups
   ADD_H5_TEST (tgroup-1 0 --enable-error-stack tgroup.h5)
   # test for displaying the selected groups
@@ -1287,6 +1315,45 @@
   # user defined
   ADD_H5_TEST (tuserfilter 0 --enable-error-stack -H  -p -d myfilter  tfilters.h5)
 
+
+# See which filters are usable (and skip tests for filters we
+# don't have).  Do this by searching H5pubconf.h to see which
+# filters are defined.
+
+# detect whether the encoder is present. 
+  if (H5_HAVE_FILTER_DEFLATE)
+    set (USE_FILTER_DEFLATE "true")
+  endif (H5_HAVE_FILTER_DEFLATE)
+
+  if (H5_HAVE_FILTER_SZIP)
+    set (USE_FILTER_SZIP "true")
+  endif (H5_HAVE_FILTER_SZIP)
+
+  if (H5_HAVE_FILTER_SHUFFLE)
+    set (USE_FILTER_SHUFFLE "true")
+  endif (H5_HAVE_FILTER_SHUFFLE)
+
+  if (H5_HAVE_FILTER_FLETCHER32)
+    set (USE_FILTER_FLETCHER32 "true")
+  endif (H5_HAVE_FILTER_FLETCHER32)
+
+  if (H5_HAVE_FILTER_NBIT)
+    set (USE_FILTER_NBIT "true")
+  endif (H5_HAVE_FILTER_NBIT)
+
+  if (H5_HAVE_FILTER_SCALEOFFSET)
+    set (USE_FILTER_SCALEOFFSET "true")
+  endif (H5_HAVE_FILTER_SCALEOFFSET)
+
+  if (USE_FILTER_DEFLATE AND USE_FILTER_SHUFFLE AND USE_FILTER_FLETCHER32 AND USE_FILTER_NBIT AND USE_FILTER_SCALEOFFSET)
+    # data read internal filters
+    ADD_H5_TEST (treadintfilter 0 --enable-error-stack -d deflate -d shuffle -d fletcher32 -d nbit -d scaleoffset tfilters.h5)
+    if (HDF5_ENABLE_SZIP_SUPPORT)
+      # data read all filters
+      ADD_H5_TEST (treadfilter 0 --enable-error-stack -d all -d szip tfilters.h5)
+    endif (HDF5_ENABLE_SZIP_SUPPORT)
+  endif (USE_FILTER_DEFLATE AND USE_FILTER_SHUFFLE AND USE_FILTER_FLETCHER32 AND USE_FILTER_NBIT AND USE_FILTER_SCALEOFFSET)
+
   # test for displaying objects with very long names
   ADD_H5_TEST (tlonglinks 0 --enable-error-stack tlonglinks.h5)
 
@@ -1318,16 +1385,16 @@
   # NATIVE default. the NATIVE test can be validated with h5import/h5diff
   ADD_H5_TEST_IMPORT (tbin1 out1D tbinary.h5 0 --enable-error-stack -d integer -b)
 
-  IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  if (NOT HDF5_ENABLE_USING_MEMCHECKER)
     ADD_H5_TEST (tbin2 0 --enable-error-stack -b BE -d float -o tbin2.bin tbinary.h5)
-  ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
 
   # the NATIVE test can be validated with h5import/h5diff
   ADD_H5_TEST_IMPORT (tbin3 out3D tbinary.h5 0 --enable-error-stack -d integer -b NATIVE)
 
-  IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  if (NOT HDF5_ENABLE_USING_MEMCHECKER)
     ADD_H5_TEST (tbin4 0 --enable-error-stack -d double -b FILE -o tbin4.bin tbinary.h5)
-  ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
 
   # test for dataset region references 
   ADD_H5_TEST (tdatareg 0 --enable-error-stack tdatareg.h5)
diff --git a/tools/h5dump/CMakeTestsPBITS.cmake b/tools/h5dump/CMakeTestsPBITS.cmake
index baa1705..a920198 100644
--- a/tools/h5dump/CMakeTestsPBITS.cmake
+++ b/tools/h5dump/CMakeTestsPBITS.cmake
@@ -9,7 +9,7 @@
   # Packed Bits
   # --------------------------------------------------------------------
   #-- Copy all the HDF5 files from the test directory into the source directory
-  SET (HDF5_REFERENCE_PBITS
+  set (HDF5_REFERENCE_PBITS
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tnofilename-with-packed-bits.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsArray.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsCompound.ddl
@@ -64,12 +64,12 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsSignedLongLong16.ddl
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tpbitsUnsignedLongLong16.ddl
   )
-  SET (HDF5_REFERENCE_TEST_PBITS
+  set (HDF5_REFERENCE_TEST_PBITS
       ${HDF5_TOOLS_SRC_DIR}/testfiles/packedbits.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tcompound.h5
   )
-  SET (HDF5_ERROR_REFERENCE_PBITS
+  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
@@ -85,42 +85,42 @@
       ${PROJECT_SOURCE_DIR}/errfiles/tpbitsOffsetNegative.err
   )
 
-  FOREACH (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS})
+  foreach (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS})
     GET_FILENAME_COMPONENT(fname "${pbits_h5_file}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}")
-    #MESSAGE (STATUS " Copying ${pbits_h5_file}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}")
+    #message (STATUS " Copying ${pbits_h5_file}")
+    add_custom_command (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${pbits_h5_file} ${dest}
     )
-  ENDFOREACH (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS})
+  endforeach (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS})
   
 
-  FOREACH (ddl_pbits ${HDF5_REFERENCE_PBITS})
+  foreach (ddl_pbits ${HDF5_REFERENCE_PBITS})
     GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME)
-    SET (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}")
-    #MESSAGE (STATUS " Copying ${ddl_pbits}")
-    ADD_CUSTOM_COMMAND (
+    set (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${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_REFERENCE_PBITS})
+  endforeach (ddl_pbits ${HDF5_REFERENCE_PBITS})
 
-  FOREACH (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS})
+  foreach (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS})
     GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME)
-    SET (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}")
-    #MESSAGE (STATUS " Copying ${ddl_pbits}")
-    ADD_CUSTOM_COMMAND (
+    set (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${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})
+  endforeach (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS})
   
 ##############################################################################
 ##############################################################################
@@ -130,23 +130,23 @@
 
   MACRO (ADD_H5_PBITS_TEST resultfile resultcode)
     # 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/pbits")
-      IF (NOT ${resultcode} STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT ${resultcode} STREQUAL "0")
-      IF (NOT "${last_pbits_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_pbits_test})
-      ENDIF (NOT "${last_pbits_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    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/pbits")
+      if (NOT ${resultcode} STREQUAL "0")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT ${resultcode} STREQUAL "0")
+      if (NOT "${last_pbits_test}" STREQUAL "")
+        set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_pbits_test})
+      endif (NOT "${last_pbits_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits")
+      add_test (
           NAME H5DUMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -157,8 +157,8 @@
               -D "TEST_REFERENCE=${resultfile}.ddl"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_PBITS_TEST file)
 
 ##############################################################################
@@ -167,9 +167,9 @@
 ##############################################################################
 ##############################################################################
 
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
       NAME H5DUMP_PACKED_BITS-clearall-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -280,12 +280,12 @@
           tpbitsUnsignedLongLong16.out
           tpbitsUnsignedLongLong16.out.err
     )
-    SET_TESTS_PROPERTIES (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits")
-    IF (NOT "${last_pbits_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES DEPENDS ${last_pbits_test})
-    ENDIF (NOT "${last_pbits_test}" STREQUAL "")
-    SET (last_pbits_test "H5DUMP_PACKED_BITS-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    set_tests_properties (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits")
+    if (NOT "${last_pbits_test}" STREQUAL "")
+      set_tests_properties (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES DEPENDS ${last_pbits_test})
+    endif (NOT "${last_pbits_test}" STREQUAL "")
+    set (last_pbits_test "H5DUMP_PACKED_BITS-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
   # test failure handling
   # Missing file name
diff --git a/tools/h5dump/CMakeTestsXML.cmake b/tools/h5dump/CMakeTestsXML.cmake
index 6c9cae1..ffc1cae 100644
--- a/tools/h5dump/CMakeTestsXML.cmake
+++ b/tools/h5dump/CMakeTestsXML.cmake
@@ -8,7 +8,7 @@
   #
   # copy XML test files from source dir to test dir
   #
-  SET (HDF5_XML_REFERENCE_TEST_FILES
+  set (HDF5_XML_REFERENCE_TEST_FILES
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tall.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray2.h5
@@ -61,7 +61,7 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes5.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvlstr.h5
   )
-  SET (HDF5_XML_REFERENCE_FILES
+  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
@@ -127,29 +127,29 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvlstr.h5.xml
   )
 
-  FOREACH (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES})
+  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/xml/${fname}")
-    #MESSAGE (STATUS " Copying ${tst_xml_h5_file}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}")
+    #message (STATUS " Copying ${tst_xml_h5_file}")
+    add_custom_command (
         TARGET     h5dump
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${tst_xml_h5_file} ${dest}
     )
-  ENDFOREACH (tst_xml_h5_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})
+  foreach (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES})
     GET_FILENAME_COMPONENT(fname "${tst_xml_other_file}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}")
-    #MESSAGE (STATUS " Copying ${tst_xml_other_file}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/xml/${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})
+  endforeach (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES})
   
 ##############################################################################
 ##############################################################################
@@ -158,36 +158,36 @@
 ##############################################################################
 
   MACRO (ADD_XML_SKIP_H5_TEST skipresultfile skipresultcode testtype)
-    IF (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+    if (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5DUMP-XML-${skipresultfile}-SKIPPED
             COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${skipresultfile}.xml --xml ${ARGN}"
         )
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ELSE (${testtype} STREQUAL "SKIP")
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else (${testtype} STREQUAL "SKIP")
       ADD_XML_H5_TEST (${skipresultfile} ${skipresultcode} ${ARGN})
-    ENDIF (${testtype} STREQUAL "SKIP")
+    endif (${testtype} STREQUAL "SKIP")
   ENDMACRO (ADD_XML_SKIP_H5_TEST)
 
   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/xml")
-      IF (NOT ${resultcode} STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5DUMP-XML-${resultfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT ${resultcode} STREQUAL "0")
-      IF (NOT "${last_xml_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5DUMP-XML-${resultfile} PROPERTIES DEPENDS ${last_xml_test})
-      ENDIF (NOT "${last_xml_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    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/xml")
+      if (NOT ${resultcode} STREQUAL "0")
+        set_tests_properties (H5DUMP-XML-${resultfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT ${resultcode} STREQUAL "0")
+      if (NOT "${last_xml_test}" STREQUAL "")
+        set_tests_properties (H5DUMP-XML-${resultfile} PROPERTIES DEPENDS ${last_xml_test})
+      endif (NOT "${last_xml_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5DUMP-XML-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5DUMP-XML-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml")
-      ADD_TEST (
+      set_tests_properties (H5DUMP-XML-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml")
+      add_test (
           NAME H5DUMP-XML-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -198,8 +198,8 @@
               -D "TEST_REFERENCE=${resultfile}.xml"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5DUMP-XML-${resultfile} PROPERTIES DEPENDS "H5DUMP-XML-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5DUMP-XML-${resultfile} PROPERTIES DEPENDS "H5DUMP-XML-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_XML_H5_TEST file)
 
 ##############################################################################
@@ -208,9 +208,9 @@
 ##############################################################################
 ##############################################################################
    
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
       NAME H5DUMP-XML-clearall-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -343,12 +343,12 @@
           tvlstr.h5.out
           tvlstr.h5.out.err
     )
-    SET_TESTS_PROPERTIES (H5DUMP-XML-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml")
-    IF (NOT "${last_xml_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5DUMP-XML-clearall-objects PROPERTIES DEPENDS ${last_xml_test})
-    ENDIF (NOT "${last_xml_test}" STREQUAL "")
-    SET (last_test "H5DUMP-XML-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    set_tests_properties (H5DUMP-XML-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml")
+    if (NOT "${last_xml_test}" STREQUAL "")
+      set_tests_properties (H5DUMP-XML-clearall-objects PROPERTIES DEPENDS ${last_xml_test})
+    endif (NOT "${last_xml_test}" STREQUAL "")
+    set (last_test "H5DUMP-XML-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
   ########## test XML
   ADD_XML_H5_TEST (tall.h5 0 tall.h5)
@@ -413,10 +413,10 @@
 
   # The lone colon here confuses some systems (Cray X1).  Skip
   # it if configure detects that this is a problem.
-  SET (TESTTYPE "TEST")
-  IF (NOT "H5_LONE_COLON")
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT "H5_LONE_COLON")
+  set (TESTTYPE "TEST")
+  if (NOT "H5_LONE_COLON")
+    set (TESTTYPE "SKIP")
+  endif (NOT "H5_LONE_COLON")
   ADD_XML_SKIP_H5_TEST (tempty-nons.h5 0 ${TESTTYPE} -X : tempty.h5)
 
   ADD_XML_H5_TEST (tempty-nons-2.h5 0 --xml-ns=: tempty.h5)
diff --git a/tools/h5dump/Makefile.am b/tools/h5dump/Makefile.am
index f80d12e..cee4801 100644
--- a/tools/h5dump/Makefile.am
+++ b/tools/h5dump/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include files in /src directory and /tools/lib directory
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG=h5dumpgentest
diff --git a/tools/h5dump/Makefile.in b/tools/h5dump/Makefile.in
index 4741683..f479679 100644
--- a/tools/h5dump/Makefile.in
+++ b/tools/h5dump/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,12 +95,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(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
+	$(top_srcdir)/bin/test-driver
 check_PROGRAMS = $(am__EXEEXT_1) binread$(EXEEXT)
 bin_PROGRAMS = h5dump$(EXEEXT)
 TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
@@ -149,12 +177,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -166,7 +409,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include files in /src directory and /tools/lib directory
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -226,7 +472,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -438,9 +683,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # copied to the testfiles/ directory if update is required.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 *.bin
 
-# Include files in /src directory and /tools/lib directory
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
-
 # Test programs and scripts
 TEST_PROG = h5dumpgentest
 TEST_SCRIPT = testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh
@@ -479,7 +721,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -526,10 +768,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -550,7 +794,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -572,12 +817,15 @@ 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) $(EXTRA_binread_DEPENDENCIES) 
 	@rm -f binread$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(binread_OBJECTS) $(binread_LDADD) $(LIBS)
+
 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) $(EXTRA_h5dumpgentest_DEPENDENCIES) 
 	@rm -f h5dumpgentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5dumpgentest_OBJECTS) $(h5dumpgentest_LDADD) $(LIBS)
@@ -599,14 +847,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -621,26 +869,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -652,15 +889,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -669,9 +902,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -687,6 +921,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+h5dumpgentest.log: h5dumpgentest$(EXEEXT)
+	@p='h5dumpgentest$(EXEEXT)'; \
+	b='h5dumpgentest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -746,6 +1132,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -830,20 +1219,21 @@ 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-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-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
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 recheck tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5dump/h5dump_ddl.c b/tools/h5dump/h5dump_ddl.c
index 42e2c88..1227e6e 100644
--- a/tools/h5dump/h5dump_ddl.c
+++ b/tools/h5dump/h5dump_ddl.c
@@ -1203,28 +1203,24 @@ dump_fcpl(hid_t fid)
     PRINTSTREAM(rawoutstream, "%s %d\n","BTREE_LEAF", sym_lk);
 
 #ifdef SHOW_FILE_DRIVER
-    if (H5FD_CORE==fdriver)
+    if(H5FD_CORE==fdriver)
         HDstrcpy(dname,"H5FD_CORE");
 #ifdef H5_HAVE_DIRECT
-    else if (H5FD_DIRECT==fdriver)
+    else if(H5FD_DIRECT==fdriver)
         HDstrcpy(dname,"H5FD_DIRECT");
 #endif
-    else if (H5FD_FAMILY==fdriver)
+    else if(H5FD_FAMILY==fdriver)
         HDstrcpy(dname,"H5FD_FAMILY");
-    else if (H5FD_LOG==fdriver)
+    else if(H5FD_LOG==fdriver)
         HDstrcpy(dname,"H5FD_LOG");
-    else if (H5FD_MPIO==fdriver)
+    else if(H5FD_MPIO==fdriver)
         HDstrcpy(dname,"H5FD_MPIO");
-    else if (H5FD_MULTI==fdriver)
+    else if(H5FD_MULTI==fdriver)
         HDstrcpy(dname,"H5FD_MULTI");
-    else if (H5FD_SEC2==fdriver)
+    else if(H5FD_SEC2==fdriver)
         HDstrcpy(dname,"H5FD_SEC2");
-    else if (H5FD_STDIO==fdriver)
+    else if(H5FD_STDIO==fdriver)
         HDstrcpy(dname,"H5FD_STDIO");
-#ifdef H5_HAVE_STREAM
-    else if (H5FD_STREAM==fdriver)
-        HDstrcpy(dname,"H5FD_STREAM");
-#endif
     else
         HDstrcpy(dname,"Unknown driver");
 
diff --git a/tools/h5dump/h5dump_xml.c b/tools/h5dump/h5dump_xml.c
index 03e1254..c081ee0 100644
--- a/tools/h5dump/h5dump_xml.c
+++ b/tools/h5dump/h5dump_xml.c
@@ -644,6 +644,7 @@ xml_escape_the_name(const char *str)
     const char *cp;
     char       *ncp;
     char       *rcp;
+    size_t      ncp_len;
 
     if (!str)
         return NULL;
@@ -653,21 +654,16 @@ xml_escape_the_name(const char *str)
     extra = 0;
 
     for (i = 0; i < len; i++) {
-        if (*cp == '\"') {
+        if (*cp == '\"')
             extra += (HDstrlen(quote) - 1);
-        } 
-        else if (*cp == '\'') {
+        else if (*cp == '\'')
             extra += (HDstrlen(apos) - 1);
-        } 
-        else if (*cp == '<') {
+        else if (*cp == '<')
             extra += (HDstrlen(lt) - 1);
-        } 
-        else if (*cp == '>') {
+        else if (*cp == '>')
             extra += (HDstrlen(gt) - 1);
-        } 
-        else if (*cp == '&') {
+        else if (*cp == '&')
             extra += (HDstrlen(amp) - 1);
-        }
 
         cp++;
     }
@@ -676,40 +672,43 @@ xml_escape_the_name(const char *str)
         return HDstrdup(str);
 
     cp = str;
-    rcp = ncp = (char *)HDmalloc(len + extra + 1);
+    ncp_len = len + extra + 1;
+    rcp = ncp = (char *)HDmalloc(ncp_len);
 
     if (!ncp)
         return NULL;    /* ?? */
 
     for (i = 0; i < len; i++) {
+        size_t esc_len;
+
+        HDassert(ncp_len);
         if (*cp == '\'') {
-            HDstrncpy(ncp, apos, HDstrlen(apos));
-            ncp += HDstrlen(apos);
-            cp++;
+            HDstrncpy(ncp, apos, ncp_len);
+            esc_len = HDstrlen(apos);
         } 
         else if (*cp == '<') {
-            HDstrncpy(ncp, lt, HDstrlen(lt));
-            ncp += HDstrlen(lt);
-            cp++;
+            HDstrncpy(ncp, lt, ncp_len);
+            esc_len = HDstrlen(lt);
         } 
         else if (*cp == '>') {
-            HDstrncpy(ncp, gt, HDstrlen(gt));
-            ncp += HDstrlen(gt);
-            cp++;
+            HDstrncpy(ncp, gt, ncp_len);
+            esc_len = HDstrlen(gt);
         } 
         else if (*cp == '\"') {
-            HDstrncpy(ncp, quote, HDstrlen(quote));
-            ncp += HDstrlen(quote);
-            cp++;
+            HDstrncpy(ncp, quote, ncp_len);
+            esc_len = HDstrlen(quote);
         } 
         else if (*cp == '&') {
-            HDstrncpy(ncp, amp, HDstrlen(amp));
-            ncp += HDstrlen(amp);
-            cp++;
+            HDstrncpy(ncp, amp, ncp_len);
+            esc_len = HDstrlen(amp);
         } 
         else {
-            *ncp++ = *cp++;
+            *ncp = *cp;
+            esc_len = 1;
         }
+        ncp += esc_len;
+        ncp_len -= esc_len;
+        cp++;
     }
 
     *ncp = '\0';
@@ -739,6 +738,7 @@ xml_escape_the_string(const char *str, int slen)
     const char *cp;
     char       *ncp;
     char       *rcp;
+    size_t      ncp_len;
 
     if (!str)
         return NULL;
@@ -753,65 +753,65 @@ xml_escape_the_string(const char *str, int slen)
     extra = 0;
 
     for (i = 0; i < len; i++) {
-        if (*cp == '\\') {
+        if (*cp == '\\')
             extra++;
-        }
-        else if (*cp == '\"') {
+        else if (*cp == '\"')
             extra++;
-        }
-        else if (*cp == '\'') {
+        else if (*cp == '\'')
             extra += (HDstrlen(apos) - 1);
-        }
-        else if (*cp == '<') {
+        else if (*cp == '<')
             extra += (HDstrlen(lt) - 1);
-        }
-        else if (*cp == '>') {
+        else if (*cp == '>')
             extra += (HDstrlen(gt) - 1);
-        }
-        else if (*cp == '&') {
+        else if (*cp == '&')
             extra += (HDstrlen(amp) - 1);
-        }
         cp++;
     }
 
     cp = str;
-    rcp = ncp = (char *) HDcalloc((len + extra + 1), sizeof(char));
+    ncp_len = len + extra + 1;
+    rcp = ncp = (char *) HDcalloc(ncp_len, sizeof(char));
 
     if (ncp == NULL)
         return NULL; /* ?? */
 
     for (i = 0; i < len; i++) {
+        size_t esc_len;
+
+        HDassert(ncp_len);
         if (*cp == '\\') {
             *ncp++ = '\\';
-            *ncp++ = *cp++;
+            *ncp = *cp;
+            esc_len = 1;
         }
         else if (*cp == '\"') {
             *ncp++ = '\\';
-            *ncp++ = *cp++;
+            *ncp = *cp;
+            esc_len = 1;
         }
         else if (*cp == '\'') {
-            HDstrncpy(ncp, apos, HDstrlen(apos));
-            ncp += HDstrlen(apos);
-            cp++;
+            HDstrncpy(ncp, apos, ncp_len);
+            esc_len = HDstrlen(apos);
         }
         else if (*cp == '<') {
-            HDstrncpy(ncp, lt, HDstrlen(lt));
-            ncp += HDstrlen(lt);
-            cp++;
+            HDstrncpy(ncp, lt, ncp_len);
+            esc_len = HDstrlen(lt);
         }
         else if (*cp == '>') {
-            HDstrncpy(ncp, gt, HDstrlen(gt));
-            ncp += HDstrlen(gt);
-            cp++;
+            HDstrncpy(ncp, gt, ncp_len);
+            esc_len = HDstrlen(gt);
         }
         else if (*cp == '&') {
-            HDstrncpy(ncp, amp, HDstrlen(amp));
-            ncp += HDstrlen(amp);
-            cp++;
+            HDstrncpy(ncp, amp, ncp_len);
+            esc_len = HDstrlen(amp);
         }
         else {
-            *ncp++ = *cp++;
+            *ncp = *cp;
+            esc_len = 1;
         }
+        ncp += esc_len;
+        ncp_len -= esc_len;
+        cp++;
     }
 
     *ncp = '\0';
@@ -1216,7 +1216,7 @@ xml_print_datatype(hid_t type, unsigned in_group)
             /* Render the element */
             h5tools_str_reset(&buffer);
             h5tools_str_append(&buffer, "<%sOpaqueType Tag=\"%s\" ",xmlnsprefix, mname);
-            HDfree(mname);
+            H5free_memory(mname);
             size = H5Tget_size(type);
             h5tools_str_append(&buffer, "Size=\"%lu\"/>", (unsigned long)size);
             h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0);
@@ -1265,7 +1265,7 @@ xml_print_datatype(hid_t type, unsigned in_group)
                 h5tools_str_append(&buffer, "<%sField FieldName=\"%s\">",xmlnsprefix, t_fname);
                 h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0);
 
-                HDfree(mname);
+                H5free_memory(mname);
                 HDfree(t_fname);
                 dump_indent += COL;
                 ctx.indent_level++;
@@ -3623,7 +3623,8 @@ xml_dump_fill_value(hid_t dcpl, hid_t type)
             h5tools_str_reset(&buffer);
             h5tools_str_append(&buffer, "\"%s\"", name);
             h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0);
-
+            if(name)
+                H5free_memory(name);
             ctx.need_prefix = TRUE;
             h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0);
 
@@ -4526,7 +4527,7 @@ xml_print_enum(hid_t type)
 
     /* Release resources */
     for (i = 0; i < nmembs; i++)
-        HDfree(name[i]);
+        H5free_memory(name[i]);
 
     HDfree(name);
     HDfree(value);
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index 381e772..6fd100f 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -17,6 +17,13 @@
 
 srcdir=@srcdir@
 
+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
@@ -128,6 +135,7 @@ $SRC_H5DUMP_TESTFILES/tgroup.h5
 $SRC_H5DUMP_TESTFILES/tgrp_comments.h5
 $SRC_H5DUMP_TESTFILES/thlink.h5
 $SRC_H5DUMP_TESTFILES/thyperslab.h5
+$SRC_H5DUMP_TESTFILES/tintsattrs.h5
 $SRC_H5DUMP_TESTFILES/tlarge_objname.h5
 #$SRC_H5DUMP_TESTFILES/tldouble.h5
 $SRC_H5DUMP_TESTFILES/tlonglinks.h5
@@ -147,8 +155,9 @@ $SRC_H5DUMP_TESTFILES/zerodim.h5
 $SRC_H5DUMP_TESTFILES/torderattr.h5
 $SRC_H5DUMP_TESTFILES/tordergr.h5
 $SRC_H5DUMP_TESTFILES/tsaf.h5
-$SRC_H5DUMP_TESTFILES/tscalarintsize.h5
 $SRC_H5DUMP_TESTFILES/tscalarattrintsize.h5
+$SRC_H5DUMP_TESTFILES/tscalarintattrsize.h5
+$SRC_H5DUMP_TESTFILES/tscalarintsize.h5
 $SRC_H5DUMP_TESTFILES/tscalarstring.h5
 $SRC_H5DUMP_TESTFILES/tslink.h5
 $SRC_H5DUMP_TESTFILES/tsplit_file-m.h5
@@ -257,6 +266,7 @@ $SRC_H5DUMP_TESTFILES/tindicessub2.ddl
 $SRC_H5DUMP_TESTFILES/tindicessub3.ddl
 $SRC_H5DUMP_TESTFILES/tindicessub4.ddl
 $SRC_H5DUMP_TESTFILES/tindicesyes.ddl
+$SRC_H5DUMP_TESTFILES/tintsattrs.ddl
 $SRC_H5DUMP_TESTFILES/tlarge_objname.ddl
 #$SRC_H5DUMP_TESTFILES/tldouble.ddl 
 $SRC_H5DUMP_TESTFILES/tlonglinks.ddl
@@ -296,10 +306,13 @@ $SRC_H5DUMP_TESTFILES/tordercontents2.ddl
 $SRC_H5DUMP_TESTFILES/torderlinks1.ddl
 $SRC_H5DUMP_TESTFILES/torderlinks2.ddl
 $SRC_H5DUMP_TESTFILES/tperror.ddl
+$SRC_H5DUMP_TESTFILES/treadfilter.ddl
+$SRC_H5DUMP_TESTFILES/treadintfilter.ddl
 $SRC_H5DUMP_TESTFILES/treference.ddl
 $SRC_H5DUMP_TESTFILES/tsaf.ddl
-$SRC_H5DUMP_TESTFILES/tscalarintsize.ddl
 $SRC_H5DUMP_TESTFILES/tscalarattrintsize.ddl
+$SRC_H5DUMP_TESTFILES/tscalarintattrsize.ddl
+$SRC_H5DUMP_TESTFILES/tscalarintsize.ddl
 $SRC_H5DUMP_TESTFILES/tscalarstring.ddl
 $SRC_H5DUMP_TESTFILES/tscaleoffset.ddl
 $SRC_H5DUMP_TESTFILES/tshuffle.ddl
@@ -945,6 +958,10 @@ TOOLTEST tattrintsize.ddl --enable-error-stack tattrintsize.h5
 TOOLTEST tcmpdattrintsize.ddl --enable-error-stack tcmpdattrintsize.h5
 # test for signed/unsigned scalar attributes
 TOOLTEST tscalarattrintsize.ddl --enable-error-stack tscalarattrintsize.h5
+# test for signed/unsigned scalar datasets with attributes
+TOOLTEST tscalarintattrsize.ddl --enable-error-stack tscalarintattrsize.h5
+# test for signed/unsigned datasets attributes
+TOOLTEST tintsattrs.ddl --enable-error-stack tintsattrs.h5
 # test for string scalar dataset attribute
 TOOLTEST tscalarstring.ddl --enable-error-stack tscalarstring.h5
 # test for displaying groups
@@ -1164,6 +1181,15 @@ 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
 
+if test $USE_FILTER_DEFLATE = "yes" -a $USE_FILTER_SHUFFLE = "yes" -a $USE_FILTER_FLETCHER32 = "yes" -a $USE_FILTER_NBIT = "yes" -a $USE_FILTER_SCALEOFFSET = "yes" ; then
+  # data read internal filters
+  TOOLTEST treadintfilter.ddl --enable-error-stack -d deflate -d shuffle -d fletcher32 -d nbit -d scaleoffset tfilters.h5
+  if test $USE_FILTER_SZIP = "yes"; then
+    # data read
+    TOOLTEST treadfilter.ddl --enable-error-stack -d all -d szip tfilters.h5
+  fi
+fi
+
 # test for displaying objects with very long names
 TOOLTEST tlonglinks.ddl --enable-error-stack tlonglinks.h5
 
diff --git a/tools/h5import/CMakeLists.txt b/tools/h5import/CMakeLists.txt
index 7caf44a..36a3a9e 100644
--- a/tools/h5import/CMakeLists.txt
+++ b/tools/h5import/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5IMPORT)
 
 #-----------------------------------------------------------------------------
@@ -9,28 +9,28 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 # --------------------------------------------------------------------
 # Add the h5import executables
 # --------------------------------------------------------------------
-ADD_EXECUTABLE (h5import ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/h5import.c)
+add_executable (h5import ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/h5import.c)
 TARGET_NAMING (h5import ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5import " " " ")
-TARGET_LINK_LIBRARIES (h5import  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-#SET_TARGET_PROPERTIES (h5import PROPERTIES COMPILE_DEFINITIONS H5DEBUGIMPORT)
-SET_TARGET_PROPERTIES (h5import PROPERTIES FOLDER tools)
+target_link_libraries (h5import  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+#set_target_properties (h5import PROPERTIES COMPILE_DEFINITIONS H5DEBUGIMPORT)
+set_target_properties (h5import PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES h5import)
+set (H5_DEP_EXECUTABLES h5import)
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Add the h5import executables
   # --------------------------------------------------------------------
-  ADD_EXECUTABLE (h5importtest ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/h5importtest.c)
+  add_executable (h5importtest ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/h5importtest.c)
   TARGET_NAMING (h5importtest ${LIB_TYPE})
   TARGET_C_PROPERTIES (h5importtest " " " ")
-  TARGET_LINK_LIBRARIES (h5importtest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-  SET_TARGET_PROPERTIES (h5importtest PROPERTIES FOLDER tools)
+  target_link_libraries (h5importtest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (h5importtest PROPERTIES FOLDER tools)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
 
-ENDIF (BUILD_TESTING)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -44,7 +44,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5import ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5import
     RUNTIME DESTINATION
diff --git a/tools/h5import/CMakeTests.cmake b/tools/h5import/CMakeTests.cmake
index 96cca87..5c5b4de 100644
--- a/tools/h5import/CMakeTests.cmake
+++ b/tools/h5import/CMakeTests.cmake
@@ -5,7 +5,7 @@
 ##############################################################################
 ##############################################################################
 
-  SET (HDF5_REFERENCE_CONF_FILES
+  set (HDF5_REFERENCE_CONF_FILES
       binfp64.conf
       binin8.conf
       binin8w.conf
@@ -23,7 +23,7 @@
       textpfe.conf
       txtstr.conf
   )
-  SET (HDF5_REFERENCE_TXT_FILES
+  set (HDF5_REFERENCE_TXT_FILES
       txtfp32.txt
       txtfp64.txt
       txtuin16.txt
@@ -42,7 +42,7 @@
       dbinuin32.h5.txt
       dtxtstr.h5.txt
   )
-  SET (HDF5_REFERENCE_TEST_FILES
+  set (HDF5_REFERENCE_TEST_FILES
       binfp64.h5
       binin8.h5
       binin8w.h5
@@ -61,39 +61,39 @@
       textpfe.h5
   )
 
-  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-  FOREACH (conf_file ${HDF5_REFERENCE_CONF_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${conf_file}")
-    #MESSAGE (STATUS " Copying ${conf_file}")
-    ADD_CUSTOM_COMMAND (
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  foreach (conf_file ${HDF5_REFERENCE_CONF_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${conf_file}")
+    #message (STATUS " Copying ${conf_file}")
+    add_custom_command (
         TARGET     h5import
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/testfiles/${conf_file} ${dest}
     )
-  ENDFOREACH (conf_file ${HDF5_REFERENCE_CONF_FILES})
+  endforeach (conf_file ${HDF5_REFERENCE_CONF_FILES})
 
-  FOREACH (txt_file ${HDF5_REFERENCE_TXT_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${txt_file}")
-    #MESSAGE (STATUS " Copying ${txt_file}")
-    ADD_CUSTOM_COMMAND (
+  foreach (txt_file ${HDF5_REFERENCE_TXT_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${txt_file}")
+    #message (STATUS " Copying ${txt_file}")
+    add_custom_command (
         TARGET     h5import
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/testfiles/${txt_file} ${dest}
     )
-  ENDFOREACH (txt_file ${HDF5_REFERENCE_TXT_FILES})
+  endforeach (txt_file ${HDF5_REFERENCE_TXT_FILES})
 
-  FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_file}")
-    #MESSAGE (STATUS " Copying ${h5_file}")
-    ADD_CUSTOM_COMMAND (
+  foreach (h5_file ${HDF5_REFERENCE_TEST_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_file}")
+    #message (STATUS " Copying ${h5_file}")
+    add_custom_command (
         TARGET     h5import
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/testfiles/${h5_file} ${dest}
     )
-  ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+  endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES})
   
 ##############################################################################
 ##############################################################################
@@ -102,13 +102,13 @@
 ##############################################################################
   MACRO (ADD_H5_TEST testname importfile conffile testfile)
     # If using memchecker skip macro based tests
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      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 H5IMPORT-h5importtest)
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      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 H5IMPORT-h5importtest)
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5IMPORT-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
@@ -118,12 +118,12 @@
               ${testfile}.out
               ${testfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5IMPORT-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest)
+      set_tests_properties (H5IMPORT-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest)
 
-      ADD_TEST (NAME H5IMPORT-${testname} COMMAND $<TARGET_FILE:h5import> ${importfile} -c ${conffile} -o ${testfile})
-      SET_TESTS_PROPERTIES (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-${testname}-clear-objects)
+      add_test (NAME H5IMPORT-${testname} COMMAND $<TARGET_FILE:h5import> ${importfile} -c ${conffile} -o ${testfile})
+      set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-${testname}-clear-objects)
 
-      ADD_TEST (
+      add_test (
           NAME H5IMPORT-${testname}-H5DMP
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -135,8 +135,8 @@
               -D "TEST_SKIP_COMPARE=TRUE"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5IMPORT-${testname}-H5DMP PROPERTIES DEPENDS H5IMPORT-${testname})
-      ADD_TEST (
+      set_tests_properties (H5IMPORT-${testname}-H5DMP PROPERTIES DEPENDS H5IMPORT-${testname})
+      add_test (
           NAME H5IMPORT-${testname}-H5DMP_CMP
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -148,14 +148,14 @@
               -D "TEST_REFERENCE=${testfile}.new"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5IMPORT-${testname}-H5DMP_CMP PROPERTIES DEPENDS H5IMPORT-${testname}-H5DMP)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5IMPORT-${testname}-H5DMP_CMP PROPERTIES DEPENDS H5IMPORT-${testname}-H5DMP)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST testname importfile conffile testfile)
 
   MACRO (ADD_H5_DUMPTEST testname datasetname testfile)
     # If using memchecker skip tests
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5IMPORT-DUMP-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
@@ -168,10 +168,10 @@
               d${testfile}.dff
               d${testfile}.dff.err
       )
-      SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest)
+      set_tests_properties (H5IMPORT-DUMP-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest)
 
-      IF ("${ARGN}" STREQUAL "BINARY")
-        ADD_TEST (
+      if ("${ARGN}" STREQUAL "BINARY")
+        add_test (
             NAME H5IMPORT-DUMP-${testname}-H5DMP
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -182,8 +182,8 @@
                 -D "TEST_SKIP_COMPARE=TRUE"
                 -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
         )
-      ELSE ("${ARGN}" STREQUAL "BINARY")
-        ADD_TEST (
+      else ("${ARGN}" STREQUAL "BINARY")
+        add_test (
             NAME H5IMPORT-DUMP-${testname}-H5DMP
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -194,10 +194,10 @@
                 -D "TEST_SKIP_COMPARE=TRUE"
                 -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
         )
-      ENDIF ("${ARGN}" STREQUAL "BINARY")
-      SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname}-H5DMP PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-clear-objects")
+      endif ("${ARGN}" STREQUAL "BINARY")
+      set_tests_properties (H5IMPORT-DUMP-${testname}-H5DMP PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-clear-objects")
       
-      ADD_TEST (
+      add_test (
           NAME H5IMPORT-DUMP-${testname}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5import>"
@@ -208,9 +208,9 @@
               -D "TEST_SKIP_COMPARE=TRUE"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname} PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-H5DMP")
+      set_tests_properties (H5IMPORT-DUMP-${testname} PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-H5DMP")
 
-      ADD_TEST (
+      add_test (
           NAME H5IMPORT-DUMP-${testname}-H5DFF
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5diff>"
@@ -222,25 +222,25 @@
               -D "TEST_REFERENCE=testfiles/d${testfile}.txt"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5IMPORT-DUMP-${testname}-H5DFF PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}")
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5IMPORT-DUMP-${testname}-H5DFF PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_DUMPTEST testname datasetname testfile)
 
   MACRO (ADD_H5_SKIP_DUMPTEST testname datasetname testfile)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5IMPORT-DUMP-${testname}-SKIPPED
           COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${testname} ${datasetname} ${testfile} --- DEFLATE filter not available"
       )
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   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)
+  if (H5_HAVE_FILTER_DEFLATE)
+    set (USE_FILTER_DEFLATE "true")
+  endif (H5_HAVE_FILTER_DEFLATE)
 
 ##############################################################################
 ##############################################################################
@@ -248,9 +248,9 @@
 ##############################################################################
 ##############################################################################
 
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
         NAME H5IMPORT-clear-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove 
@@ -406,10 +406,10 @@
             dtxtstr.h5.dff
             dtxtstr.h5.dff.err
     )
-    SET (last_test "H5IMPORT-clear-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    set (last_test "H5IMPORT-clear-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
-  ADD_TEST (
+  add_test (
       NAME H5IMPORT-h5importtest-clear-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -421,13 +421,13 @@
           binuin16.bin
           binuin32.bin
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (H5IMPORT-h5importtest-clear-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "H5IMPORT-clear-objects")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (H5IMPORT-h5importtest-clear-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "H5IMPORT-clear-objects")
 
-  ADD_TEST (NAME H5IMPORT-h5importtest COMMAND $<TARGET_FILE:h5importtest>)
-  SET_TESTS_PROPERTIES (H5IMPORT-h5importtest PROPERTIES DEPENDS H5IMPORT-h5importtest-clear-objects)
+  add_test (NAME H5IMPORT-h5importtest COMMAND $<TARGET_FILE:h5importtest>)
+  set_tests_properties (H5IMPORT-h5importtest PROPERTIES DEPENDS H5IMPORT-h5importtest-clear-objects)
 
   # ----- TESTING "ASCII I32 rank 3 - Output BE " ;
   ADD_H5_TEST (ASCII_I32 testfiles/txtin32.txt testfiles/txtin32.conf txtin32.h5)
@@ -452,19 +452,19 @@
 
   # ----- TESTING "BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " 
   ADD_H5_TEST (BINARY_F64 binfp64.bin testfiles/binfp64.conf binfp64.h5)
-  IF (NOT USE_FILTER_DEFLATE)
+  if (NOT USE_FILTER_DEFLATE)
     ADD_H5_SKIP_DUMPTEST (BINARY_F64 "/fp/bin/64-bit" binfp64.h5 BINARY)
-  ELSE (NOT USE_FILTER_DEFLATE)
+  else (NOT USE_FILTER_DEFLATE)
     ADD_H5_DUMPTEST (BINARY_F64 "/fp/bin/64-bit" binfp64.h5 BINARY)
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  endif (NOT USE_FILTER_DEFLATE)
 
   # ----- TESTING "BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " 
   ADD_H5_TEST (BINARY_I8 binin8.bin testfiles/binin8.conf binin8.h5)
-  IF (NOT USE_FILTER_DEFLATE)
+  if (NOT USE_FILTER_DEFLATE)
     ADD_H5_SKIP_DUMPTEST (BINARY_I8 "/int/bin/8-bit" binin8.h5 BINARY)
-  ELSE (NOT USE_FILTER_DEFLATE)
+  else (NOT USE_FILTER_DEFLATE)
     ADD_H5_DUMPTEST (BINARY_I8 "/int/bin/8-bit" binin8.h5 BINARY)
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  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)
diff --git a/tools/h5import/Makefile.am b/tools/h5import/Makefile.am
index 6d18e25..af60478 100644
--- a/tools/h5import/Makefile.am
+++ b/tools/h5import/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src and tools/lib directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_PROG=h5importtest
diff --git a/tools/h5import/Makefile.in b/tools/h5import/Makefile.in
index 6491c39..5cba138 100644
--- a/tools/h5import/Makefile.in
+++ b/tools/h5import/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,11 +95,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/h5importtestutil.sh.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+	$(top_srcdir)/bin/test-driver
 check_PROGRAMS = $(am__EXEEXT_1)
 bin_PROGRAMS = h5import$(EXEEXT)
 TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
@@ -143,12 +171,227 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -160,7 +403,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src and tools/lib directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -220,7 +466,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -431,9 +676,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # Temporary files from h5importtest
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.bin
 
-# Include src and tools/lib directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
-
 # Test programs and scripts
 TEST_PROG = h5importtest
 TEST_SCRIPT = h5importtestutil.sh
@@ -468,7 +710,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -511,10 +753,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -535,7 +779,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -557,9 +802,11 @@ 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) $(EXTRA_h5import_DEPENDENCIES) 
 	@rm -f h5import$(EXEEXT)
 	$(AM_V_CCLD)$(h5import_LINK) $(h5import_OBJECTS) $(h5import_LDADD) $(LIBS)
+
 h5importtest$(EXEEXT): $(h5importtest_OBJECTS) $(h5importtest_DEPENDENCIES) $(EXTRA_h5importtest_DEPENDENCIES) 
 	@rm -f h5importtest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5importtest_OBJECTS) $(h5importtest_LDADD) $(LIBS)
@@ -578,14 +825,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -600,26 +847,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -631,15 +867,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -648,9 +880,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -666,6 +899,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+h5importtest.log: h5importtest$(EXEEXT)
+	@p='h5importtest$(EXEEXT)'; \
+	b='h5importtest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -725,6 +1110,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -808,20 +1196,21 @@ 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-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-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
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 recheck tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5import/h5import.c b/tools/h5import/h5import.c
index a10ef24..74c67b9 100644
--- a/tools/h5import/h5import.c
+++ b/tools/h5import/h5import.c
@@ -863,11 +863,11 @@ static int processStrData(FILE *strm, struct Input *in, hid_t file_id)
     hid_t   handle;
     hsize_t dims[1];
     char    str[1024];
-    char    c;
+    int     c;
     int     i = 0;
     int     j;
-    int     nlines = 0;
-    int     line;
+    hsize_t nlines = 0;
+    hsize_t line;
 
     /*-------------------------------------------------------------------------
      * get number of lines in the input file
@@ -877,9 +877,8 @@ static int processStrData(FILE *strm, struct Input *in, hid_t file_id)
     while (!HDfeof(strm)) {
         c = HDfgetc(strm);
 
-        if (c == 10) { /* eol */
+        if (c == 10)    /* eol */
             nlines++;
-        }
     }
 
     if (!nlines)
@@ -944,7 +943,7 @@ static int processStrData(FILE *strm, struct Input *in, hid_t file_id)
     while (!HDfeof(strm)) {
         c = HDfgetc(strm);
 
-        str[i] = c;
+        str[i] = (char)c;
 
         i++;
 
@@ -1012,7 +1011,7 @@ static int processStrHDFData(FILE *strm, struct Input *in, hid_t file_id)
     char   *str3 = NULL;
     char    str[1024] = "";
     int     j;
-    int     line;
+    hsize_t     line;
 
     /*-------------------------------------------------------------------------
      * read file and generate an HDF5 dataset
@@ -1079,7 +1078,7 @@ static int processStrHDFData(FILE *strm, struct Input *in, hid_t file_id)
         str2 = NULL;
         str3 = NULL;
 #ifdef H5DEBUGIMPORT
-            printf("processStrHDFData DATATYPE STRING[%d]={%s}\n", line, str1);
+            printf("processStrHDFData DATATYPE STRING[%llu]={%s}\n", (unsigned long long)line, str1);
 #endif
             /* process string to remove the first and last quote char */
             str2 = strchr(str1, '"');
@@ -1108,7 +1107,7 @@ static int processStrHDFData(FILE *strm, struct Input *in, hid_t file_id)
                         hsize_t count[1] = { 1 };
 
 #ifdef H5DEBUGIMPORT
-                        printf("processStrHDFData DATATYPE STRING[%d] store %s\n", line, str2);
+                        printf("processStrHDFData DATATYPE STRING[%llu] store %s\n", (unsigned long long)line, str2);
 #endif
                         if ((fspace_id = H5Dget_space(dset_id)) < 0)
                             goto out;
diff --git a/tools/h5jam/CMakeLists.txt b/tools/h5jam/CMakeLists.txt
index 49d1b0c..b0d5ac8 100644
--- a/tools/h5jam/CMakeLists.txt
+++ b/tools/h5jam/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5JAM)
 
 #-----------------------------------------------------------------------------
@@ -9,54 +9,54 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 # --------------------------------------------------------------------
 # Add the h5jam executables
 # --------------------------------------------------------------------
-ADD_EXECUTABLE (h5jam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5jam.c)
+add_executable (h5jam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5jam.c)
 TARGET_NAMING (h5jam ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5jam " " " ")
-TARGET_LINK_LIBRARIES (h5jam  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5jam PROPERTIES FOLDER tools)
+target_link_libraries (h5jam  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5jam PROPERTIES FOLDER tools)
 
-ADD_EXECUTABLE (getub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/getub.c)
+add_executable (getub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/getub.c)
 TARGET_NAMING (getub ${LIB_TYPE})
 TARGET_C_PROPERTIES (getub " " " ")
-TARGET_LINK_LIBRARIES (getub  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (getub PROPERTIES FOLDER tools)
+target_link_libraries (getub  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (getub PROPERTIES FOLDER tools)
 
-ADD_EXECUTABLE (tellub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/tellub.c)
+add_executable (tellub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/tellub.c)
 TARGET_NAMING (tellub ${LIB_TYPE})
 TARGET_C_PROPERTIES (tellub " " " ")
-TARGET_LINK_LIBRARIES (tellub  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (tellub PROPERTIES FOLDER tools)
+target_link_libraries (tellub  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (tellub PROPERTIES FOLDER tools)
 
-ADD_EXECUTABLE (h5unjam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5unjam.c)
+add_executable (h5unjam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5unjam.c)
 TARGET_NAMING (h5unjam ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5unjam " " " ")
-TARGET_LINK_LIBRARIES (h5unjam  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5unjam PROPERTIES FOLDER tools)
+target_link_libraries (h5unjam  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5unjam PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES
+set (H5_DEP_EXECUTABLES
     h5jam
     getub
     tellub
     h5unjam
 )
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Add the h5jam test executables
   # --------------------------------------------------------------------
-  IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-    ADD_EXECUTABLE (h5jamgentest ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5jamgentest.c)
+  if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    add_executable (h5jamgentest ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5jamgentest.c)
     TARGET_NAMING (h5jamgentest ${LIB_TYPE})
     TARGET_C_PROPERTIES (testhdf5 " " " ")
-    TARGET_LINK_LIBRARIES (h5jamgentest ${HDF5_LIB_TARGET})
-    SET_TARGET_PROPERTIES (h5jamgentest PROPERTIES FOLDER generator/tools)
+    target_link_libraries (h5jamgentest ${HDF5_LIB_TARGET})
+    set_target_properties (h5jamgentest PROPERTIES FOLDER generator/tools)
     
-    #ADD_TEST (NAME h5jamgentest COMMAND $<TARGET_FILE:h5jamgentest>)
-  ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    #add_test (NAME h5jamgentest COMMAND $<TARGET_FILE:h5jamgentest>)
+  endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
 
-ENDIF (BUILD_TESTING)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -70,7 +70,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5jam ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5jam h5unjam
     RUNTIME DESTINATION
diff --git a/tools/h5jam/CMakeTests.cmake b/tools/h5jam/CMakeTests.cmake
index 3816e85..fb64313 100644
--- a/tools/h5jam/CMakeTests.cmake
+++ b/tools/h5jam/CMakeTests.cmake
@@ -5,7 +5,7 @@
 ##############################################################################
 ##############################################################################
 
-  SET (HDF5_REFERENCE_TXT_FILES
+  set (HDF5_REFERENCE_TXT_FILES
       u10.txt
       u511.txt
       u512.txt
@@ -14,34 +14,34 @@
       h5unjam-help.txt
       h5jam-ub-nohdf5.txt
   )
-  SET (HDF5_REFERENCE_TEST_FILES
+  set (HDF5_REFERENCE_TEST_FILES
       tall.h5
       twithub.h5
       twithub513.h5
   )
 
-  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-  FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_file}")
-    #MESSAGE (STATUS " Copying ${h5_file}")
-    ADD_CUSTOM_COMMAND (
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  foreach (h5_file ${HDF5_REFERENCE_TEST_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_file}")
+    #message (STATUS " Copying ${h5_file}")
+    add_custom_command (
         TARGET     h5jam
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/testfiles/${h5_file} ${dest}
     )
-  ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+  endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES})
 
-  FOREACH (txt_file ${HDF5_REFERENCE_TXT_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${txt_file}")
-    #MESSAGE (STATUS " Copying ${txt_file}")
-    ADD_CUSTOM_COMMAND (
+  foreach (txt_file ${HDF5_REFERENCE_TXT_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${txt_file}")
+    #message (STATUS " Copying ${txt_file}")
+    add_custom_command (
         TARGET     h5jam
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/testfiles/${txt_file} ${dest}
     )
-  ENDFOREACH (txt_file ${HDF5_REFERENCE_TXT_FILES})
+  endforeach (txt_file ${HDF5_REFERENCE_TXT_FILES})
     
 ##############################################################################
 ##############################################################################
@@ -55,20 +55,20 @@
   #
   MACRO (TEST_H5JAM_OUTPUT expectfile resultcode)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5JAM-${expectfile} COMMAND $<TARGET_FILE:h5jam> ${ARGN})
-      IF (NOT "${resultcode}" STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5JAM-${expectfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT "${resultcode}" STREQUAL "0")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5JAM-${expectfile} COMMAND $<TARGET_FILE:h5jam> ${ARGN})
+      if (NOT "${resultcode}" STREQUAL "0")
+        set_tests_properties (H5JAM-${expectfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT "${resultcode}" STREQUAL "0")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5JAM-${expectfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
               ${expectfile}.out
               ${expectfile}.out.err
       )
-      ADD_TEST (
+      add_test (
           NAME H5JAM-${expectfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5jam>"
@@ -79,8 +79,8 @@
               -D "TEST_REFERENCE=testfiles/${expectfile}.txt"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5JAM-${expectfile} PROPERTIES DEPENDS H5JAM-${expectfile}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5JAM-${expectfile} PROPERTIES DEPENDS H5JAM-${expectfile}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (TEST_H5JAM_OUTPUT)
 
   # ============================================================
@@ -89,20 +89,20 @@
   #
   MACRO (TEST_H5UNJAM_OUTPUT expectfile resultcode)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5JAM-UNJAM-${expectfile} COMMAND $<TARGET_FILE:h5unjam> ${ARGN})
-      IF (NOT "${resultcode}" STREQUAL "0")
-        SET_TESTS_PROPERTIES (H5JAM-UNJAM-${expectfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (NOT "${resultcode}" STREQUAL "0")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5JAM-UNJAM-${expectfile} COMMAND $<TARGET_FILE:h5unjam> ${ARGN})
+      if (NOT "${resultcode}" STREQUAL "0")
+        set_tests_properties (H5JAM-UNJAM-${expectfile} PROPERTIES WILL_FAIL "true")
+      endif (NOT "${resultcode}" STREQUAL "0")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5JAM-UNJAM-${expectfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
               ${expectfile}.out
               ${expectfile}.out.err
       )
-      ADD_TEST (
+      add_test (
           NAME H5JAM-UNJAM-${expectfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5unjam>"
@@ -113,14 +113,14 @@
               -D "TEST_REFERENCE=testfiles/${expectfile}.txt"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5JAM-UNJAM-${expectfile} PROPERTIES DEPENDS H5JAM-UNJAM-${expectfile}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5JAM-UNJAM-${expectfile} PROPERTIES DEPENDS H5JAM-UNJAM-${expectfile}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (TEST_H5UNJAM_OUTPUT)
 
   MACRO (CHECKFILE testname testdepends expected actual)
     # If using memchecker add tests without using scripts
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5JAM-${testname}-CHECKFILE-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
@@ -129,8 +129,8 @@
               ${actual}.out
               ${actual}.out.err
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}-CHECKFILE-clear-objects PROPERTIES DEPENDS ${testdepends})
-      ADD_TEST (
+      set_tests_properties (H5JAM-${testname}-CHECKFILE-clear-objects PROPERTIES DEPENDS ${testdepends})
+      add_test (
           NAME H5JAM-${testname}-CHECKFILE-H5DMP
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -142,8 +142,8 @@
               -D "TEST_SKIP_COMPARE=TRUE"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}-CHECKFILE-H5DMP PROPERTIES DEPENDS H5JAM-${testname}-CHECKFILE-clear-objects)
-      ADD_TEST (
+      set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP PROPERTIES DEPENDS H5JAM-${testname}-CHECKFILE-clear-objects)
+      add_test (
           NAME H5JAM-${testname}-CHECKFILE-H5DMP_CMP
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
@@ -155,43 +155,43 @@
               -D "TEST_REFERENCE=${actual}.new"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}-CHECKFILE-H5DMP_CMP PROPERTIES DEPENDS H5JAM-${testname}-CHECKFILE-H5DMP)
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP_CMP PROPERTIES DEPENDS H5JAM-${testname}-CHECKFILE-H5DMP)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO(CHECKFILE testname testdepends expected actual)
 
   MACRO (UNJAMTEST testname setfile infile ufile chkfile outfile)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5JAM-${testname}-UNJAM-SETUP-clear-objects
           COMMAND ${CMAKE_COMMAND} -E remove ${infile}
       )
-      ADD_TEST (
+      add_test (
           NAME H5JAM-${testname}-UNJAM-SETUP
           COMMAND ${CMAKE_COMMAND} -E copy_if_different ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/testfiles/${setfile} ${PROJECT_BINARY_DIR}/${infile}
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM-SETUP PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-SETUP-clear-objects)
-      ADD_TEST (
+      set_tests_properties (H5JAM-${testname}-UNJAM-SETUP PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-SETUP-clear-objects)
+      add_test (
           NAME H5JAM-${testname}-UNJAM-clear-objects
           COMMAND ${CMAKE_COMMAND} -E remove ${outfile}
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-SETUP)
-      IF (NOT "${ufile}" STREQUAL "NONE")
-        ADD_TEST (
+      set_tests_properties (H5JAM-${testname}-UNJAM-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-SETUP)
+      if (NOT "${ufile}" STREQUAL "NONE")
+        add_test (
             NAME H5JAM-${testname}-UNJAM_D-clear-objects
             COMMAND ${CMAKE_COMMAND} -E remove ${ufile}
         )
-        SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM_D-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects)
-        ADD_TEST (NAME H5JAM-${testname}-UNJAM COMMAND $<TARGET_FILE:h5unjam> -i ${infile} -u ${ufile} -o ${outfile})
-        SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM_D-clear-objects)
-        SET (compare_test ${ufile})
-      ELSE (NOT "${ufile}" STREQUAL "NONE")
-        IF (NOT "${ARGN}" STREQUAL "--delete")
-          ADD_TEST (
+        set_tests_properties (H5JAM-${testname}-UNJAM_D-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects)
+        add_test (NAME H5JAM-${testname}-UNJAM COMMAND $<TARGET_FILE:h5unjam> -i ${infile} -u ${ufile} -o ${outfile})
+        set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM_D-clear-objects)
+        set (compare_test ${ufile})
+      else (NOT "${ufile}" STREQUAL "NONE")
+        if (NOT "${ARGN}" STREQUAL "--delete")
+          add_test (
               NAME H5JAM-${testname}-UNJAM_D-clear-objects
               COMMAND ${CMAKE_COMMAND} -E remove ${outfile}.ufile.txt ${outfile}.ufile.txt.err
           )
-          SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM_D-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects)
-          ADD_TEST (
+          set_tests_properties (H5JAM-${testname}-UNJAM_D-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects)
+          add_test (
               NAME H5JAM-${testname}-UNJAM
               COMMAND "${CMAKE_COMMAND}"
                   -D "TEST_PROGRAM=$<TARGET_FILE:h5unjam>"
@@ -202,16 +202,16 @@
                   -D "TEST_SKIP_COMPARE=TRUE"
                   -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
           )
-          SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM_D-clear-objects)
-          SET (compare_test "${outfile}.ufile.txt")
-        ELSE (NOT "${ARGN}" STREQUAL "--delete")
-          ADD_TEST (NAME H5JAM-${testname}-UNJAM COMMAND $<TARGET_FILE:h5unjam> -i ${infile} -o ${outfile})
-          SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects)
-          SET (compare_test "")
-        ENDIF (NOT "${ARGN}" STREQUAL "--delete")
-      ENDIF (NOT "${ufile}" STREQUAL "NONE")
-      IF (NOT "${compare_test}" STREQUAL "")
-        ADD_TEST (
+          set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM_D-clear-objects)
+          set (compare_test "${outfile}.ufile.txt")
+        else (NOT "${ARGN}" STREQUAL "--delete")
+          add_test (NAME H5JAM-${testname}-UNJAM COMMAND $<TARGET_FILE:h5unjam> -i ${infile} -o ${outfile})
+          set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects)
+          set (compare_test "")
+        endif (NOT "${ARGN}" STREQUAL "--delete")
+      endif (NOT "${ufile}" STREQUAL "NONE")
+      if (NOT "${compare_test}" STREQUAL "")
+        add_test (
             NAME H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects
             COMMAND    ${CMAKE_COMMAND}
                 -E remove
@@ -219,8 +219,8 @@
                 ${infile}.cmp
                 ${infile}-ub.cmp
         )
-        SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}-UNJAM")
-        ADD_TEST (
+        set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}-UNJAM")
+        add_test (
             NAME H5JAM-${testname}-UNJAM-CHECK_UB_1
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:tellub>"
@@ -233,10 +233,10 @@
                 -D "TEST_OFILE="
                 -P "${HDF5_RESOURCES_DIR}/userblockTest.cmake"
         )
-        SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects)
-      ENDIF (NOT "${compare_test}" STREQUAL "")
+        set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects)
+      endif (NOT "${compare_test}" STREQUAL "")
 
-      ADD_TEST (
+      add_test (
           NAME H5JAM-${testname}-UNJAM-CHECK_NOUB
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:tellub>"
@@ -249,33 +249,33 @@
               -D "TEST_OFILE=NULL"
               -P "${HDF5_RESOURCES_DIR}/userblockTest.cmake"
       )
-      IF (NOT "${compare_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1)
-      ELSE (NOT "${compare_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES DEPENDS H5JAM-${testname}-UNJAM)
-      ENDIF (NOT "${compare_test}" STREQUAL "")
+      if (NOT "${compare_test}" STREQUAL "")
+        set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1)
+      else (NOT "${compare_test}" STREQUAL "")
+        set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES DEPENDS H5JAM-${testname}-UNJAM)
+      endif (NOT "${compare_test}" STREQUAL "")
 
       CHECKFILE (${testname} "H5JAM-${testname}-UNJAM-CHECK_NOUB" ${chkfile} ${outfile})
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO(UNJAMTEST testname infile ufile outfile)
 
   MACRO (JAMTEST testname jamfile infile chkfile outfile)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5JAM-${testname}-clear-objects
           COMMAND ${CMAKE_COMMAND} -E remove ${outfile} ${infile}.cpy.h5
       )
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ADD_TEST (NAME H5JAM-${testname} COMMAND $<TARGET_FILE:h5jam> -u testfiles/${jamfile} -i testfiles/${infile} -o ${outfile} ${ARGN})
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      SET_TESTS_PROPERTIES (H5JAM-${testname} PROPERTIES DEPENDS H5JAM-${testname}-clear-objects)
-      SET (compare_test ${outfile})
-      SET (compare_orig testfiles/${infile})
-      IF ("${ARGN}" STREQUAL "--clobber")
-        SET (compare_orig "")
-      ENDIF ("${ARGN}" STREQUAL "--clobber")
-
-      ADD_TEST (
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    add_test (NAME H5JAM-${testname} COMMAND $<TARGET_FILE:h5jam> -u testfiles/${jamfile} -i testfiles/${infile} -o ${outfile} ${ARGN})
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5JAM-${testname} PROPERTIES DEPENDS H5JAM-${testname}-clear-objects)
+      set (compare_test ${outfile})
+      set (compare_orig testfiles/${infile})
+      if ("${ARGN}" STREQUAL "--clobber")
+        set (compare_orig "")
+      endif ("${ARGN}" STREQUAL "--clobber")
+
+      add_test (
           NAME H5JAM-${testname}-CHECK_UB_1-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
@@ -283,8 +283,8 @@
               ${compare_test}.cmp
               ${compare_test}-ub.cmp
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}")
-      ADD_TEST (
+      set_tests_properties (H5JAM-${testname}-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}")
+      add_test (
           NAME H5JAM-${testname}-CHECK_UB_1
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:tellub>"
@@ -297,40 +297,40 @@
               -D "TEST_OFILE=${compare_orig}"
               -P "${HDF5_RESOURCES_DIR}/userblockTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-CHECK_UB_1-clear-objects)
+      set_tests_properties (H5JAM-${testname}-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-CHECK_UB_1-clear-objects)
       CHECKFILE (${testname} "H5JAM-${testname}-CHECK_UB_1" ${chkfile} ${outfile})
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (JAMTEST testname jamfile infile outfile)
 
   MACRO (JAMTEST_NONE testname jamfile infile setfile chkfile)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5JAM-${testname}_NONE-clear-objects
           COMMAND ${CMAKE_COMMAND} -E remove 
               ${chkfile} ${chkfile}.cpy.h5
       )
-      ADD_TEST (
+      add_test (
           NAME H5JAM-${testname}_NONE-SETUP
           COMMAND ${CMAKE_COMMAND} -E copy_if_different testfiles/${setfile} ${chkfile}
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}_NONE-SETUP PROPERTIES DEPENDS H5JAM-${testname}_NONE-clear-objects)
+      set_tests_properties (H5JAM-${testname}_NONE-SETUP PROPERTIES DEPENDS H5JAM-${testname}_NONE-clear-objects)
 
-      ADD_TEST (
+      add_test (
           NAME H5JAM-${testname}_NONE_COPY
           COMMAND ${CMAKE_COMMAND} -E copy_if_different ${chkfile} ${chkfile}.cpy.h5
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}_NONE_COPY PROPERTIES DEPENDS H5JAM-${testname}_NONE-SETUP)
+      set_tests_properties (H5JAM-${testname}_NONE_COPY PROPERTIES DEPENDS H5JAM-${testname}_NONE-SETUP)
 
-      ADD_TEST (NAME H5JAM-${testname}_NONE COMMAND $<TARGET_FILE:h5jam> -u testfiles/${jamfile} -i ${chkfile} ${ARGN})
-      SET_TESTS_PROPERTIES (H5JAM-${testname}_NONE PROPERTIES DEPENDS H5JAM-${testname}_NONE_COPY)
+      add_test (NAME H5JAM-${testname}_NONE COMMAND $<TARGET_FILE:h5jam> -u testfiles/${jamfile} -i ${chkfile} ${ARGN})
+      set_tests_properties (H5JAM-${testname}_NONE PROPERTIES DEPENDS H5JAM-${testname}_NONE_COPY)
 
-      SET (compare_test ${chkfile})
-      SET (compare_orig ${chkfile}.cpy.h5)
-      IF ("${ARGN}" STREQUAL "--clobber")
-        SET (compare_orig "")
-      ENDIF ("${ARGN}" STREQUAL "--clobber")
+      set (compare_test ${chkfile})
+      set (compare_orig ${chkfile}.cpy.h5)
+      if ("${ARGN}" STREQUAL "--clobber")
+        set (compare_orig "")
+      endif ("${ARGN}" STREQUAL "--clobber")
 
-      ADD_TEST (
+      add_test (
           NAME H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
@@ -338,8 +338,8 @@
               ${compare_test}.cmp
               ${compare_test}-ub.cmp
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}_NONE")
-      ADD_TEST (
+      set_tests_properties (H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}_NONE")
+      add_test (
           NAME H5JAM-${testname}_NONE-CHECK_UB_1
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:tellub>"
@@ -352,9 +352,9 @@
               -D "TEST_OFILE=${compare_orig}"
               -P "${HDF5_RESOURCES_DIR}/userblockTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5JAM-${testname}_NONE-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects)
+      set_tests_properties (H5JAM-${testname}_NONE-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects)
       CHECKFILE (${testname} "H5JAM-${testname}_NONE-CHECK_UB_1" ${infile} ${chkfile})
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (JAMTEST_NONE testname jamfile infile setfile chkfile)
 
 ##############################################################################
diff --git a/tools/h5jam/Makefile.am b/tools/h5jam/Makefile.am
index c6ccebf..60a62b9 100644
--- a/tools/h5jam/Makefile.am
+++ b/tools/h5jam/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src and tools/lib directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 bin_PROGRAMS=h5jam h5unjam
 check_PROGRAMS=tellub h5jamgentest getub
@@ -39,7 +39,7 @@ LDADD=$(LIBH5TOOLS) $(LIBHDF5)
 
 # Temporary files.  *.h5 are generated by jamgentest.  They should
 # copied to the testfiles/ directory if update is required.
-CHECK_CLEANFILES+=*.h5
+CHECK_CLEANFILES+=*.h5 testfiles/h5jam-*-sav testfiles/h5unjam-*-sav
 DISTCLEANFILES=testh5jam.sh
 
 include $(top_srcdir)/config/conclude.am
diff --git a/tools/h5jam/Makefile.in b/tools/h5jam/Makefile.in
index fd170fd..a50a9c9 100644
--- a/tools/h5jam/Makefile.in
+++ b/tools/h5jam/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,11 +95,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/testh5jam.sh.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+	$(top_srcdir)/bin/test-driver
 bin_PROGRAMS = h5jam$(EXEEXT) h5unjam$(EXEEXT)
 check_PROGRAMS = tellub$(EXEEXT) h5jamgentest$(EXEEXT) getub$(EXEEXT)
 TESTS = $(TEST_SCRIPT)
@@ -157,12 +185,225 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -174,7 +415,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src and tools/lib directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -234,7 +478,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -444,10 +687,8 @@ TRACE = perl $(top_srcdir)/bin/trace
 
 # Temporary files.  *.h5 are generated by jamgentest.  They should
 # copied to the testfiles/ directory if update is required.
-CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
-
-# Include src and tools/lib directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 testfiles/h5jam-*-sav \
+	testfiles/h5unjam-*-sav
 TEST_SCRIPT = testh5jam.sh
 
 # Add h5jam and h5unjam specific linker flags here
@@ -482,7 +723,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -525,10 +766,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -549,7 +792,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -571,18 +815,23 @@ 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) $(EXTRA_getub_DEPENDENCIES) 
 	@rm -f getub$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getub_OBJECTS) $(getub_LDADD) $(LIBS)
+
 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) $(EXTRA_h5jamgentest_DEPENDENCIES) 
 	@rm -f h5jamgentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5jamgentest_OBJECTS) $(h5jamgentest_LDADD) $(LIBS)
+
 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) $(EXTRA_tellub_DEPENDENCIES) 
 	@rm -f tellub$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(tellub_OBJECTS) $(tellub_LDADD) $(LIBS)
@@ -604,14 +853,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -626,26 +875,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -657,15 +895,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -674,9 +908,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -692,6 +927,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -751,6 +1131,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -835,20 +1218,21 @@ 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-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-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
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 recheck tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5jam/getub.c b/tools/h5jam/getub.c
index d84f7f2..afb0da6 100644
--- a/tools/h5jam/getub.c
+++ b/tools/h5jam/getub.c
@@ -26,9 +26,6 @@
 
 void parse_command_line (int argc, const char *argv[]);
 
-#define TRUE 1
-#define FALSE 0
-
 /* Name of tool */
 #define PROGRAMNAME "getub"
 char *nbytes = NULL;
@@ -79,21 +76,21 @@ usage (const char *prog)
 void
 parse_command_line (int argc, const char *argv[])
 {
-  int opt = FALSE;
+  int opt;
 
   /* parse command line options */
   while ((opt = get_option (argc, argv, s_opts, l_opts)) != EOF)
     {
       switch ((char) opt)
-  {
-  case 'c':
-    nbytes = HDstrdup (opt_arg);
-    break;
-  case '?':
-  default:
-    usage (h5tools_getprogname());
-    exit (EXIT_FAILURE);
-  }
+      {
+      case 'c':
+        nbytes = HDstrdup (opt_arg);
+        break;
+      case '?':
+      default:
+        usage (h5tools_getprogname());
+        exit (EXIT_FAILURE);
+      }
     }
 
   if (argc <= opt_ind)
diff --git a/tools/h5jam/h5jamgentest.c b/tools/h5jam/h5jamgentest.c
index ca3d86c..9636597 100644
--- a/tools/h5jam/h5jamgentest.c
+++ b/tools/h5jam/h5jamgentest.c
@@ -28,7 +28,9 @@
 #include "hdf5.h"
 #include "H5private.h"
 
+/* not used yet
 #define UBTXT1 "u0.txt"
+*/
 #define UBTXT2 "u10.txt"
 #define UBTXT3 "u511.txt"
 #define UBTXT4 "u512.txt"
@@ -69,24 +71,7 @@ char pattern[11] = "abcdefghij";
 
 #define BUF_SIZE 1024
 
-#define LENSTR  50
-#define LENSTR2  11
-
-#define SPACE2_RANK 2
-#define SPACE2_DIM1 10
-#define SPACE2_DIM2 10
-
-#define SPACE1_RANK 1
-#define SPACE1_DIM1 4
-
-#define DIM1  20
-#define DIM2  10
-#define CDIM1 DIM1/2
-#define CDIM2 DIM2/2
-#define RANK  2
-
 /* Element selection information */
-#define POINT1_NPOINTS 10
 
 typedef enum{
      RED,
@@ -106,22 +91,10 @@ typedef struct s1_t {
 
 /* 1-D array datatype */
 #define ARRAY1_RANK 1
-#define ARRAY1_DIM1 4
-
-/* 3-D array datatype */
-#define ARRAY2_RANK 3
-#define ARRAY2_DIM1 3
-#define ARRAY2_DIM2 4
-#define ARRAY2_DIM3 5
 
 /* 2-D array datatype */
-#define ARRAY3_RANK 2
-#define ARRAY3_DIM1 6
 #define ARRAY3_DIM2 3
 
-/* VL string datatype name */
-#define VLSTR_TYPE      "vl_string_type"
-
 /* A UD link traversal function.  Shouldn't actually be called. */
 static hid_t UD_traverse(const char UNUSED * link_name, hid_t UNUSED cur_group,
     const void UNUSED * udata, size_t UNUSED udata_size, hid_t UNUSED lapl_id)
diff --git a/tools/h5jam/tellub.c b/tools/h5jam/tellub.c
index 0169d71..b4f87af 100644
--- a/tools/h5jam/tellub.c
+++ b/tools/h5jam/tellub.c
@@ -24,9 +24,6 @@
 #include "h5tools.h"
 #include "h5tools_utils.h"
 
-#define TRUE 1
-#define FALSE 0
-
 /* Name of tool */
 #define PROGRAMNAME "tellub"
 
@@ -85,21 +82,21 @@ usage (const char *prog)
 static void
 parse_command_line (int argc, const char *argv[])
 {
-  int opt = FALSE;
+  int opt;
 
   /* parse command line options */
   while ((opt = get_option (argc, argv, s_opts, l_opts)) != EOF)
     {
       switch ((char) opt)
-  {
-  case 'h':
-    usage (h5tools_getprogname());
-    exit (EXIT_SUCCESS);
-  case '?':
-  default:
-    usage (h5tools_getprogname());
-    exit (EXIT_FAILURE);
-  }
+      {
+      case 'h':
+        usage (h5tools_getprogname());
+        exit (EXIT_SUCCESS);
+      case '?':
+      default:
+        usage (h5tools_getprogname());
+        exit (EXIT_FAILURE);
+      }
     }
 
   /* check for file name to be processed */
diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt
index eeaf1ea..5220087 100644
--- a/tools/h5ls/CMakeLists.txt
+++ b/tools/h5ls/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5LS)
 
 #-----------------------------------------------------------------------------
@@ -9,21 +9,21 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 #-----------------------------------------------------------------------------
 # Add the h5ls executable
 #-----------------------------------------------------------------------------
-ADD_EXECUTABLE (h5ls ${HDF5_TOOLS_H5LS_SOURCE_DIR}/h5ls.c)
+add_executable (h5ls ${HDF5_TOOLS_H5LS_SOURCE_DIR}/h5ls.c)
 TARGET_NAMING (h5ls ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5ls " " " ")
-TARGET_LINK_LIBRARIES (h5ls  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5ls PROPERTIES FOLDER tools)
+target_link_libraries (h5ls  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5ls PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES
+set (H5_DEP_EXECUTABLES
     h5ls
 )
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
 
-ENDIF (BUILD_TESTING)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -37,7 +37,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5ls ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5ls
     RUNTIME DESTINATION
diff --git a/tools/h5ls/CMakeTests.cmake b/tools/h5ls/CMakeTests.cmake
index 09f375d..b739130 100644
--- a/tools/h5ls/CMakeTests.cmake
+++ b/tools/h5ls/CMakeTests.cmake
@@ -8,7 +8,7 @@
   # --------------------------------------------------------------------
   # Copy all the test files from source directory to test directory
   # --------------------------------------------------------------------
-  SET (LIST_HDF5_TEST_FILES
+  set (LIST_HDF5_TEST_FILES
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tall.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tarray1.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tattr2.h5
@@ -33,7 +33,7 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.h5
   )
 
-  SET (LIST_OTHER_TEST_FILES
+  set (LIST_OTHER_TEST_FILES
       ${HDF5_TOOLS_SRC_DIR}/testfiles/help-1.ls
       ${HDF5_TOOLS_SRC_DIR}/testfiles/help-2.ls
       ${HDF5_TOOLS_SRC_DIR}/testfiles/help-3.ls
@@ -92,20 +92,20 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2be.ls
   )
 
-  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
   # copy the list of test files
-  FOREACH (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
     GET_FILENAME_COMPONENT(fname "${listfiles}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
-    #MESSAGE (STATUS " Copying ${listfiles} to ${dest}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #message (STATUS " Copying ${listfiles} to ${dest}")
+    add_custom_command (
         TARGET     h5ls
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${listfiles} ${dest}
     )
-  ENDFOREACH (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  endforeach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
 
   
 ##############################################################################
@@ -116,22 +116,22 @@
 
   MACRO (ADD_H5_TEST resultfile resultcode)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5LS-${resultfile} COMMAND $<TARGET_FILE:h5ls> ${ARGN})
-      SET_TESTS_PROPERTIES (H5LS-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-      IF (${resultcode} STREQUAL "1")
-        SET_TESTS_PROPERTIES (H5LS-${resultfile} PROPERTIES WILL_FAIL "true")
-      ENDIF (${resultcode} STREQUAL "1")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5LS-${resultfile} COMMAND $<TARGET_FILE:h5ls> ${ARGN})
+      set_tests_properties (H5LS-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+      if (${resultcode} STREQUAL "1")
+        set_tests_properties (H5LS-${resultfile} PROPERTIES WILL_FAIL "true")
+      endif (${resultcode} STREQUAL "1")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5LS-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ./testfiles/${resultfile}.out ./testfiles/${resultfile}.out.err
       )
-      ADD_TEST (
+      add_test (
           NAME H5LS-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5ls>"
@@ -142,8 +142,8 @@
               -D "TEST_REFERENCE=${resultfile}.ls"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5LS-${resultfile} PROPERTIES DEPENDS "H5LS-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS "H5LS-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST file)
 
 ##############################################################################
@@ -152,9 +152,9 @@
 ##############################################################################
 ##############################################################################
 
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
       NAME H5LS-clearall-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -265,11 +265,11 @@
           tvldtypes2be.out
           tvldtypes2be.out.err
     )
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5LS-clearall-objects PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "H5LS-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (H5LS-clearall-objects PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "H5LS-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
   # test the help syntax
   ADD_H5_TEST (help-1 0 -w80 -h)
@@ -378,25 +378,25 @@
 
   # test for attribute with region references wo verbose mode
   # ( HDFFV-7838, )
-  IF (H5_WORDS_BIGENDIAN)
+  if (H5_WORDS_BIGENDIAN)
     ADD_H5_TEST (tattrreg_be 0 -w80 -v -d tattrreg.h5)
-  ELSE (H5_WORDS_BIGENDIAN)
+  else (H5_WORDS_BIGENDIAN)
     ADD_H5_TEST (tattrreg_le 0 -w80 -v -d tattrreg.h5)
-  ENDIF (H5_WORDS_BIGENDIAN)
+  endif (H5_WORDS_BIGENDIAN)
 
   # test for non-existing file
   ADD_H5_TEST (nosuchfile 1 nosuchfile.h5)
 
   # test for variable length data types in verbose mode
-  IF (H5_WORDS_BIGENDIAN)
+  if (H5_WORDS_BIGENDIAN)
     ADD_H5_TEST (tvldtypes2be 0 -v tvldtypes1.h5)
-  ELSE (H5_WORDS_BIGENDIAN)
+  else (H5_WORDS_BIGENDIAN)
     ADD_H5_TEST (tvldtypes2le 0 -v tvldtypes1.h5)
-  ENDIF (H5_WORDS_BIGENDIAN)
+  endif (H5_WORDS_BIGENDIAN)
 
   # test for dataset region references data types in verbose mode
-  IF (H5_WORDS_BIGENDIAN)
+  if (H5_WORDS_BIGENDIAN)
     ADD_H5_TEST (tdataregbe 0 -v tdatareg.h5)
-  ELSE (H5_WORDS_BIGENDIAN)
+  else (H5_WORDS_BIGENDIAN)
     ADD_H5_TEST (tdataregle 0 -v tdatareg.h5)
-  ENDIF (H5_WORDS_BIGENDIAN)
+  endif (H5_WORDS_BIGENDIAN)
diff --git a/tools/h5ls/Makefile.am b/tools/h5ls/Makefile.am
index 41e66f6..408ce93 100644
--- a/tools/h5ls/Makefile.am
+++ b/tools/h5ls/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src and tools/lib directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_SCRIPT=testh5ls.sh
diff --git a/tools/h5ls/Makefile.in b/tools/h5ls/Makefile.in
index 1861b03..af9d170 100644
--- a/tools/h5ls/Makefile.in
+++ b/tools/h5ls/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,11 +95,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/testh5ls.sh.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+	$(top_srcdir)/bin/test-driver
 bin_PROGRAMS = h5ls$(EXEEXT)
 TESTS = $(TEST_SCRIPT)
 subdir = tools/h5ls
@@ -137,12 +165,225 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -154,7 +395,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src and tools/lib directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -214,7 +458,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -423,9 +666,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 
-# Include src and tools/lib directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
-
 # Test programs and scripts
 TEST_SCRIPT = testh5ls.sh
 check_SCRIPTS = $(TEST_SCRIPT)
@@ -459,7 +699,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -502,10 +742,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -526,7 +768,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -539,6 +782,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) $(EXTRA_h5ls_DEPENDENCIES) 
 	@rm -f h5ls$(EXEEXT)
 	$(AM_V_CCLD)$(h5ls_LINK) $(h5ls_OBJECTS) $(h5ls_LDADD) $(LIBS)
@@ -556,14 +800,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -578,26 +822,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -609,15 +842,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -626,9 +855,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -644,6 +874,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -703,6 +1078,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -785,20 +1163,20 @@ 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 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
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am 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 recheck tags tags-am \
+	uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c
index f8933c6..257d4d1 100644
--- a/tools/h5ls/h5ls.c
+++ b/tools/h5ls/h5ls.c
@@ -849,7 +849,7 @@ print_cmpd_type(h5tools_str_t *buffer, hid_t type, int ind)
         n = print_string(buffer, name, FALSE);
         h5tools_str_append(buffer, "\"%*s +%-4lu ", MAX(0, 16-n), "",
                (unsigned long)H5Tget_member_offset(type, i));
-        HDfree(name);
+        H5free_memory(name);
 
         /* Member's type */
         subtype = H5Tget_member_type(type, i);
@@ -931,7 +931,7 @@ print_enum_type(h5tools_str_t *buffer, hid_t type, int ind)
             if(H5Tconvert(super, native, (size_t)nmembs, value, NULL, H5P_DEFAULT) < 0) {
                 /* Release resources */
                 for(i = 0; i < (unsigned)nmembs; i++)
-                    HDfree(name[i]);
+                    H5free_memory(name[i]);
                 HDfree(name);
                 HDfree(value);
 
@@ -1158,7 +1158,7 @@ print_opaque_type(h5tools_str_t *buffer, hid_t type, int ind)
         h5tools_str_append(buffer, "\n%*s(tag = \"", ind, "");
         print_string(buffer, tag, FALSE);
         h5tools_str_append(buffer, "\")");
-        HDfree(tag);
+        H5free_memory(tag);
     }
     return TRUE;
 }
diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt
index 176fc2b..4d26c0c 100644
--- a/tools/h5repack/CMakeLists.txt
+++ b/tools/h5repack/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5REPACK)
 
 #-----------------------------------------------------------------------------
@@ -10,7 +10,7 @@ INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
 # --------------------------------------------------------------------
 # Add h5Repack executables
 # --------------------------------------------------------------------
-SET (REPACK_COMMON_SRCS
+set (REPACK_COMMON_SRCS
     ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_copy.c
     ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_filters.c
     ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_opttable.c
@@ -20,43 +20,43 @@ SET (REPACK_COMMON_SRCS
     ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack.c
 )
 
-ADD_EXECUTABLE (h5repack ${REPACK_COMMON_SRCS} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_main.c)
+add_executable (h5repack ${REPACK_COMMON_SRCS} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_main.c)
 TARGET_NAMING (h5repack ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5repack " " " ")
-TARGET_LINK_LIBRARIES (h5repack  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5repack PROPERTIES FOLDER tools)
+target_link_libraries (h5repack  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5repack PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES h5repack)
+set (H5_DEP_EXECUTABLES h5repack)
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Add h5Repack test executables
   # --------------------------------------------------------------------
-  ADD_EXECUTABLE (testh5repack_detect_szip ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testh5repack_detect_szip.c)
+  add_executable (testh5repack_detect_szip ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testh5repack_detect_szip.c)
   TARGET_NAMING (testh5repack_detect_szip ${LIB_TYPE})
   TARGET_C_PROPERTIES (testh5repack_detect_szip " " " ")
-  TARGET_LINK_LIBRARIES (testh5repack_detect_szip ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-  SET_TARGET_PROPERTIES (testh5repack_detect_szip PROPERTIES FOLDER tools)
+  target_link_libraries (testh5repack_detect_szip ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+  set_target_properties (testh5repack_detect_szip PROPERTIES FOLDER tools)
 
-  ADD_EXECUTABLE (h5repacktest ${REPACK_COMMON_SRCS} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repacktst.c)
+  add_executable (h5repacktest ${REPACK_COMMON_SRCS} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repacktst.c)
   TARGET_NAMING (h5repacktest ${LIB_TYPE})
   TARGET_C_PROPERTIES (h5repacktest " " " ")
-  TARGET_LINK_LIBRARIES (h5repacktest  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-  SET_TARGET_PROPERTIES (h5repacktest PROPERTIES FOLDER tools)
+  target_link_libraries (h5repacktest  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+  set_target_properties (h5repacktest PROPERTIES FOLDER tools)
 
   #-----------------------------------------------------------------------------
   # If plugin library tests can be tested
   #-----------------------------------------------------------------------------
-  IF (BUILD_SHARED_LIBS)
-    SET (HDF5_TOOL_PLUGIN_LIB_CORENAME         "dynlibadd")
-    SET (HDF5_TOOL_PLUGIN_LIB_NAME             "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_CORENAME}")
-    SET (HDF5_TOOL_PLUGIN_LIB_TARGET           ${HDF5_TOOL_PLUGIN_LIB_CORENAME})
-    ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+  if (BUILD_SHARED_LIBS)
+    set (HDF5_TOOL_PLUGIN_LIB_CORENAME         "dynlibadd")
+    set (HDF5_TOOL_PLUGIN_LIB_NAME             "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_CORENAME}")
+    set (HDF5_TOOL_PLUGIN_LIB_TARGET           ${HDF5_TOOL_PLUGIN_LIB_CORENAME})
+    add_definitions (${HDF5_EXTRA_C_FLAGS})
     INCLUDE_DIRECTORIES (${HDF5_SRC_DIR})
 
-    ADD_LIBRARY (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${LIB_TYPE} ${HDF5_TEST_SRC_DIR}/dynlib1.c)
+    add_library (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${LIB_TYPE} dynlib_rpk.c)
     TARGET_C_PROPERTIES (${HDF5_TOOL_PLUGIN_LIB_TARGET} " " " ")
-    TARGET_LINK_LIBRARIES (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+    target_link_libraries (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
     H5_SET_LIB_OPTIONS (
         ${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TOOL_PLUGIN_LIB_NAME}
         ${LIB_TYPE}
@@ -65,11 +65,11 @@ IF (BUILD_TESTING)
     )
 
     # make plugins dir
-    FILE (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins")
+    file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins")
     #-----------------------------------------------------------------------------
     # Copy plugin library to a plugins folder
     #-----------------------------------------------------------------------------
-    ADD_CUSTOM_COMMAND (
+    add_custom_command (
         TARGET     ${HDF5_TOOL_PLUGIN_LIB_TARGET}
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
@@ -77,11 +77,11 @@ IF (BUILD_TESTING)
           "$<TARGET_FILE:${HDF5_TOOL_PLUGIN_LIB_TARGET}>"
           "${CMAKE_BINARY_DIR}/plugins/$<TARGET_FILE_NAME:${HDF5_TOOL_PLUGIN_LIB_TARGET}>"
     )
-  ENDIF (BUILD_SHARED_LIBS)
+  endif (BUILD_SHARED_LIBS)
 
-  INCLUDE (CMakeTests.cmake)
+  include (CMakeTests.cmake)
   
-ENDIF (BUILD_TESTING)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -95,7 +95,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5repack ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5repack
     RUNTIME DESTINATION
diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake
index 7f8f71b..430defc 100644
--- a/tools/h5repack/CMakeTests.cmake
+++ b/tools/h5repack/CMakeTests.cmake
@@ -5,8 +5,8 @@
 ##############################################################################
 ##############################################################################
 
-  IF (HDF5_TEST_VFD)
-    SET (VFD_LIST
+  if (HDF5_TEST_VFD)
+    set (VFD_LIST
         sec2
         stdio
         core
@@ -15,12 +15,12 @@
         family
     )
   
-    IF (DIRECT_VFD)
-      SET (VFD_LIST ${VFD_LIST} direct)
-    ENDIF (DIRECT_VFD)
+    if (DIRECT_VFD)
+      set (VFD_LIST ${VFD_LIST} direct)
+    endif (DIRECT_VFD)
 
     MACRO (ADD_VFD_TEST vfdname resultcode)
-      ADD_TEST (
+      add_test (
         NAME H5REPACK-VFD-${vfdname}-h5repacktest 
         COMMAND "${CMAKE_COMMAND}"
             -D "TEST_PROGRAM=$<TARGET_FILE:h5repacktest>"
@@ -31,17 +31,17 @@
             -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
             -P "${HDF5_RESOURCES_DIR}/vfdTest.cmake"
       )
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5REPACK-VFD-${vfdname}-h5repacktest PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      SET (last_test "H5REPACK-VFD-${vfdname}-h5repacktest")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5REPACK-VFD-${vfdname}-h5repacktest PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      set (last_test "H5REPACK-VFD-${vfdname}-h5repacktest")
     ENDMACRO (ADD_VFD_TEST)
-  ENDIF (HDF5_TEST_VFD)
+  endif (HDF5_TEST_VFD)
     
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the source directory into the test directory
   # --------------------------------------------------------------------
-  SET (LIST_HDF5_TEST_FILES
+  set (LIST_HDF5_TEST_FILES
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr_refs.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_deflate.h5
@@ -55,6 +55,7 @@
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layouto.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout2.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout3.h5
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_named_dtypes.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nbit.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_objs.h5
@@ -78,7 +79,7 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00010.h5
   )
 
-  SET (LIST_OTHER_TEST_FILES
+  set (LIST_OTHER_TEST_FILES
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack-help.txt
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_ext.bin
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/ublock.bin
@@ -88,19 +89,21 @@
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5.tst
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_test.ddl
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5.tst
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5.tst
   )
 
-  FOREACH (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  foreach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
     GET_FILENAME_COMPONENT(fname "${h5_file}" NAME)
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
-    #MESSAGE (STATUS " Copying ${h5_file}")
-    ADD_CUSTOM_COMMAND (
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
+    #message (STATUS " Copying ${h5_file}")
+    add_custom_command (
         TARGET     h5repack
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${h5_file} ${dest}
     )
-  ENDFOREACH (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
+  endforeach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
 
 ##############################################################################
 ##############################################################################
@@ -110,21 +113,21 @@
 
   MACRO (ADD_HELP_TEST testname resultcode)
     # If using memchecker add tests without using scripts
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5REPACK-${testname} COMMAND $<TARGET_FILE:h5repack> ${ARGN})
-      SET_TESTS_PROPERTIES (H5REPACK-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      SET (last_test "H5REPACK-${testname}")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5REPACK-${testname} COMMAND $<TARGET_FILE:h5repack> ${ARGN})
+      set_tests_properties (H5REPACK-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      set (last_test "H5REPACK-${testname}")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5REPACK-h5repack-${testname}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove h5repack-${testname}.out h5repack-${testname}.out.err
       )
-      SET_TESTS_PROPERTIES (H5REPACK-h5repack-${testname}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-      ADD_TEST (
+      set_tests_properties (H5REPACK-h5repack-${testname}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+      add_test (
           NAME H5REPACK-h5repack-${testname}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
@@ -135,213 +138,213 @@
               -D "TEST_REFERENCE=h5repack-${testname}.txt"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5REPACK-h5repack-${testname} PROPERTIES DEPENDS "H5REPACK-h5repack-${testname}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES DEPENDS "H5REPACK-h5repack-${testname}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_HELP_TEST)
 
   MACRO (ADD_H5_TEST_OLD testname testtype testfile)
-    IF (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+    if (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_OLD-${testname}-SKIPPED
             COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}"
         )
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ELSE (${testtype} STREQUAL "SKIP")
-      ADD_TEST (
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else (${testtype} STREQUAL "SKIP")
+      add_test (
           NAME H5REPACK_OLD-${testname}
           COMMAND $<TARGET_FILE:h5repack> ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
       )
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5REPACK_OLD-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      ADD_TEST (
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5REPACK_OLD-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      add_test (
           NAME H5REPACK_OLD-${testname}_DFF
           COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
       )
-      SET_TESTS_PROPERTIES (H5REPACK_OLD-${testname}_DFF PROPERTIES DEPENDS H5REPACK_OLD-${testname})
-    ENDIF (${testtype} STREQUAL "SKIP")
+      set_tests_properties (H5REPACK_OLD-${testname}_DFF PROPERTIES DEPENDS H5REPACK_OLD-${testname})
+    endif (${testtype} STREQUAL "SKIP")
   ENDMACRO (ADD_H5_TEST_OLD)
 
   MACRO (ADD_H5_TEST testname testtype testfile)
-    IF (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+    if (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK-${testname}-SKIPPED
             COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}"
         )
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ELSE (${testtype} STREQUAL "SKIP")
-      ADD_TEST (
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else (${testtype} STREQUAL "SKIP")
+      add_test (
           NAME H5REPACK-${testname}
           COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
       )
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      ADD_TEST (
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      add_test (
           NAME H5REPACK-${testname}_DFF
           COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
       )
-      SET_TESTS_PROPERTIES (H5REPACK-${testname}_DFF PROPERTIES DEPENDS H5REPACK-${testname})
-    ENDIF (${testtype} STREQUAL "SKIP")
+      set_tests_properties (H5REPACK-${testname}_DFF PROPERTIES DEPENDS H5REPACK-${testname})
+    endif (${testtype} STREQUAL "SKIP")
   ENDMACRO (ADD_H5_TEST)
 
   MACRO (ADD_H5_CMP_TEST testname testfilter testtype resultcode resultfile)
-    IF (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+    if (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_CMP-${testname}-SKIPPED
             COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
         )
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ELSE (${testtype} STREQUAL "SKIP")
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else (${testtype} STREQUAL "SKIP")
       # If using memchecker add tests without using scripts
-      IF (HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+      if (HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_CMP-${testname}
             COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile})
-      ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+      else (HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_CMP-${testname}
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
-                -D "TEST_ARGS:STRING=${ARGN};testfiles/${resultfile};testfiles/out-${testname}.${resultfile}"
-                -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-                -D "TEST_OUTPUT=./testfiles/${resultfile}-${testname}.out"
+                -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}"
+                -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+                -D "TEST_OUTPUT=${resultfile}-${testname}.out"
                 -D "TEST_EXPECT=${resultcode}"
                 -D "TEST_FILTER:STRING=${testfilter}"
-                -D "TEST_REFERENCE=testfiles/${resultfile}.tst"
+                -D "TEST_REFERENCE=${resultfile}.tst"
                 -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
         )
-      ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5REPACK_CMP-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ENDIF (${testtype} STREQUAL "SKIP")
+      endif (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5REPACK_CMP-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    endif (${testtype} STREQUAL "SKIP")
   ENDMACRO (ADD_H5_CMP_TEST)
 
   MACRO (ADD_H5_DMP_TEST testname testtype resultcode resultfile)
-    IF (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+    if (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_DMP-${testname}-SKIPPED
             COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
         )
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ELSE (${testtype} STREQUAL "SKIP")
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else (${testtype} STREQUAL "SKIP")
       # If using memchecker add tests without using scripts
-      ADD_TEST (
+      add_test (
           NAME H5REPACK_DMP-${testname}
           COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile})
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5REPACK_DMP-${testname} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5REPACK_DMP-${testname} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_DMP-h5dump-${testname}
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
-                -D "TEST_ARGS:STRING=-pH;./testfiles/out-${testname}.${resultfile}"
-                -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-                -D "TEST_OUTPUT=./testfiles/${resultfile}-${testname}.out"
+                -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}"
+                -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+                -D "TEST_OUTPUT=${resultfile}-${testname}.out"
                 -D "TEST_EXPECT=${resultcode}"
-                -D "TEST_REFERENCE=testfiles/${testname}.${resultfile}.ddl"
+                -D "TEST_REFERENCE=${testname}.${resultfile}.ddl"
                 -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
         )
-        SET_TESTS_PROPERTIES (H5REPACK_DMP-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_DMP-${testname}")
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ENDIF (${testtype} STREQUAL "SKIP")
+        set_tests_properties (H5REPACK_DMP-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_DMP-${testname}")
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (${testtype} STREQUAL "SKIP")
   ENDMACRO (ADD_H5_DMP_TEST)
 
   MACRO (ADD_H5_VERIFY_TEST testname testtype resultcode testfile testdset testfilter)
-    IF (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+    if (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_VERIFY_LAYOUT-${testname}-SKIPPED
             COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
         )
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ELSE (${testtype} STREQUAL "SKIP")
-      IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-        ADD_TEST (
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else (${testtype} STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
             NAME H5REPACK_VERIFY_LAYOUT-${testname}
             COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
         )
-        IF (NOT "${last_test}" STREQUAL "")
-          SET_TESTS_PROPERTIES (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES DEPENDS ${last_test})
-        ENDIF (NOT "${last_test}" STREQUAL "")
-        ADD_TEST (
+        if (NOT "${last_test}" STREQUAL "")
+          set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES DEPENDS ${last_test})
+        endif (NOT "${last_test}" STREQUAL "")
+        add_test (
             NAME H5REPACK_VERIFY_LAYOUT-${testname}_DFF
             COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
         )
-        SET_TESTS_PROPERTIES (H5REPACK_VERIFY_LAYOUT-${testname}_DFF PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname})
-        IF (${resultcode} STREQUAL "0")
-          ADD_TEST (
+        set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DFF PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname})
+        if (${resultcode} STREQUAL "0")
+          add_test (
               NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP
               COMMAND "${CMAKE_COMMAND}"
                   -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
-                  -D "TEST_ARGS:STRING=-d;${testdset};-pH;testfiles/out-${testname}.${testfile}"
-                  -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-                  -D "TEST_OUTPUT=./testfiles/${testfile}-${testname}-v.out"
+                  -D "TEST_ARGS:STRING=-d;${testdset};-pH;out-${testname}.${testfile}"
+                  -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+                  -D "TEST_OUTPUT=${testfile}-${testname}-v.out"
                   -D "TEST_EXPECT=${resultcode}"
                   -D "TEST_FILTER:STRING=${testfilter}"
                   -D "TEST_REFERENCE=${testfilter}"
                   -P "${HDF5_RESOURCES_DIR}/grepTest.cmake"
           )
-          SET_TESTS_PROPERTIES (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF)
-        ELSE (${resultcode} STREQUAL "0")
-          IF (${testfilter} STREQUAL "CHUNKED")
-            SET (nottestfilter "(CONTIGUOUS|COMPACT)")
-          ENDIF (${testfilter} STREQUAL "CHUNKED")
-          IF (${testfilter} STREQUAL "CONTIGUOUS")
-            SET (nottestfilter "(CHUNK|COMPACT)")
-          ENDIF (${testfilter} STREQUAL "CONTIGUOUS")
-          IF (${testfilter} STREQUAL "COMPACT")
-            SET (nottestfilter "(CONTIGUOUS|CHUNK)")
-          ENDIF (${testfilter} STREQUAL "COMPACT")
-          ADD_TEST (
+          set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF)
+        else (${resultcode} STREQUAL "0")
+          if (${testfilter} STREQUAL "CHUNKED")
+            set (nottestfilter "(CONTIGUOUS|COMPACT)")
+          endif (${testfilter} STREQUAL "CHUNKED")
+          if (${testfilter} STREQUAL "CONTIGUOUS")
+            set (nottestfilter "(CHUNK|COMPACT)")
+          endif (${testfilter} STREQUAL "CONTIGUOUS")
+          if (${testfilter} STREQUAL "COMPACT")
+            set (nottestfilter "(CONTIGUOUS|CHUNK)")
+          endif (${testfilter} STREQUAL "COMPACT")
+          add_test (
               NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP
               COMMAND "${CMAKE_COMMAND}"
                   -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
-                  -D "TEST_ARGS:STRING=-pH;testfiles/out-${testname}.${testfile}"
-                  -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-                  -D "TEST_OUTPUT=./testfiles/${testfile}-${testname}-v.out"
+                  -D "TEST_ARGS:STRING=-pH;out-${testname}.${testfile}"
+                  -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+                  -D "TEST_OUTPUT=${testfile}-${testname}-v.out"
                   -D "TEST_EXPECT=${resultcode}"
                   -D "TEST_FILTER:STRING=${nottestfilter}"
                   -D "TEST_REFERENCE=${testfilter}"
                   -P "${HDF5_RESOURCES_DIR}/grepTest.cmake"
           )
-          SET_TESTS_PROPERTIES (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF)
-        ENDIF (${resultcode} STREQUAL "0")
-      ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-    ENDIF (${testtype} STREQUAL "SKIP")
+          set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF)
+        endif (${resultcode} STREQUAL "0")
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif (${testtype} STREQUAL "SKIP")
   ENDMACRO (ADD_H5_VERIFY_TEST)
 
   MACRO (ADD_H5_TEST_META testname testfile)
-      ADD_TEST (
+      add_test (
           NAME H5REPACK_META-${testname}_N
           COMMAND $<TARGET_FILE:h5repack> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5
       )
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5REPACK_META-${testname}_N PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-      ADD_TEST (
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5REPACK_META-${testname}_N PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      add_test (
           NAME H5REPACK_META-${testname}_M
           COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5
       )
-      SET_TESTS_PROPERTIES (H5REPACK_META-${testname}_M PROPERTIES DEPENDS H5REPACK_META-${testname}_N)
+      set_tests_properties (H5REPACK_META-${testname}_M PROPERTIES DEPENDS H5REPACK_META-${testname}_N)
 
-      ADD_TEST (NAME H5REPACK_META-${testname} COMMAND ${CMAKE_COMMAND} -E compare_files ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5)
-      SET_TESTS_PROPERTIES (H5REPACK_META-${testname} PROPERTIES WILL_FAIL "true")
-      SET_TESTS_PROPERTIES (H5REPACK_META-${testname} PROPERTIES DEPENDS H5REPACK_META-${testname}_M)
+      add_test (NAME H5REPACK_META-${testname} COMMAND ${CMAKE_COMMAND} -E compare_files ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5)
+      set_tests_properties (H5REPACK_META-${testname} PROPERTIES WILL_FAIL "true")
+      set_tests_properties (H5REPACK_META-${testname} PROPERTIES DEPENDS H5REPACK_META-${testname}_M)
   ENDMACRO (ADD_H5_TEST_META)
 
   MACRO (ADD_H5_UD_TEST testname resultcode resultfile)
-    IF (HDF5_BUILD_TOOLS AND NOT HDF5_ENABLE_USING_MEMCHECKER)
+    if (HDF5_BUILD_TOOLS AND NOT HDF5_ENABLE_USING_MEMCHECKER)
       # Remove any output file left over from previous test run
-      ADD_TEST (
-          NAME H5REPACK_UD-clearall-objects
+      add_test (
+          NAME H5REPACK_UD-${testname}-clearall-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
               testfiles/out-${testname}.${resultfile}
@@ -350,36 +353,36 @@
               testfiles/${resultfile}-${testname}.out
               testfiles/${resultfile}-${testname}.out.err
       )
-      ADD_TEST (
+      add_test (
           NAME H5REPACK_UD-${testname}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
-              -D "TEST_ARGS:STRING=${ARGN};${PROJECT_BINARY_DIR}/testfiles/${resultfile};${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
               -D "TEST_EXPECT=${resultcode}"
               -D "TEST_FILTER:STRING=O?...ing file[^\n]+\n"
-              -D "TEST_OUTPUT=./testfiles/${testname}.${resultfile}.out"
-              -D "TEST_REFERENCE=testfiles/${testname}.${resultfile}.tst"
+              -D "TEST_OUTPUT=${testname}.${resultfile}.out"
+              -D "TEST_REFERENCE=${testname}.${resultfile}.tst"
               -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
               -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5REPACK_UD-${testname} PROPERTIES DEPENDS H5REPACK_UD-clearall-objects)
-      ADD_TEST (
+      set_tests_properties (H5REPACK_UD-${testname} PROPERTIES DEPENDS H5REPACK_UD-${testname}-clearall-objects)
+      add_test (
           NAME H5REPACK_UD-h5dump-${testname}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
-              -D "TEST_ARGS:STRING=-pH;testfiles/out-${testname}.${resultfile}"
-              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-              -D "TEST_OUTPUT=./testfiles/${resultfile}-${testname}.out"
+              -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+              -D "TEST_OUTPUT=${resultfile}-${testname}.out"
               -D "TEST_EXPECT=${resultcode}"
-              -D "TEST_REFERENCE=testfiles/${resultfile}-${testname}.ddl"
+              -D "TEST_REFERENCE=${resultfile}-${testname}.ddl"
               -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
               -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5REPACK_UD-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_UD-${testname}")
-    ENDIF (HDF5_BUILD_TOOLS AND NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5REPACK_UD-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_UD-${testname}")
+    endif (HDF5_BUILD_TOOLS AND NOT HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_UD_TEST)
 
 ##############################################################################
@@ -391,30 +394,30 @@
   # --------------------------------------------------------------------
   # test file names 
   # --------------------------------------------------------------------
-  SET (INFO_FILE testfiles/h5repack.info)
-
-  SET (FILE0 h5repack_fill.h5)
-  SET (FILE1 h5repack_objs.h5)
-  SET (FILE2 h5repack_attr.h5)
-  SET (FILE3 h5repack_hlink.h5)
-  SET (FILE4 h5repack_layout.h5)
-  SET (FILE5 h5repack_early.h5)
-  SET (FILE7 h5repack_szip.h5)
-  SET (FILE8 h5repack_deflate.h5)
-  SET (FILE9 h5repack_shuffle.h5)
-  SET (FILE10 h5repack_fletcher.h5)
-  SET (FILE11 h5repack_filters.h5)
-  SET (FILE12 h5repack_nbit.h5)
-  SET (FILE13 h5repack_soffset.h5)
-  SET (FILE14 h5repack_layouto.h5 )     # A file with an older version of the layout message (copy of test/tlayouto.h5)
-  SET (FILE15 h5repack_named_dtypes.h5)
-  SET (FILE16 tfamily%05d.h5)           # located in common testfiles folder
-  SET (FILE18 h5repack_layout2.h5)
-  SET (FILE_REF h5repack_refs.h5)
-  SET (FILE_ATTR_REF h5repack_attr_refs.h5)
+  set (INFO_FILE testfiles/h5repack.info)
+
+  set (FILE0 h5repack_fill.h5)
+  set (FILE1 h5repack_objs.h5)
+  set (FILE2 h5repack_attr.h5)
+  set (FILE3 h5repack_hlink.h5)
+  set (FILE4 h5repack_layout.h5)
+  set (FILE5 h5repack_early.h5)
+  set (FILE7 h5repack_szip.h5)
+  set (FILE8 h5repack_deflate.h5)
+  set (FILE9 h5repack_shuffle.h5)
+  set (FILE10 h5repack_fletcher.h5)
+  set (FILE11 h5repack_filters.h5)
+  set (FILE12 h5repack_nbit.h5)
+  set (FILE13 h5repack_soffset.h5)
+  set (FILE14 h5repack_layouto.h5 )     # A file with an older version of the layout message (copy of test/tlayouto.h5)
+  set (FILE15 h5repack_named_dtypes.h5)
+  set (FILE16 tfamily%05d.h5)           # located in common testfiles folder
+  set (FILE18 h5repack_layout2.h5)
+  set (FILE_REF h5repack_refs.h5)
+  set (FILE_ATTR_REF h5repack_attr_refs.h5)
   
   # Remove any output file left over from previous test run
-  ADD_TEST (
+  add_test (
       NAME H5REPACK-clearall-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -594,30 +597,30 @@
          h5repack_ext.bin
          ublock.bin
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (H5REPACK-clearall-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (H5REPACK-clearall-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
 
   ADD_HELP_TEST(help 0 -h)
 
-  ADD_TEST (NAME H5REPACK-testh5repack_detect_szip COMMAND $<TARGET_FILE:testh5repack_detect_szip>)
-  IF (HDF5_ENABLE_SZIP_SUPPORT)
-    IF (HDF5_ENABLE_SZIP_ENCODING)
-      SET (passRegex "yes")
-      SET_TESTS_PROPERTIES (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "yes")
-    ELSE (HDF5_ENABLE_SZIP_ENCODING)
-      SET (passRegex "no")
-      SET_TESTS_PROPERTIES (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no")
-    ENDIF (HDF5_ENABLE_SZIP_ENCODING)
-  ELSE (HDF5_ENABLE_SZIP_SUPPORT)
-    SET (passRegex "no")
-    SET_TESTS_PROPERTIES (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no")
-  ENDIF (HDF5_ENABLE_SZIP_SUPPORT)
-  SET_TESTS_PROPERTIES (H5REPACK-testh5repack_detect_szip PROPERTIES DEPENDS H5REPACK-clearall-objects)
-
-  ADD_TEST (NAME H5REPACK-h5repacktest COMMAND $<TARGET_FILE:h5repacktest>)
-  SET_TESTS_PROPERTIES (H5REPACK-h5repacktest PROPERTIES DEPENDS H5REPACK-testh5repack_detect_szip)
-  SET (last_test "H5REPACK-h5repacktest")
+  add_test (NAME H5REPACK-testh5repack_detect_szip COMMAND $<TARGET_FILE:testh5repack_detect_szip>)
+  if (HDF5_ENABLE_SZIP_SUPPORT)
+    if (HDF5_ENABLE_SZIP_ENCODING)
+      set (passRegex "yes")
+      set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "yes")
+    else (HDF5_ENABLE_SZIP_ENCODING)
+      set (passRegex "no")
+      set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no")
+    endif (HDF5_ENABLE_SZIP_ENCODING)
+  else (HDF5_ENABLE_SZIP_SUPPORT)
+    set (passRegex "no")
+    set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no")
+  endif (HDF5_ENABLE_SZIP_SUPPORT)
+  set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES DEPENDS H5REPACK-clearall-objects)
+
+  add_test (NAME H5REPACK-h5repacktest COMMAND $<TARGET_FILE:h5repacktest>)
+  set_tests_properties (H5REPACK-h5repacktest PROPERTIES DEPENDS H5REPACK-testh5repack_detect_szip)
+  set (last_test "H5REPACK-h5repacktest")
 
 #
 # The tests
@@ -633,34 +636,34 @@
 # filters are defined.
 
 # detect whether the encoder is present. 
-  SET (USE_FILTER_SZIP_ENCODER "no")
-  IF (HDF5_ENABLE_SZIP_ENCODING)
-    SET (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip})
-  ENDIF (HDF5_ENABLE_SZIP_ENCODING)
-
-  IF (H5_HAVE_FILTER_DEFLATE)
-    SET (USE_FILTER_DEFLATE "true")
-  ENDIF (H5_HAVE_FILTER_DEFLATE)
-
-  IF (H5_HAVE_FILTER_SZIP)
-    SET (USE_FILTER_SZIP "true")
-  ENDIF (H5_HAVE_FILTER_SZIP)
-
-  IF (H5_HAVE_FILTER_SHUFFLE)
-    SET (USE_FILTER_SHUFFLE "true")
-  ENDIF (H5_HAVE_FILTER_SHUFFLE)
-
-  IF (H5_HAVE_FILTER_FLETCHER32)
-    SET (USE_FILTER_FLETCHER32 "true")
-  ENDIF (H5_HAVE_FILTER_FLETCHER32)
-
-  IF (H5_HAVE_FILTER_NBIT)
-    SET (USE_FILTER_NBIT "true")
-  ENDIF (H5_HAVE_FILTER_NBIT)
-
-  IF (H5_HAVE_FILTER_SCALEOFFSET)
-    SET (USE_FILTER_SCALEOFFSET "true")
-  ENDIF (H5_HAVE_FILTER_SCALEOFFSET)
+  set (USE_FILTER_SZIP_ENCODER "no")
+  if (HDF5_ENABLE_SZIP_ENCODING)
+    set (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip})
+  endif (HDF5_ENABLE_SZIP_ENCODING)
+
+  if (H5_HAVE_FILTER_DEFLATE)
+    set (USE_FILTER_DEFLATE "true")
+  endif (H5_HAVE_FILTER_DEFLATE)
+
+  if (H5_HAVE_FILTER_SZIP)
+    set (USE_FILTER_SZIP "true")
+  endif (H5_HAVE_FILTER_SZIP)
+
+  if (H5_HAVE_FILTER_SHUFFLE)
+    set (USE_FILTER_SHUFFLE "true")
+  endif (H5_HAVE_FILTER_SHUFFLE)
+
+  if (H5_HAVE_FILTER_FLETCHER32)
+    set (USE_FILTER_FLETCHER32 "true")
+  endif (H5_HAVE_FILTER_FLETCHER32)
+
+  if (H5_HAVE_FILTER_NBIT)
+    set (USE_FILTER_NBIT "true")
+  endif (H5_HAVE_FILTER_NBIT)
+
+  if (H5_HAVE_FILTER_SCALEOFFSET)
+    set (USE_FILTER_SCALEOFFSET "true")
+  endif (H5_HAVE_FILTER_SCALEOFFSET)
   
 # copy files (these files have no filters) 
   ADD_H5_TEST (fill "TEST" ${FILE0})
@@ -673,83 +676,83 @@
 # use $FILE4 to write some filters  (this file has  no filters)
 
 # gzip with individual object
-  SET (arg ${FILE4} -f dset1:GZIP=1  -l dset1:CHUNK=20x10)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE4} -f dset1:GZIP=1  -l dset1:CHUNK=20x10)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (gzip_individual ${TESTTYPE} ${arg})
   
 # gzip for all 
-  SET (arg ${FILE4} -f GZIP=1)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE4} -f GZIP=1)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (gzip_all ${TESTTYPE} ${arg})
 
 # szip with individual object
-  SET (arg ${FILE4} -f dset2:SZIP=8,EC  -l dset2:CHUNK=20x10)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+  set (arg ${FILE4} -f dset2:SZIP=8,EC  -l dset2:CHUNK=20x10)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
   ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg}) 
 
 # szip for all
-  SET (arg ${FILE4} -f SZIP=8,NN)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+  set (arg ${FILE4} -f SZIP=8,NN)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
   ADD_H5_TEST (szip_all ${TESTTYPE} ${arg}) 
 
 # shuffle with individual object
-  SET (arg ${FILE4} -f dset2:SHUF  -l dset2:CHUNK=20x10)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SHUFFLE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SHUFFLE)
+  set (arg ${FILE4} -f dset2:SHUF  -l dset2:CHUNK=20x10)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SHUFFLE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SHUFFLE)
   ADD_H5_TEST (shuffle_individual ${TESTTYPE} ${arg}) 
 
 # shuffle for all
-  SET (arg ${FILE4} -f SHUF)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SHUFFLE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SHUFFLE)
+  set (arg ${FILE4} -f SHUF)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SHUFFLE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SHUFFLE)
   ADD_H5_TEST (shuffle_all ${TESTTYPE} ${arg})
   
 # fletcher32  with individual object
-  SET (arg ${FILE4} -f dset2:FLET  -l dset2:CHUNK=20x10)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_FLETCHER32)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_FLETCHER32)
+  set (arg ${FILE4} -f dset2:FLET  -l dset2:CHUNK=20x10)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_FLETCHER32)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_FLETCHER32)
   ADD_H5_TEST (fletcher_individual ${TESTTYPE} ${arg})
 
 # fletcher32 for all
-  SET (arg ${FILE4} -f FLET)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_FLETCHER32)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_FLETCHER32)
+  set (arg ${FILE4} -f FLET)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_FLETCHER32)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_FLETCHER32)
   ADD_H5_TEST (fletcher_all ${TESTTYPE} ${arg})
 
 # all filters
-  SET (arg ${FILE4} -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE4} -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (all_filters ${TESTTYPE} ${arg})
 
 # verbose gzip with individual object
-  SET (arg ${FILE11} -v -f /dset_deflate:GZIP=9)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE11} -v -f /dset_deflate:GZIP=9)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_CMP_TEST (gzip_verbose_filters "O?...ing file[^\n]+\n" ${TESTTYPE} 0 ${arg})
   
 ###########################################################
@@ -757,154 +760,154 @@
 ###########################################################
 
 # szip copy
-  SET (arg ${FILE7})
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+  set (arg ${FILE7})
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
   ADD_H5_TEST (szip_copy ${TESTTYPE} ${arg})
   
 # szip remove
-  SET (arg ${FILE7} --filter=dset_szip:NONE)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+  set (arg ${FILE7} --filter=dset_szip:NONE)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
   ADD_H5_TEST (szip_remove ${TESTTYPE} ${arg})
   
 # deflate copy
-  SET (arg ${FILE8})
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE8})
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (deflate_copy ${TESTTYPE} ${arg})
 
 # deflate remove
-  SET (arg ${FILE8} -f dset_deflate:NONE)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE8} -f dset_deflate:NONE)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (deflate_remove ${TESTTYPE} ${arg})
     
 # shuffle copy
-  SET (arg ${FILE9})
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SHUFFLE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SHUFFLE)
+  set (arg ${FILE9})
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SHUFFLE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SHUFFLE)
   ADD_H5_TEST (shuffle_copy ${TESTTYPE} ${arg})
 
 # shuffle remove
-  SET (arg ${FILE9} -f dset_shuffle:NONE)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SHUFFLE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SHUFFLE)
+  set (arg ${FILE9} -f dset_shuffle:NONE)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SHUFFLE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SHUFFLE)
   ADD_H5_TEST (shuffle_remove ${TESTTYPE} ${arg})
 
 # fletcher32 copy
-  SET (arg ${FILE10})
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_FLETCHER32)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_FLETCHER32)
+  set (arg ${FILE10})
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_FLETCHER32)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_FLETCHER32)
   ADD_H5_TEST (fletcher_copy ${TESTTYPE} ${arg})
 
 # fletcher32 remove
-  SET (arg ${FILE10} -f dset_fletcher32:NONE)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_FLETCHER32)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_FLETCHER32)
+  set (arg ${FILE10} -f dset_fletcher32:NONE)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_FLETCHER32)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_FLETCHER32)
   ADD_H5_TEST (fletcher_remove ${TESTTYPE} ${arg})
 
 # nbit copy
-  SET (arg ${FILE12})
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_NBIT)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_NBIT)
+  set (arg ${FILE12})
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_NBIT)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_NBIT)
   ADD_H5_TEST (nbit_copy ${TESTTYPE} ${arg})
 
 # nbit remove
-  SET (arg ${FILE12} -f dset_nbit:NONE)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_NBIT)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_NBIT)
+  set (arg ${FILE12} -f dset_nbit:NONE)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_NBIT)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_NBIT)
   ADD_H5_TEST (nbit_remove ${TESTTYPE} ${arg})
 
 # nbit add
-  SET (arg ${FILE12} -f dset_int31:NBIT)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_NBIT)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_NBIT)
+  set (arg ${FILE12} -f dset_int31:NBIT)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_NBIT)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_NBIT)
   ADD_H5_TEST (nbit_add ${TESTTYPE} ${arg})
 
 # scaleoffset copy
-  SET (arg ${FILE13})
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SCALEOFFSET)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SCALEOFFSET)
+  set (arg ${FILE13})
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SCALEOFFSET)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SCALEOFFSET)
   ADD_H5_TEST (scale_copy ${TESTTYPE} ${arg})
 
 # scaleoffset add
-  SET (arg ${FILE13} -f dset_none:SOFF=31,IN)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SCALEOFFSET)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SCALEOFFSET)
+  set (arg ${FILE13} -f dset_none:SOFF=31,IN)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SCALEOFFSET)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SCALEOFFSET)
   ADD_H5_TEST (scale_add ${TESTTYPE} ${arg})
 
 # scaleoffset remove
-  SET (arg ${FILE13} -f dset_scaleoffset:NONE)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SCALEOFFSET)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SCALEOFFSET)
+  set (arg ${FILE13} -f dset_scaleoffset:NONE)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SCALEOFFSET)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SCALEOFFSET)
   ADD_H5_TEST (scale_remove ${TESTTYPE} ${arg})
 
 # remove all  filters
-  SET (arg ${FILE11} -f NONE)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
+  set (arg ${FILE11} -f NONE)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
   ADD_H5_TEST (remove_all ${TESTTYPE} ${arg})
 
 #filter conversions
-  SET (arg ${FILE8} -f dset_deflate:SZIP=8,NN)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE8} -f dset_deflate:SZIP=8,NN)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg}) 
 
-  SET (arg ${FILE7} -f dset_szip:GZIP=1)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE7} -f dset_szip:GZIP=1)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg}) 
 
 #limit
-  SET (arg ${FILE4} -f GZIP=1 -m 1024)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE4} -f GZIP=1 -m 1024)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_DMP_TEST (deflate_limit ${TESTTYPE} 0 ${arg})
 
 #file
-  SET (arg ${FILE4} -e ${INFO_FILE})
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE4} -e ${INFO_FILE})
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg}) 
 
 #########################################################
@@ -987,44 +990,44 @@ ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 CO
   ADD_H5_TEST (native_attr "TEST" ${FILE2} -n)
 
 # latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters)
-  SET (arg --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype])
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype])
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_VERIFY_TEST (layout_long_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg})
 
 # latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
-  SET (arg -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_VERIFY_TEST (layout_short_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg})
 
 # several global filters
-  SET (arg ${FILE4} --filter GZIP=1 --filter SHUF)
-  SET (TESTTYPE "TEST")
-  IF (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SHUFFLE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SHUFFLE)
+  set (arg ${FILE4} --filter GZIP=1 --filter SHUF)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SHUFFLE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SHUFFLE)
   ADD_H5_TEST (global_filters ${TESTTYPE} ${arg})
 
 # syntax of -i infile -o outfile
 # latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
-  SET (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
-  SET (TESTTYPE "LEGACY")
-  IF (NOT USE_FILTER_DEFLATE)
-    SET (TESTTYPE "SKIP")
-  ENDIF (NOT USE_FILTER_DEFLATE)
+  set (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
+  set (TESTTYPE "LEGACY")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
   ADD_H5_TEST_OLD (old_style_layout_short_switches ${TESTTYPE} ${arg})
 
 # add a userblock to file
-  SET (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048)
+  set (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048)
   ADD_H5_TEST (add_userblock "TEST" ${arg})
 
 # add alignment
-  SET (arg ${FILE1} -t 1 -a 1)
+  set (arg ${FILE1} -t 1 -a 1)
   ADD_H5_TEST (add_alignment "TEST" ${arg})
 
 # Check repacking file with old version of layout message (should get upgraded
@@ -1061,19 +1064,20 @@ ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 CO
 ##############################################################################
 ###    P L U G I N  T E S T S
 ##############################################################################
-IF (BUILD_SHARED_LIBS)
+if (BUILD_SHARED_LIBS)
   ADD_H5_UD_TEST (plugin_test 0 h5repack_layout.h5 -v -f UD=257,1,9)
-ELSE (BUILD_SHARED_LIBS)
-  MESSAGE (STATUS " **** Plugins libraries must be built as shared libraries **** ")
-  ADD_TEST (
+  ADD_H5_UD_TEST (plugin_none 0 h5repack_layout.UD.h5 -v -f NONE)
+else (BUILD_SHARED_LIBS)
+  message (STATUS " **** Plugins libraries must be built as shared libraries **** ")
+  add_test (
       NAME H5REPACK-plugin
       COMMAND ${CMAKE_COMMAND} -E echo "SKIP H5PLUGIN TESTING"
   )
-ENDIF (BUILD_SHARED_LIBS)
+endif (BUILD_SHARED_LIBS)
 
-  IF (HDF5_TEST_VFD)
+  if (HDF5_TEST_VFD)
     # Run test with different Virtual File Driver
-    FOREACH (vfd ${VFD_LIST})
+    foreach (vfd ${VFD_LIST})
       ADD_VFD_TEST (${vfd} 0)
-    ENDFOREACH (vfd ${VFD_LIST})
-  ENDIF (HDF5_TEST_VFD)
+    endforeach (vfd ${VFD_LIST})
+  endif (HDF5_TEST_VFD)
diff --git a/tools/h5repack/Makefile.am b/tools/h5repack/Makefile.am
index 663e501..21ac362 100644
--- a/tools/h5repack/Makefile.am
+++ b/tools/h5repack/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src, test, and tools/lib directories
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
 
 # Test programs and scripts
 TEST_SCRIPT=h5repack.sh
@@ -64,7 +64,7 @@ h5repack.sh.chkexe_: h5repacktst.chkexe_
 if HAVE_SHARED_CONDITIONAL
   # Build it as shared library if configure is enabled for shared library.
   lib_LTLIBRARIES=libdynlibadd.la
-  libdynlibadd_la_SOURCES=$(top_srcdir)/test/dynlib1.c
+  libdynlibadd_la_SOURCES=dynlib_rpk.c
 
 install-exec-hook:
 	$(RM) $(DESTDIR)$(libdir)/*dynlib*
@@ -72,7 +72,7 @@ endif
 
 # Temporary files.  *.h5 are generated by h5repack.  They should
 # copied to the testfiles/ directory if update is required.
-CHECK_CLEANFILES+=*.h5 *.bin
+CHECK_CLEANFILES+=*.h5 *.bin testfiles/h5diff_attr1.h5 testfiles/tfamily*.h5
 DISTCLEANFILES=h5repack.sh h5repack_plugin.sh
 
 include $(top_srcdir)/config/conclude.am
diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in
index aa51cd1..44ffb9d 100644
--- a/tools/h5repack/Makefile.in
+++ b/tools/h5repack/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,23 +33,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -68,11 +96,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/h5repack.sh.in $(srcdir)/h5repack_plugin.sh.in \
-	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver
 noinst_PROGRAMS = testh5repack_detect_szip$(EXEEXT)
 @HAVE_SHARED_CONDITIONAL_TRUE@@USE_PLUGINS_CONDITIONAL_TRUE at am__append_1 = h5repack_plugin.sh
 check_PROGRAMS = $(am__EXEEXT_1)
@@ -117,8 +145,9 @@ am__uninstall_files_from_dir = { \
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libdynlibadd_la_LIBADD =
-am__libdynlibadd_la_SOURCES_DIST = $(top_srcdir)/test/dynlib1.c
- at HAVE_SHARED_CONDITIONAL_TRUE@am_libdynlibadd_la_OBJECTS = dynlib1.lo
+am__libdynlibadd_la_SOURCES_DIST = dynlib_rpk.c
+ at HAVE_SHARED_CONDITIONAL_TRUE@am_libdynlibadd_la_OBJECTS =  \
+ at HAVE_SHARED_CONDITIONAL_TRUE@	dynlib_rpk.lo
 libdynlibadd_la_OBJECTS = $(am_libdynlibadd_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -193,12 +222,200 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -210,7 +427,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src, test, and tools/lib directories
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -270,7 +490,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -480,10 +699,8 @@ TRACE = perl $(top_srcdir)/bin/trace
 
 # Temporary files.  *.h5 are generated by h5repack.  They should
 # copied to the testfiles/ directory if update is required.
-CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 *.bin
-
-# Include src, test, and tools/lib directories
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
+CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 *.bin \
+	testfiles/h5diff_attr1.h5 testfiles/tfamily*.h5
 
 # Test programs and scripts
 TEST_SCRIPT = h5repack.sh $(am__append_1)
@@ -506,7 +723,7 @@ h5repack_SOURCES = $(COMMON_SOURCES) h5repack_main.c
 h5repacktst_SOURCES = $(COMMON_SOURCES) h5repacktst.c 
 testh5repack_detect_szip_SOURCES = testh5repack_detect_szip.c
 @HAVE_SHARED_CONDITIONAL_TRUE at lib_LTLIBRARIES = libdynlibadd.la
- at HAVE_SHARED_CONDITIONAL_TRUE@libdynlibadd_la_SOURCES = $(top_srcdir)/test/dynlib1.c
+ at HAVE_SHARED_CONDITIONAL_TRUE@libdynlibadd_la_SOURCES = dynlib_rpk.c
 DISTCLEANFILES = h5repack.sh h5repack_plugin.sh
 
 # Automake needs to be taught how to build lib, progs, and tests targets.
@@ -531,7 +748,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -567,6 +784,7 @@ h5repack.sh: $(top_builddir)/config.status $(srcdir)/h5repack.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 h5repack_plugin.sh: $(top_builddir)/config.status $(srcdir)/h5repack_plugin.sh.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -601,6 +819,7 @@ clean-libLTLIBRARIES:
 	  echo rm -f $${locs}; \
 	  rm -f $${locs}; \
 	}
+
 libdynlibadd.la: $(libdynlibadd_la_OBJECTS) $(libdynlibadd_la_DEPENDENCIES) $(EXTRA_libdynlibadd_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK) $(am_libdynlibadd_la_rpath) $(libdynlibadd_la_OBJECTS) $(libdynlibadd_la_LIBADD) $(LIBS)
 install-binPROGRAMS: $(bin_PROGRAMS)
@@ -612,10 +831,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -636,7 +857,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -667,12 +889,15 @@ 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) $(EXTRA_h5repack_DEPENDENCIES) 
 	@rm -f h5repack$(EXEEXT)
 	$(AM_V_CCLD)$(h5repack_LINK) $(h5repack_OBJECTS) $(h5repack_LDADD) $(LIBS)
+
 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) $(EXTRA_testh5repack_detect_szip_DEPENDENCIES) 
 	@rm -f testh5repack_detect_szip$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(testh5repack_detect_szip_OBJECTS) $(testh5repack_detect_szip_LDADD) $(LIBS)
@@ -683,7 +908,7 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dynlib1.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dynlib_rpk.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/h5repack.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/h5repack_copy.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/h5repack_filters.Po at am__quote@
@@ -700,14 +925,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -716,39 +941,21 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-dynlib1.lo: $(top_srcdir)/test/dynlib1.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dynlib1.lo -MD -MP -MF $(DEPDIR)/dynlib1.Tpo -c -o dynlib1.lo `test -f '$(top_srcdir)/test/dynlib1.c' || echo '$(srcdir)/'`$(top_srcdir)/test/dynlib1.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/dynlib1.Tpo $(DEPDIR)/dynlib1.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(top_srcdir)/test/dynlib1.c' object='dynlib1.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dynlib1.lo `test -f '$(top_srcdir)/test/dynlib1.c' || echo '$(srcdir)/'`$(top_srcdir)/test/dynlib1.c
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -760,15 +967,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -777,9 +980,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -795,6 +999,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+h5repacktst.log: h5repacktst$(EXEEXT)
+	@p='h5repacktst$(EXEEXT)'; \
+	b='h5repacktst'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -856,6 +1212,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -943,21 +1302,22 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES
 
 .MAKE: check-am install-am install-exec-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libLTLIBRARIES 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 install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-exec-hook install-html \
-	install-html-am install-info install-info-am \
-	install-libLTLIBRARIES 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 \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libLTLIBRARIES clean-libtool \
+	clean-noinstPROGRAMS cscopelist-am ctags ctags-am 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-exec-hook install-html install-html-am \
+	install-info install-info-am install-libLTLIBRARIES \
+	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 \
+	recheck tags tags-am uninstall uninstall-am \
 	uninstall-binPROGRAMS uninstall-libLTLIBRARIES
 
 
diff --git a/tools/h5repack/dynlib_rpk.c b/tools/h5repack/dynlib_rpk.c
new file mode 100644
index 0000000..1ccc33a
--- /dev/null
+++ b/tools/h5repack/dynlib_rpk.c
@@ -0,0 +1,97 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group.                                               *
+ * 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 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.            *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/*
+ * Programmer:	Raymond Lu
+ *		13 February 2013
+ *
+ * Purpose:	Tests the plugin module (H5PL)
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "H5PLextern.h"
+
+#define H5Z_FILTER_DYNLIB1      257
+
+static size_t H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts,
+                const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf);
+
+/* This message derives from H5Z */
+const H5Z_class2_t H5Z_DYNLIB1[1] = {{
+    H5Z_CLASS_T_VERS,                /* H5Z_class_t version             */
+    H5Z_FILTER_DYNLIB1,		     /* Filter id number		*/
+    1, 1,                            /* Encoding and decoding enabled   */
+    "dynlib1",			     /* Filter name for debugging	*/
+    NULL,                            /* The "can apply" callback        */
+    NULL,                            /* The "set local" callback        */
+    (H5Z_func_t)H5Z_filter_dynlib1,    /* The actual filter function	*/
+}};
+
+H5PL_type_t   H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;}
+const void    *H5PLget_plugin_info(void) {return H5Z_DYNLIB1;}
+
+/*-------------------------------------------------------------------------
+ * Function:	H5Z_filter_dynlib1
+ *
+ * Purpose:	A dynlib1 filter method that adds on and subtract from
+ *              the original value with another value.  It will be built 
+ *              as a shared library.  plugin.c test will load and use 
+ *              this filter library.    
+ *
+ * Return:	Success:	Data chunk size
+ *
+ *		Failure:	0
+ *
+ * Programmer:	Raymond Lu
+ *              29 March 2013
+ *
+ *-------------------------------------------------------------------------
+ */
+static size_t
+H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts,
+      const unsigned int *cd_values, size_t nbytes,
+      size_t *buf_size, void **buf)
+{
+    int *int_ptr = (int *)*buf;          /* Pointer to the data values */
+    size_t buf_left = *buf_size;  /* Amount of data buffer left to process */
+    int add_on = 0;
+
+    /* Check for the correct number of parameters */
+    if(cd_nelmts == 0)
+        return(0);
+
+    /* Check that permanent parameters are set correctly */
+    if(cd_values[0] > 9)
+        return(0);
+  
+    add_on = (int)cd_values[0];
+
+    if(flags & H5Z_FLAG_REVERSE) { /*read*/
+        /* Substract the "add on" value to all the data values */
+        while(buf_left > 0) {
+            *int_ptr++ -= add_on;
+            buf_left -= sizeof(int);
+        } /* end while */
+    } /* end if */
+    else { /*write*/
+        /* Add the "add on" value to all the data values */
+        while(buf_left > 0) {
+            *int_ptr++ += add_on;
+            buf_left -= sizeof(int);
+        } /* end while */
+    } /* end else */
+
+    return nbytes;
+} /* end H5Z_filter_dynlib1() */
+
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
index 045aebf..a4d12bd 100644
--- a/tools/h5repack/h5repack.sh.in
+++ b/tools/h5repack/h5repack.sh.in
@@ -70,7 +70,7 @@ SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
 SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
 SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
 
-TESTDIR=./testfiles
+TESTDIR=./testpack
 test -d $TESTDIR || mkdir $TESTDIR
 
 ######################################################################
@@ -209,6 +209,7 @@ DIFFTEST()
 {
     VERIFY h5diff output $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5DIFF_BIN -q  "$@" 
     )
     RET=$?
@@ -229,14 +230,15 @@ DIFFTEST()
 TOOLTEST() 
 {
     echo $@
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     shift
     shift
 
     # Run test.
     TESTING $H5REPACK $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
     )
     RET=$?
@@ -254,11 +256,11 @@ TOOLTEST()
 # Verifying layouts of a dataset 
 VERIFY_LAYOUT_DSET()
 {
-    layoutfile=$TESTDIR/layout-$1.$2
+    layoutfile=layout-$1.$2
     dset=$3
     expectlayout=$4
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     shift
     shift
     shift
@@ -266,6 +268,7 @@ VERIFY_LAYOUT_DSET()
    
     TESTING  $H5REPACK $@
     ( 
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
     )
     RET=$?
@@ -281,9 +284,10 @@ VERIFY_LAYOUT_DSET()
     # check the layout from a dataset
     VERIFY  "a dataset layout"
     (
+        cd $TESTDIR
         $RUNSERIAL $H5DUMP_BIN -d $dset -pH $outfile > $layoutfile
     )
-    $GREP $expectlayout $layoutfile > /dev/null
+    $GREP $expectlayout $TESTDIR/$layoutfile > /dev/null
     if [ $? -eq 0 ]; then
         echo " PASSED"
     else
@@ -301,8 +305,8 @@ VERIFY_LAYOUT_DSET()
 VERIFY_LAYOUT_ALL()
 {
     infile=$2
-    outfile=$TESTDIR/out-$1.$2
-    layoutfile=$TESTDIR/layout-$1.$2
+    outfile=out-$1.$2
+    layoutfile=layout-$1.$2
     expectlayout=$3
     shift
     shift
@@ -310,6 +314,7 @@ VERIFY_LAYOUT_ALL()
     
     TESTING  $H5REPACK $@
     ( 
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
     )
     RET=$?
@@ -327,6 +332,7 @@ VERIFY_LAYOUT_ALL()
     # check if the other layouts still exsit
     VERIFY  "layouts"
     (
+        cd $TESTDIR
         echo
         # if CONTIGUOUS
         if [ $expectlayout = "CONTIGUOUS" ]; then
@@ -401,14 +407,15 @@ VERIFY_LAYOUT_ALL()
 #
 TOOLTEST0() 
 {
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     shift
     shift
 
     # Run test.
     TESTING $H5REPACK $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@"
     )
     RET=$?
@@ -428,14 +435,15 @@ TOOLTEST0()
 #
 TOOLTEST1() 
 {
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     shift
     shift
 
     # Run test.
     TESTING $H5REPACK $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
     )
     RET=$?
@@ -458,14 +466,15 @@ TOOLTESTV()
     actual="$TESTDIR/`basename $2 .ddl`.out"
     actual_err="$TESTDIR/`basename $2 .ddl`.err"
 
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     shift
     shift
     
     # Run test.
     TESTING $H5REPACK $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
     ) >$actual 2>$actual_err
     RET=$?
@@ -500,8 +509,8 @@ TOOLTESTV()
 #
 TOOLTEST_DUMP() 
 {
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     expect="$TESTDIR/$1.$2.ddl"
     actual="$TESTDIR/out-$1.$2.out"
     actual_err="$TESTDIR/out-$1.$2.err"
@@ -512,6 +521,7 @@ TOOLTEST_DUMP()
     # Run test.
     TESTING $H5REPACK $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
     ) >$actual 2>$actual_err
     RET=$?
@@ -522,6 +532,7 @@ TOOLTEST_DUMP()
      echo " PASSED"
      VERIFY h5dump output $@
      (
+        cd $TESTDIR
         $RUNSERIAL $H5DUMP_BIN -pH $outfile 
      ) >$actual 2>$actual_err
      cat $actual_err >> $actual
@@ -559,14 +570,15 @@ TOOLTEST_DUMP()
 # Verify the output file of second run is larger than the one of 1st run.
 TOOLTEST_META()
 {
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     shift
     shift
 
     # Run test.
     TESTING $H5REPACK $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN $infile $outfile
     )
     RET=$?
@@ -578,12 +590,13 @@ TOOLTEST_META()
         DIFFTEST $infile $outfile
     fi
     # get the size of the first output file
-    size1=`wc -c $outfile | cut -d' ' -f1`
+    size1=`wc -c $TESTDIR/$outfile | cut -d' ' -f1`
 
     # 2nd run with metadata option
     # Run test.
     TESTING $H5REPACK $@
     (
+        cd $TESTDIR
         $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
     )
     RET=$?
@@ -595,7 +608,7 @@ TOOLTEST_META()
         DIFFTEST $infile $outfile
     fi
     # get the size of the second output file
-    size2=`wc -c $outfile | cut -d' ' -f1`
+    size2=`wc -c $TESTDIR/$outfile | cut -d' ' -f1`
 
     # verify sizes.
     MESSAGE "Verify the sizes of both output files ($size1 vs $size2)"
@@ -927,7 +940,7 @@ else
 fi
 
 #file
-arg="h5repack_layout.h5 -e $TESTDIR/h5repack.info"
+arg="h5repack_layout.h5 -e h5repack.info"
 if test $USE_FILTER_DEFLATE != "yes" ; then
  SKIP $arg 
 else
@@ -1064,7 +1077,7 @@ else
 fi 
 
 # add a userblock to file
-arg="h5repack_objs.h5 -u $TESTDIR/ublock.bin -b 2048"
+arg="h5repack_objs.h5 -u ublock.bin -b 2048"
 TOOLTEST add_userblock $arg
 
 # add alignment
diff --git a/tools/h5repack/h5repack_plugin.sh.in b/tools/h5repack/h5repack_plugin.sh.in
index df4b374..7502397 100644
--- a/tools/h5repack/h5repack_plugin.sh.in
+++ b/tools/h5repack/h5repack_plugin.sh.in
@@ -49,7 +49,7 @@ SRC_TOOLS="$srcdir/.."
 # testfiles source dirs for tools
 SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
 
-TESTDIR=testfiles
+TESTDIR=testplug
 test -d $TESTDIR || mkdir $TESTDIR
 
 ######################################################################
@@ -66,6 +66,10 @@ $SRC_H5REPACK_TESTFILES/h5repack_layout.h5
 $SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl
 $SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst
 "
+#$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5
+#$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5-plugin_none.ddl
+#$SRC_H5REPACK_TESTFILES/plugin_none.h5repack_layout.UD.h5.tst
+#"
 
 #
 # copy test files and expected output files from source dirs to test dir
@@ -88,7 +92,7 @@ if [ $? != 0 ]; then
 fi
 
 # setup plugin path
-ENVCMD="env HDF5_PLUGIN_PATH=${PLUGIN_LIBDIR}"
+ENVCMD="env HDF5_PLUGIN_PATH=../${PLUGIN_LIBDIR}"
 
 COPY_TESTFILES_TO_TESTDIR()
 {
@@ -171,8 +175,8 @@ STDOUT_FILTER() {
 TOOLTEST_DUMP() 
 {
     echo $@
-    infile=$TESTDIR/$2
-    outfile=$TESTDIR/out-$1.$2
+    infile=$2
+    outfile=out-$1.$2
     expect1="$TESTDIR/$1.$2.tst"
     actual1="$TESTDIR/$1.$2.out"
     actual1_err="$TESTDIR/$1.$2.err"
@@ -186,35 +190,37 @@ TOOLTEST_DUMP()
     # Run test.
     TESTING $H5REPACK $@
     (
-        $ENVCMD $H5REPACK_BIN "$@" $infile $outfile
+      cd $TESTDIR
+      $ENVCMD $H5REPACK_BIN "$@" $infile $outfile
     ) >$actual1 2>$actual1_err
     RET=$?
     STDOUT_FILTER $actual1
     cat $actual1_err >> $actual1
     if [ $RET != 0 ] ; then
-     echo "*FAILED*"
-     nerrors="`expr $nerrors + 1`"
-    else
-     echo " PASSED"
-     if cmp -s $expect1 $actual1; then
-      echo " PASSED"
-     else
       echo "*FAILED*"
-      echo "    Expected result (*.tst) differs from actual result (*.out)"
       nerrors="`expr $nerrors + 1`"
-      test yes = "$verbose" && diff -c $expect1 $actual1 |sed 's/^/    /'
-     fi
-     VERIFY h5dump output -pH $outfile 
-     (
+    else
+      echo " PASSED"
+      if cmp -s $expect1 $actual1; then
+        echo " PASSED"
+      else
+        echo "*FAILED*"
+        echo "    Expected result (*.tst) differs from actual result (*.out)"
+        nerrors="`expr $nerrors + 1`"
+        test yes = "$verbose" && diff -c $expect1 $actual1 |sed 's/^/    /'
+      fi
+      VERIFY h5dump output -pH $outfile 
+      (
+        cd $TESTDIR
         $ENVCMD $H5DUMP_BIN -pH $outfile 
-     ) >$actual2 2>$actual2_err
-     RET=$?
-     cat $actual2_err >> $actual2
+      ) >$actual2 2>$actual2_err
+      RET=$?
+      cat $actual2_err >> $actual2
 
-     if cmp -s $expect2 $actual2; then
-      echo " PASSED"
-     else
-      echo "*FAILED*"
+      if cmp -s $expect2 $actual2; then
+        echo " PASSED"
+      else
+        echo "*FAILED*"
       echo "    Expected result (*.ddl) differs from actual result (*.out)"
       nerrors="`expr $nerrors + 1`"
       test yes = "$verbose" && diff -c $expect2 $actual2 |sed 's/^/    /'
@@ -237,6 +243,9 @@ COPY_TESTFILES_TO_TESTDIR
 arg="h5repack_layout.h5 -v -f UD=257,1,9"
 TOOLTEST_DUMP plugin_test $arg 
 
+#arg="h5repack_layout.UD.h5 -v -f NONE"
+#TOOLTEST_DUMP plugin_none $arg 
+
 # print results
 if test $nerrors -ne 0 ; then
     echo "$nerrors errors encountered"
diff --git a/tools/h5repack/h5repack_refs.c b/tools/h5repack/h5repack_refs.c
index 71615f2..b844280 100644
--- a/tools/h5repack/h5repack_refs.c
+++ b/tools/h5repack/h5repack_refs.c
@@ -193,8 +193,6 @@ int do_copy_refobjs(hid_t fidin,
                                         goto error;
                                     if(options->verbose)
                                     {
-
-
                                         printf(FORMAT_OBJ,"dset",travt->objs[i].name );
                                         printf("object <%s> object reference created to <%s>\n",
                                             travt->objs[i].name,
@@ -468,7 +466,7 @@ static int copy_refs_attr(hid_t loc_in,
     hbool_t    is_ref=0, is_ref_vlen=0, is_ref_array=0, is_ref_comp=0;
     void  *refbuf = NULL;
     void  *buf = NULL;
-    const char* refname;
+    const char* refname = NULL;
     int   *ref_comp_index = NULL;
     size_t *ref_comp_size = NULL;
     int    ref_comp_field_n = 0;
@@ -477,8 +475,7 @@ static int copy_refs_attr(hid_t loc_in,
     if(H5Oget_info(loc_in, &oinfo) < 0)
         goto error;
 
-    for(u = 0; u < (unsigned)oinfo.num_attrs; u++)
-    {
+    for(u = 0; u < (unsigned)oinfo.num_attrs; u++) {
     	is_ref = is_ref_vlen = is_ref_array = is_ref_comp = 0;
 
         /* open attribute */
@@ -499,56 +496,55 @@ static int copy_refs_attr(hid_t loc_in,
 
         is_ref = (type_class == H5T_REFERENCE);
 
-        if (type_class == H5T_VLEN ) {
-        	hid_t base_type = -1;
-        	base_type = H5Tget_super(ftype_id);
-        	is_ref_vlen = (H5Tget_class(base_type)==H5T_REFERENCE);
-        	msize = H5Tget_size(base_type);
-        	H5Tclose(base_type);
+        if(type_class == H5T_VLEN ) {
+            hid_t base_type;
+
+            base_type = H5Tget_super(ftype_id);
+            is_ref_vlen = (H5Tget_class(base_type)==H5T_REFERENCE);
+            msize = H5Tget_size(base_type);
+            H5Tclose(base_type);
         }
+        else if(type_class == H5T_ARRAY ) {
+            hid_t base_type;
 
-        if (type_class == H5T_ARRAY ) {
-        	hid_t base_type = -1;
-        	base_type = H5Tget_super(ftype_id);
-        	is_ref_array = (H5Tget_class(base_type)==H5T_REFERENCE);
-        	msize = H5Tget_size(base_type);
-        	H5Tclose(base_type);
+            base_type = H5Tget_super(ftype_id);
+            is_ref_array = (H5Tget_class(base_type)==H5T_REFERENCE);
+            msize = H5Tget_size(base_type);
+            H5Tclose(base_type);
         }
+        else if(type_class == H5T_COMPOUND) {
+            int nmembers = H5Tget_nmembers(ftype_id) ;
 
-        if (type_class == H5T_COMPOUND) {
-        	int nmembers = H5Tget_nmembers(ftype_id) ;
-        	if (nmembers < 1)
-        		goto error;
+            if (nmembers < 1)
+                goto error;
 
             ref_comp_index = (int *)HDmalloc(nmembers*sizeof (int));
             ref_comp_size = (size_t *)HDmalloc(nmembers*sizeof(ref_comp_size));
             ref_comp_field_n = 0;
 
-        	for (i=0; i<(unsigned)nmembers; i++) {
-        		hid_t mtid = H5Tget_member_type( ftype_id, i );
-        		if ((H5Tget_class(mtid)==H5T_REFERENCE)) {
-        			ref_comp_index[ref_comp_field_n] = i;
-        			ref_comp_size[ref_comp_field_n] = H5Tget_size(mtid);
-        			ref_comp_field_n++;
-        		}
-        		H5Tclose(mtid);
-        	}
+            for (i=0; i<(unsigned)nmembers; i++) {
+                hid_t mtid = H5Tget_member_type( ftype_id, i );
+
+                if ((H5Tget_class(mtid)==H5T_REFERENCE)) {
+                    ref_comp_index[ref_comp_field_n] = i;
+                    ref_comp_size[ref_comp_field_n] = H5Tget_size(mtid);
+                    ref_comp_field_n++;
+                }
+                H5Tclose(mtid);
+            }
             
             /* if compound don't contain reference type member, free the above 
              * mallocs. Otherwise there can be memory leaks by the 'continue' 
              * statement below. */
-            if (!ref_comp_field_n) 
-            {
-                if (ref_comp_index) 
-                {
-                	HDfree(ref_comp_index);
-                	ref_comp_index = NULL;
+            if (!ref_comp_field_n) {
+                if (ref_comp_index) {
+                    HDfree(ref_comp_index);
+                    ref_comp_index = NULL;
                 }
 
-                if (ref_comp_size) 
-                {
+                if (ref_comp_size) {
             	    HDfree(ref_comp_size);
-        	        ref_comp_size = NULL;
+                    ref_comp_size = NULL;
                 }
             }
         }
@@ -556,10 +552,10 @@ static int copy_refs_attr(hid_t loc_in,
         is_ref_comp = (ref_comp_field_n > 0);
 
         if (!(is_ref || is_ref_vlen || is_ref_array || is_ref_comp)) {
-        	H5Tclose(mtype_id);
-           	H5Tclose(ftype_id);
-        	H5Aclose(attr_id);
-        	continue;
+            H5Tclose(mtype_id);
+            H5Tclose(ftype_id);
+            H5Aclose(attr_id);
+            continue;
         }
 
         /* get name */
@@ -584,32 +580,30 @@ static int copy_refs_attr(hid_t loc_in,
             nelmts *= dims[j];
 
         if (is_ref_array) {
-        	unsigned        array_rank = 0;
-        	hsize_t    array_size = 1;
-        	hsize_t array_dims[H5S_MAX_RANK];
-        	hid_t base_type = -1;
-        	base_type = H5Tget_super(ftype_id);
-        	msize = H5Tget_size(base_type);
-           	H5Tclose(base_type);
-
-        	array_rank = H5Tget_array_ndims(mtype_id);
-        	H5Tget_array_dims2(mtype_id, array_dims);
+            unsigned        array_rank = 0;
+            hsize_t    array_size = 1;
+            hsize_t array_dims[H5S_MAX_RANK];
+            hid_t base_type;
+
+            base_type = H5Tget_super(ftype_id);
+            msize = H5Tget_size(base_type);
+            H5Tclose(base_type);
+
+            array_rank = H5Tget_array_ndims(mtype_id);
+            H5Tget_array_dims2(mtype_id, array_dims);
             for(j = 0; j <array_rank; j++)
             	array_size *= array_dims[j];
             nelmts *= array_size;
-         }
+        }
 
         if((attr_out = H5Acreate2(loc_out, name, ftype_id, space_id, H5P_DEFAULT, H5P_DEFAULT)) < 0)
             goto error;
 
-        if (nelmts>0)
-        {
+        if (nelmts>0) {
             /* handle object references */
-            if((is_ref || is_ref_array) && (H5R_OBJ_REF_BUF_SIZE==msize))
-            {
+            if((is_ref || is_ref_array) && (H5R_OBJ_REF_BUF_SIZE==msize)) {
                 buf = (hobj_ref_t *)HDmalloc((unsigned)(nelmts * msize));
-                if(buf == NULL)
-                {
+                if(buf == NULL) {
                     printf("cannot read into memory\n");
                     goto error;
                 } /* end if */
@@ -617,26 +611,23 @@ static int copy_refs_attr(hid_t loc_in,
                     goto error;
 
                 refbuf = (hobj_ref_t *)HDcalloc((unsigned)nelmts, msize);
-                if(refbuf == NULL)
-                {
-                    printf( "cannot allocate memory\n" );
+                if(refbuf == NULL) {
+                    printf("cannot allocate memory\n");
                     goto error;
                 } /* end if */
 
-                for(i = 0; i < (unsigned)nelmts; i++)
-                {
+                for(i = 0; i < (unsigned)nelmts; i++) {
                     if (update_ref_value(attr_id, H5R_OBJECT, &((hobj_ref_t *)buf)[i], fidout, &((hobj_ref_t *)refbuf)[i], travt)<0)
-                		continue;
+                        continue;
                     if(options->verbose)
                         printf("object <%s> reference created to <%s>\n", name, refname);
-                } /* k */
-            }/*H5T_STD_REF_OBJ*/
+                } /* i */
+            } /* H5T_STD_REF_OBJ */
             /* handle region references */
-            else if((is_ref || is_ref_array) && (H5R_DSET_REG_REF_BUF_SIZE == msize))
-            {
+            else if((is_ref || is_ref_array) && (H5R_DSET_REG_REF_BUF_SIZE == msize)) {
                 buf = (hdset_reg_ref_t *)HDmalloc((unsigned)(nelmts * msize));
-                if(buf == NULL)
-                {
+
+                if(buf == NULL) {
                     printf( "cannot read into memory\n" );
                     goto error;
                 } /* end if */
@@ -648,16 +639,14 @@ static int copy_refs_attr(hid_t loc_in,
                 *-------------------------------------------------------------------------
                 */
                 refbuf = (hdset_reg_ref_t *)HDcalloc(sizeof(hdset_reg_ref_t), (size_t)nelmts); /*init to zero */
-                if(refbuf == NULL)
-                {
+                if(refbuf == NULL) {
                     printf( "cannot allocate memory\n" );
                     goto error;
                 } /* end if */
 
-                for(i = 0; i < (unsigned)nelmts; i++)
-                {
+                for(i = 0; i < (unsigned)nelmts; i++) {
                     if (update_ref_value(attr_id, H5R_DATASET_REGION, &((hdset_reg_ref_t *)buf)[i], fidout, &((hdset_reg_ref_t *)refbuf)[i], travt)<0)
-                		continue;
+                        continue;
                     if(options->verbose)
                         printf("object <%s> region reference created to <%s>\n", name, refname);
                 }
@@ -668,8 +657,7 @@ static int copy_refs_attr(hid_t loc_in,
                 buf = (hvl_t *)HDmalloc((unsigned)(nelmts * sizeof(hvl_t)));
                 refbuf = buf; /* reuse the read buffer for write */
 
-                if(buf == NULL)
-                {
+                if(buf == NULL) {
                     printf( "cannot read into memory\n" );
                     goto error;
                 } /* end if */
@@ -677,28 +665,31 @@ static int copy_refs_attr(hid_t loc_in,
                 if(H5Aread(attr_id, mtype_id, buf) < 0)
                     goto error;
 
- 				if (H5R_OBJ_REF_BUF_SIZE==msize) {
-					hobj_ref_t ref_out;
-					for (i=0; i<(unsigned)nelmts; i++) {
-						hobj_ref_t *ptr = (hobj_ref_t *)((hvl_t *)buf)[i].p;
-						for (j=0; j<((hvl_t *)buf)[i].len; j++ ) {
-							if (update_ref_value(attr_id, H5R_OBJECT, &(ptr[j]), fidout, &ref_out, travt)<0)
-								continue;
-							HDmemcpy(&(ptr[j]), &ref_out, msize);
-						}
-					}  /* for (i=0; i<nelems; i++) */
-				} else if (H5R_DSET_REG_REF_BUF_SIZE == msize) {
-
-					hdset_reg_ref_t ref_out;
-					for (i=0; i<(unsigned)nelmts; i++) {
-						hdset_reg_ref_t *ptr = (hdset_reg_ref_t *)((hvl_t *)buf)[i].p;
-						for (j=0; j<((hvl_t *)buf)[i].len; j++ ) {
-							if (update_ref_value(attr_id, H5R_DATASET_REGION, &(ptr[j]), fidout, &ref_out, travt)<0)
-								continue;
-							HDmemcpy(&(ptr[j]), &ref_out, msize);
-						}
-					}  /* for (i=0; i<nelems; i++) */
-				}
+                if (H5R_OBJ_REF_BUF_SIZE==msize) {
+                    hobj_ref_t ref_out;
+
+                    for (i=0; i<(unsigned)nelmts; i++) {
+                        hobj_ref_t *ptr = (hobj_ref_t *)((hvl_t *)buf)[i].p;
+
+                        for (j=0; j<((hvl_t *)buf)[i].len; j++ ) {
+                            if (update_ref_value(attr_id, H5R_OBJECT, &(ptr[j]), fidout, &ref_out, travt)<0)
+                                continue;
+                            HDmemcpy(&(ptr[j]), &ref_out, msize);
+                        }
+                    }  /* for (i=0; i<nelems; i++) */
+                } else if (H5R_DSET_REG_REF_BUF_SIZE == msize) {
+                    hdset_reg_ref_t ref_out;
+
+                    for (i=0; i<(unsigned)nelmts; i++) {
+                        hdset_reg_ref_t *ptr = (hdset_reg_ref_t *)((hvl_t *)buf)[i].p;
+
+                        for (j=0; j<((hvl_t *)buf)[i].len; j++ ) {
+                            if (update_ref_value(attr_id, H5R_DATASET_REGION, &(ptr[j]), fidout, &ref_out, travt)<0)
+                                continue;
+                            HDmemcpy(&(ptr[j]), &ref_out, msize);
+                        }
+                    }  /* for (i=0; i<nelems; i++) */
+                }
             } /* else if (is_ref_vlen) */
             else if (is_ref_comp) {
             	/* handle ref fields in a compound */
@@ -822,9 +813,9 @@ MapIdToName(hid_t refobj_id, trav_table_t *travt)
 
     /* linear search */
     for(u = 0; u < travt->nobjs; u++) {
-        if(travt->objs[u].type == H5O_TYPE_DATASET ||
-                travt->objs[u].type == H5O_TYPE_GROUP ||
-                travt->objs[u].type == H5O_TYPE_NAMED_DATATYPE) {
+        if(travt->objs[u].type == (h5trav_type_t)H5O_TYPE_DATASET ||
+                travt->objs[u].type == (h5trav_type_t)H5O_TYPE_GROUP ||
+                travt->objs[u].type == (h5trav_type_t)H5O_TYPE_NAMED_DATATYPE) {
             H5O_info_t   ref_oinfo;     /* Stat for the refobj id */
 
             /* obtain information to identify the referenced object uniquely */
diff --git a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl b/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
index d380201..b8e7e68 100644
--- a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
+++ b/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/out-deflate_limit.h5repack_layout.h5" {
+HDF5 "out-deflate_limit.h5repack_layout.h5" {
 GROUP "/" {
    DATASET "dset1" {
       DATATYPE  H5T_STD_I32LE
diff --git a/tools/h5repack/testfiles/h5repack_layout.UD.h5 b/tools/h5repack/testfiles/h5repack_layout.UD.h5
new file mode 100644
index 0000000..caf2024
Binary files /dev/null and b/tools/h5repack/testfiles/h5repack_layout.UD.h5 differ
diff --git a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl b/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
similarity index 79%
copy from tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
copy to tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
index d380201..fb94c21 100644
--- a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
+++ b/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
@@ -1,14 +1,14 @@
-HDF5 "./testfiles/out-deflate_limit.h5repack_layout.h5" {
+HDF5 "out-plugin_none.h5repack_layout.UD.h5" {
 GROUP "/" {
    DATASET "dset1" {
       DATATYPE  H5T_STD_I32LE
       DATASPACE  SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
       STORAGE_LAYOUT {
          CHUNKED ( 40, 20 )
-         SIZE 1150 (2.783:1 COMPRESSION)
+         SIZE 3200
       }
       FILTERS {
-         COMPRESSION DEFLATE { LEVEL 1 }
+         NONE
       }
       FILLVALUE {
          FILL_TIME H5D_FILL_TIME_IFSET
@@ -23,10 +23,10 @@ GROUP "/" {
       DATASPACE  SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
       STORAGE_LAYOUT {
          CHUNKED ( 40, 20 )
-         SIZE 1150 (2.783:1 COMPRESSION)
+         SIZE 3200
       }
       FILTERS {
-         COMPRESSION DEFLATE { LEVEL 1 }
+         NONE
       }
       FILLVALUE {
          FILL_TIME H5D_FILL_TIME_IFSET
@@ -41,10 +41,10 @@ GROUP "/" {
       DATASPACE  SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
       STORAGE_LAYOUT {
          CHUNKED ( 40, 20 )
-         SIZE 1150 (2.783:1 COMPRESSION)
+         SIZE 3200
       }
       FILTERS {
-         COMPRESSION DEFLATE { LEVEL 1 }
+         NONE
       }
       FILLVALUE {
          FILL_TIME H5D_FILL_TIME_IFSET
@@ -59,10 +59,10 @@ GROUP "/" {
       DATASPACE  SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
       STORAGE_LAYOUT {
          CHUNKED ( 40, 20 )
-         SIZE 1150 (2.783:1 COMPRESSION)
+         SIZE 3200
       }
       FILTERS {
-         COMPRESSION DEFLATE { LEVEL 1 }
+         NONE
       }
       FILLVALUE {
          FILL_TIME H5D_FILL_TIME_IFSET
@@ -77,10 +77,10 @@ GROUP "/" {
       DATASPACE  SIMPLE { ( 40, 20 ) / ( 40, H5S_UNLIMITED ) }
       STORAGE_LAYOUT {
          CHUNKED ( 20, 10 )
-         SIZE 1283 (2.494:1 COMPRESSION)
+         SIZE 3200
       }
       FILTERS {
-         COMPRESSION DEFLATE { LEVEL 1 }
+         NONE
       }
       FILLVALUE {
          FILL_TIME H5D_FILL_TIME_IFSET
@@ -95,10 +95,10 @@ GROUP "/" {
       DATASPACE  SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
       STORAGE_LAYOUT {
          CHUNKED ( 40, 20 )
-         SIZE 1150 (2.783:1 COMPRESSION)
+         SIZE 3200
       }
       FILTERS {
-         COMPRESSION DEFLATE { LEVEL 1 }
+         NONE
       }
       FILLVALUE {
          FILL_TIME H5D_FILL_TIME_IFSET
@@ -113,10 +113,10 @@ GROUP "/" {
       DATASPACE  SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
       STORAGE_LAYOUT {
          CHUNKED ( 40, 20 )
-         SIZE 1150 (2.783:1 COMPRESSION)
+         SIZE 3200
       }
       FILTERS {
-         COMPRESSION DEFLATE { LEVEL 1 }
+         NONE
       }
       FILLVALUE {
          FILL_TIME H5D_FILL_TIME_IFSET
diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl
index a7ba967..7a3a01e 100644
--- a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl
+++ b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl
@@ -1,4 +1,4 @@
-HDF5 "testfiles/out-plugin_test.h5repack_layout.h5" {
+HDF5 "out-plugin_test.h5repack_layout.h5" {
 GROUP "/" {
    DATASET "dset1" {
       DATATYPE  H5T_STD_I32LE
diff --git a/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst b/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst
new file mode 100644
index 0000000..4fb6906
--- /dev/null
+++ b/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst
@@ -0,0 +1,14 @@
+Objects to modify layout are...
+Objects to apply filter are...
+ Uncompress all
+-----------------------------------------
+ Type     Filter (Compression)     Name
+-----------------------------------------
+ group                       /
+ dset       (1.000:1)        /dset1
+ dset       (1.000:1)        /dset2
+ dset       (1.000:1)        /dset3
+ dset       (1.000:1)        /dset4
+ dset       (1.000:1)        /dset_chunk
+ dset       (1.000:1)        /dset_compact
+ dset       (1.000:1)        /dset_contiguous
diff --git a/tools/h5stat/CMakeLists.txt b/tools/h5stat/CMakeLists.txt
index 6086fc2..82f0ffb 100644
--- a/tools/h5stat/CMakeLists.txt
+++ b/tools/h5stat/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_H5STAT)
 
 #-----------------------------------------------------------------------------
@@ -9,30 +9,30 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 # --------------------------------------------------------------------
 # Add the h5stat executables
 # --------------------------------------------------------------------
-ADD_EXECUTABLE (h5stat ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/h5stat.c)
+add_executable (h5stat ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/h5stat.c)
 TARGET_NAMING (h5stat ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5stat " " " ")
-TARGET_LINK_LIBRARIES (h5stat  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5stat PROPERTIES FOLDER tools)
+target_link_libraries (h5stat  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5stat PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES h5stat)
+set (H5_DEP_EXECUTABLES h5stat)
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Add the h5stat test executables
   # --------------------------------------------------------------------
-  IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-    ADD_EXECUTABLE (h5stat_gentest ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/h5stat_gentest.c)
+  if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    add_executable (h5stat_gentest ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/h5stat_gentest.c)
     TARGET_NAMING (h5stat_gentest ${LIB_TYPE})
     TARGET_C_PROPERTIES (h5stat_gentest " " " ")
-    TARGET_LINK_LIBRARIES (h5stat_gentest ${HDF5_LIB_TARGET})
-    SET_TARGET_PROPERTIES (h5stat_gentest PROPERTIES FOLDER generator/tools)
+    target_link_libraries (h5stat_gentest ${HDF5_LIB_TARGET})
+    set_target_properties (h5stat_gentest PROPERTIES FOLDER generator/tools)
     
-    #ADD_TEST (NAME h5stat_gentest COMMAND $<TARGET_FILE:h5stat_gentest>)
-  ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    #add_test (NAME h5stat_gentest COMMAND $<TARGET_FILE:h5stat_gentest>)
+  endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -46,7 +46,7 @@ ENDIF (BUILD_TESTING)
 
 #INSTALL_PROGRAM_PDB (h5stat ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5stat
     RUNTIME DESTINATION
diff --git a/tools/h5stat/CMakeTests.cmake b/tools/h5stat/CMakeTests.cmake
index 0e4315f..b803dff 100644
--- a/tools/h5stat/CMakeTests.cmake
+++ b/tools/h5stat/CMakeTests.cmake
@@ -8,7 +8,7 @@
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the test directory into the source directory
   # --------------------------------------------------------------------
-  SET (HDF5_REFERENCE_FILES
+  set (HDF5_REFERENCE_FILES
       h5stat_help1.ddl
       h5stat_help2.ddl
       h5stat_notexist.ddl
@@ -41,34 +41,34 @@
       h5stat_numattrs3.ddl
       h5stat_numattrs4.ddl
   )
-  SET (HDF5_REFERENCE_TEST_FILES
+  set (HDF5_REFERENCE_TEST_FILES
       h5stat_filters.h5
       h5stat_tsohm.h5
       h5stat_newgrat.h5
       h5stat_threshold.h5
   )
 
-  FOREACH (ddl_file ${HDF5_REFERENCE_FILES})
-    SET (ddldest "${PROJECT_BINARY_DIR}/${ddl_file}")
-    #MESSAGE (STATUS " Translating ${ddl_file}")
-    ADD_CUSTOM_COMMAND (
+  foreach (ddl_file ${HDF5_REFERENCE_FILES})
+    set (ddldest "${PROJECT_BINARY_DIR}/${ddl_file}")
+    #message (STATUS " Translating ${ddl_file}")
+    add_custom_command (
         TARGET     h5stat
         POST_BUILD
-        COMMAND    ${XLATE_UTILITY}
-        ARGS       ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/testfiles/${ddl_file} ${ddldest} -l3
+        COMMAND    ${CMAKE_COMMAND}
+        ARGS       -E copy_if_different ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/testfiles/${ddl_file} ${ddldest}
     )
-  ENDFOREACH (ddl_file ${HDF5_REFERENCE_FILES})
+  endforeach (ddl_file ${HDF5_REFERENCE_FILES})
 
-  FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/${h5_file}")
-    #MESSAGE (STATUS " Copying ${h5_file}")
-    ADD_CUSTOM_COMMAND (
+  foreach (h5_file ${HDF5_REFERENCE_TEST_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/${h5_file}")
+    #message (STATUS " Copying ${h5_file}")
+    add_custom_command (
         TARGET     h5stat
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/testfiles/${h5_file} ${dest}
     )
-  ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+  endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES})
   
 ##############################################################################
 ##############################################################################
@@ -78,21 +78,21 @@
 
   MACRO (ADD_H5_TEST resultfile resultcode)
     # 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 "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    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 "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5STAT-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove ${resultfile}.out ${resultfile}.out.err
       )
-      ADD_TEST (
+      add_test (
           NAME H5STAT-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5stat>"
@@ -103,8 +103,8 @@
               -D "TEST_REFERENCE=${resultfile}.ddl"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5STAT-${resultfile} PROPERTIES DEPENDS "H5STAT-${resultfile}-clear-objects")
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5STAT-${resultfile} PROPERTIES DEPENDS "H5STAT-${resultfile}-clear-objects")
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST file)
 
 ##############################################################################
@@ -113,9 +113,9 @@
 ##############################################################################
 ##############################################################################
 
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
+  if (HDF5_ENABLE_USING_MEMCHECKER)
     # Remove any output file left over from previous test run
-    ADD_TEST (
+    add_test (
       NAME H5STAT-clearall-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove 
@@ -182,11 +182,11 @@
           h5stat_numattrs4.out
           h5stat_numattrs4.out.err
     )
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5STAT-clearall-objects PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "H5STAT-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (H5STAT-clearall-objects PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "H5STAT-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
 # Test for help flag
   ADD_H5_TEST (h5stat_help1 0 -h)
diff --git a/tools/h5stat/Makefile.am b/tools/h5stat/Makefile.am
index 13d9baf..2a5921f 100644
--- a/tools/h5stat/Makefile.am
+++ b/tools/h5stat/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src directory
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 #test script and program
 TEST_PROG=h5stat_gentest
diff --git a/tools/h5stat/Makefile.in b/tools/h5stat/Makefile.in
index ec77732..f0c2674 100644
--- a/tools/h5stat/Makefile.in
+++ b/tools/h5stat/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,23 +33,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -68,11 +96,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(srcdir)/testh5stat.sh.in $(top_srcdir)/bin/depcomp \
-	$(top_srcdir)/bin/mkinstalldirs \
-	$(top_srcdir)/config/commence.am \
-	$(top_srcdir)/config/conclude.am
+	$(top_srcdir)/bin/test-driver
 check_PROGRAMS = $(am__EXEEXT_1)
 bin_PROGRAMS = h5stat$(EXEEXT)
 TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
@@ -172,12 +200,200 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -189,7 +405,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src directory
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -249,7 +468,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -463,9 +681,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 \
 	../testfiles/fst_family*.h5 ../testfiles/scd_family*.h5
 
-# Include src directory
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
-
 #test script and program
 TEST_PROG = h5stat_gentest
 TEST_SCRIPT = testh5stat.sh
@@ -507,7 +722,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -550,10 +765,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -574,7 +791,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -596,9 +814,11 @@ 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) $(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) $(EXTRA_h5stat_gentest_DEPENDENCIES) 
 	@rm -f h5stat_gentest$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(h5stat_gentest_OBJECTS) $(h5stat_gentest_LDADD) $(LIBS)
@@ -652,14 +872,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -674,26 +894,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -705,15 +914,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -722,9 +927,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -740,6 +946,158 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+h5stat_gentest.log: h5stat_gentest$(EXEEXT)
+	@p='h5stat_gentest$(EXEEXT)'; \
+	b='h5stat_gentest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -799,6 +1157,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -884,21 +1245,22 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-binPROGRAMS 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-binPROGRAMS install-binSCRIPTS 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 uninstall-binSCRIPTS
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 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 recheck tags tags-am \
+	uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-binSCRIPTS
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/h5stat/testfiles/h5stat_dims1.ddl b/tools/h5stat/testfiles/h5stat_dims1.ddl
index 182d31a..c285ea4 100644
--- a/tools/h5stat/testfiles/h5stat_dims1.ddl
+++ b/tools/h5stat/testfiles/h5stat_dims1.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -gd -m 5 h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 Small groups (with 0 to 9 links):
 	# of groups with 0 link(s): 1
diff --git a/tools/h5stat/testfiles/h5stat_dims2.ddl b/tools/h5stat/testfiles/h5stat_dims2.ddl
index abf3f61..769749e 100644
--- a/tools/h5stat/testfiles/h5stat_dims2.ddl
+++ b/tools/h5stat/testfiles/h5stat_dims2.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -d --di=15 h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 Dataset dimension information:
 	Max. rank of datasets: 2
diff --git a/tools/h5stat/testfiles/h5stat_err1_dims.ddl b/tools/h5stat/testfiles/h5stat_err1_dims.ddl
index 8f0686f..86d375b 100644
--- a/tools/h5stat/testfiles/h5stat_err1_dims.ddl
+++ b/tools/h5stat/testfiles/h5stat_err1_dims.ddl
@@ -1,4 +1 @@
-#############################
-Expected output for 'h5stat -d --dims=-1 h5stat_threshold.h5'
-#############################
 h5stat error: Invalid threshold for small datasets
diff --git a/tools/h5stat/testfiles/h5stat_err1_links.ddl b/tools/h5stat/testfiles/h5stat_err1_links.ddl
index 07987a2..d43207c 100644
--- a/tools/h5stat/testfiles/h5stat_err1_links.ddl
+++ b/tools/h5stat/testfiles/h5stat_err1_links.ddl
@@ -1,4 +1 @@
-#############################
-Expected output for 'h5stat -l 0 h5stat_threshold.h5'
-#############################
 h5stat error: Invalid threshold for small groups
diff --git a/tools/h5stat/testfiles/h5stat_err1_numattrs.ddl b/tools/h5stat/testfiles/h5stat_err1_numattrs.ddl
index 8eea546..01b6c18 100644
--- a/tools/h5stat/testfiles/h5stat_err1_numattrs.ddl
+++ b/tools/h5stat/testfiles/h5stat_err1_numattrs.ddl
@@ -1,4 +1 @@
-#############################
-Expected output for 'h5stat -a -2 h5stat_threshold.h5'
-#############################
 h5stat error: Invalid threshold for small # of attributes
diff --git a/tools/h5stat/testfiles/h5stat_err2_numattrs.ddl b/tools/h5stat/testfiles/h5stat_err2_numattrs.ddl
index a1ecb31..01b6c18 100644
--- a/tools/h5stat/testfiles/h5stat_err2_numattrs.ddl
+++ b/tools/h5stat/testfiles/h5stat_err2_numattrs.ddl
@@ -1,4 +1 @@
-#############################
-Expected output for 'h5stat --numattrs h5stat_threshold.h5'
-#############################
 h5stat error: Invalid threshold for small # of attributes
diff --git a/tools/h5stat/testfiles/h5stat_filters-F.ddl b/tools/h5stat/testfiles/h5stat_filters-F.ddl
index e20ef87..5555460 100644
--- a/tools/h5stat/testfiles/h5stat_filters-F.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters-F.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -F h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 File space information for file metadata (in bytes):
 	Superblock extension: 0
diff --git a/tools/h5stat/testfiles/h5stat_filters-UD.ddl b/tools/h5stat/testfiles/h5stat_filters-UD.ddl
index decfb81..4efafd1 100644
--- a/tools/h5stat/testfiles/h5stat_filters-UD.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters-UD.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -D h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 File space information for datasets' metadata (in bytes):
 	Object headers (total/unused): 4136/1344
diff --git a/tools/h5stat/testfiles/h5stat_filters-UT.ddl b/tools/h5stat/testfiles/h5stat_filters-UT.ddl
index 189eaa6..d8de31f 100644
--- a/tools/h5stat/testfiles/h5stat_filters-UT.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters-UT.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -T h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 Dataset datatype information:
 	# of unique datatypes used by datasets: 2
diff --git a/tools/h5stat/testfiles/h5stat_filters-d.ddl b/tools/h5stat/testfiles/h5stat_filters-d.ddl
index dae1f06..2e0bd64 100644
--- a/tools/h5stat/testfiles/h5stat_filters-d.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters-d.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -d h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 Dataset dimension information:
 	Max. rank of datasets: 2
diff --git a/tools/h5stat/testfiles/h5stat_filters-dT.ddl b/tools/h5stat/testfiles/h5stat_filters-dT.ddl
index 5c7a4ab..9ef3e82 100644
--- a/tools/h5stat/testfiles/h5stat_filters-dT.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters-dT.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -dT h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 Dataset dimension information:
 	Max. rank of datasets: 2
diff --git a/tools/h5stat/testfiles/h5stat_filters-file.ddl b/tools/h5stat/testfiles/h5stat_filters-file.ddl
index eddc898..5f7eff9 100644
--- a/tools/h5stat/testfiles/h5stat_filters-file.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters-file.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -f h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 File information
 	# of unique groups: 1
diff --git a/tools/h5stat/testfiles/h5stat_filters-g.ddl b/tools/h5stat/testfiles/h5stat_filters-g.ddl
index 6cb791c..290c82a 100644
--- a/tools/h5stat/testfiles/h5stat_filters-g.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters-g.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -g h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 Small groups (with 0 to 9 links):
 	Total # of small groups: 0
diff --git a/tools/h5stat/testfiles/h5stat_filters.ddl b/tools/h5stat/testfiles/h5stat_filters.ddl
index 5fdbd31..0317767 100644
--- a/tools/h5stat/testfiles/h5stat_filters.ddl
+++ b/tools/h5stat/testfiles/h5stat_filters.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat h5stat_filters.h5'
-#############################
 Filename: h5stat_filters.h5
 File information
 	# of unique groups: 1
diff --git a/tools/h5stat/testfiles/h5stat_help1.ddl b/tools/h5stat/testfiles/h5stat_help1.ddl
index 378389e..4c61425 100644
--- a/tools/h5stat/testfiles/h5stat_help1.ddl
+++ b/tools/h5stat/testfiles/h5stat_help1.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -h'
-#############################
 Usage: h5stat [OPTIONS] file
 
       OPTIONS
diff --git a/tools/h5stat/testfiles/h5stat_help2.ddl b/tools/h5stat/testfiles/h5stat_help2.ddl
index 65d8bca..4c61425 100644
--- a/tools/h5stat/testfiles/h5stat_help2.ddl
+++ b/tools/h5stat/testfiles/h5stat_help2.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat --help'
-#############################
 Usage: h5stat [OPTIONS] file
 
       OPTIONS
diff --git a/tools/h5stat/testfiles/h5stat_links1.ddl b/tools/h5stat/testfiles/h5stat_links1.ddl
index e77a788..c650f15 100644
--- a/tools/h5stat/testfiles/h5stat_links1.ddl
+++ b/tools/h5stat/testfiles/h5stat_links1.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -g -l 8 h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 Small groups (with 0 to 7 links):
 	# of groups with 0 link(s): 1
diff --git a/tools/h5stat/testfiles/h5stat_links2.ddl b/tools/h5stat/testfiles/h5stat_links2.ddl
index 27d6c6d..de84bce 100644
--- a/tools/h5stat/testfiles/h5stat_links2.ddl
+++ b/tools/h5stat/testfiles/h5stat_links2.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat --links=8 h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 File information
 	# of unique groups: 4
diff --git a/tools/h5stat/testfiles/h5stat_links3.ddl b/tools/h5stat/testfiles/h5stat_links3.ddl
index d0071d7..f80471a 100644
--- a/tools/h5stat/testfiles/h5stat_links3.ddl
+++ b/tools/h5stat/testfiles/h5stat_links3.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat --links=20 -g h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 Small groups (with 0 to 19 links):
 	# of groups with 0 link(s): 1
diff --git a/tools/h5stat/testfiles/h5stat_links4.ddl b/tools/h5stat/testfiles/h5stat_links4.ddl
index ca3911c..94feffd 100644
--- a/tools/h5stat/testfiles/h5stat_links4.ddl
+++ b/tools/h5stat/testfiles/h5stat_links4.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -g h5stat_newgrat.h5'
-#############################
 Filename: h5stat_newgrat.h5
 Small groups (with 0 to 9 links):
 	# of groups with 0 link(s): 35000
diff --git a/tools/h5stat/testfiles/h5stat_links5.ddl b/tools/h5stat/testfiles/h5stat_links5.ddl
index 44ec161..6f33bed 100644
--- a/tools/h5stat/testfiles/h5stat_links5.ddl
+++ b/tools/h5stat/testfiles/h5stat_links5.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -g -l 40000 h5stat_newgrat.h5'
-#############################
 Filename: h5stat_newgrat.h5
 Small groups (with 0 to 39999 links):
 	# of groups with 0 link(s): 35000
diff --git a/tools/h5stat/testfiles/h5stat_newgrat-UA.ddl b/tools/h5stat/testfiles/h5stat_newgrat-UA.ddl
index 18f91f3..a5ee7e8 100644
--- a/tools/h5stat/testfiles/h5stat_newgrat-UA.ddl
+++ b/tools/h5stat/testfiles/h5stat_newgrat-UA.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -A h5stat_newgrat.h5'
-#############################
 Filename: h5stat_newgrat.h5
 Small # of attributes (objects with 1 to 10 attributes):
 	Total # of objects with small # of attributes: 0
diff --git a/tools/h5stat/testfiles/h5stat_newgrat-UG.ddl b/tools/h5stat/testfiles/h5stat_newgrat-UG.ddl
index ecebdef..41195ac 100644
--- a/tools/h5stat/testfiles/h5stat_newgrat-UG.ddl
+++ b/tools/h5stat/testfiles/h5stat_newgrat-UG.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -G h5stat_newgrat.h5'
-#############################
 Filename: h5stat_newgrat.h5
 File space information for groups' metadata (in bytes):
 	Object headers (total/unused): 5145147/3220092
diff --git a/tools/h5stat/testfiles/h5stat_newgrat.ddl b/tools/h5stat/testfiles/h5stat_newgrat.ddl
index bd10e4a..9b17e17 100644
--- a/tools/h5stat/testfiles/h5stat_newgrat.ddl
+++ b/tools/h5stat/testfiles/h5stat_newgrat.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat h5stat_newgrat.h5'
-#############################
 Filename: h5stat_newgrat.h5
 File information
 	# of unique groups: 35001
diff --git a/tools/h5stat/testfiles/h5stat_nofile.ddl b/tools/h5stat/testfiles/h5stat_nofile.ddl
index 7b98be4..22cff9b 100644
--- a/tools/h5stat/testfiles/h5stat_nofile.ddl
+++ b/tools/h5stat/testfiles/h5stat_nofile.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat '
-#############################
 Usage: h5stat [OPTIONS] file
 
       OPTIONS
diff --git a/tools/h5stat/testfiles/h5stat_notexist.ddl b/tools/h5stat/testfiles/h5stat_notexist.ddl
index ac0fce4..cc25e43 100644
--- a/tools/h5stat/testfiles/h5stat_notexist.ddl
+++ b/tools/h5stat/testfiles/h5stat_notexist.ddl
@@ -1,5 +1,2 @@
-#############################
-Expected output for 'h5stat notexist.h5'
-#############################
 Filename: notexist.h5
 h5stat error: unable to open file "notexist.h5"
diff --git a/tools/h5stat/testfiles/h5stat_numattrs1.ddl b/tools/h5stat/testfiles/h5stat_numattrs1.ddl
index bee1d29..9954c7c 100644
--- a/tools/h5stat/testfiles/h5stat_numattrs1.ddl
+++ b/tools/h5stat/testfiles/h5stat_numattrs1.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -AS -a 10 h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 Small # of attributes (objects with 1 to 10 attributes):
 	# of objects with 1 attributes: 2
diff --git a/tools/h5stat/testfiles/h5stat_numattrs2.ddl b/tools/h5stat/testfiles/h5stat_numattrs2.ddl
index 29a09d0..d518f0e 100644
--- a/tools/h5stat/testfiles/h5stat_numattrs2.ddl
+++ b/tools/h5stat/testfiles/h5stat_numattrs2.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -a 1 h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 File information
 	# of unique groups: 4
diff --git a/tools/h5stat/testfiles/h5stat_numattrs3.ddl b/tools/h5stat/testfiles/h5stat_numattrs3.ddl
index 515b76c..de8d6a3 100644
--- a/tools/h5stat/testfiles/h5stat_numattrs3.ddl
+++ b/tools/h5stat/testfiles/h5stat_numattrs3.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -A --numattrs=25 h5stat_threshold.h5'
-#############################
 Filename: h5stat_threshold.h5
 Small # of attributes (objects with 1 to 25 attributes):
 	# of objects with 1 attributes: 2
diff --git a/tools/h5stat/testfiles/h5stat_numattrs4.ddl b/tools/h5stat/testfiles/h5stat_numattrs4.ddl
index 515a4a9..2b0122a 100644
--- a/tools/h5stat/testfiles/h5stat_numattrs4.ddl
+++ b/tools/h5stat/testfiles/h5stat_numattrs4.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat -A -a 100 h5stat_newgrat.h5'
-#############################
 Filename: h5stat_newgrat.h5
 Small # of attributes (objects with 1 to 100 attributes):
 	# of objects with 100 attributes: 1
diff --git a/tools/h5stat/testfiles/h5stat_tsohm.ddl b/tools/h5stat/testfiles/h5stat_tsohm.ddl
index f9f3924..84e3e42 100644
--- a/tools/h5stat/testfiles/h5stat_tsohm.ddl
+++ b/tools/h5stat/testfiles/h5stat_tsohm.ddl
@@ -1,6 +1,3 @@
-#############################
-Expected output for 'h5stat h5stat_tsohm.h5'
-#############################
 Filename: h5stat_tsohm.h5
 File information
 	# of unique groups: 1
diff --git a/tools/h5stat/testh5stat.sh.in b/tools/h5stat/testh5stat.sh.in
index 865093a..cb0446b 100644
--- a/tools/h5stat/testh5stat.sh.in
+++ b/tools/h5stat/testh5stat.sh.in
@@ -191,9 +191,6 @@ TOOLTEST() {
    # Run test.
    TESTING $STAT $@
    (
-      echo "#############################"
-      echo "Expected output for '$STAT $@'" 
-      echo "#############################"
       cd $TESTDIR
       $RUNSERIAL $STAT_BIN $@
    ) >$actual 2>$actual_err
diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt
index ef77be7..c3b8294 100644
--- a/tools/lib/CMakeLists.txt
+++ b/tools/lib/CMakeLists.txt
@@ -1,16 +1,16 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_LIB)
 
 #-----------------------------------------------------------------------------
 # Apply Definitions to compiler in this directory and below
 #-----------------------------------------------------------------------------
-ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
+add_definitions (${HDF5_EXTRA_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
 
-SET (H5_TOOLS_LIB_SRCS
+set (H5_TOOLS_LIB_SRCS
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5diff.c
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5diff_array.c
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5diff_attr.c
@@ -26,7 +26,7 @@ SET (H5_TOOLS_LIB_SRCS
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5trav.c
 )
 
-SET (H5_TOOLS_LIB_HDRS
+set (H5_TOOLS_LIB_HDRS
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5trav.h
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5tools.h
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5tools_dump.h
@@ -36,17 +36,21 @@ SET (H5_TOOLS_LIB_HDRS
     ${HDF5_TOOLS_LIB_SOURCE_DIR}/h5diff.h
 )
 
-ADD_LIBRARY (${HDF5_TOOLS_LIB_TARGET} ${LIB_TYPE} ${H5_TOOLS_LIB_SRCS} ${H5_TOOLS_LIB_HDRS})
+add_library (${HDF5_TOOLS_LIB_TARGET} ${LIB_TYPE} ${H5_TOOLS_LIB_SRCS} ${H5_TOOLS_LIB_HDRS})
 TARGET_C_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} " " " ")
-TARGET_LINK_LIBRARIES (${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_TOOLS_LIB_TARGET}")
+target_link_libraries (${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_TOOLS_LIB_TARGET}")
 H5_SET_LIB_OPTIONS (
     ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TOOLS_LIB_NAME}
     ${LIB_TYPE}
     HDF5_TOOLS_LIB_NAME_RELEASE
   HDF5_TOOLS_LIB_NAME_DEBUG
 )
-SET_TARGET_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} PROPERTIES FOLDER libraries/tools)
+#set_target_properties (${HDF5_TOOLS_LIB_TARGET} PROPERTIES COMPILE_DEFINITIONS H5DIFF_DEBUG)
+set_target_properties (${HDF5_TOOLS_LIB_TARGET} PROPERTIES 
+    FOLDER libraries/tools
+    INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+)
 
 ##############################################################################
 ##############################################################################
@@ -57,7 +61,7 @@ SET_TARGET_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} PROPERTIES FOLDER libraries/tool
 #-----------------------------------------------------------------------------
 # Add file(s) to CMake Install 
 #-----------------------------------------------------------------------------
-INSTALL (
+install (
     FILES
         ${H5_TOOLS_LIB_HDRS}
     DESTINATION
@@ -70,25 +74,26 @@ INSTALL (
 # Because tools are installed into bin/tools we need to make sure the hdf5tools
 # library will be installed into the proper location.
 #-----------------------------------------------------------------------------
-IF (APPLE)
-    OPTION (HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF)
-    IF (HDF5_BUILD_WITH_INSTALL_NAME)
+if (APPLE)
+    option (HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF)
+    if (HDF5_BUILD_WITH_INSTALL_NAME)
       SET_TARGET_PROPERTIES(${HDF5_TOOLS_LIB_TARGET} PROPERTIES
       LINK_FLAGS "-current_version ${HDF5_PACKAGE_VERSION} -compatibility_version ${HDF5_PACKAGE_VERSION}"
       INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib"
       BUILD_WITH_INSTALL_RPATH ${HDF5_BUILD_WITH_INSTALL_NAME}
       )
-    ENDIF (HDF5_BUILD_WITH_INSTALL_NAME)
-ENDIF (APPLE)
+    endif (HDF5_BUILD_WITH_INSTALL_NAME)
+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)
+if (HDF5_EXPORTED_TARGETS)
+  if (BUILD_SHARED_LIBS)
+    INSTALL_TARGET_PDB (${HDF5_TOOLS_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} toolslibraries)
+  endif (BUILD_SHARED_LIBS)
   
-  INSTALL (
+  install (
       TARGETS
           ${HDF5_TOOLS_LIB_TARGET}
       EXPORT
@@ -97,4 +102,4 @@ IF (HDF5_EXPORTED_TARGETS)
       ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT toolslibraries
       RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolslibraries
   )
-ENDIF (HDF5_EXPORTED_TARGETS)
+endif (HDF5_EXPORTED_TARGETS)
diff --git a/tools/lib/Makefile.am b/tools/lib/Makefile.am
index e364b47..9050aac 100644
--- a/tools/lib/Makefile.am
+++ b/tools/lib/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include files in /src directory
-INCLUDES=-I$(top_srcdir)/src
+AM_CPPFLAGS+=-I$(top_srcdir)/src
 
 # This is our main target, the h5tools library.
 noinst_LTLIBRARIES=libh5tools.la
diff --git a/tools/lib/Makefile.in b/tools/lib/Makefile.in
index 743e158..5af2dfd 100644
--- a/tools/lib/Makefile.in
+++ b/tools/lib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,23 +32,51 @@
 #
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -67,10 +95,10 @@ PRE_UNINSTALL = :
 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
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
+	$(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver
 check_PROGRAMS = $(am__EXEEXT_1)
 TESTS = $(am__EXEEXT_1)
 subdir = tools/lib
@@ -135,12 +163,225 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+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__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -152,7 +393,9 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include files in /src directory
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -212,7 +455,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -421,9 +663,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 # *.clog are from the MPE option.
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog
 
-# Include files in /src directory
-INCLUDES = -I$(top_srcdir)/src
-
 # This is our main target, the h5tools library.
 noinst_LTLIBRARIES = libh5tools.la
 libh5tools_la_SOURCES = h5tools.c h5tools_dump.c h5tools_str.c h5tools_utils.c h5diff.c \
@@ -460,7 +699,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -503,6 +742,7 @@ clean-noinstLTLIBRARIES:
 	  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)
 
@@ -540,14 +780,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -562,26 +802,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -593,15 +822,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -610,9 +835,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -628,6 +854,151 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -684,6 +1055,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
@@ -767,9 +1141,9 @@ 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 \
-	clean-noinstLTLIBRARIES cscopelist ctags distclean \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+	clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am 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 \
@@ -779,8 +1153,8 @@ uninstall-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
+	mostlyclean-local pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c
index 73bbd07..883bd5f 100644
--- a/tools/lib/h5diff.c
+++ b/tools/lib/h5diff.c
@@ -106,47 +106,6 @@ void phdiff_dismiss_workers(void)
 
 
 /*-------------------------------------------------------------------------
- * Function: print_manager_output
- *
- * Purpose: special function that prints any output accumulated by the
- *      manager task.
- *
- * Return: none
- *
- * Programmer: Leon Arber
- *
- * Date: Feb 7, 2005
- *
- *-------------------------------------------------------------------------
- */
-void print_manager_output(void)
-{
-    /* If there was something we buffered, let's print it now */
-    if( (outBuffOffset>0) && g_Parallel)
-    {
-        printf("%s", outBuff);
-
-        if(overflow_file)
-        {
-            int     tmp;
-            rewind(overflow_file);
-            while((tmp = getc(overflow_file)) >= 0)
-                putchar(tmp);
-            fclose(overflow_file);
-            overflow_file = NULL;
-        }
-
-        HDfflush(stdout);
-        HDmemset(outBuff, 0, OUTBUFF_SIZE);
-        outBuffOffset = 0;
-    }
-    else if( (outBuffOffset>0) && !g_Parallel)
-    {
-        HDfprintf(stderr, "h5diff error: outBuffOffset>0, but we're not in parallel!\n");
-    }
-}
-
-/*-------------------------------------------------------------------------
  * Function: print_incoming_data
  *
  * Purpose: special function that prints any output that has been sent to the manager
@@ -1119,7 +1078,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
     char * grp2_path = "";
     char * obj1_fullpath = NULL;
     char * obj2_fullpath = NULL;
-    h5trav_type_t objtype;
     diff_args_t argdata;
     size_t idx1 = 0;
     size_t idx2 = 0;
@@ -1185,7 +1143,6 @@ hsize_t diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
     {
         if( table->objs[i].flags[0] && table->objs[i].flags[1])
         {
-            objtype = table->objs[i].type;
             /* make full path for obj1 */
             obj1_fullpath = (char*)HDcalloc (HDstrlen(grp1_path) + strlen (table->objs[i].name) + 1, sizeof (char));
             HDstrcpy(obj1_fullpath, grp1_path);
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index 44b623f..6474082 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -326,12 +326,16 @@ hsize_t diff_attr(hid_t loc1_id,
     hid_t      space2_id=-1;    /* space ID */
     hid_t      ftype1_id=-1;    /* file data type ID */
     hid_t      ftype2_id=-1;    /* file data type ID */
+    int	       vstrtype1=0;     /* ftype1 is a variable string */
+    int	       vstrtype2=0;     /* ftype2 is a variable string */
     hid_t      mtype1_id=-1;    /* memory data type ID */
     hid_t      mtype2_id=-1;    /* memory data type ID */
     size_t     msize1;          /* memory size of memory type */
     size_t     msize2;          /* memory size of memory type */
     void       *buf1=NULL;      /* data buffer */
     void       *buf2=NULL;      /* data buffer */
+    int	       buf1hasdata=0;	/* buffer has data */
+    int	       buf2hasdata=0;	/* buffer has data */
     hsize_t    nelmts1;         /* number of elements in dataset */
     int        rank1;           /* rank of dataset */
     int        rank2;           /* rank of dataset */
@@ -376,8 +380,19 @@ hsize_t diff_attr(hid_t loc1_id,
         /* get the datatypes  */
         if((ftype1_id = H5Aget_type(attr1_id)) < 0)
             goto error;
+	vstrtype1 = H5Tis_variable_str(ftype1_id);
         if((ftype2_id = H5Aget_type(attr2_id)) < 0)
             goto error;
+	vstrtype2 = H5Tis_variable_str(ftype2_id);
+	/* no compare if either one but not both are variable string type */
+	if (vstrtype1 != vstrtype2){
+	    if ((options->m_verbose||options->m_list_not_cmp))
+		parallel_print("Not comparable: one of attribute <%s/%s> or <%s/%s> is of variable length type\n",
+		    path1, name1, path2, name2);
+	    options->not_cmp = 1;
+	    return 0;
+	}
+
         if((mtype1_id = h5tools_get_native_type(ftype1_id))<0)
             goto error;
         if((mtype2_id = h5tools_get_native_type(ftype2_id))<0)
@@ -449,14 +464,20 @@ hsize_t diff_attr(hid_t loc1_id,
 
         buf1 = (void *)HDmalloc((size_t)(nelmts1 * msize1));
         buf2 = (void *)HDmalloc((size_t)(nelmts1 * msize2));
-        if(buf1 == NULL || buf2 == NULL) {
+        if(buf1 == NULL || buf2 == NULL){
             parallel_print( "cannot read into memory\n" );
             goto error;
         }
-        if(H5Aread(attr1_id,mtype1_id,buf1) < 0)
-            goto error;
-        if(H5Aread(attr2_id,mtype2_id,buf2) < 0)
-            goto error;
+        if(H5Aread(attr1_id,mtype1_id,buf1) < 0){
+	    parallel_print("Failed reading attribute1 %s/%s\n", path1, name1);
+	    goto error;
+	}else
+	    buf1hasdata = 1;
+        if(H5Aread(attr2_id,mtype2_id,buf2) < 0){
+	    parallel_print("Failed reading attribute2 %s/%s\n", path2, name2);
+	    goto error;
+	}else
+	    buf2hasdata = 1;
 
         /* format output string */
         HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
@@ -504,8 +525,8 @@ hsize_t diff_attr(hid_t loc1_id,
         if(TRUE == h5tools_detect_vlen(mtype1_id))
             H5Dvlen_reclaim(mtype1_id, space1_id, H5P_DEFAULT, buf1);
         HDfree(buf1);
-
         buf1 = NULL;
+
         if(TRUE == h5tools_detect_vlen(mtype2_id))
             H5Dvlen_reclaim(mtype2_id, space2_id, H5P_DEFAULT, buf2);
         HDfree(buf2);
@@ -539,12 +560,12 @@ hsize_t diff_attr(hid_t loc1_id,
 error:
     H5E_BEGIN_TRY {
         if(buf1) {
-            if(TRUE == h5tools_detect_vlen(mtype1_id))
+            if(buf1hasdata && TRUE == h5tools_detect_vlen(mtype1_id))
                 H5Dvlen_reclaim(mtype1_id, space1_id, H5P_DEFAULT, buf1);
             HDfree(buf1);
         } /* end if */
         if(buf2) {
-            if(TRUE == h5tools_detect_vlen(mtype2_id))
+            if(buf2hasdata && TRUE == h5tools_detect_vlen(mtype2_id))
                 H5Dvlen_reclaim(mtype2_id, space2_id, H5P_DEFAULT, buf2);
             HDfree(buf2);
         } /* end if */
diff --git a/tools/lib/h5tools.c b/tools/lib/h5tools.c
index 4643804..fb12408 100644
--- a/tools/lib/h5tools.c
+++ b/tools/lib/h5tools.c
@@ -64,12 +64,8 @@ static const char *drivernames[]={
     "family",
     "split",
     "multi",
-#ifdef H5_HAVE_STREAM
-    "stream",
-#endif /* H5_HAVE_STREAM */
 #ifdef H5_HAVE_PARALLEL
     "mpio",
-    "mpiposix"
 #endif /* H5_HAVE_PARALLEL */
 };
 
@@ -80,12 +76,8 @@ typedef enum {
    ,FAMILY_IDX
    ,SPLIT_IDX
    ,MULTI_IDX
-#ifdef H5_HAVE_STREAM
-   ,STREAM_IDX
-#endif /* H5_HAVE_STREAM */
 #ifdef H5_HAVE_PARALLEL
    ,MPIO_IDX
-   ,MPIPOSIX_IDX
 #endif /* H5_HAVE_PARALLEL */
 } driver_idx;
 #define NUM_DRIVERS     (sizeof(drivernames) / sizeof(drivernames[0]))
@@ -521,48 +513,23 @@ h5tools_get_fapl(hid_t fapl, const char *driver, unsigned *drivernum)
 
         if(drivernum)
         *drivernum = MULTI_IDX;
-#ifdef H5_HAVE_STREAM
-            }
-            else if(!HDstrcmp(driver, drivernames[STREAM_IDX])) {
-                /* STREAM Driver */
-                if(H5Pset_fapl_stream(new_fapl, NULL) < 0)
-                goto error;
-
-                if(drivernum)
-                *drivernum = STREAM_IDX;
-#endif /* H5_HAVE_STREAM */
-#ifdef H5_HAVE_PARALLEL
-            }
-            else if(!HDstrcmp(driver, drivernames[MPIO_IDX])) {
-                /* MPI-I/O Driver */
-                /* check if MPI has been initialized. */
-                if(!h5tools_mpi_init_g)
-                MPI_Initialized(&h5tools_mpi_init_g);
-                if(h5tools_mpi_init_g) {
-                    if(H5Pset_fapl_mpio(new_fapl, MPI_COMM_WORLD, MPI_INFO_NULL) < 0)
-                goto error;
-
-            if(drivernum)
-                *drivernum = MPIO_IDX;
-        } /* end if */
     }
-    else if (!HDstrcmp(driver, drivernames[MPIPOSIX_IDX])) {
+#ifdef H5_HAVE_PARALLEL
+    else if(!HDstrcmp(driver, drivernames[MPIO_IDX])) {
         /* MPI-I/O Driver */
         /* check if MPI has been initialized. */
         if(!h5tools_mpi_init_g)
             MPI_Initialized(&h5tools_mpi_init_g);
         if(h5tools_mpi_init_g) {
-            if(H5Pset_fapl_mpiposix(new_fapl, MPI_COMM_WORLD, TRUE) < 0)
+            if(H5Pset_fapl_mpio(new_fapl, MPI_COMM_WORLD, MPI_INFO_NULL) < 0)
                 goto error;
-
             if(drivernum)
-                *drivernum = MPIPOSIX_IDX;
+                *drivernum = MPIO_IDX;
         } /* end if */
-#endif /* H5_HAVE_PARALLEL */
     }
-    else {
+#endif /* H5_HAVE_PARALLEL */
+    else
         goto error;
-    }
 
     return(new_fapl);
 
@@ -580,8 +547,7 @@ error:
  *      Loop through the various types of VFL drivers trying to open FNAME.
  *      If the HDF5 library is version 1.2 or less, then we have only the SEC2
  *      driver to try out. If the HDF5 library is greater than version 1.2,
- *      then we have the FAMILY, SPLIT, and MULTI drivers to play with (and
- *      the STREAM driver if H5_HAVE_STREAM is defined, that is).
+ *      then we have the FAMILY, SPLIT, and MULTI drivers to play with.
  *
  *      If DRIVER is non-NULL, then it will try to open the file with that
  *      driver first. We assume that the user knows what they are doing so, if
@@ -956,10 +922,9 @@ h5tools_region_simple_prefix(FILE *stream, const h5tool_format_t *info,
     h5tools_str_region_prefix(&prefix, info, elmtno, ptdata, ctx->ndims, ctx->p_max_idx, ctx);
 
     /* Write new prefix to output */
-    if (ctx->indent_level >= 0) {
+    if (ctx->indent_level >= 0)
         indentlevel = ctx->indent_level;
-    }
-    else {
+    else
         /*
          * This is because sometimes we don't print out all the header
          * info for the data (like the tattr-2.ddl example). If that happens
@@ -967,25 +932,20 @@ h5tools_region_simple_prefix(FILE *stream, const h5tool_format_t *info,
          * just print out the default indent levels.
          */
         indentlevel = ctx->default_indent_level;
-    }
 
     /* when printing array indices, print the indentation before the prefix
        the prefix is printed one indentation level before */
-    if (info->pindex) {
+    if (info->pindex)
         for (i = 0; i < indentlevel - 1; i++) {
             PUTSTREAM(h5tools_str_fmt(&str, 0, info->line_indent), stream);
         }
-    }
 
     if (elmtno == 0 && secnum == 0 && info->line_1st) {
         PUTSTREAM(h5tools_str_fmt(&prefix, 0, info->line_1st), stream);
-    }
-    else if (secnum && info->line_cont) {
+    } else if (secnum && info->line_cont) {
         PUTSTREAM(h5tools_str_fmt(&prefix, 0, info->line_cont), stream);
-    }
-    else {
+    } else
         PUTSTREAM(h5tools_str_fmt(&prefix, 0, info->line_pre), stream);
-    }
 
     templength = h5tools_str_len(&prefix);
 
diff --git a/tools/lib/h5tools_dump.c b/tools/lib/h5tools_dump.c
index 7492d8a..f11065c 100644
--- a/tools/lib/h5tools_dump.c
+++ b/tools/lib/h5tools_dump.c
@@ -2340,7 +2340,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
            h5tools_str_append(buffer, "OPAQUE_TAG \"%s\";", ttag);
            h5tools_render_element(stream, info, ctx, buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0);
            
-           HDfree(ttag);
+           H5free_memory(ttag);
         } 
         ctx->indent_level--;
 
@@ -2376,7 +2376,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
             }
             else
                 HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tget_member_type failed");
-            HDfree(mname);
+            H5free_memory(mname);
         }
         ctx->indent_level--;
 
@@ -2692,7 +2692,7 @@ CATCH
         /* Release resources */
         for(i = 0; i < nmembs; i++)
             if(name[i])
-                HDfree(name[i]);
+                H5free_memory(name[i]);
         HDfree(name);
     } /* end if */
 
diff --git a/tools/lib/h5tools_filters.c b/tools/lib/h5tools_filters.c
index 2da21ef..79cf253 100644
--- a/tools/lib/h5tools_filters.c
+++ b/tools/lib/h5tools_filters.c
@@ -22,8 +22,9 @@
  */
 static void print_warning(const char *dname, const char *fname)
 {
- fprintf(stderr,"warning: dataset <%s> cannot be read, %s filter is not available\n",
-  dname,fname);
+	fprintf(stderr,
+			"warning: dataset <%s> cannot be read, %s filter is not available\n",
+			dname, fname);
 }
 
 /*-------------------------------------------------------------------------
@@ -46,109 +47,111 @@ int h5tools_canreadf(const char* name, /* object name, serves also as boolean pr
                      hid_t dcpl_id)    /* dataset creation property list */
 {
 
- int          nfilters;       /* number of filters */
- H5Z_filter_t filtn;          /* filter identification number */
- int          i;              /* index */
-
-
- /* get information about filters */
- if ((nfilters = H5Pget_nfilters(dcpl_id))<0)
-  return -1;
-
- /* if we do not have filters, we can read the dataset safely */
- if (!nfilters)
-  return 1;
-
- /* check availability of filters */
- for(i = 0; i < nfilters; i++)
- {
-  if((filtn = H5Pget_filter2(dcpl_id, (unsigned)i, 0, 0, 0, (size_t)0, 0, NULL)) < 0)
-   return -1;
-
-  switch(filtn)
-  {
-/*-------------------------------------------------------------------------
- * user defined filter
- *-------------------------------------------------------------------------
- */
-  default:
-    if(name)
-     print_warning(name, "user defined");
-    return 0;
-
-/*-------------------------------------------------------------------------
- * H5Z_FILTER_DEFLATE      1 , deflation like gzip
- *-------------------------------------------------------------------------
- */
-  case H5Z_FILTER_DEFLATE:
+	int nfilters; /* number of filters */
+	H5Z_filter_t filtn; /* filter identification number */
+	int i; /* index */
+	int udfilter_avail; /* index */
+
+	/* get information about filters */
+	if ((nfilters = H5Pget_nfilters(dcpl_id)) < 0)
+		return -1;
+
+	/* if we do not have filters, we can read the dataset safely */
+	if (!nfilters)
+		return 1;
+
+	/* check availability of filters */
+	for (i = 0; i < nfilters; i++) {
+		if ((filtn = H5Pget_filter2(dcpl_id, (unsigned) i, 0, 0, 0, (size_t) 0, 0, NULL)) < 0)
+			return -1;
+
+		switch (filtn) {
+		/*-------------------------------------------------------------------------
+		 * user defined filter
+		 *-------------------------------------------------------------------------
+		 */
+		default:
+			if ((udfilter_avail = H5Zfilter_avail(filtn)) < 0)
+				return -1;
+			else if (udfilter_avail == 0) {
+				if (name)
+					print_warning(name, "user defined");
+				return 0;
+			}
+			break;
+
+			/*-------------------------------------------------------------------------
+			 * H5Z_FILTER_DEFLATE      1 , deflation like gzip
+			 *-------------------------------------------------------------------------
+			 */
+		case H5Z_FILTER_DEFLATE:
 #ifndef H5_HAVE_FILTER_DEFLATE
-    if (name)
-     print_warning(name,"deflate");
-    return 0;
+			if (name)
+				print_warning(name,"deflate");
+			return 0;
 #endif
-   break;
-/*-------------------------------------------------------------------------
- * H5Z_FILTER_SZIP       4 , szip compression
- *-------------------------------------------------------------------------
- */
-  case H5Z_FILTER_SZIP:
+			break;
+			/*-------------------------------------------------------------------------
+			 * H5Z_FILTER_SZIP       4 , szip compression
+			 *-------------------------------------------------------------------------
+			 */
+		case H5Z_FILTER_SZIP:
 #ifndef H5_HAVE_FILTER_SZIP
-    if (name)
-     print_warning(name,"SZIP");
-    return 0;
+			if (name)
+				print_warning(name,"SZIP");
+			return 0;
 #endif
-   break;
-/*-------------------------------------------------------------------------
- * H5Z_FILTER_SHUFFLE    2 , shuffle the data
- *-------------------------------------------------------------------------
- */
-  case H5Z_FILTER_SHUFFLE:
+			break;
+			/*-------------------------------------------------------------------------
+			 * H5Z_FILTER_SHUFFLE    2 , shuffle the data
+			 *-------------------------------------------------------------------------
+			 */
+		case H5Z_FILTER_SHUFFLE:
 #ifndef H5_HAVE_FILTER_SHUFFLE
-    if (name)
-     print_warning(name,"shuffle");
-    return 0;
+			if (name)
+				print_warning(name,"shuffle");
+			return 0;
 #endif
-   break;
-/*-------------------------------------------------------------------------
- * H5Z_FILTER_FLETCHER32 3 , fletcher32 checksum of EDC
- *-------------------------------------------------------------------------
- */
-  case H5Z_FILTER_FLETCHER32:
+			break;
+			/*-------------------------------------------------------------------------
+			 * H5Z_FILTER_FLETCHER32 3 , fletcher32 checksum of EDC
+			 *-------------------------------------------------------------------------
+			 */
+		case H5Z_FILTER_FLETCHER32:
 #ifndef H5_HAVE_FILTER_FLETCHER32
-    if (name)
-     print_warning(name,"fletcher32");
-    return 0;
+			if (name)
+				print_warning(name,"fletcher32");
+			return 0;
 #endif
-   break;
-/*-------------------------------------------------------------------------
- * H5Z_FILTER_NBIT
- *-------------------------------------------------------------------------
- */
-  case H5Z_FILTER_NBIT:
+			break;
+			/*-------------------------------------------------------------------------
+			 * H5Z_FILTER_NBIT
+			 *-------------------------------------------------------------------------
+			 */
+		case H5Z_FILTER_NBIT:
 #ifndef H5_HAVE_FILTER_NBIT
-    if (name)
-     print_warning(name,"nbit");
-    return 0;
+			if (name)
+				print_warning(name,"nbit");
+			return 0;
 #endif
-   break;
-/*-------------------------------------------------------------------------
- * H5Z_FILTER_SCALEOFFSET
- *-------------------------------------------------------------------------
- */
-  case H5Z_FILTER_SCALEOFFSET:
+			break;
+			/*-------------------------------------------------------------------------
+			 * H5Z_FILTER_SCALEOFFSET
+			 *-------------------------------------------------------------------------
+			 */
+		case H5Z_FILTER_SCALEOFFSET:
 #ifndef H5_HAVE_FILTER_SCALEOFFSET
-    if (name)
-     print_warning(name,"scaleoffset");
-    return 0;
+			if (name)
+				print_warning(name,"scaleoffset");
+			return 0;
 #endif
-   break;
-  }/*switch*/
- }/*for*/
+			break;
+		}/*switch*/
+	}/*for*/
 
- return 1;
+	return 1;
 }
 
-
 /*-------------------------------------------------------------------------
  * Function: h5tools_canwritef
  *
@@ -164,71 +167,70 @@ int h5tools_canreadf(const char* name, /* object name, serves also as boolean pr
  *
  *-------------------------------------------------------------------------
  */
-int h5tools_can_encode( H5Z_filter_t filtn)
-{
-  switch (filtn)
-  {
-    /* user defined filter     */
-  default:
-    return 0;
+int h5tools_can_encode(H5Z_filter_t filtn) {
+	switch (filtn) {
+	/* user defined filter     */
+	default:
+		return 0;
 
-  case H5Z_FILTER_DEFLATE:
+	case H5Z_FILTER_DEFLATE:
 #ifndef H5_HAVE_FILTER_DEFLATE
-   return 0;
+		return 0;
 #endif
-   break;
-  case H5Z_FILTER_SZIP:
+		break;
+	case H5Z_FILTER_SZIP:
 #ifndef H5_HAVE_FILTER_SZIP
-   return 0;
+		return 0;
 #else
-   {
-   unsigned int filter_config_flags;
-
-   if(H5Zget_filter_info(filtn, &filter_config_flags)<0)
-       return -1;
-   if ((filter_config_flags &
-          (H5Z_FILTER_CONFIG_ENCODE_ENABLED|H5Z_FILTER_CONFIG_DECODE_ENABLED)) == 0) {
-    /* filter present but neither encode nor decode is supported (???) */
-    return -1;
-   } else if ((filter_config_flags &
-          (H5Z_FILTER_CONFIG_ENCODE_ENABLED|H5Z_FILTER_CONFIG_DECODE_ENABLED)) ==
-    H5Z_FILTER_CONFIG_DECODE_ENABLED) {
-     /* decoder only: read but not write */
-    return 0;
-   } else if ((filter_config_flags &
-          (H5Z_FILTER_CONFIG_ENCODE_ENABLED|H5Z_FILTER_CONFIG_DECODE_ENABLED)) ==
-    H5Z_FILTER_CONFIG_ENCODE_ENABLED) {
-     /* encoder only: write but not read (???) */
-     return -1;
-   } else if ((filter_config_flags &
-          (H5Z_FILTER_CONFIG_ENCODE_ENABLED|H5Z_FILTER_CONFIG_DECODE_ENABLED)) ==
-          (H5Z_FILTER_CONFIG_ENCODE_ENABLED|H5Z_FILTER_CONFIG_DECODE_ENABLED)) {
-    return 1;
-   }
-   }
+	{
+		unsigned int filter_config_flags;
+
+		if (H5Zget_filter_info(filtn, &filter_config_flags) < 0)
+			return -1;
+		if ((filter_config_flags
+				& (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) == 0) {
+			/* filter present but neither encode nor decode is supported (???) */
+			return -1;
+		} 
+		else if ((filter_config_flags
+				& (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) == H5Z_FILTER_CONFIG_DECODE_ENABLED) {
+			/* decoder only: read but not write */
+			return 0;
+		} 
+		else if ((filter_config_flags
+				& (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) == H5Z_FILTER_CONFIG_ENCODE_ENABLED) {
+			/* encoder only: write but not read (???) */
+			return -1;
+		} 
+		else if ((filter_config_flags
+				& (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED))
+				== (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) {
+			return 1;
+		}
+	}
 #endif
-   break;
-  case H5Z_FILTER_SHUFFLE:
+		break;
+	case H5Z_FILTER_SHUFFLE:
 #ifndef H5_HAVE_FILTER_SHUFFLE
-    return 0;
+		return 0;
 #endif
-   break;
-  case H5Z_FILTER_FLETCHER32:
+		break;
+	case H5Z_FILTER_FLETCHER32:
 #ifndef H5_HAVE_FILTER_FLETCHER32
-    return 0;
+		return 0;
 #endif
-   break;
-  case H5Z_FILTER_NBIT:
+		break;
+	case H5Z_FILTER_NBIT:
 #ifndef H5_HAVE_FILTER_NBIT
-    return 0;
+		return 0;
 #endif
-   break;
-  case H5Z_FILTER_SCALEOFFSET:
+		break;
+	case H5Z_FILTER_SCALEOFFSET:
 #ifndef H5_HAVE_FILTER_SCALEOFFSET
-    return 0;
+		return 0;
 #endif
-   break;
-  }/*switch*/
+		break;
+	}/*switch*/
 
- return 1;
+	return 1;
 }
diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c
index 9202925..d43fc33 100644
--- a/tools/lib/h5tools_str.c
+++ b/tools/lib/h5tools_str.c
@@ -991,7 +991,7 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
                         /* The name */
                         name = H5Tget_member_name(type, j);
                         h5tools_str_append(str, OPT(info->cmpd_name, ""), name);
-                        HDfree(name);
+                        H5free_memory(name);
 
                         /* The value */
                         offset = H5Tget_member_offset(type, j);
diff --git a/tools/lib/h5trav.c b/tools/lib/h5trav.c
index a475ded..d0a4a76 100644
--- a/tools/lib/h5trav.c
+++ b/tools/lib/h5trav.c
@@ -21,13 +21,15 @@
  * local typedefs
  *-------------------------------------------------------------------------
  */
+typedef struct trav_addr_path_t {
+    haddr_t addr;
+    char *path;
+} trav_addr_path_t;
+
 typedef struct trav_addr_t {
     size_t      nalloc;
     size_t      nused;
-    struct {
-        haddr_t addr;
-        char *path;
-    } *objs;
+    trav_addr_path_t *objs;
 } trav_addr_t;
 
 typedef struct {
@@ -49,7 +51,9 @@ typedef struct {
 } trav_print_udata_t;
 
 /* format for hsize_t */
+#ifdef H5TRAV_PRINT_SPACE
 #define HSIZE_T_FORMAT   "%" H5_PRINTF_LL_WIDTH "u"
+#endif /* H5TRAV_PRINT_SPACE */
 
 /*-------------------------------------------------------------------------
  * local functions
@@ -130,7 +134,7 @@ trav_addr_add(trav_addr_t *visited, haddr_t addr, const char *path)
     /* Allocate space if necessary */
     if(visited->nused == visited->nalloc) {
         visited->nalloc = MAX(1, visited->nalloc * 2);;
-        visited->objs = HDrealloc(visited->objs, visited->nalloc * sizeof(visited->objs[0]));
+        visited->objs = (trav_addr_path_t *)HDrealloc(visited->objs, visited->nalloc * sizeof(trav_addr_path_t));
     } /* end if */
 
     /* Append it */
@@ -192,14 +196,15 @@ traverse_cb(hid_t loc_id, const char *path, const H5L_info_t *linfo,
     /* Create the full path name for the link */
     if(udata->is_absolute) {
         size_t base_len = HDstrlen(udata->base_grp_name);
-        size_t add_slash = base_len ? ((udata->base_grp_name)[base_len-1] != '/') : 1;
+        size_t add_slash = base_len ? ((udata->base_grp_name)[base_len - 1] != '/') : 1;
+        size_t new_name_len = base_len + add_slash + HDstrlen(path) + 1;
 
-        if(NULL == (new_name = (char*)HDmalloc(base_len + add_slash + HDstrlen(path) + 1)))
+        if(NULL == (new_name = (char*)HDmalloc(new_name_len)))
             return(H5_ITER_ERROR);
-        HDstrcpy(new_name, udata->base_grp_name);
-        if (add_slash)
-            new_name[base_len] = '/';
-        HDstrcpy(new_name + base_len + add_slash, path);
+        if(add_slash)
+            HDsnprintf(new_name, new_name_len, "%s/%s", udata->base_grp_name, path);
+        else
+            HDsnprintf(new_name, new_name_len, "%s%s", udata->base_grp_name, path);
         full_name = new_name;
     } /* end if */
     else
@@ -214,7 +219,7 @@ traverse_cb(hid_t loc_id, const char *path, const H5L_info_t *linfo,
             if(new_name)
                 HDfree(new_name);
             return(H5_ITER_ERROR);
-        }
+        } /* end if */
 
         /* If the object has multiple links, add it to the list of addresses
          *  already visited, if it isn't there already
@@ -229,7 +234,7 @@ traverse_cb(hid_t loc_id, const char *path, const H5L_info_t *linfo,
                 if(new_name)
                     HDfree(new_name);
                 return(H5_ITER_ERROR);
-            }
+            } /* end if */
     } /* end if */
     else {
         /* Make 'visit link' callback */
@@ -238,7 +243,7 @@ traverse_cb(hid_t loc_id, const char *path, const H5L_info_t *linfo,
                 if(new_name)
                     HDfree(new_name);
                 return(H5_ITER_ERROR);
-            }
+            } /* end if */
     } /* end else */
 
     if(new_name)
@@ -680,11 +685,11 @@ h5trav_getindext(const char *name, const trav_table_t *table)
     for(i = 0; i < table->nobjs; i++) {
         /* Check for object name having full path (with leading '/') */
         if(HDstrcmp(name, table->objs[i].name) == 0)
-            return(i);
+            return((int)i);
 
         /* Check for object name without leading '/' */
         if(HDstrcmp(name, table->objs[i].name + 1) == 0)
-            return(i);
+            return((int)i);
 
         /* search also in the list of links */
         if(table->objs[i].nlinks) {
@@ -693,11 +698,11 @@ h5trav_getindext(const char *name, const trav_table_t *table)
             for ( j=0; j<table->objs[i].nlinks; j++) {
                 /* Check for object name having full path (with leading '/') */
                 if(HDstrcmp(name, table->objs[i].links[j].new_name) == 0)
-                    return(i);
+                    return((int)i);
 
                 /* Check for object name without leading '/' */
                 if(HDstrcmp(name, table->objs[i].links[j].new_name + 1) == 0)
-                    return(i);
+                    return((int)i);
             } /* end for */
         } /* end if */
     } /* end for */
@@ -728,7 +733,7 @@ trav_table_add(trav_table_t *table,
 
     if(table->nobjs == table->size) {
         table->size = MAX(1, table->size * 2);
-        table->objs = (trav_obj_t*)HDrealloc(table->objs, table->size * sizeof(trav_obj_t));
+        table->objs = (trav_obj_t *)HDrealloc(table->objs, table->size * sizeof(trav_obj_t));
     } /* end if */
 
     new_obj = table->nobjs++;
@@ -772,7 +777,7 @@ trav_table_addlink(trav_table_t *table, haddr_t objno, const char *path)
             /* allocate space if necessary */
             if(table->objs[i].nlinks == (unsigned)table->objs[i].sizelinks) {
                 table->objs[i].sizelinks = MAX(1, table->objs[i].sizelinks * 2);
-                table->objs[i].links = (trav_link_t*)HDrealloc(table->objs[i].links, table->objs[i].sizelinks * sizeof(trav_link_t));
+                table->objs[i].links = (trav_link_t *)HDrealloc(table->objs[i].links, table->objs[i].sizelinks * sizeof(trav_link_t));
             } /* end if */
 
             /* insert it */
@@ -807,7 +812,7 @@ void trav_table_addflags(unsigned *flags,
                          h5trav_type_t type,
                          trav_table_t *table)
 {
-    unsigned int new_obj;
+    size_t new_obj;
 
     if(table->nobjs == table->size) {
         table->size = MAX(1, table->size * 2);
@@ -995,6 +1000,8 @@ trav_print_visit_obj(const char *path, const H5O_info_t *oinfo,
             printf(" %-10s %s", "datatype", path);
             break;
 
+        case H5O_TYPE_UNKNOWN:
+        case H5O_TYPE_NTYPES:
         default:
             printf(" %-10s %s", "unknown object type", path);
             break;
@@ -1005,7 +1012,7 @@ trav_print_visit_obj(const char *path, const H5O_info_t *oinfo,
         /* 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);
+            H5Aiterate_by_name(print_udata->fid, path, trav_index_by, trav_index_order, NULL, trav_attr, (void *)path, H5P_DEFAULT);
     }
     else
         /* Print the link's original name */
@@ -1040,7 +1047,8 @@ trav_print_visit_lnk(const char *path, const H5L_info_t *linfo, void *udata)
                 char *targbuf = (char*)HDmalloc(linfo->u.val_size + 1);
                 HDassert(targbuf);
 
-                H5Lget_val(print_udata->fid, path, targbuf, linfo->u.val_size + 1, H5P_DEFAULT);
+                if(H5Lget_val(print_udata->fid, path, targbuf, linfo->u.val_size + 1, H5P_DEFAULT) < 0)
+                    targbuf[0] = 0;
                 printf(" %-10s %s -> %s\n", "link", path, targbuf);
                 HDfree(targbuf);
             } /* end if */
@@ -1051,21 +1059,28 @@ trav_print_visit_lnk(const char *path, const H5L_info_t *linfo, void *udata)
         case H5L_TYPE_EXTERNAL:
             if(linfo->u.val_size > 0) {
                 char *targbuf;
-                const char *filename;
-                const char *objname;
+                const char *filename = NULL;
+                const char *objname = NULL;
 
                 targbuf = (char*)HDmalloc(linfo->u.val_size + 1);
                 HDassert(targbuf);
 
-                H5Lget_val(print_udata->fid, path, targbuf, linfo->u.val_size + 1, H5P_DEFAULT);
-                H5Lunpack_elink_val(targbuf, linfo->u.val_size, NULL, &filename, &objname);
-                printf(" %-10s %s -> %s %s\n", "ext link", path, filename, objname);
+                if(H5Lget_val(print_udata->fid, path, targbuf, linfo->u.val_size + 1, H5P_DEFAULT) < 0)
+                    targbuf[0] = 0;
+                if(H5Lunpack_elink_val(targbuf, linfo->u.val_size, NULL, &filename, &objname) >= 0)
+                    printf(" %-10s %s -> %s %s\n", "ext link", path, filename, objname);
                 HDfree(targbuf);
             } /* end if */
             else
                 printf(" %-10s %s ->\n", "ext link", path);
             break;
 
+        case H5L_TYPE_HARD:
+            /* Should be handled elsewhere */
+            return(-1);
+
+        case H5L_TYPE_ERROR:
+        case H5L_TYPE_MAX:
         default:
             printf(" %-10s %s -> ???\n", "unknown type of UD link", path);
             break;
@@ -1156,31 +1171,21 @@ h5trav_visit(hid_t fid, const char *grp_name, hbool_t visit_start,
  *
  * Date: September 5, 2008
  *
- * Modified: 
- *  Jonathan Kim
- *   - Moved from h5ls.c to share among tools.  (Sep 16, 2010)
- *   - Renamed from elink_trav_add to symlink_visit_add for both soft and 
- *     external links.   (May 25, 2010)
- *   - Add type parameter to distingush between soft and external link for 
- *     sure, which prevent from mixing up visited link when the target names
- *     are same between the soft and external link, as code marks with the
- *     target name.  (May 25,2010) 
- *
  *-------------------------------------------------------------------------
  */
 herr_t
 symlink_visit_add(symlink_trav_t *visited, H5L_type_t type, const char *file, const char *path)
 {
     size_t  idx;         /* Index of address to use */
-    void    *tmp_ptr;
 
     /* Allocate space if necessary */
-    if(visited->nused == visited->nalloc) 
-    {
+    if(visited->nused == visited->nalloc) {
+        void    *tmp_ptr;
+
         visited->nalloc = MAX(1, visited->nalloc * 2);
-        if(NULL == (tmp_ptr = HDrealloc(visited->objs, visited->nalloc * sizeof(visited->objs[0]))))
+        if(NULL == (tmp_ptr = HDrealloc(visited->objs, visited->nalloc * sizeof(symlink_trav_path_t))))
             return -1;
-        visited->objs = tmp_ptr;
+        visited->objs = (symlink_trav_path_t *)tmp_ptr;
     } /* end if */
 
     /* Append it */
@@ -1190,22 +1195,19 @@ symlink_visit_add(symlink_trav_t *visited, H5L_type_t type, const char *file, co
     visited->objs[idx].file = NULL;
     visited->objs[idx].path = NULL;
 
-    if (type == H5L_TYPE_EXTERNAL)
-    {
-        if(NULL == (visited->objs[idx].file = HDstrdup(file))) 
-        {
+    if(type == H5L_TYPE_EXTERNAL) {
+        if(NULL == (visited->objs[idx].file = HDstrdup(file))) {
             visited->nused--;
             return -1;
-        }
-    }
+        } /* end if */
+    } /* end if */
 
-    if(NULL == (visited->objs[idx].path = HDstrdup(path))) 
-    {
+    if(NULL == (visited->objs[idx].path = HDstrdup(path))) {
         visited->nused--;
-        if (visited->objs[idx].file)
+        if(visited->objs[idx].file)
             HDfree (visited->objs[idx].file);
         return -1;
-    }
+    } /* end if */
 
     return 0;
 } /* end symlink_visit_add() */
@@ -1223,16 +1225,6 @@ symlink_visit_add(symlink_trav_t *visited, H5L_type_t type, const char *file, co
  *
  * Date: September 5, 2008
  *
- * Modified: 
- *  Jonathan Kim
- *   - Moved from h5ls.c to share among tools.  (Sep 16, 2010)
- *   - Renamed from elink_trav_visited to symlink_is_visited for both soft and 
- *     external links.  (May 25, 2010)
- *   - Add type parameter to distingush between soft and external link for 
- *     sure, which prevent from mixing up visited link when the target names
- *     are same between the soft and external link, as code marks with the
- *     target name.  (May 25,2010) 
- *
  *-------------------------------------------------------------------------
  */
 hbool_t
@@ -1241,21 +1233,19 @@ symlink_is_visited(symlink_trav_t *visited, H5L_type_t type, const char *file, c
     size_t u;  /* Local index variable */
 
     /* Look for symlink */
-    for(u = 0; u < visited->nused; u++)
-    {
+    for(u = 0; u < visited->nused; u++) {
         /* Check for symlink values already in array */
         /* check type and path pair to distingush between symbolic links */
-        if ((visited->objs[u].type == type) && !HDstrcmp(visited->objs[u].path, path))
-        {
+        if((visited->objs[u].type == type) && !HDstrcmp(visited->objs[u].path, path)) {
             /* if external link, file need to be matched as well */
-            if (visited->objs[u].type == H5L_TYPE_EXTERNAL)
-            {
-                if (!HDstrcmp(visited->objs[u].file, file))
-                    return (TRUE);
-            }
+            if(visited->objs[u].type == H5L_TYPE_EXTERNAL)
+                if(!HDstrcmp(visited->objs[u].file, file))
+                    return(TRUE);
+
             return (TRUE);
-        }
-    }
+        } /* end if */
+    } /* end for */
+
     /* Didn't find symlink */
     return(FALSE);
 } /* end symlink_is_visited() */
diff --git a/tools/lib/h5trav.h b/tools/lib/h5trav.h
index 3548c6b..352a9e5 100644
--- a/tools/lib/h5trav.h
+++ b/tools/lib/h5trav.h
@@ -51,14 +51,16 @@ typedef enum {
 /* Struct to keep track of symbolic link targets visited.
  * Functions: symlink_visit_add() and symlink_is_visited()
  */
+typedef struct symlink_trav_path_t {
+    H5L_type_t  type;
+    char *file;
+    char *path;
+} symlink_trav_path_t;
+
 typedef struct symlink_trav_t {
     size_t      nalloc;
     size_t      nused;
-    struct {
-        H5L_type_t  type;
-        char *file;
-        char *path;
-    } *objs;
+    symlink_trav_path_t *objs;
     hbool_t dangle_link;
 } symlink_trav_t;
 
diff --git a/tools/lib/ph5diff.h b/tools/lib/ph5diff.h
index becbd6c..2a75228 100644
--- a/tools/lib/ph5diff.h
+++ b/tools/lib/ph5diff.h
@@ -17,18 +17,18 @@
 #define _PH5DIFF_H__
 
 /* Send from manager to workers */
-#define MPI_TAG_ARGS    1
-#define MPI_TAG_PRINT_TOK  2
+#define MPI_TAG_ARGS            1
+#define MPI_TAG_PRINT_TOK       2
 
 /*Sent from workers to manager */
-#define MPI_TAG_TOK_REQUEST  3
-#define MPI_TAG_DONE    4
-#define MPI_TAG_TOK_RETURN  5
-#define MPI_TAG_PRINT_DATA  6
+#define MPI_TAG_TOK_REQUEST     3
+#define MPI_TAG_DONE            4
+#define MPI_TAG_TOK_RETURN      5
+#define MPI_TAG_PRINT_DATA      6
 
 /* Operational tags used to init and complete diff */
-#define MPI_TAG_END    7
-#define MPI_TAG_PARALLEL  8
+#define MPI_TAG_END             7
+#define MPI_TAG_PARALLEL        8
 
 struct diff_mpi_args
 {
diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt
index 8e1003e..ed8c315 100644
--- a/tools/misc/CMakeLists.txt
+++ b/tools/misc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.10)
+cmake_minimum_required (VERSION 2.8.11)
 PROJECT (HDF5_TOOLS_MISC)
 
 #-----------------------------------------------------------------------------
@@ -10,25 +10,25 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
 # Add the misc executables
 # --------------------------------------------------------------------
 #-- Misc Executables
-ADD_EXECUTABLE (h5debug ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5debug.c)
+add_executable (h5debug ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5debug.c)
 TARGET_NAMING (h5debug ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5debug " " " ")
-TARGET_LINK_LIBRARIES (h5debug ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5debug PROPERTIES FOLDER tools)
+target_link_libraries (h5debug ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (h5debug PROPERTIES FOLDER tools)
 
-ADD_EXECUTABLE (h5repart ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart.c)
+add_executable (h5repart ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart.c)
 TARGET_NAMING (h5repart ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5repart " " " ")
-TARGET_LINK_LIBRARIES (h5repart ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5repart PROPERTIES FOLDER tools)
+target_link_libraries (h5repart ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (h5repart PROPERTIES FOLDER tools)
 
-ADD_EXECUTABLE (h5mkgrp ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5mkgrp.c)
+add_executable (h5mkgrp ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5mkgrp.c)
 TARGET_NAMING (h5mkgrp ${LIB_TYPE})
 TARGET_C_PROPERTIES (h5mkgrp " " " ")
-TARGET_LINK_LIBRARIES (h5mkgrp  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_TARGET_PROPERTIES (h5mkgrp PROPERTIES FOLDER tools)
+target_link_libraries (h5mkgrp  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5mkgrp PROPERTIES FOLDER tools)
 
-SET (H5_DEP_EXECUTABLES
+set (H5_DEP_EXECUTABLES
     h5debug
     h5repart
     h5mkgrp
@@ -37,31 +37,31 @@ SET (H5_DEP_EXECUTABLES
 #-----------------------------------------------------------------------------
 # Generate the h5cc file containing settings needed to compile programs
 #-----------------------------------------------------------------------------
-#IF (NOT WIN32)
-#  CONFIGURE_FILE (${HDF5_TOOLS_MISC_SOURCE_DIR}/h5cc.in ${HDF5_BINARY_DIR}/h5cc @ONLY)
-#ENDIF (NOT WIN32)
+#if (NOT WIN32)
+#  configure_file (${HDF5_TOOLS_MISC_SOURCE_DIR}/h5cc.in ${HDF5_BINARY_DIR}/h5cc @ONLY)
+#endif (NOT WIN32)
 
-IF (BUILD_TESTING)
+if (BUILD_TESTING)
   # --------------------------------------------------------------------
   # Add the misc test executables
   # --------------------------------------------------------------------
-  IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
-    ADD_EXECUTABLE (h5repart_gentest ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart_gentest.c)
+  if (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    add_executable (h5repart_gentest ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart_gentest.c)
     TARGET_NAMING (h5repart_gentest ${LIB_TYPE})
     TARGET_C_PROPERTIES (h5repart_gentest " " " ")
-    TARGET_LINK_LIBRARIES (h5repart_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-    SET_TARGET_PROPERTIES (h5repart_gentest PROPERTIES FOLDER generator/tools)
-    #ADD_TEST (NAME h5repart_gentest COMMAND $<TARGET_FILE:h5repart_gentest>)
-  ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
+    target_link_libraries (h5repart_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+    set_target_properties (h5repart_gentest PROPERTIES FOLDER generator/tools)
+    #add_test (NAME h5repart_gentest COMMAND $<TARGET_FILE:h5repart_gentest>)
+  endif (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
 
-  ADD_EXECUTABLE (h5repart_test ${HDF5_TOOLS_MISC_SOURCE_DIR}/repart_test.c)
+  add_executable (h5repart_test ${HDF5_TOOLS_MISC_SOURCE_DIR}/repart_test.c)
   TARGET_NAMING (h5repart_test ${LIB_TYPE})
   TARGET_C_PROPERTIES (h5repart_test " " " ")
-  TARGET_LINK_LIBRARIES (h5repart_test ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-  SET_TARGET_PROPERTIES (h5repart_test PROPERTIES FOLDER tools)
+  target_link_libraries (h5repart_test ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (h5repart_test PROPERTIES FOLDER tools)
 
-  INCLUDE (CMakeTests.cmake)
-ENDIF (BUILD_TESTING)
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
 
 ##############################################################################
 ##############################################################################
@@ -77,7 +77,7 @@ ENDIF (BUILD_TESTING)
 #INSTALL_PROGRAM_PDB (h5repart ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 #INSTALL_PROGRAM_PDB (h5mkgrp ${HDF5_INSTALL_BIN_DIR} toolsapplications)
 
-INSTALL (
+install (
     TARGETS
         h5debug h5repart h5mkgrp
     RUNTIME DESTINATION
diff --git a/tools/misc/CMakeTests.cmake b/tools/misc/CMakeTests.cmake
index cc9c5e2..0887fb6 100644
--- a/tools/misc/CMakeTests.cmake
+++ b/tools/misc/CMakeTests.cmake
@@ -8,7 +8,7 @@
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the source directory into the test directory
   # --------------------------------------------------------------------
-  SET (HDF5_REFERENCE_TEST_FILES
+  set (HDF5_REFERENCE_TEST_FILES
       family_file00000.h5
       family_file00001.h5
       family_file00002.h5
@@ -29,18 +29,18 @@
       family_file00017.h5
   )
 
-  FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/${h5_file}")
-    #MESSAGE (STATUS " Copying ${h5_file}")
-    ADD_CUSTOM_COMMAND (
+  foreach (h5_file ${HDF5_REFERENCE_TEST_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/${h5_file}")
+    #message (STATUS " Copying ${h5_file}")
+    add_custom_command (
         TARGET     h5repart
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_file} ${dest}
     )
-  ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+  endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES})
   
-  SET (HDF5_MKGRP_TEST_FILES
+  set (HDF5_MKGRP_TEST_FILES
       #h5mkgrp_help.txt
       #h5mkgrp_version
       h5mkgrp_single.ls
@@ -58,26 +58,26 @@
   )
 
   # make test dir
-  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
-  FOREACH (h5_mkgrp_file ${HDF5_MKGRP_TEST_FILES})
-    SET (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_mkgrp_file}")
-    #MESSAGE (STATUS " Copying ${h5_mkgrp_file}")
-    ADD_CUSTOM_COMMAND (
+  foreach (h5_mkgrp_file ${HDF5_MKGRP_TEST_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_mkgrp_file}")
+    #message (STATUS " Copying ${h5_mkgrp_file}")
+    add_custom_command (
         TARGET     h5mkgrp
         POST_BUILD
         COMMAND    ${CMAKE_COMMAND}
         ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_mkgrp_file} ${dest}
     )
-  ENDFOREACH (h5_mkgrp_file ${HDF5_MKGRP_TEST_FILES})
+  endforeach (h5_mkgrp_file ${HDF5_MKGRP_TEST_FILES})
 
-  ADD_CUSTOM_COMMAND (
+  add_custom_command (
       TARGET     h5mkgrp
       POST_BUILD
       COMMAND    ${CMAKE_COMMAND}
       ARGS       -E copy_if_different ${PROJECT_SOURCE_DIR}/testfiles/h5mkgrp_help.txt ${PROJECT_BINARY_DIR}/testfiles/h5mkgrp_help.txt
   )
-  CONFIGURE_FILE (${PROJECT_SOURCE_DIR}/testfiles/h5mkgrp_version.txt.in ${PROJECT_BINARY_DIR}/testfiles/h5mkgrp_version.txt @ONLY)
+  configure_file (${PROJECT_SOURCE_DIR}/testfiles/h5mkgrp_version.txt.in ${PROJECT_BINARY_DIR}/testfiles/h5mkgrp_version.txt @ONLY)
 
 ##############################################################################
 ##############################################################################
@@ -86,8 +86,8 @@
 ##############################################################################
 
   MACRO (ADD_H5_TEST resultfile resultcode resultoption)
-    IF (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5MKGRP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
@@ -95,21 +95,21 @@
                   ${resultfile}.out
                   ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5MKGRP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-    ENDIF (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5MKGRP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
       
-    ADD_TEST (
+    add_test (
         NAME H5MKGRP-${resultfile}
         COMMAND $<TARGET_FILE:h5mkgrp> ${resultoption} ${resultfile}.h5 ${ARGN}
     )
-    SET_TESTS_PROPERTIES (H5MKGRP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      IF (NOT "${last_test}" STREQUAL "")
-        SET_TESTS_PROPERTIES (H5MKGRP-${resultfile} PROPERTIES DEPENDS ${last_test})
-      ENDIF (NOT "${last_test}" STREQUAL "")
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      SET_TESTS_PROPERTIES (H5MKGRP-${resultfile} PROPERTIES DEPENDS H5MKGRP-${resultfile}-clear-objects)
-      ADD_TEST (
+    set_tests_properties (H5MKGRP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5MKGRP-${resultfile} PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5MKGRP-${resultfile} PROPERTIES DEPENDS H5MKGRP-${resultfile}-clear-objects)
+      add_test (
           NAME H5MKGRP-${resultfile}-h5ls
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5ls>"
@@ -121,15 +121,15 @@
               -D "TEST_REFERENCE=${resultfile}.ls"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5MKGRP-${resultfile}-h5ls PROPERTIES DEPENDS H5MKGRP-${resultfile})
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5MKGRP-${resultfile}-h5ls PROPERTIES DEPENDS H5MKGRP-${resultfile})
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_TEST resultfile resultcode resultoption)
 
   MACRO (ADD_H5_CMP resultfile resultcode)
-    IF (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (NAME H5MKGRP_CMP-${resultfile} COMMAND $<TARGET_FILE:h5mkgrp> ${ARGN})
-    ELSE (HDF5_ENABLE_USING_MEMCHECKER)
-      ADD_TEST (
+    if (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (NAME H5MKGRP_CMP-${resultfile} COMMAND $<TARGET_FILE:h5mkgrp> ${ARGN})
+    else (HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
           NAME H5MKGRP_CMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove 
@@ -137,8 +137,8 @@
                   ${resultfile}.out
                   ${resultfile}.out.err
       )
-      SET_TESTS_PROPERTIES (H5MKGRP_CMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-      ADD_TEST (
+      set_tests_properties (H5MKGRP_CMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+      add_test (
           NAME H5MKGRP_CMP-${resultfile}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:h5mkgrp>"
@@ -149,8 +149,8 @@
               -D "TEST_REFERENCE=${resultfile}.txt"
               -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
       )
-      SET_TESTS_PROPERTIES (H5MKGRP_CMP-${resultfile} PROPERTIES DEPENDS H5MKGRP_CMP-${resultfile}-clear-objects)
-    ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+      set_tests_properties (H5MKGRP_CMP-${resultfile} PROPERTIES DEPENDS H5MKGRP_CMP-${resultfile}-clear-objects)
+    endif (HDF5_ENABLE_USING_MEMCHECKER)
   ENDMACRO (ADD_H5_CMP resultfile resultcode)
 
 ##############################################################################
@@ -160,7 +160,7 @@
 ##############################################################################
 
   # Remove any output file left over from previous test run
-  ADD_TEST (
+  add_test (
     NAME H5REPART-clearall-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove 
@@ -171,33 +171,33 @@
         scd_family00003.h5
         family_to_sec2.h5
   )
-  IF (NOT "${last_test}" STREQUAL "")
-    SET_TESTS_PROPERTIES (H5REPART-clearall-objects PROPERTIES DEPENDS ${last_test})
-  ENDIF (NOT "${last_test}" STREQUAL "")
-  SET (last_test "H5REPART-clearall-objects")
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (H5REPART-clearall-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "H5REPART-clearall-objects")
   
   # repartition family member size to 20,000 bytes.
-  ADD_TEST (NAME H5REPART-h5repart_20K COMMAND $<TARGET_FILE:h5repart> -m 20000 family_file%05d.h5 fst_family%05d.h5)
-  SET_TESTS_PROPERTIES (H5REPART-h5repart_20K PROPERTIES DEPENDS H5REPART-clearall-objects)
+  add_test (NAME H5REPART-h5repart_20K COMMAND $<TARGET_FILE:h5repart> -m 20000 family_file%05d.h5 fst_family%05d.h5)
+  set_tests_properties (H5REPART-h5repart_20K PROPERTIES DEPENDS H5REPART-clearall-objects)
 
   # repartition family member size to 5 KB.
-  ADD_TEST (NAME H5REPART-h5repart_5K COMMAND $<TARGET_FILE:h5repart> -m 5k family_file%05d.h5 scd_family%05d.h5)
-  SET_TESTS_PROPERTIES (H5REPART-h5repart_5K PROPERTIES DEPENDS H5REPART-clearall-objects)
+  add_test (NAME H5REPART-h5repart_5K COMMAND $<TARGET_FILE:h5repart> -m 5k family_file%05d.h5 scd_family%05d.h5)
+  set_tests_properties (H5REPART-h5repart_5K PROPERTIES DEPENDS H5REPART-clearall-objects)
 
   # convert family file to sec2 file of 20,000 bytes
-  ADD_TEST (NAME H5REPART-h5repart_sec2 COMMAND $<TARGET_FILE:h5repart> -m 20000 -family_to_sec2 family_file%05d.h5 family_to_sec2.h5)
-  SET_TESTS_PROPERTIES (H5REPART-h5repart_sec2 PROPERTIES DEPENDS H5REPART-clearall-objects)
+  add_test (NAME H5REPART-h5repart_sec2 COMMAND $<TARGET_FILE:h5repart> -m 20000 -family_to_sec2 family_file%05d.h5 family_to_sec2.h5)
+  set_tests_properties (H5REPART-h5repart_sec2 PROPERTIES DEPENDS H5REPART-clearall-objects)
 
   # test the output files repartitioned above.
-  ADD_TEST (NAME H5REPART-h5repart_test COMMAND $<TARGET_FILE:h5repart_test>)
-  SET_TESTS_PROPERTIES (H5REPART-h5repart_test PROPERTIES DEPENDS H5REPART-clearall-objects DEPENDS H5REPART-h5repart_20K DEPENDS H5REPART-h5repart_5K DEPENDS H5REPART-h5repart_sec2)
+  add_test (NAME H5REPART-h5repart_test COMMAND $<TARGET_FILE:h5repart_test>)
+  set_tests_properties (H5REPART-h5repart_test PROPERTIES DEPENDS "H5REPART-clearall-objects;H5REPART-h5repart_20K;H5REPART-h5repart_5K;H5REPART-h5repart_sec2")
 
-  SET (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES}
+  set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES}
         h5repart_test
   )
   
-  IF (HDF5_ENABLE_USING_MEMCHECKER)
-    ADD_TEST (
+  if (HDF5_ENABLE_USING_MEMCHECKER)
+    add_test (
         NAME H5MKGRP-clearall-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove 
@@ -242,12 +242,12 @@
                 h5mkgrp_nested_mult_lp.out
                 h5mkgrp_nested_mult_lp.out.err
     )
-    SET_TESTS_PROPERTIES (H5MKGRP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
-    IF (NOT "${last_test}" STREQUAL "")
-      SET_TESTS_PROPERTIES (H5MKGRP-clearall-objects PROPERTIES DEPENDS ${last_test})
-    ENDIF (NOT "${last_test}" STREQUAL "")
-    SET (last_test "H5MKGRP-clearall-objects")
-  ENDIF (HDF5_ENABLE_USING_MEMCHECKER)
+    set_tests_properties (H5MKGRP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (H5MKGRP-clearall-objects PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "H5MKGRP-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
 
   # Check that help & version is displayed properly
   ADD_H5_CMP (h5mkgrp_help 0 "-h")
diff --git a/tools/misc/Makefile.am b/tools/misc/Makefile.am
index 0055f39..882f8f2 100644
--- a/tools/misc/Makefile.am
+++ b/tools/misc/Makefile.am
@@ -21,7 +21,7 @@
 include $(top_srcdir)/config/commence.am
 
 # Include src directory
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
 
 #test script and program
 TEST_PROG=h5repart_gentest talign
diff --git a/tools/misc/Makefile.in b/tools/misc/Makefile.in
index 3320276..b0a7822 100644
--- a/tools/misc/Makefile.in
+++ b/tools/misc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -33,23 +33,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     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;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -68,12 +96,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(top_srcdir)/config/commence.am \
+	$(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \
 	$(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
+	$(top_srcdir)/bin/test-driver
 check_PROGRAMS = $(am__EXEEXT_1) repart_test$(EXEEXT)
 bin_PROGRAMS = h5debug$(EXEEXT) h5repart$(EXEEXT) h5mkgrp$(EXEEXT)
 TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT)
@@ -197,12 +225,200 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
@@ -214,7 +430,10 @@ AMTAR = @AMTAR@
 # instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
 # This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
 AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
+
+# Include src directory
+AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
+	-I$(top_srcdir)/tools/lib
 AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
@@ -274,7 +493,6 @@ FC_VERSION = @FC_VERSION@
 FGREP = @FGREP@
 FILTERS = @FILTERS@
 FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
 GREP = @GREP@
 H5_CFLAGS = @H5_CFLAGS@
 H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -488,9 +706,6 @@ TRACE = perl $(top_srcdir)/bin/trace
 CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5 \
 	../testfiles/fst_family*.h5 ../testfiles/scd_family*.h5
 
-# Include src directory
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/tools/lib
-
 #test script and program
 TEST_PROG = h5repart_gentest talign
 TEST_SCRIPT = testh5repart.sh testh5mkgrp.sh
@@ -539,7 +754,7 @@ TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -586,10 +801,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
 	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; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -610,7 +827,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -632,21 +850,27 @@ 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) $(EXTRA_h5debug_DEPENDENCIES) 
 	@rm -f h5debug$(EXEEXT)
 	$(AM_V_CCLD)$(h5debug_LINK) $(h5debug_OBJECTS) $(h5debug_LDADD) $(LIBS)
+
 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) $(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) $(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) $(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) $(EXTRA_talign_DEPENDENCIES) 
 	@rm -f talign$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(talign_OBJECTS) $(talign_LDADD) $(LIBS)
@@ -704,14 +928,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .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
 @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@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -726,26 +950,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -757,15 +970,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -774,9 +983,10 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
 	case "$(srcdir)" in \
 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 	  *) sdir=$(subdir)/$(srcdir) ;; \
@@ -792,6 +1002,165 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+h5repart_gentest.log: h5repart_gentest$(EXEEXT)
+	@p='h5repart_gentest$(EXEEXT)'; \
+	b='h5repart_gentest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+talign.log: talign$(EXEEXT)
+	@p='talign$(EXEEXT)'; \
+	b='talign'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -851,6 +1220,9 @@ install-strip:
 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -938,22 +1310,22 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \
-	clean clean-binPROGRAMS 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-binPROGRAMS install-binSCRIPTS install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-local 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 uninstall-binSCRIPTS \
-	uninstall-local
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	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 install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-exec-local \
+	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 \
+	recheck tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-local
 
 
 # List all build rules defined by HDF5 Makefiles as "PHONY" targets here.
diff --git a/tools/misc/h5debug.c b/tools/misc/h5debug.c
index e8de44c..6b043ba 100644
--- a/tools/misc/h5debug.c
+++ b/tools/misc/h5debug.c
@@ -175,7 +175,10 @@ main(int argc, char *argv[])
         HDexit(1);
     } /* end if */
     if(HDstrchr(argv[1], '%'))
-  		H5Pset_fapl_family (fapl, (hsize_t)0, H5P_DEFAULT);
+        if(H5Pset_fapl_family (fapl, (hsize_t)0, H5P_DEFAULT) < 0) {
+            fprintf(stderr, "cannot set file access property list\n");
+            HDexit(1);
+        }
     if((fid = H5Fopen(argv[1], H5F_ACC_RDONLY, fapl)) < 0) {
         HDfprintf(stderr, "cannot open file\n");
         HDexit(1);
diff --git a/tools/misc/h5repart_gentest.c b/tools/misc/h5repart_gentest.c
index 8420da5..f7d9a73 100644
--- a/tools/misc/h5repart_gentest.c
+++ b/tools/misc/h5repart_gentest.c
@@ -23,7 +23,6 @@
 #include "hdf5.h"
 #include "H5private.h"
 
-#define KB              1024
 #define FAMILY_NUMBER   4
 #define FAMILY_SIZE     1024
 #define FILENAME        "family_file%05d.h5"
diff --git a/tools/misc/talign.c b/tools/misc/talign.c
index 017eb55..3fd1694 100644
--- a/tools/misc/talign.c
+++ b/tools/misc/talign.c
@@ -152,7 +152,7 @@ out:
             mname ? mname : "(null)", (int)H5Tget_member_offset(fix,0),
             string5, (char *)(data + H5Tget_member_offset(fix, 0)));
         if(mname)
-            free(mname);
+            H5free_memory(mname);
 
         fptr = (float *)(data + H5Tget_member_offset(fix, 1));
         mname = H5Tget_member_name(fix, 1);
@@ -163,7 +163,7 @@ out:
             (double)fok[0], (double)fptr[0],
             (double)fok[1], (double)fptr[1]);
         if(mname)
-            free(mname);
+            H5free_memory(mname);
 
         fptr = (float *)(data + H5Tget_member_offset(fix, 2));
         mname = H5Tget_member_name(fix, 2);
@@ -173,7 +173,7 @@ out:
             (double)fnok[0], (double)fptr[0],
             (double)fnok[1], (double)fptr[1]);
         if(mname)
-            free(mname);
+            H5free_memory(mname);
 
         fptr = (float *)(data + H5Tget_member_offset(fix, 1));
         printf("\n"
diff --git a/tools/misc/testh5mkgrp.sh.in b/tools/misc/testh5mkgrp.sh.in
index 85205a8..190e824 100644
--- a/tools/misc/testh5mkgrp.sh.in
+++ b/tools/misc/testh5mkgrp.sh.in
@@ -49,7 +49,7 @@ SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
 # testfiles source dirs for tools
 SRC_H5MKGRP_TESTFILES="$SRC_TOOLS/misc/testfiles"
 
-TESTDIR=./testfiles
+TESTDIR=./testgrp
 test -d $TESTDIR || mkdir -p $TESTDIR
 
 ######################################################################
diff --git a/tools/testfiles/tcmpdintarray.ddl b/tools/testfiles/tcmpdintarray.ddl
new file mode 100644
index 0000000..ef21cd2
--- /dev/null
+++ b/tools/testfiles/tcmpdintarray.ddl
@@ -0,0 +1,64 @@
+HDF5 "tcmpdintarray.h5" {
+GROUP "/" {
+   DATASET "CompoundIntArray" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_ARRAY { [8] H5T_STD_U8LE } "DU08BITS";
+         H5T_ARRAY { [16] H5T_STD_U16LE } "DU16BITS";
+         H5T_ARRAY { [32] H5T_STD_U32LE } "DU32BITS";
+         H5T_ARRAY { [64] H5T_STD_U64LE } "DU64BITS";
+         H5T_ARRAY { [8] H5T_STD_I8LE } "DS08BITS";
+         H5T_ARRAY { [16] H5T_STD_I16LE } "DS16BITS";
+         H5T_ARRAY { [32] H5T_STD_I32LE } "DS32BITS";
+         H5T_ARRAY { [64] H5T_STD_I64LE } "DS64BITS";
+         H5T_ARRAY { [8] H5T_IEEE_F64LE } "DummyDBL";
+      }
+      DATASPACE  SIMPLE { ( 4 ) / ( 4 ) }
+      DATA {
+      (0): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768 ],
+            [ 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 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 1844674407370745 [...]
+            [ -1, -2, -4, -8, -16, -32, -64, -128 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768 ],
+            [ -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, -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, -703 [...]
+            [ 0.0001, 1.0001, 2.0001, 3.0001, 4.0001, 5.0001, 6.0001, 7.0001 ]
+         },
+      (1): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768 ],
+            [ 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 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 1844674407370745 [...]
+            [ -1, -2, -4, -8, -16, -32, -64, -128 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768 ],
+            [ -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, -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, -703 [...]
+            [ 0.0001, 1.0001, 2.0001, 3.0001, 4.0001, 5.0001, 6.0001, 7.0001 ]
+         },
+      (2): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768 ],
+            [ 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 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 1844674407370745 [...]
+            [ -1, -2, -4, -8, -16, -32, -64, -128 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768 ],
+            [ -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, -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, -703 [...]
+            [ 0.0001, 1.0001, 2.0001, 3.0001, 4.0001, 5.0001, 6.0001, 7.0001 ]
+         },
+      (3): {
+            [ 255, 254, 252, 248, 240, 224, 192, 128 ],
+            [ 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152, 32768 ],
+            [ 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 ],
+            [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 1844674407370745 [...]
+            [ -1, -2, -4, -8, -16, -32, -64, -128 ],
+            [ -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768 ],
+            [ -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, -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, -703 [...]
+            [ 0.0001, 1.0001, 2.0001, 3.0001, 4.0001, 5.0001, 6.0001, 7.0001 ]
+         }
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tcmpdintarray.h5 b/tools/testfiles/tcmpdintarray.h5
new file mode 100644
index 0000000..17798fe
Binary files /dev/null and b/tools/testfiles/tcmpdintarray.h5 differ
diff --git a/tools/testfiles/tcmpdints.ddl b/tools/testfiles/tcmpdints.ddl
new file mode 100644
index 0000000..f2986f3
--- /dev/null
+++ b/tools/testfiles/tcmpdints.ddl
@@ -0,0 +1,1444 @@
+HDF5 "tcmpdints.h5" {
+GROUP "/" {
+   DATASET "CompoundInts" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_STD_U8LE "DU08BITS";
+         H5T_STD_U16LE "DU16BITS";
+         H5T_STD_U32LE "DU32BITS";
+         H5T_STD_U64LE "DU64BITS";
+         H5T_STD_I8LE "DS08BITS";
+         H5T_STD_I16LE "DS16BITS";
+         H5T_STD_I32LE "DS32BITS";
+         H5T_STD_I64LE "DS64BITS";
+         H5T_IEEE_F64LE "DummyDBL";
+      }
+      DATASPACE  SIMPLE { ( 64 ) / ( 64 ) }
+      DATA {
+      (0): {
+            255,
+            65535,
+            4294967295,
+            18446744073709551615,
+            -1,
+            -1,
+            -1,
+            -1,
+            0.0001
+         },
+      (1): {
+            254,
+            65534,
+            4294967294,
+            18446744073709551614,
+            -2,
+            -2,
+            -2,
+            -2,
+            1.0001
+         },
+      (2): {
+            252,
+            65532,
+            4294967292,
+            18446744073709551612,
+            -4,
+            -4,
+            -4,
+            -4,
+            2.0001
+         },
+      (3): {
+            248,
+            65528,
+            4294967288,
+            18446744073709551608,
+            -8,
+            -8,
+            -8,
+            -8,
+            3.0001
+         },
+      (4): {
+            240,
+            65520,
+            4294967280,
+            18446744073709551600,
+            -16,
+            -16,
+            -16,
+            -16,
+            4.0001
+         },
+      (5): {
+            224,
+            65504,
+            4294967264,
+            18446744073709551584,
+            -32,
+            -32,
+            -32,
+            -32,
+            5.0001
+         },
+      (6): {
+            192,
+            65472,
+            4294967232,
+            18446744073709551552,
+            -64,
+            -64,
+            -64,
+            -64,
+            6.0001
+         },
+      (7): {
+            128,
+            65408,
+            4294967168,
+            18446744073709551488,
+            -128,
+            -128,
+            -128,
+            -128,
+            7.0001
+         },
+      (8): {
+            255,
+            65280,
+            4294967040,
+            18446744073709551360,
+            -1,
+            -256,
+            -256,
+            -256,
+            8.0001
+         },
+      (9): {
+            254,
+            65024,
+            4294966784,
+            18446744073709551104,
+            -2,
+            -512,
+            -512,
+            -512,
+            9.0001
+         },
+      (10): {
+            252,
+            64512,
+            4294966272,
+            18446744073709550592,
+            -4,
+            -1024,
+            -1024,
+            -1024,
+            10.0001
+         },
+      (11): {
+            248,
+            63488,
+            4294965248,
+            18446744073709549568,
+            -8,
+            -2048,
+            -2048,
+            -2048,
+            11.0001
+         },
+      (12): {
+            240,
+            61440,
+            4294963200,
+            18446744073709547520,
+            -16,
+            -4096,
+            -4096,
+            -4096,
+            12.0001
+         },
+      (13): {
+            224,
+            57344,
+            4294959104,
+            18446744073709543424,
+            -32,
+            -8192,
+            -8192,
+            -8192,
+            13.0001
+         },
+      (14): {
+            192,
+            49152,
+            4294950912,
+            18446744073709535232,
+            -64,
+            -16384,
+            -16384,
+            -16384,
+            14.0001
+         },
+      (15): {
+            128,
+            32768,
+            4294934528,
+            18446744073709518848,
+            -128,
+            -32768,
+            -32768,
+            -32768,
+            15.0001
+         },
+      (16): {
+            255,
+            65535,
+            4294901760,
+            18446744073709486080,
+            -1,
+            -1,
+            -65536,
+            -65536,
+            16.0001
+         },
+      (17): {
+            254,
+            65534,
+            4294836224,
+            18446744073709420544,
+            -2,
+            -2,
+            -131072,
+            -131072,
+            17.0001
+         },
+      (18): {
+            252,
+            65532,
+            4294705152,
+            18446744073709289472,
+            -4,
+            -4,
+            -262144,
+            -262144,
+            18.0001
+         },
+      (19): {
+            248,
+            65528,
+            4294443008,
+            18446744073709027328,
+            -8,
+            -8,
+            -524288,
+            -524288,
+            19.0001
+         },
+      (20): {
+            240,
+            65520,
+            4293918720,
+            18446744073708503040,
+            -16,
+            -16,
+            -1048576,
+            -1048576,
+            20.0001
+         },
+      (21): {
+            224,
+            65504,
+            4292870144,
+            18446744073707454464,
+            -32,
+            -32,
+            -2097152,
+            -2097152,
+            21.0001
+         },
+      (22): {
+            192,
+            65472,
+            4290772992,
+            18446744073705357312,
+            -64,
+            -64,
+            -4194304,
+            -4194304,
+            22.0001
+         },
+      (23): {
+            128,
+            65408,
+            4286578688,
+            18446744073701163008,
+            -128,
+            -128,
+            -8388608,
+            -8388608,
+            23.0001
+         },
+      (24): {
+            255,
+            65280,
+            4278190080,
+            18446744073692774400,
+            -1,
+            -256,
+            -16777216,
+            -16777216,
+            24.0001
+         },
+      (25): {
+            254,
+            65024,
+            4261412864,
+            18446744073675997184,
+            -2,
+            -512,
+            -33554432,
+            -33554432,
+            25.0001
+         },
+      (26): {
+            252,
+            64512,
+            4227858432,
+            18446744073642442752,
+            -4,
+            -1024,
+            -67108864,
+            -67108864,
+            26.0001
+         },
+      (27): {
+            248,
+            63488,
+            4160749568,
+            18446744073575333888,
+            -8,
+            -2048,
+            -134217728,
+            -134217728,
+            27.0001
+         },
+      (28): {
+            240,
+            61440,
+            4026531840,
+            18446744073441116160,
+            -16,
+            -4096,
+            -268435456,
+            -268435456,
+            28.0001
+         },
+      (29): {
+            224,
+            57344,
+            3758096384,
+            18446744073172680704,
+            -32,
+            -8192,
+            -536870912,
+            -536870912,
+            29.0001
+         },
+      (30): {
+            192,
+            49152,
+            3221225472,
+            18446744072635809792,
+            -64,
+            -16384,
+            -1073741824,
+            -1073741824,
+            30.0001
+         },
+      (31): {
+            128,
+            32768,
+            2147483648,
+            18446744071562067968,
+            -128,
+            -32768,
+            -2147483648,
+            -2147483648,
+            31.0001
+         },
+      (32): {
+            255,
+            65535,
+            4294967295,
+            18446744069414584320,
+            -1,
+            -1,
+            -1,
+            -4294967296,
+            32.0001
+         },
+      (33): {
+            254,
+            65534,
+            4294967294,
+            18446744065119617024,
+            -2,
+            -2,
+            -2,
+            -8589934592,
+            33.0001
+         },
+      (34): {
+            252,
+            65532,
+            4294967292,
+            18446744056529682432,
+            -4,
+            -4,
+            -4,
+            -17179869184,
+            34.0001
+         },
+      (35): {
+            248,
+            65528,
+            4294967288,
+            18446744039349813248,
+            -8,
+            -8,
+            -8,
+            -34359738368,
+            35.0001
+         },
+      (36): {
+            240,
+            65520,
+            4294967280,
+            18446744004990074880,
+            -16,
+            -16,
+            -16,
+            -68719476736,
+            36.0001
+         },
+      (37): {
+            224,
+            65504,
+            4294967264,
+            18446743936270598144,
+            -32,
+            -32,
+            -32,
+            -137438953472,
+            37.0001
+         },
+      (38): {
+            192,
+            65472,
+            4294967232,
+            18446743798831644672,
+            -64,
+            -64,
+            -64,
+            -274877906944,
+            38.0001
+         },
+      (39): {
+            128,
+            65408,
+            4294967168,
+            18446743523953737728,
+            -128,
+            -128,
+            -128,
+            -549755813888,
+            39.0001
+         },
+      (40): {
+            255,
+            65280,
+            4294967040,
+            18446742974197923840,
+            -1,
+            -256,
+            -256,
+            -1099511627776,
+            40.0001
+         },
+      (41): {
+            254,
+            65024,
+            4294966784,
+            18446741874686296064,
+            -2,
+            -512,
+            -512,
+            -2199023255552,
+            41.0001
+         },
+      (42): {
+            252,
+            64512,
+            4294966272,
+            18446739675663040512,
+            -4,
+            -1024,
+            -1024,
+            -4398046511104,
+            42.0001
+         },
+      (43): {
+            248,
+            63488,
+            4294965248,
+            18446735277616529408,
+            -8,
+            -2048,
+            -2048,
+            -8796093022208,
+            43.0001
+         },
+      (44): {
+            240,
+            61440,
+            4294963200,
+            18446726481523507200,
+            -16,
+            -4096,
+            -4096,
+            -17592186044416,
+            44.0001
+         },
+      (45): {
+            224,
+            57344,
+            4294959104,
+            18446708889337462784,
+            -32,
+            -8192,
+            -8192,
+            -35184372088832,
+            45.0001
+         },
+      (46): {
+            192,
+            49152,
+            4294950912,
+            18446673704965373952,
+            -64,
+            -16384,
+            -16384,
+            -70368744177664,
+            46.0001
+         },
+      (47): {
+            128,
+            32768,
+            4294934528,
+            18446603336221196288,
+            -128,
+            -32768,
+            -32768,
+            -140737488355328,
+            47.0001
+         },
+      (48): {
+            255,
+            65535,
+            4294901760,
+            18446462598732840960,
+            -1,
+            -1,
+            -65536,
+            -281474976710656,
+            48.0001
+         },
+      (49): {
+            254,
+            65534,
+            4294836224,
+            18446181123756130304,
+            -2,
+            -2,
+            -131072,
+            -562949953421312,
+            49.0001
+         },
+      (50): {
+            252,
+            65532,
+            4294705152,
+            18445618173802708992,
+            -4,
+            -4,
+            -262144,
+            -1125899906842624,
+            50.0001
+         },
+      (51): {
+            248,
+            65528,
+            4294443008,
+            18444492273895866368,
+            -8,
+            -8,
+            -524288,
+            -2251799813685248,
+            51.0001
+         },
+      (52): {
+            240,
+            65520,
+            4293918720,
+            18442240474082181120,
+            -16,
+            -16,
+            -1048576,
+            -4503599627370496,
+            52.0001
+         },
+      (53): {
+            224,
+            65504,
+            4292870144,
+            18437736874454810624,
+            -32,
+            -32,
+            -2097152,
+            -9007199254740992,
+            53.0001
+         },
+      (54): {
+            192,
+            65472,
+            4290772992,
+            18428729675200069632,
+            -64,
+            -64,
+            -4194304,
+            -18014398509481984,
+            54.0001
+         },
+      (55): {
+            128,
+            65408,
+            4286578688,
+            18410715276690587648,
+            -128,
+            -128,
+            -8388608,
+            -36028797018963968,
+            55.0001
+         },
+      (56): {
+            255,
+            65280,
+            4278190080,
+            18374686479671623680,
+            -1,
+            -256,
+            -16777216,
+            -72057594037927936,
+            56.0001
+         },
+      (57): {
+            254,
+            65024,
+            4261412864,
+            18302628885633695744,
+            -2,
+            -512,
+            -33554432,
+            -144115188075855872,
+            57.0001
+         },
+      (58): {
+            252,
+            64512,
+            4227858432,
+            18158513697557839872,
+            -4,
+            -1024,
+            -67108864,
+            -288230376151711744,
+            58.0001
+         },
+      (59): {
+            248,
+            63488,
+            4160749568,
+            17870283321406128128,
+            -8,
+            -2048,
+            -134217728,
+            -576460752303423488,
+            59.0001
+         },
+      (60): {
+            240,
+            61440,
+            4026531840,
+            17293822569102704640,
+            -16,
+            -4096,
+            -268435456,
+            -1152921504606846976,
+            60.0001
+         },
+      (61): {
+            224,
+            57344,
+            3758096384,
+            16140901064495857664,
+            -32,
+            -8192,
+            -536870912,
+            -2305843009213693952,
+            61.0001
+         },
+      (62): {
+            192,
+            49152,
+            3221225472,
+            13835058055282163712,
+            -64,
+            -16384,
+            -1073741824,
+            -4611686018427387904,
+            62.0001
+         },
+      (63): {
+            128,
+            32768,
+            2147483648,
+            9223372036854775808,
+            -128,
+            -32768,
+            -2147483648,
+            -9223372036854775808,
+            63.0001
+         }
+      }
+   }
+   DATASET "CompoundRInts" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_STD_U64LE "DU64BITS";
+         H5T_STD_U32LE "DU32BITS";
+         H5T_STD_U16LE "DU16BITS";
+         H5T_STD_U8LE "DU08BITS";
+         H5T_STD_I64LE "DS64BITS";
+         H5T_STD_I32LE "DS32BITS";
+         H5T_STD_I16LE "DS16BITS";
+         H5T_STD_I8LE "DS08BITS";
+         H5T_IEEE_F64LE "DummyDBL";
+      }
+      DATASPACE  SIMPLE { ( 64 ) / ( 64 ) }
+      DATA {
+      (0): {
+            18446744073709551615,
+            4294967295,
+            65535,
+            255,
+            -1,
+            -1,
+            -1,
+            -1,
+            0.0001
+         },
+      (1): {
+            18446744073709551614,
+            4294967294,
+            65534,
+            254,
+            -2,
+            -2,
+            -2,
+            -2,
+            1.0001
+         },
+      (2): {
+            18446744073709551612,
+            4294967292,
+            65532,
+            252,
+            -4,
+            -4,
+            -4,
+            -4,
+            2.0001
+         },
+      (3): {
+            18446744073709551608,
+            4294967288,
+            65528,
+            248,
+            -8,
+            -8,
+            -8,
+            -8,
+            3.0001
+         },
+      (4): {
+            18446744073709551600,
+            4294967280,
+            65520,
+            240,
+            -16,
+            -16,
+            -16,
+            -16,
+            4.0001
+         },
+      (5): {
+            18446744073709551584,
+            4294967264,
+            65504,
+            224,
+            -32,
+            -32,
+            -32,
+            -32,
+            5.0001
+         },
+      (6): {
+            18446744073709551552,
+            4294967232,
+            65472,
+            192,
+            -64,
+            -64,
+            -64,
+            -64,
+            6.0001
+         },
+      (7): {
+            18446744073709551488,
+            4294967168,
+            65408,
+            128,
+            -128,
+            -128,
+            -128,
+            -128,
+            7.0001
+         },
+      (8): {
+            18446744073709551360,
+            4294967040,
+            65280,
+            255,
+            -256,
+            -256,
+            -256,
+            -1,
+            8.0001
+         },
+      (9): {
+            18446744073709551104,
+            4294966784,
+            65024,
+            254,
+            -512,
+            -512,
+            -512,
+            -2,
+            9.0001
+         },
+      (10): {
+            18446744073709550592,
+            4294966272,
+            64512,
+            252,
+            -1024,
+            -1024,
+            -1024,
+            -4,
+            10.0001
+         },
+      (11): {
+            18446744073709549568,
+            4294965248,
+            63488,
+            248,
+            -2048,
+            -2048,
+            -2048,
+            -8,
+            11.0001
+         },
+      (12): {
+            18446744073709547520,
+            4294963200,
+            61440,
+            240,
+            -4096,
+            -4096,
+            -4096,
+            -16,
+            12.0001
+         },
+      (13): {
+            18446744073709543424,
+            4294959104,
+            57344,
+            224,
+            -8192,
+            -8192,
+            -8192,
+            -32,
+            13.0001
+         },
+      (14): {
+            18446744073709535232,
+            4294950912,
+            49152,
+            192,
+            -16384,
+            -16384,
+            -16384,
+            -64,
+            14.0001
+         },
+      (15): {
+            18446744073709518848,
+            4294934528,
+            32768,
+            128,
+            -32768,
+            -32768,
+            -32768,
+            -128,
+            15.0001
+         },
+      (16): {
+            18446744073709486080,
+            4294901760,
+            65535,
+            255,
+            -65536,
+            -65536,
+            -1,
+            -1,
+            16.0001
+         },
+      (17): {
+            18446744073709420544,
+            4294836224,
+            65534,
+            254,
+            -131072,
+            -131072,
+            -2,
+            -2,
+            17.0001
+         },
+      (18): {
+            18446744073709289472,
+            4294705152,
+            65532,
+            252,
+            -262144,
+            -262144,
+            -4,
+            -4,
+            18.0001
+         },
+      (19): {
+            18446744073709027328,
+            4294443008,
+            65528,
+            248,
+            -524288,
+            -524288,
+            -8,
+            -8,
+            19.0001
+         },
+      (20): {
+            18446744073708503040,
+            4293918720,
+            65520,
+            240,
+            -1048576,
+            -1048576,
+            -16,
+            -16,
+            20.0001
+         },
+      (21): {
+            18446744073707454464,
+            4292870144,
+            65504,
+            224,
+            -2097152,
+            -2097152,
+            -32,
+            -32,
+            21.0001
+         },
+      (22): {
+            18446744073705357312,
+            4290772992,
+            65472,
+            192,
+            -4194304,
+            -4194304,
+            -64,
+            -64,
+            22.0001
+         },
+      (23): {
+            18446744073701163008,
+            4286578688,
+            65408,
+            128,
+            -8388608,
+            -8388608,
+            -128,
+            -128,
+            23.0001
+         },
+      (24): {
+            18446744073692774400,
+            4278190080,
+            65280,
+            255,
+            -16777216,
+            -16777216,
+            -256,
+            -1,
+            24.0001
+         },
+      (25): {
+            18446744073675997184,
+            4261412864,
+            65024,
+            254,
+            -33554432,
+            -33554432,
+            -512,
+            -2,
+            25.0001
+         },
+      (26): {
+            18446744073642442752,
+            4227858432,
+            64512,
+            252,
+            -67108864,
+            -67108864,
+            -1024,
+            -4,
+            26.0001
+         },
+      (27): {
+            18446744073575333888,
+            4160749568,
+            63488,
+            248,
+            -134217728,
+            -134217728,
+            -2048,
+            -8,
+            27.0001
+         },
+      (28): {
+            18446744073441116160,
+            4026531840,
+            61440,
+            240,
+            -268435456,
+            -268435456,
+            -4096,
+            -16,
+            28.0001
+         },
+      (29): {
+            18446744073172680704,
+            3758096384,
+            57344,
+            224,
+            -536870912,
+            -536870912,
+            -8192,
+            -32,
+            29.0001
+         },
+      (30): {
+            18446744072635809792,
+            3221225472,
+            49152,
+            192,
+            -1073741824,
+            -1073741824,
+            -16384,
+            -64,
+            30.0001
+         },
+      (31): {
+            18446744071562067968,
+            2147483648,
+            32768,
+            128,
+            -2147483648,
+            -2147483648,
+            -32768,
+            -128,
+            31.0001
+         },
+      (32): {
+            18446744069414584320,
+            4294967295,
+            65535,
+            255,
+            -4294967296,
+            -1,
+            -1,
+            -1,
+            32.0001
+         },
+      (33): {
+            18446744065119617024,
+            4294967294,
+            65534,
+            254,
+            -8589934592,
+            -2,
+            -2,
+            -2,
+            33.0001
+         },
+      (34): {
+            18446744056529682432,
+            4294967292,
+            65532,
+            252,
+            -17179869184,
+            -4,
+            -4,
+            -4,
+            34.0001
+         },
+      (35): {
+            18446744039349813248,
+            4294967288,
+            65528,
+            248,
+            -34359738368,
+            -8,
+            -8,
+            -8,
+            35.0001
+         },
+      (36): {
+            18446744004990074880,
+            4294967280,
+            65520,
+            240,
+            -68719476736,
+            -16,
+            -16,
+            -16,
+            36.0001
+         },
+      (37): {
+            18446743936270598144,
+            4294967264,
+            65504,
+            224,
+            -137438953472,
+            -32,
+            -32,
+            -32,
+            37.0001
+         },
+      (38): {
+            18446743798831644672,
+            4294967232,
+            65472,
+            192,
+            -274877906944,
+            -64,
+            -64,
+            -64,
+            38.0001
+         },
+      (39): {
+            18446743523953737728,
+            4294967168,
+            65408,
+            128,
+            -549755813888,
+            -128,
+            -128,
+            -128,
+            39.0001
+         },
+      (40): {
+            18446742974197923840,
+            4294967040,
+            65280,
+            255,
+            -1099511627776,
+            -256,
+            -256,
+            -1,
+            40.0001
+         },
+      (41): {
+            18446741874686296064,
+            4294966784,
+            65024,
+            254,
+            -2199023255552,
+            -512,
+            -512,
+            -2,
+            41.0001
+         },
+      (42): {
+            18446739675663040512,
+            4294966272,
+            64512,
+            252,
+            -4398046511104,
+            -1024,
+            -1024,
+            -4,
+            42.0001
+         },
+      (43): {
+            18446735277616529408,
+            4294965248,
+            63488,
+            248,
+            -8796093022208,
+            -2048,
+            -2048,
+            -8,
+            43.0001
+         },
+      (44): {
+            18446726481523507200,
+            4294963200,
+            61440,
+            240,
+            -17592186044416,
+            -4096,
+            -4096,
+            -16,
+            44.0001
+         },
+      (45): {
+            18446708889337462784,
+            4294959104,
+            57344,
+            224,
+            -35184372088832,
+            -8192,
+            -8192,
+            -32,
+            45.0001
+         },
+      (46): {
+            18446673704965373952,
+            4294950912,
+            49152,
+            192,
+            -70368744177664,
+            -16384,
+            -16384,
+            -64,
+            46.0001
+         },
+      (47): {
+            18446603336221196288,
+            4294934528,
+            32768,
+            128,
+            -140737488355328,
+            -32768,
+            -32768,
+            -128,
+            47.0001
+         },
+      (48): {
+            18446462598732840960,
+            4294901760,
+            65535,
+            255,
+            -281474976710656,
+            -65536,
+            -1,
+            -1,
+            48.0001
+         },
+      (49): {
+            18446181123756130304,
+            4294836224,
+            65534,
+            254,
+            -562949953421312,
+            -131072,
+            -2,
+            -2,
+            49.0001
+         },
+      (50): {
+            18445618173802708992,
+            4294705152,
+            65532,
+            252,
+            -1125899906842624,
+            -262144,
+            -4,
+            -4,
+            50.0001
+         },
+      (51): {
+            18444492273895866368,
+            4294443008,
+            65528,
+            248,
+            -2251799813685248,
+            -524288,
+            -8,
+            -8,
+            51.0001
+         },
+      (52): {
+            18442240474082181120,
+            4293918720,
+            65520,
+            240,
+            -4503599627370496,
+            -1048576,
+            -16,
+            -16,
+            52.0001
+         },
+      (53): {
+            18437736874454810624,
+            4292870144,
+            65504,
+            224,
+            -9007199254740992,
+            -2097152,
+            -32,
+            -32,
+            53.0001
+         },
+      (54): {
+            18428729675200069632,
+            4290772992,
+            65472,
+            192,
+            -18014398509481984,
+            -4194304,
+            -64,
+            -64,
+            54.0001
+         },
+      (55): {
+            18410715276690587648,
+            4286578688,
+            65408,
+            128,
+            -36028797018963968,
+            -8388608,
+            -128,
+            -128,
+            55.0001
+         },
+      (56): {
+            18374686479671623680,
+            4278190080,
+            65280,
+            255,
+            -72057594037927936,
+            -16777216,
+            -256,
+            -1,
+            56.0001
+         },
+      (57): {
+            18302628885633695744,
+            4261412864,
+            65024,
+            254,
+            -144115188075855872,
+            -33554432,
+            -512,
+            -2,
+            57.0001
+         },
+      (58): {
+            18158513697557839872,
+            4227858432,
+            64512,
+            252,
+            -288230376151711744,
+            -67108864,
+            -1024,
+            -4,
+            58.0001
+         },
+      (59): {
+            17870283321406128128,
+            4160749568,
+            63488,
+            248,
+            -576460752303423488,
+            -134217728,
+            -2048,
+            -8,
+            59.0001
+         },
+      (60): {
+            17293822569102704640,
+            4026531840,
+            61440,
+            240,
+            -1152921504606846976,
+            -268435456,
+            -4096,
+            -16,
+            60.0001
+         },
+      (61): {
+            16140901064495857664,
+            3758096384,
+            57344,
+            224,
+            -2305843009213693952,
+            -536870912,
+            -8192,
+            -32,
+            61.0001
+         },
+      (62): {
+            13835058055282163712,
+            3221225472,
+            49152,
+            192,
+            -4611686018427387904,
+            -1073741824,
+            -16384,
+            -64,
+            62.0001
+         },
+      (63): {
+            9223372036854775808,
+            2147483648,
+            32768,
+            128,
+            -9223372036854775808,
+            -2147483648,
+            -32768,
+            -128,
+            63.0001
+         }
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tcmpdints.h5 b/tools/testfiles/tcmpdints.h5
new file mode 100644
index 0000000..d4af1c4
Binary files /dev/null and b/tools/testfiles/tcmpdints.h5 differ
diff --git a/tools/testfiles/tcontiguos.ddl b/tools/testfiles/tcontiguos.ddl
index bda7ef7..8e0158e 100644
--- a/tools/testfiles/tcontiguos.ddl
+++ b/tools/testfiles/tcontiguos.ddl
@@ -6,7 +6,7 @@ COMMENT "This is a dataset with contiguous storage"
    STORAGE_LAYOUT {
       CONTIGUOUS
       SIZE 800
-      OFFSET 4096
+      OFFSET 2472
    }
    FILTERS {
       NONE
diff --git a/tools/testfiles/tfilters.h5 b/tools/testfiles/tfilters.h5
index c28b1b1..d5f13d9 100644
Binary files a/tools/testfiles/tfilters.h5 and b/tools/testfiles/tfilters.h5 differ
diff --git a/tools/testfiles/tintsattrs.ddl b/tools/testfiles/tintsattrs.ddl
new file mode 100644
index 0000000..b1f1cdf
--- /dev/null
+++ b/tools/testfiles/tintsattrs.ddl
@@ -0,0 +1,1115 @@
+HDF5 "tintsattrs.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
+      }
+      ATTRIBUTE "DS08BITS" {
+         DATATYPE  H5T_STD_I8LE
+         DATASPACE  SIMPLE { ( 64 ) / ( 64 ) }
+         DATA {
+         (0): -1, -2, -4, -8, -16, -32, -64, -128, -2, -4, -8, -16, -32, -64,
+         (14): -128, 0, -4, -8, -16, -32, -64, -128, 0, 0, -8, -16, -32, -64,
+         (28): -128, 0, 0, 0, -16, -32, -64, -128, 0, 0, 0, 0, -32, -64,
+         (42): -128, 0, 0, 0, 0, 0, -64, -128, 0, 0, 0, 0, 0, 0, -128, 0, 0,
+         (59): 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,
+      (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 "DS16BITS" {
+         DATATYPE  H5T_STD_I16LE
+         DATASPACE  SIMPLE { ( 128 ) / ( 128 ) }
+         DATA {
+         (0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+         (12): -4096, -8192, -16384, -32768, -2, -4, -8, -16, -32, -64, -128,
+         (23): -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, -4,
+         (33): -8, -16, -32, -64, -128, -256, -512, -1024, -2048, -4096,
+         (43): -8192, -16384, -32768, 0, 0, -8, -16, -32, -64, -128, -256,
+         (54): -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0, 0,
+         (64): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+         (74): -16384, -32768, 0, 0, 0, 0, -32, -64, -128, -256, -512, -1024,
+         (86): -2048, -4096, -8192, -16384, -32768, 0, 0, 0, 0, 0, -64, -128,
+         (98): -256, -512, -1024, -2048, -4096, -8192, -16384, -32768, 0, 0,
+         (108): 0, 0, 0, 0, -128, -256, -512, -1024, -2048, -4096, -8192,
+         (119): -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,
+      (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 "DS32BITS" {
+         DATATYPE  H5T_STD_I32LE
+         DATASPACE  SIMPLE { ( 256 ) / ( 256 ) }
+         DATA {
+         (0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+         (12): -4096, -8192, -16384, -32768, -65536, -131072, -262144,
+         (19): -524288, -1048576, -2097152, -4194304, -8388608, -16777216,
+         (25): -33554432, -67108864, -134217728, -268435456, -536870912,
+         (30): -1073741824, -2147483648, -2, -4, -8, -16, -32, -64, -128,
+         (39): -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+         (47): -65536, -131072, -262144, -524288, -1048576, -2097152,
+         (53): -4194304, -8388608, -16777216, -33554432, -67108864,
+         (58): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+         (63): 0, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+         (74): -4096, -8192, -16384, -32768, -65536, -131072, -262144,
+         (81): -524288, -1048576, -2097152, -4194304, -8388608, -16777216,
+         (87): -33554432, -67108864, -134217728, -268435456, -536870912,
+         (92): -1073741824, -2147483648, 0, 0, -8, -16, -32, -64, -128, -256,
+         (102): -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536,
+         (110): -131072, -262144, -524288, -1048576, -2097152, -4194304,
+         (116): -8388608, -16777216, -33554432, -67108864, -134217728,
+         (121): -268435456, -536870912, -1073741824, -2147483648, 0, 0, 0,
+         (128): -16, -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+         (138): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+         (145): -2097152, -4194304, -8388608, -16777216, -33554432,
+         (150): -67108864, -134217728, -268435456, -536870912, -1073741824,
+         (155): -2147483648, 0, 0, 0, 0, -32, -64, -128, -256, -512, -1024,
+         (166): -2048, -4096, -8192, -16384, -32768, -65536, -131072,
+         (173): -262144, -524288, -1048576, -2097152, -4194304, -8388608,
+         (179): -16777216, -33554432, -67108864, -134217728, -268435456,
+         (184): -536870912, -1073741824, -2147483648, 0, 0, 0, 0, 0, -64,
+         (193): -128, -256, -512, -1024, -2048, -4096, -8192, -16384, -32768,
+         (202): -65536, -131072, -262144, -524288, -1048576, -2097152,
+         (208): -4194304, -8388608, -16777216, -33554432, -67108864,
+         (213): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+         (218): 0, 0, 0, 0, 0, 0, -128, -256, -512, -1024, -2048, -4096,
+         (230): -8192, -16384, -32768, -65536, -131072, -262144, -524288,
+         (237): -1048576, -2097152, -4194304, -8388608, -16777216, -33554432,
+         (243): -67108864, -134217728, -268435456, -536870912, -1073741824,
+         (248): -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,
+      (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 "DS64BITS" {
+         DATATYPE  H5T_STD_I64LE
+         DATASPACE  SIMPLE { ( 512 ) / ( 512 ) }
+         DATA {
+         (0): -1, -2, -4, -8, -16, -32, -64, -128, -256, -512, -1024, -2048,
+         (12): -4096, -8192, -16384, -32768, -65536, -131072, -262144,
+         (19): -524288, -1048576, -2097152, -4194304, -8388608, -16777216,
+         (25): -33554432, -67108864, -134217728, -268435456, -536870912,
+         (30): -1073741824, -2147483648, -4294967296, -8589934592,
+         (34): -17179869184, -34359738368, -68719476736, -137438953472,
+         (38): -274877906944, -549755813888, -1099511627776, -2199023255552,
+         (42): -4398046511104, -8796093022208, -17592186044416,
+         (45): -35184372088832, -70368744177664, -140737488355328,
+         (48): -281474976710656, -562949953421312, -1125899906842624,
+         (51): -2251799813685248, -4503599627370496, -9007199254740992,
+         (54): -18014398509481984, -36028797018963968, -72057594037927936,
+         (57): -144115188075855872, -288230376151711744, -576460752303423488,
+         (60): -1152921504606846976, -2305843009213693952,
+         (62): -4611686018427387904, -9223372036854775808, -2, -4, -8, -16,
+         (68): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+         (77): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+         (84): -2097152, -4194304, -8388608, -16777216, -33554432, -67108864,
+         (90): -134217728, -268435456, -536870912, -1073741824, -2147483648,
+         (95): -4294967296, -8589934592, -17179869184, -34359738368,
+         (99): -68719476736, -137438953472, -274877906944, -549755813888,
+         (103): -1099511627776, -2199023255552, -4398046511104,
+         (106): -8796093022208, -17592186044416, -35184372088832,
+         (109): -70368744177664, -140737488355328, -281474976710656,
+         (112): -562949953421312, -1125899906842624, -2251799813685248,
+         (115): -4503599627370496, -9007199254740992, -18014398509481984,
+         (118): -36028797018963968, -72057594037927936, -144115188075855872,
+         (121): -288230376151711744, -576460752303423488,
+         (123): -1152921504606846976, -2305843009213693952,
+         (125): -4611686018427387904, -9223372036854775808, 0, -4, -8, -16,
+         (131): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+         (140): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+         (147): -2097152, -4194304, -8388608, -16777216, -33554432,
+         (152): -67108864, -134217728, -268435456, -536870912, -1073741824,
+         (157): -2147483648, -4294967296, -8589934592, -17179869184,
+         (161): -34359738368, -68719476736, -137438953472, -274877906944,
+         (165): -549755813888, -1099511627776, -2199023255552,
+         (168): -4398046511104, -8796093022208, -17592186044416,
+         (171): -35184372088832, -70368744177664, -140737488355328,
+         (174): -281474976710656, -562949953421312, -1125899906842624,
+         (177): -2251799813685248, -4503599627370496, -9007199254740992,
+         (180): -18014398509481984, -36028797018963968, -72057594037927936,
+         (183): -144115188075855872, -288230376151711744,
+         (185): -576460752303423488, -1152921504606846976,
+         (187): -2305843009213693952, -4611686018427387904,
+         (189): -9223372036854775808, 0, 0, -8, -16, -32, -64, -128, -256,
+         (198): -512, -1024, -2048, -4096, -8192, -16384, -32768, -65536,
+         (206): -131072, -262144, -524288, -1048576, -2097152, -4194304,
+         (212): -8388608, -16777216, -33554432, -67108864, -134217728,
+         (217): -268435456, -536870912, -1073741824, -2147483648,
+         (221): -4294967296, -8589934592, -17179869184, -34359738368,
+         (225): -68719476736, -137438953472, -274877906944, -549755813888,
+         (229): -1099511627776, -2199023255552, -4398046511104,
+         (232): -8796093022208, -17592186044416, -35184372088832,
+         (235): -70368744177664, -140737488355328, -281474976710656,
+         (238): -562949953421312, -1125899906842624, -2251799813685248,
+         (241): -4503599627370496, -9007199254740992, -18014398509481984,
+         (244): -36028797018963968, -72057594037927936, -144115188075855872,
+         (247): -288230376151711744, -576460752303423488,
+         (249): -1152921504606846976, -2305843009213693952,
+         (251): -4611686018427387904, -9223372036854775808, 0, 0, 0, -16,
+         (257): -32, -64, -128, -256, -512, -1024, -2048, -4096, -8192,
+         (266): -16384, -32768, -65536, -131072, -262144, -524288, -1048576,
+         (273): -2097152, -4194304, -8388608, -16777216, -33554432,
+         (278): -67108864, -134217728, -268435456, -536870912, -1073741824,
+         (283): -2147483648, -4294967296, -8589934592, -17179869184,
+         (287): -34359738368, -68719476736, -137438953472, -274877906944,
+         (291): -549755813888, -1099511627776, -2199023255552,
+         (294): -4398046511104, -8796093022208, -17592186044416,
+         (297): -35184372088832, -70368744177664, -140737488355328,
+         (300): -281474976710656, -562949953421312, -1125899906842624,
+         (303): -2251799813685248, -4503599627370496, -9007199254740992,
+         (306): -18014398509481984, -36028797018963968, -72057594037927936,
+         (309): -144115188075855872, -288230376151711744,
+         (311): -576460752303423488, -1152921504606846976,
+         (313): -2305843009213693952, -4611686018427387904,
+         (315): -9223372036854775808, 0, 0, 0, 0, -32, -64, -128, -256, -512,
+         (325): -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072,
+         (333): -262144, -524288, -1048576, -2097152, -4194304, -8388608,
+         (339): -16777216, -33554432, -67108864, -134217728, -268435456,
+         (344): -536870912, -1073741824, -2147483648, -4294967296,
+         (348): -8589934592, -17179869184, -34359738368, -68719476736,
+         (352): -137438953472, -274877906944, -549755813888, -1099511627776,
+         (356): -2199023255552, -4398046511104, -8796093022208,
+         (359): -17592186044416, -35184372088832, -70368744177664,
+         (362): -140737488355328, -281474976710656, -562949953421312,
+         (365): -1125899906842624, -2251799813685248, -4503599627370496,
+         (368): -9007199254740992, -18014398509481984, -36028797018963968,
+         (371): -72057594037927936, -144115188075855872, -288230376151711744,
+         (374): -576460752303423488, -1152921504606846976,
+         (376): -2305843009213693952, -4611686018427387904,
+         (378): -9223372036854775808, 0, 0, 0, 0, 0, -64, -128, -256, -512,
+         (388): -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072,
+         (396): -262144, -524288, -1048576, -2097152, -4194304, -8388608,
+         (402): -16777216, -33554432, -67108864, -134217728, -268435456,
+         (407): -536870912, -1073741824, -2147483648, -4294967296,
+         (411): -8589934592, -17179869184, -34359738368, -68719476736,
+         (415): -137438953472, -274877906944, -549755813888, -1099511627776,
+         (419): -2199023255552, -4398046511104, -8796093022208,
+         (422): -17592186044416, -35184372088832, -70368744177664,
+         (425): -140737488355328, -281474976710656, -562949953421312,
+         (428): -1125899906842624, -2251799813685248, -4503599627370496,
+         (431): -9007199254740992, -18014398509481984, -36028797018963968,
+         (434): -72057594037927936, -144115188075855872, -288230376151711744,
+         (437): -576460752303423488, -1152921504606846976,
+         (439): -2305843009213693952, -4611686018427387904,
+         (441): -9223372036854775808, 0, 0, 0, 0, 0, 0, -128, -256, -512,
+         (451): -1024, -2048, -4096, -8192, -16384, -32768, -65536, -131072,
+         (459): -262144, -524288, -1048576, -2097152, -4194304, -8388608,
+         (465): -16777216, -33554432, -67108864, -134217728, -268435456,
+         (470): -536870912, -1073741824, -2147483648, -4294967296,
+         (474): -8589934592, -17179869184, -34359738368, -68719476736,
+         (478): -137438953472, -274877906944, -549755813888, -1099511627776,
+         (482): -2199023255552, -4398046511104, -8796093022208,
+         (485): -17592186044416, -35184372088832, -70368744177664,
+         (488): -140737488355328, -281474976710656, -562949953421312,
+         (491): -1125899906842624, -2251799813685248, -4503599627370496,
+         (494): -9007199254740992, -18014398509481984, -36028797018963968,
+         (497): -72057594037927936, -144115188075855872, -288230376151711744,
+         (500): -576460752303423488, -1152921504606846976,
+         (502): -2305843009213693952, -4611686018427387904,
+         (504): -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
+      }
+      ATTRIBUTE "DU08BITS" {
+         DATATYPE  H5T_STD_U8LE
+         DATASPACE  SIMPLE { ( 64 ) / ( 64 ) }
+         DATA {
+         (0): 255, 254, 252, 248, 240, 224, 192, 128, 254, 252, 248, 240,
+         (12): 224, 192, 128, 0, 252, 248, 240, 224, 192, 128, 0, 0, 248,
+         (25): 240, 224, 192, 128, 0, 0, 0, 240, 224, 192, 128, 0, 0, 0, 0,
+         (40): 224, 192, 128, 0, 0, 0, 0, 0, 192, 128, 0, 0, 0, 0, 0, 0, 128,
+         (57): 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,
+      (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 "DU16BITS" {
+         DATATYPE  H5T_STD_U16LE
+         DATASPACE  SIMPLE { ( 128 ) / ( 128 ) }
+         DATA {
+         (0): 65535, 65534, 65532, 65528, 65520, 65504, 65472, 65408, 65280,
+         (9): 65024, 64512, 63488, 61440, 57344, 49152, 32768, 65534, 65532,
+         (18): 65528, 65520, 65504, 65472, 65408, 65280, 65024, 64512, 63488,
+         (27): 61440, 57344, 49152, 32768, 0, 65532, 65528, 65520, 65504,
+         (36): 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152,
+         (45): 32768, 0, 0, 65528, 65520, 65504, 65472, 65408, 65280, 65024,
+         (55): 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 65520,
+         (65): 65504, 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344,
+         (74): 49152, 32768, 0, 0, 0, 0, 65504, 65472, 65408, 65280, 65024,
+         (85): 64512, 63488, 61440, 57344, 49152, 32768, 0, 0, 0, 0, 0,
+         (96): 65472, 65408, 65280, 65024, 64512, 63488, 61440, 57344, 49152,
+         (105): 32768, 0, 0, 0, 0, 0, 0, 65408, 65280, 65024, 64512, 63488,
+         (117): 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,
+      (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 "DU32BITS" {
+         DATATYPE  H5T_STD_U32LE
+         DATASPACE  SIMPLE { ( 256 ) / ( 256 ) }
+         DATA {
+         (0): 4294967295, 4294967294, 4294967292, 4294967288, 4294967280,
+         (5): 4294967264, 4294967232, 4294967168, 4294967040, 4294966784,
+         (10): 4294966272, 4294965248, 4294963200, 4294959104, 4294950912,
+         (15): 4294934528, 4294901760, 4294836224, 4294705152, 4294443008,
+         (20): 4293918720, 4292870144, 4290772992, 4286578688, 4278190080,
+         (25): 4261412864, 4227858432, 4160749568, 4026531840, 3758096384,
+         (30): 3221225472, 2147483648, 4294967294, 4294967292, 4294967288,
+         (35): 4294967280, 4294967264, 4294967232, 4294967168, 4294967040,
+         (40): 4294966784, 4294966272, 4294965248, 4294963200, 4294959104,
+         (45): 4294950912, 4294934528, 4294901760, 4294836224, 4294705152,
+         (50): 4294443008, 4293918720, 4292870144, 4290772992, 4286578688,
+         (55): 4278190080, 4261412864, 4227858432, 4160749568, 4026531840,
+         (60): 3758096384, 3221225472, 2147483648, 0, 4294967292, 4294967288,
+         (66): 4294967280, 4294967264, 4294967232, 4294967168, 4294967040,
+         (71): 4294966784, 4294966272, 4294965248, 4294963200, 4294959104,
+         (76): 4294950912, 4294934528, 4294901760, 4294836224, 4294705152,
+         (81): 4294443008, 4293918720, 4292870144, 4290772992, 4286578688,
+         (86): 4278190080, 4261412864, 4227858432, 4160749568, 4026531840,
+         (91): 3758096384, 3221225472, 2147483648, 0, 0, 4294967288,
+         (97): 4294967280, 4294967264, 4294967232, 4294967168, 4294967040,
+         (102): 4294966784, 4294966272, 4294965248, 4294963200, 4294959104,
+         (107): 4294950912, 4294934528, 4294901760, 4294836224, 4294705152,
+         (112): 4294443008, 4293918720, 4292870144, 4290772992, 4286578688,
+         (117): 4278190080, 4261412864, 4227858432, 4160749568, 4026531840,
+         (122): 3758096384, 3221225472, 2147483648, 0, 0, 0, 4294967280,
+         (129): 4294967264, 4294967232, 4294967168, 4294967040, 4294966784,
+         (134): 4294966272, 4294965248, 4294963200, 4294959104, 4294950912,
+         (139): 4294934528, 4294901760, 4294836224, 4294705152, 4294443008,
+         (144): 4293918720, 4292870144, 4290772992, 4286578688, 4278190080,
+         (149): 4261412864, 4227858432, 4160749568, 4026531840, 3758096384,
+         (154): 3221225472, 2147483648, 0, 0, 0, 0, 4294967264, 4294967232,
+         (162): 4294967168, 4294967040, 4294966784, 4294966272, 4294965248,
+         (167): 4294963200, 4294959104, 4294950912, 4294934528, 4294901760,
+         (172): 4294836224, 4294705152, 4294443008, 4293918720, 4292870144,
+         (177): 4290772992, 4286578688, 4278190080, 4261412864, 4227858432,
+         (182): 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+         (187): 0, 0, 0, 0, 0, 4294967232, 4294967168, 4294967040,
+         (195): 4294966784, 4294966272, 4294965248, 4294963200, 4294959104,
+         (200): 4294950912, 4294934528, 4294901760, 4294836224, 4294705152,
+         (205): 4294443008, 4293918720, 4292870144, 4290772992, 4286578688,
+         (210): 4278190080, 4261412864, 4227858432, 4160749568, 4026531840,
+         (215): 3758096384, 3221225472, 2147483648, 0, 0, 0, 0, 0, 0,
+         (224): 4294967168, 4294967040, 4294966784, 4294966272, 4294965248,
+         (229): 4294963200, 4294959104, 4294950912, 4294934528, 4294901760,
+         (234): 4294836224, 4294705152, 4294443008, 4293918720, 4292870144,
+         (239): 4290772992, 4286578688, 4278190080, 4261412864, 4227858432,
+         (244): 4160749568, 4026531840, 3758096384, 3221225472, 2147483648,
+         (249): 0, 0, 0, 0, 0, 0, 0
+         }
+      }
+   }
+   DATASET "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 "DU64BITS" {
+         DATATYPE  H5T_STD_U64LE
+         DATASPACE  SIMPLE { ( 512 ) / ( 512 ) }
+         DATA {
+         (0): 18446744073709551615, 18446744073709551614,
+         (2): 18446744073709551612, 18446744073709551608,
+         (4): 18446744073709551600, 18446744073709551584,
+         (6): 18446744073709551552, 18446744073709551488,
+         (8): 18446744073709551360, 18446744073709551104,
+         (10): 18446744073709550592, 18446744073709549568,
+         (12): 18446744073709547520, 18446744073709543424,
+         (14): 18446744073709535232, 18446744073709518848,
+         (16): 18446744073709486080, 18446744073709420544,
+         (18): 18446744073709289472, 18446744073709027328,
+         (20): 18446744073708503040, 18446744073707454464,
+         (22): 18446744073705357312, 18446744073701163008,
+         (24): 18446744073692774400, 18446744073675997184,
+         (26): 18446744073642442752, 18446744073575333888,
+         (28): 18446744073441116160, 18446744073172680704,
+         (30): 18446744072635809792, 18446744071562067968,
+         (32): 18446744069414584320, 18446744065119617024,
+         (34): 18446744056529682432, 18446744039349813248,
+         (36): 18446744004990074880, 18446743936270598144,
+         (38): 18446743798831644672, 18446743523953737728,
+         (40): 18446742974197923840, 18446741874686296064,
+         (42): 18446739675663040512, 18446735277616529408,
+         (44): 18446726481523507200, 18446708889337462784,
+         (46): 18446673704965373952, 18446603336221196288,
+         (48): 18446462598732840960, 18446181123756130304,
+         (50): 18445618173802708992, 18444492273895866368,
+         (52): 18442240474082181120, 18437736874454810624,
+         (54): 18428729675200069632, 18410715276690587648,
+         (56): 18374686479671623680, 18302628885633695744,
+         (58): 18158513697557839872, 17870283321406128128,
+         (60): 17293822569102704640, 16140901064495857664,
+         (62): 13835058055282163712, 9223372036854775808,
+         (64): 18446744073709551614, 18446744073709551612,
+         (66): 18446744073709551608, 18446744073709551600,
+         (68): 18446744073709551584, 18446744073709551552,
+         (70): 18446744073709551488, 18446744073709551360,
+         (72): 18446744073709551104, 18446744073709550592,
+         (74): 18446744073709549568, 18446744073709547520,
+         (76): 18446744073709543424, 18446744073709535232,
+         (78): 18446744073709518848, 18446744073709486080,
+         (80): 18446744073709420544, 18446744073709289472,
+         (82): 18446744073709027328, 18446744073708503040,
+         (84): 18446744073707454464, 18446744073705357312,
+         (86): 18446744073701163008, 18446744073692774400,
+         (88): 18446744073675997184, 18446744073642442752,
+         (90): 18446744073575333888, 18446744073441116160,
+         (92): 18446744073172680704, 18446744072635809792,
+         (94): 18446744071562067968, 18446744069414584320,
+         (96): 18446744065119617024, 18446744056529682432,
+         (98): 18446744039349813248, 18446744004990074880,
+         (100): 18446743936270598144, 18446743798831644672,
+         (102): 18446743523953737728, 18446742974197923840,
+         (104): 18446741874686296064, 18446739675663040512,
+         (106): 18446735277616529408, 18446726481523507200,
+         (108): 18446708889337462784, 18446673704965373952,
+         (110): 18446603336221196288, 18446462598732840960,
+         (112): 18446181123756130304, 18445618173802708992,
+         (114): 18444492273895866368, 18442240474082181120,
+         (116): 18437736874454810624, 18428729675200069632,
+         (118): 18410715276690587648, 18374686479671623680,
+         (120): 18302628885633695744, 18158513697557839872,
+         (122): 17870283321406128128, 17293822569102704640,
+         (124): 16140901064495857664, 13835058055282163712,
+         (126): 9223372036854775808, 0, 18446744073709551612,
+         (129): 18446744073709551608, 18446744073709551600,
+         (131): 18446744073709551584, 18446744073709551552,
+         (133): 18446744073709551488, 18446744073709551360,
+         (135): 18446744073709551104, 18446744073709550592,
+         (137): 18446744073709549568, 18446744073709547520,
+         (139): 18446744073709543424, 18446744073709535232,
+         (141): 18446744073709518848, 18446744073709486080,
+         (143): 18446744073709420544, 18446744073709289472,
+         (145): 18446744073709027328, 18446744073708503040,
+         (147): 18446744073707454464, 18446744073705357312,
+         (149): 18446744073701163008, 18446744073692774400,
+         (151): 18446744073675997184, 18446744073642442752,
+         (153): 18446744073575333888, 18446744073441116160,
+         (155): 18446744073172680704, 18446744072635809792,
+         (157): 18446744071562067968, 18446744069414584320,
+         (159): 18446744065119617024, 18446744056529682432,
+         (161): 18446744039349813248, 18446744004990074880,
+         (163): 18446743936270598144, 18446743798831644672,
+         (165): 18446743523953737728, 18446742974197923840,
+         (167): 18446741874686296064, 18446739675663040512,
+         (169): 18446735277616529408, 18446726481523507200,
+         (171): 18446708889337462784, 18446673704965373952,
+         (173): 18446603336221196288, 18446462598732840960,
+         (175): 18446181123756130304, 18445618173802708992,
+         (177): 18444492273895866368, 18442240474082181120,
+         (179): 18437736874454810624, 18428729675200069632,
+         (181): 18410715276690587648, 18374686479671623680,
+         (183): 18302628885633695744, 18158513697557839872,
+         (185): 17870283321406128128, 17293822569102704640,
+         (187): 16140901064495857664, 13835058055282163712,
+         (189): 9223372036854775808, 0, 0, 18446744073709551608,
+         (193): 18446744073709551600, 18446744073709551584,
+         (195): 18446744073709551552, 18446744073709551488,
+         (197): 18446744073709551360, 18446744073709551104,
+         (199): 18446744073709550592, 18446744073709549568,
+         (201): 18446744073709547520, 18446744073709543424,
+         (203): 18446744073709535232, 18446744073709518848,
+         (205): 18446744073709486080, 18446744073709420544,
+         (207): 18446744073709289472, 18446744073709027328,
+         (209): 18446744073708503040, 18446744073707454464,
+         (211): 18446744073705357312, 18446744073701163008,
+         (213): 18446744073692774400, 18446744073675997184,
+         (215): 18446744073642442752, 18446744073575333888,
+         (217): 18446744073441116160, 18446744073172680704,
+         (219): 18446744072635809792, 18446744071562067968,
+         (221): 18446744069414584320, 18446744065119617024,
+         (223): 18446744056529682432, 18446744039349813248,
+         (225): 18446744004990074880, 18446743936270598144,
+         (227): 18446743798831644672, 18446743523953737728,
+         (229): 18446742974197923840, 18446741874686296064,
+         (231): 18446739675663040512, 18446735277616529408,
+         (233): 18446726481523507200, 18446708889337462784,
+         (235): 18446673704965373952, 18446603336221196288,
+         (237): 18446462598732840960, 18446181123756130304,
+         (239): 18445618173802708992, 18444492273895866368,
+         (241): 18442240474082181120, 18437736874454810624,
+         (243): 18428729675200069632, 18410715276690587648,
+         (245): 18374686479671623680, 18302628885633695744,
+         (247): 18158513697557839872, 17870283321406128128,
+         (249): 17293822569102704640, 16140901064495857664,
+         (251): 13835058055282163712, 9223372036854775808, 0, 0, 0,
+         (256): 18446744073709551600, 18446744073709551584,
+         (258): 18446744073709551552, 18446744073709551488,
+         (260): 18446744073709551360, 18446744073709551104,
+         (262): 18446744073709550592, 18446744073709549568,
+         (264): 18446744073709547520, 18446744073709543424,
+         (266): 18446744073709535232, 18446744073709518848,
+         (268): 18446744073709486080, 18446744073709420544,
+         (270): 18446744073709289472, 18446744073709027328,
+         (272): 18446744073708503040, 18446744073707454464,
+         (274): 18446744073705357312, 18446744073701163008,
+         (276): 18446744073692774400, 18446744073675997184,
+         (278): 18446744073642442752, 18446744073575333888,
+         (280): 18446744073441116160, 18446744073172680704,
+         (282): 18446744072635809792, 18446744071562067968,
+         (284): 18446744069414584320, 18446744065119617024,
+         (286): 18446744056529682432, 18446744039349813248,
+         (288): 18446744004990074880, 18446743936270598144,
+         (290): 18446743798831644672, 18446743523953737728,
+         (292): 18446742974197923840, 18446741874686296064,
+         (294): 18446739675663040512, 18446735277616529408,
+         (296): 18446726481523507200, 18446708889337462784,
+         (298): 18446673704965373952, 18446603336221196288,
+         (300): 18446462598732840960, 18446181123756130304,
+         (302): 18445618173802708992, 18444492273895866368,
+         (304): 18442240474082181120, 18437736874454810624,
+         (306): 18428729675200069632, 18410715276690587648,
+         (308): 18374686479671623680, 18302628885633695744,
+         (310): 18158513697557839872, 17870283321406128128,
+         (312): 17293822569102704640, 16140901064495857664,
+         (314): 13835058055282163712, 9223372036854775808, 0, 0, 0, 0,
+         (320): 18446744073709551584, 18446744073709551552,
+         (322): 18446744073709551488, 18446744073709551360,
+         (324): 18446744073709551104, 18446744073709550592,
+         (326): 18446744073709549568, 18446744073709547520,
+         (328): 18446744073709543424, 18446744073709535232,
+         (330): 18446744073709518848, 18446744073709486080,
+         (332): 18446744073709420544, 18446744073709289472,
+         (334): 18446744073709027328, 18446744073708503040,
+         (336): 18446744073707454464, 18446744073705357312,
+         (338): 18446744073701163008, 18446744073692774400,
+         (340): 18446744073675997184, 18446744073642442752,
+         (342): 18446744073575333888, 18446744073441116160,
+         (344): 18446744073172680704, 18446744072635809792,
+         (346): 18446744071562067968, 18446744069414584320,
+         (348): 18446744065119617024, 18446744056529682432,
+         (350): 18446744039349813248, 18446744004990074880,
+         (352): 18446743936270598144, 18446743798831644672,
+         (354): 18446743523953737728, 18446742974197923840,
+         (356): 18446741874686296064, 18446739675663040512,
+         (358): 18446735277616529408, 18446726481523507200,
+         (360): 18446708889337462784, 18446673704965373952,
+         (362): 18446603336221196288, 18446462598732840960,
+         (364): 18446181123756130304, 18445618173802708992,
+         (366): 18444492273895866368, 18442240474082181120,
+         (368): 18437736874454810624, 18428729675200069632,
+         (370): 18410715276690587648, 18374686479671623680,
+         (372): 18302628885633695744, 18158513697557839872,
+         (374): 17870283321406128128, 17293822569102704640,
+         (376): 16140901064495857664, 13835058055282163712,
+         (378): 9223372036854775808, 0, 0, 0, 0, 0, 18446744073709551552,
+         (385): 18446744073709551488, 18446744073709551360,
+         (387): 18446744073709551104, 18446744073709550592,
+         (389): 18446744073709549568, 18446744073709547520,
+         (391): 18446744073709543424, 18446744073709535232,
+         (393): 18446744073709518848, 18446744073709486080,
+         (395): 18446744073709420544, 18446744073709289472,
+         (397): 18446744073709027328, 18446744073708503040,
+         (399): 18446744073707454464, 18446744073705357312,
+         (401): 18446744073701163008, 18446744073692774400,
+         (403): 18446744073675997184, 18446744073642442752,
+         (405): 18446744073575333888, 18446744073441116160,
+         (407): 18446744073172680704, 18446744072635809792,
+         (409): 18446744071562067968, 18446744069414584320,
+         (411): 18446744065119617024, 18446744056529682432,
+         (413): 18446744039349813248, 18446744004990074880,
+         (415): 18446743936270598144, 18446743798831644672,
+         (417): 18446743523953737728, 18446742974197923840,
+         (419): 18446741874686296064, 18446739675663040512,
+         (421): 18446735277616529408, 18446726481523507200,
+         (423): 18446708889337462784, 18446673704965373952,
+         (425): 18446603336221196288, 18446462598732840960,
+         (427): 18446181123756130304, 18445618173802708992,
+         (429): 18444492273895866368, 18442240474082181120,
+         (431): 18437736874454810624, 18428729675200069632,
+         (433): 18410715276690587648, 18374686479671623680,
+         (435): 18302628885633695744, 18158513697557839872,
+         (437): 17870283321406128128, 17293822569102704640,
+         (439): 16140901064495857664, 13835058055282163712,
+         (441): 9223372036854775808, 0, 0, 0, 0, 0, 0, 18446744073709551488,
+         (449): 18446744073709551360, 18446744073709551104,
+         (451): 18446744073709550592, 18446744073709549568,
+         (453): 18446744073709547520, 18446744073709543424,
+         (455): 18446744073709535232, 18446744073709518848,
+         (457): 18446744073709486080, 18446744073709420544,
+         (459): 18446744073709289472, 18446744073709027328,
+         (461): 18446744073708503040, 18446744073707454464,
+         (463): 18446744073705357312, 18446744073701163008,
+         (465): 18446744073692774400, 18446744073675997184,
+         (467): 18446744073642442752, 18446744073575333888,
+         (469): 18446744073441116160, 18446744073172680704,
+         (471): 18446744072635809792, 18446744071562067968,
+         (473): 18446744069414584320, 18446744065119617024,
+         (475): 18446744056529682432, 18446744039349813248,
+         (477): 18446744004990074880, 18446743936270598144,
+         (479): 18446743798831644672, 18446743523953737728,
+         (481): 18446742974197923840, 18446741874686296064,
+         (483): 18446739675663040512, 18446735277616529408,
+         (485): 18446726481523507200, 18446708889337462784,
+         (487): 18446673704965373952, 18446603336221196288,
+         (489): 18446462598732840960, 18446181123756130304,
+         (491): 18445618173802708992, 18444492273895866368,
+         (493): 18442240474082181120, 18437736874454810624,
+         (495): 18428729675200069632, 18410715276690587648,
+         (497): 18374686479671623680, 18302628885633695744,
+         (499): 18158513697557839872, 17870283321406128128,
+         (501): 17293822569102704640, 16140901064495857664,
+         (503): 13835058055282163712, 9223372036854775808, 0, 0, 0, 0, 0, 0,
+         (511): 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
+      }
+      ATTRIBUTE "DummyDBL" {
+         DATATYPE  H5T_IEEE_F64BE
+         DATASPACE  SIMPLE { ( 64 ) / ( 64 ) }
+         DATA {
+         (0): 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007, 1,
+         (9): 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007, 2,
+         (17): 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007, 3,
+         (25): 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007, 4,
+         (33): 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007, 5,
+         (41): 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007, 6,
+         (49): 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007, 7,
+         (57): 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007
+         }
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tintsattrs.h5 b/tools/testfiles/tintsattrs.h5
new file mode 100644
index 0000000..ca8c573
Binary files /dev/null and b/tools/testfiles/tintsattrs.h5 differ
diff --git a/tools/testfiles/treadfilter.ddl b/tools/testfiles/treadfilter.ddl
new file mode 100644
index 0000000..88ca2e9
--- /dev/null
+++ b/tools/testfiles/treadfilter.ddl
@@ -0,0 +1,54 @@
+HDF5 "tfilters.h5" {
+DATASET "all" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
+   DATA {
+   (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+   (1,0): 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+   (2,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+   (3,0): 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+   (4,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+   (5,0): 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+   (6,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+   (7,0): 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+   (8,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+   (9,0): 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+   (10,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   (11,0): 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+   (12,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+   (13,0): 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+   (14,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+   (15,0): 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+   (16,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+   (17,0): 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+   (18,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+   (19,0): 190, 191, 192, 193, 194, 195, 196, 197, 198, 199
+   }
+}
+DATASET "szip" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
+   DATA {
+   (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+   (1,0): 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+   (2,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+   (3,0): 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+   (4,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+   (5,0): 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+   (6,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+   (7,0): 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+   (8,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+   (9,0): 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+   (10,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   (11,0): 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+   (12,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+   (13,0): 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+   (14,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+   (15,0): 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+   (16,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+   (17,0): 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+   (18,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+   (19,0): 190, 191, 192, 193, 194, 195, 196, 197, 198, 199
+   }
+}
+}
diff --git a/tools/testfiles/treadintfilter.ddl b/tools/testfiles/treadintfilter.ddl
new file mode 100644
index 0000000..a2269a6
--- /dev/null
+++ b/tools/testfiles/treadintfilter.ddl
@@ -0,0 +1,132 @@
+HDF5 "tfilters.h5" {
+DATASET "deflate" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
+   DATA {
+   (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+   (1,0): 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+   (2,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+   (3,0): 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+   (4,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+   (5,0): 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+   (6,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+   (7,0): 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+   (8,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+   (9,0): 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+   (10,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   (11,0): 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+   (12,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+   (13,0): 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+   (14,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+   (15,0): 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+   (16,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+   (17,0): 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+   (18,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+   (19,0): 190, 191, 192, 193, 194, 195, 196, 197, 198, 199
+   }
+}
+DATASET "shuffle" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
+   DATA {
+   (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+   (1,0): 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+   (2,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+   (3,0): 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+   (4,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+   (5,0): 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+   (6,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+   (7,0): 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+   (8,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+   (9,0): 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+   (10,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   (11,0): 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+   (12,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+   (13,0): 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+   (14,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+   (15,0): 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+   (16,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+   (17,0): 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+   (18,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+   (19,0): 190, 191, 192, 193, 194, 195, 196, 197, 198, 199
+   }
+}
+DATASET "fletcher32" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
+   DATA {
+   (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+   (1,0): 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+   (2,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+   (3,0): 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+   (4,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+   (5,0): 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+   (6,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+   (7,0): 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+   (8,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+   (9,0): 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+   (10,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   (11,0): 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+   (12,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+   (13,0): 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+   (14,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+   (15,0): 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+   (16,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+   (17,0): 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+   (18,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+   (19,0): 190, 191, 192, 193, 194, 195, 196, 197, 198, 199
+   }
+}
+DATASET "nbit" {
+   DATATYPE  32-bit little-endian integer
+   DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
+   DATA {
+   (0,0): 0, 1, 2, 3, -4, -3, -2, -1, 0, 1,
+   (1,0): 2, 3, -4, -3, -2, -1, 0, 1, 2, 3,
+   (2,0): -4, -3, -2, -1, 0, 1, 2, 3, -4, -3,
+   (3,0): -2, -1, 0, 1, 2, 3, -4, -3, -2, -1,
+   (4,0): 0, 1, 2, 3, -4, -3, -2, -1, 0, 1,
+   (5,0): 2, 3, -4, -3, -2, -1, 0, 1, 2, 3,
+   (6,0): -4, -3, -2, -1, 0, 1, 2, 3, -4, -3,
+   (7,0): -2, -1, 0, 1, 2, 3, -4, -3, -2, -1,
+   (8,0): 0, 1, 2, 3, -4, -3, -2, -1, 0, 1,
+   (9,0): 2, 3, -4, -3, -2, -1, 0, 1, 2, 3,
+   (10,0): -4, -3, -2, -1, 0, 1, 2, 3, -4, -3,
+   (11,0): -2, -1, 0, 1, 2, 3, -4, -3, -2, -1,
+   (12,0): 0, 1, 2, 3, -4, -3, -2, -1, 0, 1,
+   (13,0): 2, 3, -4, -3, -2, -1, 0, 1, 2, 3,
+   (14,0): -4, -3, -2, -1, 0, 1, 2, 3, -4, -3,
+   (15,0): -2, -1, 0, 1, 2, 3, -4, -3, -2, -1,
+   (16,0): 0, 1, 2, 3, -4, -3, -2, -1, 0, 1,
+   (17,0): 2, 3, -4, -3, -2, -1, 0, 1, 2, 3,
+   (18,0): -4, -3, -2, -1, 0, 1, 2, 3, -4, -3,
+   (19,0): -2, -1, 0, 1, 2, 3, -4, -3, -2, -1
+   }
+}
+DATASET "scaleoffset" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
+   DATA {
+   (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+   (1,0): 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+   (2,0): 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+   (3,0): 14, 15, 0, 1, 2, 19, 0, 5, 6, 7,
+   (4,0): 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+   (5,0): 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+   (6,0): 12, 13, 14, 15, 0, 17, 18, 19, 0, 5,
+   (7,0): 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+   (8,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+   (9,0): 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+   (10,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   (11,0): 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+   (12,0): 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+   (13,0): 114, 0, 100, 101, 102, 119, 0, 105, 106, 107,
+   (14,0): 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+   (15,0): 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+   (16,0): 112, 113, 114, 0, 100, 117, 118, 119, 0, 105,
+   (17,0): 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+   (18,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   (19,0): 110, 111, 112, 113, 114, 115, 116, 117, 118, 119
+   }
+}
+}
diff --git a/tools/testfiles/tscalarintattrsize.ddl b/tools/testfiles/tscalarintattrsize.ddl
new file mode 100644
index 0000000..a9de66b
--- /dev/null
+++ b/tools/testfiles/tscalarintattrsize.ddl
@@ -0,0 +1,256 @@
+HDF5 "tscalarintattrsize.h5" {
+GROUP "/" {
+   DATASET "DS08BITS" {
+      DATATYPE  H5T_ARRAY { [8][8] H5T_STD_I8LE }
+      DATASPACE  SCALAR
+      DATA {
+      (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 ]
+      }
+      ATTRIBUTE "DS08BITS" {
+         DATATYPE  H5T_ARRAY { [8][8] H5T_STD_I8LE }
+         DATASPACE  SCALAR
+         DATA {
+         (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 ]
+         }
+      }
+   }
+   DATASET "DS16BITS" {
+      DATATYPE  H5T_ARRAY { [8][16] H5T_STD_I16LE }
+      DATASPACE  SCALAR
+      DATA {
+      (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 ]
+      }
+      ATTRIBUTE "DS16BITS" {
+         DATATYPE  H5T_ARRAY { [8][16] H5T_STD_I16LE }
+         DATASPACE  SCALAR
+         DATA {
+         (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 ]
+         }
+      }
+   }
+   DATASET "DS32BITS" {
+      DATATYPE  H5T_ARRAY { [8][32] H5T_STD_I32LE }
+      DATASPACE  SCALAR
+      DATA {
+      (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 ]
+      }
+      ATTRIBUTE "DS32BITS" {
+         DATATYPE  H5T_ARRAY { [8][32] H5T_STD_I32LE }
+         DATASPACE  SCALAR
+         DATA {
+         (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 ]
+         }
+      }
+   }
+   DATASET "DS64BITS" {
+      DATATYPE  H5T_ARRAY { [8][64] H5T_STD_I64LE }
+      DATASPACE  SCALAR
+      DATA {
+      (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, -7036 [...]
+            -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, -703687441 [...]
+            -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, -7036874417766 [...]
+            -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, - [...]
+            -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, -1407 [...]
+            -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, -140737488 [...]
+            -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, -14073748835532 [...]
+            -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, -2 [...]
+      }
+      ATTRIBUTE "DS64BITS" {
+         DATATYPE  H5T_ARRAY { [8][64] H5T_STD_I64LE }
+         DATASPACE  SCALAR
+         DATA {
+         (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, -7 [...]
+               -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, -703687 [...]
+               -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, -7036874417 [...]
+               -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 [...]
+               -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, -1 [...]
+               -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, -140737 [...]
+               -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, -14073748835 [...]
+               -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, [...]
+         }
+      }
+   }
+   DATASET "DU08BITS" {
+      DATATYPE  H5T_ARRAY { [8][8] H5T_STD_U8LE }
+      DATASPACE  SCALAR
+      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 ]
+      }
+      ATTRIBUTE "DU08BITS" {
+         DATATYPE  H5T_ARRAY { [8][8] H5T_STD_U8LE }
+         DATASPACE  SCALAR
+         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 ]
+         }
+      }
+   }
+   DATASET "DU16BITS" {
+      DATATYPE  H5T_ARRAY { [8][16] H5T_STD_U16LE }
+      DATASPACE  SCALAR
+      DATA {
+      (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 ]
+      }
+      ATTRIBUTE "DU16BITS" {
+         DATATYPE  H5T_ARRAY { [8][16] H5T_STD_U16LE }
+         DATASPACE  SCALAR
+         DATA {
+         (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 ]
+         }
+      }
+   }
+   DATASET "DU32BITS" {
+      DATATYPE  H5T_ARRAY { [8][32] H5T_STD_U32LE }
+      DATASPACE  SCALAR
+      DATA {
+      (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 ]
+      }
+      ATTRIBUTE "DU32BITS" {
+         DATATYPE  H5T_ARRAY { [8][32] H5T_STD_U32LE }
+         DATASPACE  SCALAR
+         DATA {
+         (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 ]
+         }
+      }
+   }
+   DATASET "DU64BITS" {
+      DATATYPE  H5T_ARRAY { [8][64] H5T_STD_U64LE }
+      DATASPACE  SCALAR
+      DATA {
+      (0): [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454 [...]
+            18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 184467440737053573 [...]
+            18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 184467440737011630 [...]
+            18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 184467440736927744 [...]
+            18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 184467440736759971 [...]
+            18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 184467440736424427 [...]
+            18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 184467440735753338 [...]
+            18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 184467440734411161 [...]
+      }
+      ATTRIBUTE "DU64BITS" {
+         DATATYPE  H5T_ARRAY { [8][64] H5T_STD_U64LE }
+         DATASPACE  SCALAR
+         DATA {
+         (0): [ 18446744073709551615, 18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707 [...]
+               18446744073709551614, 18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 184467440737053 [...]
+               18446744073709551612, 18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 184467440737011 [...]
+               18446744073709551608, 18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 184467440736927 [...]
+               18446744073709551600, 18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 184467440736759 [...]
+               18446744073709551584, 18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 184467440736424 [...]
+               18446744073709551552, 18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 184467440735753 [...]
+               18446744073709551488, 18446744073709551360, 18446744073709551104, 18446744073709550592, 18446744073709549568, 18446744073709547520, 18446744073709543424, 18446744073709535232, 18446744073709518848, 18446744073709486080, 18446744073709420544, 18446744073709289472, 18446744073709027328, 18446744073708503040, 18446744073707454464, 18446744073705357312, 18446744073701163008, 18446744073692774400, 18446744073675997184, 18446744073642442752, 18446744073575333888, 184467440734411 [...]
+         }
+      }
+   }
+   DATASET "DummyDBL" {
+      DATATYPE  H5T_ARRAY { [8][8] H5T_IEEE_F64LE }
+      DATASPACE  SCALAR
+      DATA {
+      (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 ]
+      }
+      ATTRIBUTE "DummyDBL" {
+         DATATYPE  H5T_ARRAY { [8][8] H5T_IEEE_F64LE }
+         DATASPACE  SCALAR
+         DATA {
+         (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/tscalarintattrsize.h5 b/tools/testfiles/tscalarintattrsize.h5
new file mode 100644
index 0000000..61f5fb3
Binary files /dev/null and b/tools/testfiles/tscalarintattrsize.h5 differ
diff --git a/tools/testfiles/tscaleoffset.ddl b/tools/testfiles/tscaleoffset.ddl
index f1891da..ba49c70 100644
--- a/tools/testfiles/tscaleoffset.ddl
+++ b/tools/testfiles/tscaleoffset.ddl
@@ -4,10 +4,10 @@ DATASET "scaleoffset" {
    DATASPACE  SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
    STORAGE_LAYOUT {
       CHUNKED ( 10, 5 )
-      SIZE 152 (5.263:1 COMPRESSION)
+      SIZE 188 (4.255:1 COMPRESSION)
    }
    FILTERS {
-      COMPRESSION SCALEOFFSET { MIN BITS 4 }
+      COMPRESSION SCALEOFFSET { MIN BITS 2 }
    }
    FILLVALUE {
       FILL_TIME H5D_FILL_TIME_IFSET
diff --git a/vms/c++/examples/make.com b/vms/c++/examples/make.com
index c929fe5..bdb8729 100644
--- a/vms/c++/examples/make.com
+++ b/vms/c++/examples/make.com
@@ -15,7 +15,7 @@ $!#
 $!
 $! Make HDF5 C++ examples
 $!
-$ define zlib_dir disk$user:[hdfgroup.zlib-1_2_5_ieee]
+$ define zlib_dir SYS$SYSUSERS:[lu.zlib-1_2_5]
 $ cxxopt = "/float=ieee_float/standard=strict_ansi/define=H5_VMS/include=zlib_dir"
 $ ccc := cxx 'cxxopt /include=([-.-.include])
 $!
diff --git a/vms/fortran/examples/make.com b/vms/fortran/examples/make.com
index 05caa09..4b49578 100644
--- a/vms/fortran/examples/make.com
+++ b/vms/fortran/examples/make.com
@@ -17,7 +17,7 @@ $!
 $! Make HDF5 Fortran examples
 $!
 $ fcopt = "/float=ieee_float/define=H5_VMS"
-$ define zlib_dir disk$user:[hdfgroup.zlib-1_2_5_ieee]
+$ define zlib_dir SYS$SYSUSERS:[lu.zlib-1_2_5]
 $ fff := fortran 'fcopt /module=[-.-.include]
 $
 $ type sys$input
diff --git a/vms/src/h5pubconf.h b/vms/src/h5pubconf.h
index c6c0168..ddbf225 100644
--- a/vms/src/h5pubconf.h
+++ b/vms/src/h5pubconf.h
@@ -180,12 +180,6 @@
 /* Define to 1 if you have the `get_fpc_csr' function. */
 /* #undef H5_HAVE_GET_FPC_CSR */
 
-/* Define if we have GPFS support */
-/* #undef H5_HAVE_GPFS */
-
-/* Define to 1 if you have the <gpfs.h> header file. */
-/* #undef H5_HAVE_GPFS_H */
-
 /* Define if library will contain instrumentation to detect correct
    optimization operation */
 #define H5_HAVE_INSTRUMENTED_LIBRARY 1
@@ -511,7 +505,7 @@
 #define H5_PACKAGE_NAME "HDF5"
 
 /* Define to the full name and version of this package. */
-#define H5_PACKAGE_STRING "HDF5 1.8.12"
+#define H5_PACKAGE_STRING "HDF5 1.8.13"
 
 /* Define to the one symbol short name of this package. */
 #define H5_PACKAGE_TARNAME "hdf5"
@@ -520,7 +514,7 @@
 #define H5_PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define H5_PACKAGE_VERSION "1.8.12"
+#define H5_PACKAGE_VERSION "1.8.13"
 
 /* Width for printf() for type `long long' or `__int64', use `ll' */
 #define H5_PRINTF_LL_WIDTH "ll"
@@ -683,7 +677,7 @@
 /* #undef H5_USING_MEMCHECKER */
 
 /* Version number of package */
-#define H5_VERSION "1.8.12"
+#define H5_VERSION "1.8.13"
 
 /* Define if vsnprintf() returns the correct value for formatted strings that
    don't fit into size allowed */
diff --git a/vms/src/make.com b/vms/src/make.com
index 39bc133..be5efea 100644
--- a/vms/src/make.com
+++ b/vms/src/make.com
@@ -49,7 +49,7 @@ $ cobj= "H5, H5checksum, H5dbg, H5system, H5timer, H5trace,"+-
         "H5E, H5Edeprec, H5Eint,"+-
         "H5Faccum, H5F, H5Fcwfs, H5Fdbg, H5FD, H5FDcore,"+-
         "H5FDdirect, H5FDfamily, H5FDint, H5FDlog, H5FDmpi, H5FDmpio,"+-
-        "H5FDmpiposix, H5FDmulti, H5FDsec2, H5FDspace, H5FDstdio,"+-
+        "H5FDmulti, H5FDsec2, H5FDspace, H5FDstdio,"+-
         "H5FDwindows, H5Fefc, H5Ffake, H5Fio, H5FL, H5Fmount, H5Fmpi, H5FO, H5Fquery, H5FS, "+-
         "H5FScache, H5FSdbg, H5Fsfile, H5FSsection, H5FSstat, H5FStest, H5Fsuper, H5Fsuper_cache, H5Ftest,"+-
         "H5Gbtree2, H5G, H5Gcache, H5Gcompact, H5Gdense, H5Gdeprec, H5Gent, H5Gint,"+-

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/hdf5.git



More information about the Pkg-grass-devel mailing list