summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/CMakeLists.txt15
-rw-r--r--fortran/src/H5Df.c24
-rw-r--r--fortran/src/H5Of.c57
-rw-r--r--fortran/src/H5Off.f90175
-rw-r--r--fortran/src/H5Pff.f9035
-rw-r--r--fortran/src/H5Tff.f9057
-rw-r--r--fortran/src/H5f90proto.h7
-rw-r--r--fortran/src/Makefile.in2
-rw-r--r--[-rwxr-xr-x]fortran/src/h5fc.in2
-rw-r--r--fortran/src/hdf5_fortrandll.def1
-rw-r--r--fortran/src/phdf5_fortrandll.def1
11 files changed, 250 insertions, 126 deletions
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
index 3d1c127..c0fea8c 100644
--- a/fortran/src/CMakeLists.txt
+++ b/fortran/src/CMakeLists.txt
@@ -84,9 +84,6 @@ ADD_CUSTOM_COMMAND (
# f90CStub lib
#-----------------------------------------------------------------------------
SET (f90CStub_C_SRCS
- # generated files
- ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
-
# normal distribution
${HDF5_F90_SRC_SOURCE_DIR}/H5f90kit.c
${HDF5_F90_SRC_SOURCE_DIR}/H5_f.c
@@ -114,11 +111,17 @@ ENDIF (H5_HAVE_PARALLEL)
SET_SOURCE_FILES_PROPERTIES (${f90CStub_C_SRCS} PROPERTIES LANGUAGE C)
-ADD_LIBRARY (${HDF5_F90_C_LIB_TARGET} ${LIB_TYPE} ${f90CStub_C_SRCS})
+SET (f90CStub_C_HDRS
+ # generated files
+ ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
+)
+
+ADD_LIBRARY (${HDF5_F90_C_LIB_TARGET} ${LIB_TYPE} ${f90CStub_C_SRCS} ${f90CStub_C_HDRS})
TARGET_LINK_LIBRARIES (${HDF5_F90_C_LIB_TARGET} ${HDF5_LIB_TARGET} ${LINK_LIBS})
SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_F90_C_LIB_TARGET}")
H5_SET_LIB_OPTIONS (${HDF5_F90_C_LIB_TARGET} ${HDF5_F90_C_LIB_NAME} ${LIB_TYPE})
SET_TARGET_PROPERTIES (${HDF5_F90_C_LIB_TARGET} PROPERTIES FOLDER libraries/fortran)
+SET_TARGET_PROPERTIES (${HDF5_F90_C_LIB_TARGET} PROPERTIES LINKER_LANGUAGE C)
#-----------------------------------------------------------------------------
# Fortran 2003 standard
@@ -267,6 +270,10 @@ ENDIF (WIN32 AND NOT CYGWIN)
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
IF (HDF5_EXPORTED_TARGETS)
+
+ INSTALL_TARGET_PDB (${HDF5_F90_C_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} fortlibraries)
+ INSTALL_TARGET_PDB (${HDF5_F90_LIB_TARGET} ${HDF5_INSTALL_LIB_DIR} fortlibraries)
+
INSTALL (
TARGETS
${HDF5_F90_C_LIB_TARGET}
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index e1aa98e..ab7adf7 100644
--- a/fortran/src/H5Df.c
+++ b/fortran/src/H5Df.c
@@ -2401,16 +2401,6 @@ nh5dread_f_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id,
hid_t c_xfer_prp;
herr_t status;
-/* int i, j; */
-/* typedef struct { */
-/* int x; */
-/* float y; */
-/* } r_dual_c; */
-
-/* r_dual_c *name=buf; */
-
-/* r_dual_c access[4][4]; */
-
c_dset_id = (hid_t)*dset_id;
c_mem_type_id = (hid_t)*mem_type_id;
c_mem_space_id = (hid_t)*mem_space_id;
@@ -2419,22 +2409,10 @@ nh5dread_f_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id,
/*
* Call H5Dread function.
*/
-
-/* printf("%i %i %i %i %i \n",c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp); */
-
status = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf);
if ( status < 0 ) return ret_value;
-/* for ( i=0; i<4; ++i) */
-/* for (j = 0; j<4; ++j) { */
-/* access[i][j] = name[i*4+j]; */
-/* /\* access[i].x = access[i].x + 1; *\/ */
-/* printf("x = %i \n", access[i][j].x); */
-/* printf("y = %f \n", access[i][j].y); */
-/* } */
-
-
- ret_value = 1;
+ ret_value = 0;
return ret_value;
}
/****if* H5Df/nh5dget_access_plist_c
diff --git a/fortran/src/H5Of.c b/fortran/src/H5Of.c
index 0df433a..531f09c 100644
--- a/fortran/src/H5Of.c
+++ b/fortran/src/H5Of.c
@@ -334,3 +334,60 @@ nh5oget_info_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *
return ret_value;
}
+/* ***if* H5Of/H5Ocopy_c
+ * NAME
+ * H5Ocopy_c
+ * PURPOSE
+ * Calls H5Ocopy
+ * INPUTS
+ * src_loc_id - Object identifier indicating the location of the source object to be copied
+ * src_name - Name of the source object to be copied
+ * src_name_len - Length of src_name
+ * dst_loc_id - Location identifier specifying the destination
+ * dst_name - Name to be assigned to the new copy
+ * dst_name_len - Length of dst_name
+ * ocpypl_id - Object copy property list
+ * lcpl_id - Link creation property list for the new hard link
+ *
+ * RETURNS
+ * 0 on success, -1 on failure
+ * AUTHOR
+ * M. Scot Breitenfeld
+ * March 14, 2012
+ * SOURCE
+*/
+int_f
+nh5ocopy_c (hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_name_len,
+ hid_t_f *dst_loc_id, _fcd dst_name, size_t_f *dst_name_len,
+ hid_t_f *ocpypl_id, hid_t_f *lcpl_id )
+/******/
+{
+ char *c_src_name = NULL; /* Buffer to hold C string */
+ char *c_dst_name = NULL; /* Buffer to hold C string */
+
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_src_name = HD5f2cstring(src_name, (size_t)*src_name_len)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_dst_name = HD5f2cstring(dst_name, (size_t)*dst_name_len)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Ocopy function.
+ */
+ if(H5Ocopy( (hid_t)*src_loc_id, c_src_name, (hid_t)*dst_loc_id, c_dst_name,
+ (hid_t)*ocpypl_id, (hid_t)*lcpl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ done:
+ if(c_src_name)
+ HDfree(c_src_name);
+ if(c_dst_name)
+ HDfree(c_dst_name);
+
+ return ret_value;
+
+}
diff --git a/fortran/src/H5Off.f90 b/fortran/src/H5Off.f90
index e69fdb5..4f1ea18 100644
--- a/fortran/src/H5Off.f90
+++ b/fortran/src/H5Off.f90
@@ -49,33 +49,32 @@ CONTAINS
!
! PURPOSE
! Creates a hard link to an object in an HDF5 file.
-! INPUTS
+!
+! Inputs:
! object_id - Object to be linked.
! new_loc_id - File or group identifier specifying location at which object is to be linked.
! new_link_name - Name of link to be created, relative to new_loc_id.
-! OUTPUTS
-! hdferr: - error code
-! Success: 0
-! Failure: -1
-! OPTIONAL PARAMETERS
+!
+! Outputs:
+! hdferr - Returns 0 if successful and -1 if fails.
+!
+! Optional parameters:
! lcpl_id - Link creation property list identifier.
! lapl_id - Link access property list identifier.
+!
! AUTHOR
! M. Scot Breitenfeld
! April 21, 2008
!
-! SOURCE
+! Fortran90 Interface:
SUBROUTINE h5olink_f(object_id, new_loc_id, new_link_name, hdferr, lcpl_id, lapl_id)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: object_id ! Object to be linked
- INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier specifying
- ! location at which object is to be linked.
- CHARACTER(LEN=*), INTENT(IN) :: new_link_name ! Name of link to be created, relative to new_loc_id.
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! Success: 0
- ! Failure: -1
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link creation property list identifier.
+ INTEGER(HID_T) , INTENT(IN) :: object_id
+ INTEGER(HID_T) , INTENT(IN) :: new_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: new_link_name
+ INTEGER , INTENT(OUT) :: hdferr
+ INTEGER(HID_T) , INTENT(IN), OPTIONAL :: lcpl_id
+ INTEGER(HID_T) , INTENT(IN), OPTIONAL :: lapl_id
!*****
INTEGER(HID_T) :: lapl_id_default
INTEGER(HID_T) :: lcpl_id_default
@@ -115,33 +114,33 @@ CONTAINS
!
! NAME
! h5oopen_f
+!
! PURPOSE
! Opens an object in an HDF5 file by location identifier and path name.
!
-! INPUTS
-! loc_id - File or group identifier
+! Inputs:
+! loc_id - File or group identifier.
! name - Path to the object, relative to loc_id.
-! OUTPUTS
-! obj_id - Object identifier for the opened object
-! hdferr: - error code
-! Success: 0
-! Failure: -1
-! OPTIONAL PARAMETERS
-! lapl_id - Access property list identifier for the link pointing to the object
+!
+! Outputs:
+! obj_id - Object identifier for the opened object.
+! hdferr - Returns 0 if successful and -1 if fails.
+!
+! Optional parameters:
+! lapl_id - Access property list identifier for the link pointing to the object.
!
! AUTHOR
! M. Scot Breitenfeld
! April 18, 2008
-! SOURCE
+!
+! Fortran90 Interface:
SUBROUTINE h5oopen_f(loc_id, name, obj_id, hdferr, lapl_id)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Path to the object, relative to loc_id
- INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! Success: 0
- ! Failure: -1
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Attribute access property list
+ INTEGER(HID_T) , INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER(HID_T) , INTENT(OUT) :: obj_id
+ INTEGER , INTENT(OUT) :: hdferr
+ INTEGER(HID_T) , INTENT(IN), OPTIONAL :: lapl_id
!*****
INTEGER(HID_T) :: lapl_id_default
INTEGER(SIZE_T) :: namelen
@@ -178,20 +177,21 @@ CONTAINS
! PURPOSE
! Closes an object in an HDF5 file.
!
-! INPUTS
-! object_id - Object identifier
-! OUTPUTS
-! hdferr - Returns 0 if successful and -1 if fails
+! Inputs:
+! object_id - Object identifier.
+!
+! Outputs:
+! hdferr - Returns 0 if successful and -1 if fails.
!
! AUTHOR
! M. Scot Breitenfeld
! December 17, 2008
!
-! SOURCE
+! Fortran90 Interface:
SUBROUTINE h5oclose_f(object_id, hdferr)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: object_id
- INTEGER, INTENT(OUT) :: hdferr
+ INTEGER(HID_T), INTENT(IN) :: object_id
+ INTEGER , INTENT(OUT) :: hdferr
!*****
INTERFACE
INTEGER FUNCTION h5oclose_c(object_id)
@@ -214,25 +214,25 @@ CONTAINS
! PURPOSE
! Opens an object using its address within an HDF5 file.
!
-! INPUTS
-! loc_id - File or group identifier
-! addr - Object’s address in the file
-! OUTPUTS:
-! obj_id - Object identifier for the opened object
-! hdferr - Returns 0 if successful and -1 if fails
+! Inputs:
+! loc_id - File or group identifier.
+! addr - Object’s address in the file.
+!
+! Outputs:
+! obj_id - Object identifier for the opened object.
+! hdferr - Returns 0 if successful and -1 if fails.
!
! AUTHOR
! M. Scot Breitenfeld
! September 14, 2009
!
-! SOURCE
+! Fortran90 Interface:
SUBROUTINE h5oopen_by_addr_f(loc_id, addr, obj_id, hdferr)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- INTEGER(HADDR_T), INTENT(IN) :: addr ! Object’s address in the file
- INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
+ INTEGER(HID_T) , INTENT(IN) :: loc_id
+ INTEGER(HADDR_T), INTENT(IN) :: addr
+ INTEGER(HID_T) , INTENT(OUT) :: obj_id
+ INTEGER , INTENT(OUT) :: hdferr
!*****
INTERFACE
INTEGER FUNCTION h5oopen_by_addr_c(loc_id, addr, obj_id)
@@ -249,6 +249,77 @@ CONTAINS
hdferr = h5oopen_by_addr_c(loc_id, addr, obj_id)
END SUBROUTINE h5oopen_by_addr_f
+!
+!****s* H5O/h5ocopy_f
+! NAME
+! h5ocopy_f
+!
+! PURPOSE
+! Copies an object in an HDF5 file.
+!
+! Inputs:
+! src_loc_id - Object identifier indicating the location of the source object to be copied.
+! src_name - Name of the source object to be copied.
+! dst_loc_id - Location identifier specifying the destination.
+! dst_name - Name to be assigned to the new copy.
+!
+! Optional parameters:
+! ocpypl_id - Object copy property list.
+! lcpl_id - Link creation property list for the new hard link.
+!
+! Outputs:
+! hdferr - Returns 0 if successful and -1 if fails.
+!
+! AUTHOR
+! M. Scot Breitenfeld
+! March 14, 2012
+!
+! Fortran90 Interface:
+ SUBROUTINE h5ocopy_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr, ocpypl_id, lcpl_id)
+ IMPLICIT NONE
+ INTEGER(HID_T) , INTENT(IN) :: src_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: src_name
+ INTEGER(HID_T) , INTENT(IN) :: dst_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: dst_name
+ INTEGER , INTENT(OUT) :: hdferr
+ INTEGER(HID_T) , INTENT(IN), OPTIONAL :: ocpypl_id
+ INTEGER(HID_T) , INTENT(IN), OPTIONAL :: lcpl_id
+!*****
+
+ INTEGER(SIZE_T) :: src_name_len, dst_name_len
+ INTEGER(HID_T) :: ocpypl_id_default, lcpl_id_default
+
+ INTERFACE
+ INTEGER FUNCTION h5ocopy_c(src_loc_id, src_name, src_name_len, &
+ dst_loc_id, dst_name, dst_name_len, ocpypl_id_default, lcpl_id_default)
+ USE H5GLOBAL
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OCOPY_C'::h5ocopy_c
+ !DEC$ENDIF
+ !DEC$ATTRIBUTES reference :: src_name, dst_name
+ INTEGER(HID_T) , INTENT(IN) :: src_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: src_name
+ INTEGER(HID_T) , INTENT(IN) :: dst_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: dst_name
+ INTEGER(HID_T) , INTENT(IN) :: ocpypl_id_default
+ INTEGER(HID_T) , INTENT(IN) :: lcpl_id_default
+ INTEGER(SIZE_T) :: src_name_len, dst_name_len
+
+ END FUNCTION h5ocopy_c
+ END INTERFACE
+
+ src_name_len = LEN(src_name)
+ dst_name_len = LEN(dst_name)
+
+ ocpypl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(ocpypl_id)) ocpypl_id_default = ocpypl_id
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+
+ hdferr = h5ocopy_c(src_loc_id, src_name, src_name_len, &
+ dst_loc_id, dst_name, dst_name_len, ocpypl_id_default, lcpl_id_default)
+
+ END SUBROUTINE h5ocopy_f
END MODULE H5O
diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90
index 2d874d0..d50e3b9 100644
--- a/fortran/src/H5Pff.f90
+++ b/fortran/src/H5Pff.f90
@@ -53,11 +53,23 @@ CONTAINS
! INPUTS
! class - type of the property class to be created.
! Possible values are:
-! H5P_FILE_CREATE_F
-! H5P_FILE_ACCESS_F
-! H5P_DATASET_CREATE_F
-! H5P_DATASET_XFER_F
-! H5P_FILE_MOUNT_F
+! H5P_OBJECT_CREATE_F
+! H5P_FILE_CREATE_F
+! H5P_FILE_ACCESS_F
+! H5P_DATASET_CREATE_F
+! H5P_DATASET_ACCESS_F
+! H5P_DATASET_XFER_F
+! H5P_FILE_MOUNT_F
+! H5P_GROUP_CREATE_F
+! H5P_GROUP_ACCESS_F
+! H5P_DATATYPE_CREATE_F
+! H5P_DATATYPE_ACCESS_F
+! H5P_STRING_CREATE_F
+! H5P_ATTRIBUTE_CREATE _F
+! H5P_OBJECT_COPY_F
+! H5P_LINK_CREATE_F
+! H5P_LINK_ACCESS_F
+!
! OUTPUTS
! prp_id - property list identifier
! hdferr - error code
@@ -76,16 +88,9 @@ CONTAINS
! Fortran90 Interface:
SUBROUTINE h5pcreate_f(class, prp_id, hdferr)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: class ! The type of the property list
- ! to be created. Possible values are:
- ! H5P_FILE_CREATE_F
- ! H5P_FILE_ACCESS_F
- ! H5P_DATASET_CREATE_F
- ! H5P_DATASET_XFER_F
- ! H5P_FILE_MOUNT_F
- INTEGER(HID_T), INTENT(OUT) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
+ INTEGER(HID_T), INTENT(IN) :: class
+ INTEGER(HID_T), INTENT(OUT) :: prp_id
+ INTEGER , INTENT(OUT) :: hdferr
!*****
! INTEGER, EXTERNAL :: h5pcreate_c
! MS FORTRAN needs explicit interface for C functions called here.
diff --git a/fortran/src/H5Tff.f90 b/fortran/src/H5Tff.f90
index f5369d0..fd857a8 100644
--- a/fortran/src/H5Tff.f90
+++ b/fortran/src/H5Tff.f90
@@ -2050,17 +2050,19 @@ CONTAINS
! h5tcreate_f
!
! PURPOSE
-! Creates a new dataype
+! Creates a new datatype.
!
! INPUTS
-! class - datatype class, possible values are:
-! H5T_COMPOUND_F
-! H5T_ENUM_F
-! H5T_OPAQUE_F
-! size - datattype size
+! class - Datatype class can be one of:
+! H5T_COMPOUND_F
+! H5T_ENUM_F
+! H5T_OPAQUE_F
+! H5T_STRING_F
+!
+! size - Size of the datatype.
! OUTPUTS
-! type_id - datatype identifier
-! hdferr - Returns 0 if successful and -1 if fails
+! type_id - Datatype identifier.
+! hdferr - Returns 0 if successful and -1 if fails
!
! AUTHOR
! Elena Pourmal
@@ -2072,29 +2074,26 @@ CONTAINS
! port). March 7, 2001
! SOURCE
SUBROUTINE h5tcreate_f(class, size, type_id, hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: class ! Datatype class can be one of
- ! H5T_COMPOUND_F
- ! H5T_ENUM_F
- ! H5T_OPAQUE_F
- INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the datatype
- INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ IMPLICIT NONE
+ INTEGER , INTENT(IN) :: class
+ INTEGER(SIZE_T), INTENT(IN) :: size
+ INTEGER(HID_T) , INTENT(OUT) :: type_id
+ INTEGER , INTENT(OUT) :: hdferr
!*****
- INTERFACE
- INTEGER FUNCTION h5tcreate_c(class, size, type_id)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TCREATE_C'::h5tcreate_c
- !DEC$ENDIF
- INTEGER, INTENT(IN) :: class
- INTEGER(SIZE_T), INTENT(IN) :: size
- INTEGER(HID_T), INTENT(OUT) :: type_id
- END FUNCTION h5tcreate_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5tcreate_c(class, size, type_id)
+ USE H5GLOBAL
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TCREATE_C'::h5tcreate_c
+ !DEC$ENDIF
+ INTEGER, INTENT(IN) :: class
+ INTEGER(SIZE_T), INTENT(IN) :: size
+ INTEGER(HID_T), INTENT(OUT) :: type_id
+ END FUNCTION h5tcreate_c
+ END INTERFACE
- hdferr = h5tcreate_c(class, size, type_id)
- END SUBROUTINE h5tcreate_f
+ hdferr = h5tcreate_c(class, size, type_id)
+ END SUBROUTINE h5tcreate_f
!
!****s* H5T/h5tinsert_f
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index 89957a4..a504653 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -805,10 +805,12 @@ H5_FCDLL int_f nh5tconvert_c(hid_t_f *src_id, hid_t_f *dst_id, size_t_f *nelmts,
#define nh5olink_c H5_FC_FUNC_(h5olink_c, H5OLINK_C)
#define nh5oopen_c H5_FC_FUNC_(h5oopen_c, H5OOPEN_C)
-#define nh5oclose_c H5_FC_FUNC_(h5oclose_c, H5OCLOSE_C)
+#define nh5oclose_c H5_FC_FUNC_(h5oclose_c, H5OCLOSE_C)
#define nh5ovisit_c H5_FC_FUNC_(h5ovisit_c,H5OVISIT_C)
#define nh5oget_info_by_name_c H5_FC_FUNC_(h5oget_info_by_name_c ,H5OGET_INFO_BY_NAME_C)
#define nh5oopen_by_addr_c H5_FC_FUNC_(h5oopen_by_addr_c, H5OOPEN_BY_ADDR_C)
+#define nh5ocopy_c H5_FC_FUNC_(h5ocopy_c, H5OCOPY_C)
+
H5_FCDLL int_f nh5oopen_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *obj_id);
H5_FCDLL int_f nh5oclose_c (hid_t_f *object_id );
@@ -818,6 +820,9 @@ H5_FCDLL int_f nh5olink_c (hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, s
H5_FCDLL int_f nh5ovisit_c (hid_t_f *group_id, int_f *index_type, int_f *order, H5O_iterate_t op, void *op_data);
H5_FCDLL int_f nh5oget_info_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen,hid_t_f *lapl_id,
H5O_info_t_f *object_info);
+H5_FCDLL int_f nh5ocopy_c (hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_name_len,
+ hid_t_f *dst_loc_id, _fcd dst_name, size_t_f *dst_name_len,
+ hid_t_f *ocpypl_id, hid_t_f *lcpl_id );
/*
* Functions from H5Pf.c
*/
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 35fafee..dc267f8 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -478,7 +478,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 102
+LT_VERS_REVISION = 113
LT_VERS_AGE = 0
# Include src directory in both Fortran and C flags (C compiler is used
diff --git a/fortran/src/h5fc.in b/fortran/src/h5fc.in
index 9e9409d..2d7b5b4 100755..100644
--- a/fortran/src/h5fc.in
+++ b/fortran/src/h5fc.in
@@ -189,7 +189,7 @@ for arg in $@ ; do
get_output_file="yes"
fi
;;
- -E|-M)
+ -E|-M|-MT)
allargs="$allargs $arg"
compile_args="$compile_args $arg"
dash_c="yes"
diff --git a/fortran/src/hdf5_fortrandll.def b/fortran/src/hdf5_fortrandll.def
index 6b3aad8..29e83f5 100644
--- a/fortran/src/hdf5_fortrandll.def
+++ b/fortran/src/hdf5_fortrandll.def
@@ -284,6 +284,7 @@ H5L_mp_H5LIS_REGISTERED_F
H5L_mp_H5LMOVE_F
H5L_mp_H5LGET_NAME_BY_IDX_F
; H5O
+H5O_mp_H5OCOPY_F
H5O_mp_H5OLINK_F
H5O_mp_H5OOPEN_F
H5O_mp_H5OOPEN_BY_ADDR_F
diff --git a/fortran/src/phdf5_fortrandll.def b/fortran/src/phdf5_fortrandll.def
index a4bc9eb..7a196cd 100644
--- a/fortran/src/phdf5_fortrandll.def
+++ b/fortran/src/phdf5_fortrandll.def
@@ -284,6 +284,7 @@ H5L_mp_H5LIS_REGISTERED_F
H5L_mp_H5LMOVE_F
H5L_mp_H5LGET_NAME_BY_IDX_F
; H5O
+H5O_mp_H5OCOPY_F
H5O_mp_H5OLINK_F
H5O_mp_H5OOPEN_F
H5O_mp_H5OOPEN_BY_ADDR_F