diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2010-07-28 12:27:56 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2010-07-28 12:27:56 (GMT) |
commit | 0b7306beed3616d5e259ce3efa1dd0105f436fdb (patch) | |
tree | 4d5d467a608e5fc9ada867f913136de744750860 /src/H5Itest.c | |
parent | ad2f3285b3a0e55aab2014c9e395009df758fef6 (diff) | |
download | hdf5-0b7306beed3616d5e259ce3efa1dd0105f436fdb.zip hdf5-0b7306beed3616d5e259ce3efa1dd0105f436fdb.tar.gz hdf5-0b7306beed3616d5e259ce3efa1dd0105f436fdb.tar.bz2 |
[svn-r19133] Description:
Correct traversal of user-defined links (including external links) to
retain path information of object, allowing H5Iget_name() queries to work
quickly (without searching entire destination file). This required some
refactoring and addition of a mechanism to detect if a "fast" query was
performed (for the tests).
Minor code cleanups, etc.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, w/threadsafe, in production mode
Linux/PPC 2.6 (heiwa) w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in debug mode
Mac OS X/32 10.6.4 (amazon) in debug mode
Mac OS X/32 10.6.4 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
Mac OS X/32 10.6.4 (amazon) w/parallel, in debug mode
Diffstat (limited to 'src/H5Itest.c')
-rw-r--r-- | src/H5Itest.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/H5Itest.c b/src/H5Itest.c new file mode 100644 index 0000000..1c6892d --- /dev/null +++ b/src/H5Itest.c @@ -0,0 +1,98 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Programmer: Quincey Koziol <koziol@hdfgoup.org> + * Tuesday, July 27, 2010 + * + * Purpose: ID testing functions. + */ + +/****************/ +/* Module Setup */ +/****************/ + +#define H5I_PACKAGE /*suppress error about including H5Ipkg */ +#define H5I_TESTING /*suppress warning about H5I testing funcs*/ + + +/***********/ +/* Headers */ +/***********/ +#include "H5private.h" /* Generic Functions */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5Gprivate.h" /* Groups */ +#include "H5Ipkg.h" /* IDs */ + + +/****************/ +/* Local Macros */ +/****************/ + + +/******************/ +/* Local Typedefs */ +/******************/ + + +/********************/ +/* Local Prototypes */ +/********************/ + + +/*********************/ +/* Package Variables */ +/*********************/ + + +/*******************/ +/* Local Variables */ +/*******************/ + + + +/*------------------------------------------------------------------------- + * Function: H5I_get_name_test + * + * Purpose: Testing version of H5Iget_name() + * + * Return: Success: The length of name. + * Failure: -1 + * + * Programmer: Quincey Koziol + * Tuesday, July 27, 2010 + * + *------------------------------------------------------------------------- + */ +ssize_t +H5I_get_name_test(hid_t id, char *name/*out*/, size_t size, hbool_t *cached) +{ + H5G_loc_t loc; /* Object location */ + ssize_t ret_value; /* Return value */ + + FUNC_ENTER_NOAPI(H5I_get_name_test, FAIL) + + /* Get object location */ + if(H5G_loc(id, &loc) < 0) + HGOTO_ERROR(H5E_ATOM, H5E_CANTGET, FAIL, "can't retrieve object location") + + /* Call internal group routine to retrieve object's name */ + if((ret_value = H5G_get_name(&loc, name, size, cached, H5P_DEFAULT, H5AC_ind_dxpl_id)) < 0) + HGOTO_ERROR(H5E_ATOM, H5E_CANTGET, FAIL, "can't retrieve object name") + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5I_get_name_test() */ + |