summaryrefslogtreecommitdiffstats
path: root/fortran
diff options
context:
space:
mode:
Diffstat (limited to 'fortran')
-rw-r--r--fortran/src/H5Df.c40
-rw-r--r--fortran/src/H5Fff_F03.f9019
-rw-r--r--fortran/src/H5Off.f9014
-rw-r--r--fortran/src/H5Sf.c4
-rw-r--r--fortran/src/H5Sff.f904
-rw-r--r--fortran/src/Makefile.am5
-rw-r--r--fortran/src/Makefile.in13
-rw-r--r--fortran/test/Makefile.in1
-rw-r--r--fortran/test/tH5F_F03.f908
-rw-r--r--fortran/test/tH5O.f902
-rw-r--r--fortran/test/tH5T_F03.f9013
-rw-r--r--fortran/testpar/Makefile.in1
12 files changed, 67 insertions, 57 deletions
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index ab7adf7..deab4f3 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;
}
@@ -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;
}
@@ -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/H5Fff_F03.f90 b/fortran/src/H5Fff_F03.f90
index 1ccd39a..83d46be 100644
--- a/fortran/src/H5Fff_F03.f90
+++ b/fortran/src/H5Fff_F03.f90
@@ -46,16 +46,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 +66,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
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/H5Sf.c b/fortran/src/H5Sf.c
index 2cfb1eb..a944e20 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);
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/Makefile.am b/fortran/src/Makefile.am
index 12c38e2..2d597c6 100644
--- a/fortran/src/Makefile.am
+++ b/fortran/src/Makefile.am
@@ -79,8 +79,11 @@ libhdf5_fortran_la_SOURCES=H5f90global.f90 \
H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 H5Eff$(F_STATUS).f90 H5Fff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \
H5Off$(F_STATUS).f90 H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 $(PARALLEL_COND_SRC)
-# HDF5 Fortran library depends on HDF5 Library.
+# HDF5 Fortran library depends on HDF5 Library. However, only add the dependency
+# if --enable-sharedlib-rpath is yes.
+if LT_ADD_LIBHDF5_DEPENDENCY
libhdf5_fortran_la_LIBADD=$(LIBHDF5)
+endif
# h5fc is generated during configure.
# Remove it only when distclean.
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 3f816ab..61f729d 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -120,7 +120,8 @@ am__uninstall_files_from_dir = { \
}
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
-libhdf5_fortran_la_DEPENDENCIES = $(LIBHDF5)
+@LT_ADD_LIBHDF5_DEPENDENCY_TRUE@libhdf5_fortran_la_DEPENDENCIES = \
+@LT_ADD_LIBHDF5_DEPENDENCY_TRUE@ $(LIBHDF5)
am__libhdf5_fortran_la_SOURCES_DIST = H5f90global.f90 \
H5fortran_types.f90 H5_ff$(F_STATUS).f90 H5_ff.f90 H5Aff.f90 \
H5Dff.f90 H5Eff.f90 H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 \
@@ -348,6 +349,7 @@ LIPO = @LIPO@
LL_PATH = @LL_PATH@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
+LT_ADD_LIBHDF5_DEPENDENCY = @LT_ADD_LIBHDF5_DEPENDENCY@
LT_STATIC_EXEC = @LT_STATIC_EXEC@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
@@ -517,8 +519,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 = 2
+LT_VERS_INTERFACE = 6
+LT_VERS_REVISION = 160
LT_VERS_AGE = 0
# Include src directory in both Fortran and C flags (C compiler is used
@@ -561,8 +563,9 @@ libhdf5_fortran_la_SOURCES = H5f90global.f90 \
H5Off$(F_STATUS).f90 H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 $(PARALLEL_COND_SRC)
-# HDF5 Fortran library depends on HDF5 Library.
-libhdf5_fortran_la_LIBADD = $(LIBHDF5)
+# HDF5 Fortran library depends on HDF5 Library. However, only add the dependency
+# if --enable-sharedlib-rpath is yes.
+@LT_ADD_LIBHDF5_DEPENDENCY_TRUE@libhdf5_fortran_la_LIBADD = $(LIBHDF5)
# h5fc is generated during configure.
# Remove it only when distclean.
diff --git a/fortran/test/Makefile.in b/fortran/test/Makefile.in
index 6c226bc..9f8b6d0 100644
--- a/fortran/test/Makefile.in
+++ b/fortran/test/Makefile.in
@@ -333,6 +333,7 @@ LIPO = @LIPO@
LL_PATH = @LL_PATH@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
+LT_ADD_LIBHDF5_DEPENDENCY = @LT_ADD_LIBHDF5_DEPENDENCY@
LT_STATIC_EXEC = @LT_STATIC_EXEC@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
diff --git a/fortran/test/tH5F_F03.f90 b/fortran/test/tH5F_F03.f90
index dea9a5d..79b0458 100644
--- a/fortran/test/tH5F_F03.f90
+++ b/fortran/test/tH5F_F03.f90
@@ -62,10 +62,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 +147,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
diff --git a/fortran/test/tH5O.f90 b/fortran/test/tH5O.f90
index b68e7ca..ea91631 100644
--- a/fortran/test/tH5O.f90
+++ b/fortran/test/tH5O.f90
@@ -535,7 +535,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)
diff --git a/fortran/test/tH5T_F03.f90 b/fortran/test/tH5T_F03.f90
index f7efcc4..a9a6487 100644
--- a/fortran/test/tH5T_F03.f90
+++ b/fortran/test/tH5T_F03.f90
@@ -3137,10 +3137,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
diff --git a/fortran/testpar/Makefile.in b/fortran/testpar/Makefile.in
index 9a93367..1903529 100644
--- a/fortran/testpar/Makefile.in
+++ b/fortran/testpar/Makefile.in
@@ -257,6 +257,7 @@ LIPO = @LIPO@
LL_PATH = @LL_PATH@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
+LT_ADD_LIBHDF5_DEPENDENCY = @LT_ADD_LIBHDF5_DEPENDENCY@
LT_STATIC_EXEC = @LT_STATIC_EXEC@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@