summaryrefslogtreecommitdiffstats
path: root/tools/lib/h5diff.c
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2010-04-22 18:17:35 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2010-04-22 18:17:35 (GMT)
commit249acc03550e9cb2ed3cfaa56737215910a7a194 (patch)
treeff576ef83e636639b4a707bb174466afdc39af5f /tools/lib/h5diff.c
parent20a020a1c7bccce730be91118b3366b7cabe95fc (diff)
downloadhdf5-249acc03550e9cb2ed3cfaa56737215910a7a194.zip
hdf5-249acc03550e9cb2ed3cfaa56737215910a7a194.tar.gz
hdf5-249acc03550e9cb2ed3cfaa56737215910a7a194.tar.bz2
[svn-r18614] Purpose:
Fix for bug 1817 : h5copy fail to copy dangling link by specifying link path directly Tested: jam, amani, linew
Diffstat (limited to 'tools/lib/h5diff.c')
-rw-r--r--tools/lib/h5diff.c145
1 files changed, 0 insertions, 145 deletions
diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c
index 9e753fe..5f18ab3 100644
--- a/tools/lib/h5diff.c
+++ b/tools/lib/h5diff.c
@@ -20,28 +20,6 @@
#include "h5tools.h"
#include "h5tools_utils.h"
-/* This code is layout for common code among tools */
-typedef enum toolname_t {
- TOOL_H5DIFF, TOOL_H5LS, TOOL__H5DUMP /* add as necessary */
-} h5tool_toolname_t;
-/* this struct can be used to differntiate among tools if necessary */
-typedef struct {
- h5tool_toolname_t toolname;
- int msg_mode;
-} h5tool_opt_t;
-
-/* To return link info
- * Functions:
- * H5tools_get_link_info()
- * Note: this may be move to h5tools code if used by other tools
- */
-typedef struct {
- H5O_type_t trg_type; /* OUT: target type */
- const char *trg_path; /* OUT: target obj path. This must be freed
- * when used with H5tools_get_link_info() */
- H5L_info_t linfo; /* OUT: link info */
- h5tool_opt_t opt; /* IN: options */
-} h5tool_link_info_t;
/*
* Debug printf macros. The prefix allows output filtering by test scripts.
*/
@@ -254,129 +232,6 @@ out:
}
-/*-------------------------------------------------------------------------
- * Function: H5tools_get_link_info
- *
- * Purpose: Get link (soft, external) info and its target object type
- (dataset, group, named datatype) and path, if exist
- *
- * Patameters:
- * - [IN] fileid : link file id
- * - [IN] linkpath : link path
- * - [OUT] h5li : link's info (H5L_info_t)
- * - [OUT] link_info: returning target object info (h5tool_link_info_t)
- *
- * Return:
- * 1 : Succed to get link info.
- * 0 : Detected as a dangling link
- * -1 : H5 API failed.
- *
- * NOTE:
- * link_info->trg_path must be freed out of this function
- *
- * Programmer: Jonathan Kim
- *
- * Date: Feb 8, 2010
- *-------------------------------------------------------------------------*/
-static int H5tools_get_link_info(hid_t file_id, const char * linkpath, h5tool_link_info_t *link_info)
-{
- int Ret = -1; /* init to fail */
- htri_t l_ret;
- H5O_info_t trg_oinfo;
- hid_t fapl;
- hid_t lapl = H5P_DEFAULT;
-
- /* init */
- link_info->trg_type = H5O_TYPE_UNKNOWN;
-
- /* check if link itself exist */
- if((H5Lexists(file_id, linkpath, H5P_DEFAULT) <= 0))
- {
- if(link_info->opt.msg_mode==1)
- parallel_print("Warning: link <%s> doesn't exist \n",linkpath);
- goto out;
- }
-
- /* get info from link */
- if(H5Lget_info(file_id, linkpath, &(link_info->linfo), H5P_DEFAULT) < 0)
- {
- if(link_info->opt.msg_mode==1)
- parallel_print("Warning: unable to get link info from <%s>\n",linkpath);
- goto out;
- }
-
- /* trg_path must be freed out of this function when finished using */
- link_info->trg_path = (char*)HDcalloc(link_info->linfo.u.val_size, sizeof(char));
- HDassert(link_info->trg_path);
-
- /* get link value */
- if(H5Lget_val(file_id, linkpath, link_info->trg_path, link_info->linfo.u.val_size, H5P_DEFAULT) < 0)
- {
- if(link_info->opt.msg_mode==1)
- parallel_print("Warning: unable to get link value from <%s>\n",linkpath);
- goto out;
- }
-
- /*-----------------------------------------------------
- * if link type is external link use different lapl to
- * follow object in other file
- */
- if (link_info->linfo.type == H5L_TYPE_EXTERNAL)
- {
- fapl = H5Pcreate(H5P_FILE_ACCESS);
- H5Pset_fapl_sec2(fapl);
- lapl = H5Pcreate(H5P_LINK_ACCESS);
- H5Pset_elink_fapl(lapl, fapl);
- }
-
- /*--------------------------------------------------------------
- * if link's target object exist, get type
- */
- /* check if target object exist */
- l_ret = H5Oexists_by_name(file_id, linkpath, lapl);
-
- /* detect dangling link */
- if(l_ret == FALSE)
- {
- Ret = 0;
- goto out;
- }
- /* function failed */
- else if (l_ret < 0)
- {
- goto out;
- }
-
- /* get target object info */
- if(H5Oget_info_by_name(file_id, linkpath, &trg_oinfo, lapl) < 0)
- {
- if(link_info->opt.msg_mode==1)
- parallel_print("Warning: unable to get object information for <%s>\n", linkpath);
- goto out;
- }
-
- /* check unknown type */
- if (trg_oinfo.type < H5O_TYPE_GROUP || trg_oinfo.type >=H5O_TYPE_NTYPES)
- {
- if(link_info->opt.msg_mode==1)
- parallel_print("Warning: target object of <%s> is unknown type\n", linkpath);
- goto out;
- }
-
- /* set target obj type to return */
- link_info->trg_type = trg_oinfo.type;
-
- /* succeed */
- Ret = 1;
-out:
- if (link_info->linfo.type == H5L_TYPE_EXTERNAL)
- {
- H5Pclose(fapl);
- H5Pclose(lapl);
- }
-
- return Ret;
-}
/*-------------------------------------------------------------------------
* Function: h5diff