summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/H5F.c52
-rw-r--r--src/H5Fpublic.h1
-rw-r--r--src/H5I.c4
-rw-r--r--src/H5MPprivate.h1
4 files changed, 57 insertions, 1 deletions
diff --git a/src/H5F.c b/src/H5F.c
index 72c1265..2dc7880 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -4743,3 +4743,55 @@ H5Fget_filesize(hid_t file_id)
done:
FUNC_LEAVE_API(ret_value)
} /* end H5Fget_filesize() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Fget_name
+ *
+ * Purpose: Gets the name of the file to which object OBJ_ID belongs.
+ * If `name' is non-NULL then write up to `size' bytes into that
+ * buffer and always return the length of the entry name.
+ * Otherwise `size' is ignored and the function does not store the name,
+ * just returning the number of characters required to store the name.
+ * If an error occurs then the buffer pointed to by `name' (NULL or non-NULL)
+ * is unchanged and the function returns a negative value.
+ *
+ * Return: Success: The length of the file name
+ * Failure: Negative
+ *
+ * Programmer: Raymond Lu
+ * June 29, 2004
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+ssize_t
+H5Fget_name(hid_t obj_id, char *name/*out*/, size_t size)
+{
+ H5G_entry_t *ent; /*symbol table entry */
+ size_t len=0;
+ ssize_t ret_value;
+
+ FUNC_ENTER_API (H5Fget_name, FAIL);
+ H5TRACE3("Zs","ixz",obj_id,name,size);
+
+ /* get symbol table entry */
+ if((ent = H5G_loc(obj_id))==NULL)
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a valid object ID")
+
+ len = HDstrlen(ent->file->name);
+
+ if(name) {
+ HDstrncpy(name, ent->file->name, MIN(len+1,size));
+ if(len >= size)
+ name[size-1]='\0';
+ } /* end if */
+
+ /* Set return value */
+ ret_value=(ssize_t)len;
+
+done:
+ FUNC_LEAVE_API(ret_value);
+} /* end H5Fget_name() */
+
diff --git a/src/H5Fpublic.h b/src/H5Fpublic.h
index 911bdff..c372130 100644
--- a/src/H5Fpublic.h
+++ b/src/H5Fpublic.h
@@ -114,6 +114,7 @@ H5_DLL herr_t H5Fmount(hid_t loc, const char *name, hid_t child, hid_t plist);
H5_DLL herr_t H5Funmount(hid_t loc, const char *name);
H5_DLL hssize_t H5Fget_freespace(hid_t file_id);
H5_DLL haddr_t H5Fget_filesize(hid_t file_id);
+H5_DLL ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size);
#ifdef __cplusplus
}
diff --git a/src/H5I.c b/src/H5I.c
index e538f52..35d276e 100644
--- a/src/H5I.c
+++ b/src/H5I.c
@@ -2022,7 +2022,9 @@ H5I_find_id(hid_t id)
*
* Purpose: Gets a name of an object from its ID.
*
- * Return: Success: 0, Failure: -1
+ * Return: Success: The length of name.
+ *
+ * Failure: -1
*
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
*
diff --git a/src/H5MPprivate.h b/src/H5MPprivate.h
index 126194e..24d709e 100644
--- a/src/H5MPprivate.h
+++ b/src/H5MPprivate.h
@@ -131,6 +131,7 @@
#define color_H5Funmount "red"
#define color_H5Fget_freespace "red"
#define color_H5Fget_filesize "red"
+#define color_H5Fget_name "red"
#define color_H5Gcreate "red"
#define color_H5Gopen "red"