summaryrefslogtreecommitdiffstats
path: root/src/H5Lexternal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Lexternal.c')
-rw-r--r--src/H5Lexternal.c114
1 files changed, 63 insertions, 51 deletions
diff --git a/src/H5Lexternal.c b/src/H5Lexternal.c
index 3452c20..a967d59 100644
--- a/src/H5Lexternal.c
+++ b/src/H5Lexternal.c
@@ -26,6 +26,48 @@
#include "H5Ppublic.h" /* Property lists */
#include "H5Gpkg.h" /* Groups */
+static hid_t H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
+ void * udata, size_t UNUSED udata_size, hid_t lapl_id);
+static ssize_t H5L_extern_query(const char UNUSED * link_name, void * udata,
+ size_t udata_size, void * buf /*out*/, size_t buf_size);
+
+/* Default External Link link class */
+const H5L_link_class_t H5L_EXTERN_LINK_CLASS[1] = {{
+ H5L_LINK_CLASS_T_VERS, /* H5L_link_class_t version */
+ H5L_LINK_EXTERNAL, /* Link type id number */
+ "external_link", /* Link name for debugging */
+ NULL, /* Creation callback */
+ NULL, /* Move callback */
+ NULL, /* Copy callback */
+ H5L_extern_traverse, /* The actual traversal function */
+ NULL, /* Deletion callback */
+ H5L_extern_query /* Query callback */
+}};
+
+
+/*--------------------------------------------------------------------------
+NAME
+ H5L_init_extern_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5L_init_extern_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5L_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5L_init_extern_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5L_init_extern_interface)
+
+ FUNC_LEAVE_NOAPI(H5L_init())
+} /* H5L_init_extern_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5L_extern_traverse
*
@@ -45,7 +87,9 @@
*
*-------------------------------------------------------------------------
*/
-static hid_t H5L_extern_traverse(const char * link_name, hid_t cur_group, void * udata, size_t udata_size, hid_t lapl_id)
+static hid_t
+H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
+ void * udata, size_t UNUSED udata_size, hid_t lapl_id)
{
hid_t fid;
char *file_name;
@@ -57,7 +101,7 @@ static hid_t H5L_extern_traverse(const char * link_name, hid_t cur_group, void *
hid_t ret_value = -1;
file_name = (char *) udata;
- fname_len = strlen(file_name);
+ fname_len = HDstrlen(file_name);
obj_name = ((char *) udata) + fname_len + 1;
/* See if the external link prefix property is set */
@@ -72,12 +116,12 @@ static hid_t H5L_extern_traverse(const char * link_name, hid_t cur_group, void *
buf_size = HDstrlen(prefix);
/* Allocate a buffer to hold the filename plus prefix */
- file_name = malloc(buf_size + fname_len + 1);
+ file_name = H5MM_malloc(buf_size + fname_len + 1);
fname_alloc = TRUE;
/* Add the external link's filename to the prefix supplied */
- strcpy(file_name, prefix);
- strcat(file_name, udata);
+ HDstrcpy(file_name, prefix);
+ HDstrcat(file_name, udata);
}
/* Figure out if we should open with read-write or read-only */
@@ -96,14 +140,15 @@ static hid_t H5L_extern_traverse(const char * link_name, hid_t cur_group, void *
/* Free file_name if it's been allocated */
if(fname_alloc)
- free(file_name);
+ H5MM_xfree(file_name);
return ret_value;
error:
/* Free file_name if it's been allocated */
if(fname_alloc)
- free(file_name);
+ H5MM_xfree(file_name);
+
return -1;
}
@@ -125,62 +170,28 @@ error:
*
*-------------------------------------------------------------------------
*/
-static ssize_t H5L_extern_query(const char * link_name, void * udata, size_t udata_size, void * buf /*out*/, size_t buf_size)
+static ssize_t
+H5L_extern_query(const char UNUSED * link_name, void * udata,
+ size_t udata_size, void * buf /*out*/, size_t buf_size)
{
size_t ret_value;
/* If the buffer is NULL, skip writng anything in it and just return
* the size needed */
- if(buf)
- {
+ if(buf) {
if(udata_size < buf_size)
buf_size = udata_size;
/* Copy the udata verbatim up to udata_size*/
- memcpy(buf, udata, udata_size);
+ HDmemcpy(buf, udata, udata_size);
}
ret_value = udata_size;
+
return ret_value;
}
-/* Default External Link link class */
-const H5L_link_class_t H5L_EXTERN_LINK_CLASS[1] = {{
- H5L_LINK_CLASS_T_VERS, /* H5L_link_class_t version */
- H5L_LINK_EXTERNAL, /* Link type id number */
- "external_link", /* Link name for debugging */
- NULL, /* Creation callback */
- NULL, /* Move callback */
- NULL, /* Copy callback */
- H5L_extern_traverse, /* The actual traversal function */
- NULL, /* Deletion callback */
- H5L_extern_query /* Query callback */
-}};
-
-/*--------------------------------------------------------------------------
-NAME
- H5L_init_extern_interface -- Initialize interface-specific information
-USAGE
- herr_t H5L_init_extern_interface()
-
-RETURNS
- Non-negative on success/Negative on failure
-DESCRIPTION
- Initializes any interface-specific data or routines. (Just calls
- H5T_init_iterface currently).
-
---------------------------------------------------------------------------*/
-static herr_t
-H5L_init_extern_interface(void)
-{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5L_init_extern_interface)
-
- FUNC_LEAVE_NOAPI(H5L_init())
-} /* H5L_init_extern_interface() */
-
-
-
/*-------------------------------------------------------------------------
* Function: H5Lcreate_external
*
@@ -232,7 +243,7 @@ H5Lcreate_external(const char *file_name, const char *obj_name,
HDstrcpy(temp_name + (HDstrlen(file_name) + 1), obj_name);
/* Create an external link */
- if(H5L_create_ud(&link_loc, link_name, temp_name, buf_size, H5L_LINK_EXTERNAL, H5G_TARGET_NORMAL, lcpl_id, lapl_id, H5AC_dxpl_id) < 0)
+ if(H5L_create_ud(&link_loc, link_name, temp_name, buf_size, H5L_LINK_EXTERNAL, lcpl_id, lapl_id, H5AC_dxpl_id) < 0)
HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "unable to create link")
done:
@@ -240,8 +251,8 @@ done:
H5MM_free(temp_name);
FUNC_LEAVE_API(ret_value);
} /* end H5Lcreate_external() */
-
+
/*-------------------------------------------------------------------------
* Function: H5L_register_external
*
@@ -257,9 +268,9 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5L_register_external()
+H5L_register_external(void)
{
- herr_t ret_value=SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5L_register_external, FAIL)
@@ -318,3 +329,4 @@ H5Lunpack_elink_val(char *ext_linkval, char **filename, char **obj_path)
done:
FUNC_LEAVE_API(ret_value)
}
+