Hello, I'm having trouble copying an object to an exterally-linked hdf5 file.I
can copy an object within the same file using H5Ocopy(file_id, "/G4", file_id,
"/G1/G4", H5P_DEFAULT, H5P_DEFAULT)I can create external links using
H5Lcreate_external("file2.h5", "G2", file_id, "G2", H5P_DEFAULT, H5P_DEFAULT)I
can even create a group in the externally-linked file using H5Gcreate(file_id,
"/G2/G3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)But I cannot copy to the
externally-linked file, as H5Ocopy(file_id, "/G4", file_id, "/G2/G3/G4",
H5P_DEFAULT, H5P_DEFAULT) gives me an error. I'm wondering what I'm doing
wrong? Or is my version of hdf5 simply out of date?
(Sample code attached) Chris.
#include "hdf5.h"
/* Create the following
HDF5 "file2.h5" {
GROUP "/" {
GROUP "G2" {
}
}
}
*/
void createfile2() {
herr_t status;
hid_t file_id = H5Fcreate("file2.h5", H5F_ACC_TRUNC, H5P_DEFAULT,
H5P_DEFAULT);
hid_t group2_id = H5Gcreate(file_id, "G2", H5P_DEFAULT, H5P_DEFAULT,
H5P_DEFAULT);
status = H5Gclose(group2_id);
if (status) puts("Error 1");
status = H5Fclose(file_id);
if (status) puts("Error 2");
}
/* Given a file_id, initialize the following
HDF5 "file1.h5" {
GROUP "/" {
GROUP "G1" {
}
GROUP "G4" {
GROUP "G5" {
}
}
}
}
*/
void initialize(hid_t file_id) {
herr_t status;
hid_t group1_id = H5Gcreate(file_id, "G1", H5P_DEFAULT, H5P_DEFAULT,
H5P_DEFAULT);
status = H5Gclose(group1_id);
if (status) puts("Error 3");
hid_t group4_id = H5Gcreate(file_id, "G4", H5P_DEFAULT, H5P_DEFAULT,
H5P_DEFAULT);
hid_t group5_id = H5Gcreate(file_id, "G4/G5", H5P_DEFAULT, H5P_DEFAULT,
H5P_DEFAULT);
status = H5Gclose(group5_id);
if (status) puts("Error 4");
status = H5Gclose(group4_id);
if (status) puts("Error 5");
}
int main(int argc, char*argv[]) {
herr_t status;
createfile2();
/* Open and initialize file1 */
hid_t file_id = H5Fcreate("file1.h5", H5F_ACC_TRUNC, H5P_DEFAULT,
H5P_DEFAULT);
initialize(file_id);
/* I can copy an object within the same file */
status = H5Ocopy(file_id, "/G4", file_id, "/G1/G4", H5P_DEFAULT,
H5P_DEFAULT);
if (status) puts("Error 6");
/* I can create external links */
status = H5Lcreate_external("file2.h5", "G2", file_id, "G2", H5P_DEFAULT,
H5P_DEFAULT);
if (status) puts("Error 7");
/* I can create a group in the externally-linked file */
hid_t group3_id = H5Gcreate(file_id, "/G2/G3", H5P_DEFAULT, H5P_DEFAULT,
H5P_DEFAULT);
status = H5Gclose(group3_id);
if (status) puts("Error 8");
/* I cannot copy to the externally-linked file */
status = H5Ocopy(file_id, "/G4", file_id, "/G2/G3/G4", H5P_DEFAULT,
H5P_DEFAULT);
if (status) puts("Error 9");
/* Close file1 */
status = H5Fclose(file_id);
if (status) puts("Error 10");
/* */
return 0;
}
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5