Compare commits
7 Commits
inactive/p
...
inactive/n
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
171af55b46 | ||
|
|
833a180cc9 | ||
|
|
cba54019b6 | ||
|
|
6321d6f37b | ||
|
|
1dfe7e0483 | ||
|
|
b843341c4d | ||
|
|
7456cf282c |
2
MANIFEST
2
MANIFEST
@@ -677,6 +677,8 @@
|
||||
./src/H5FDmpiposix.h
|
||||
./src/H5FDmulti.c
|
||||
./src/H5FDmulti.h
|
||||
./src/H5FDnull.c
|
||||
./src/H5FDnull.h
|
||||
./src/H5FDpkg.h
|
||||
./src/H5FDprivate.h
|
||||
./src/H5FDpublic.h
|
||||
|
||||
50
src/H5FD.c
50
src/H5FD.c
@@ -443,11 +443,11 @@ H5FD_get_class(hid_t id)
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, NULL, "can't find object for ID")
|
||||
|
||||
if(TRUE == H5P_isa_class(id, H5P_FILE_ACCESS)) {
|
||||
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
if((driver_id = H5P_get_driver(plist)) < 0 )
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver ID")
|
||||
ret_value = H5FD_get_class(driver_id);
|
||||
} else if(TRUE == H5P_isa_class(id, H5P_DATASET_XFER)) {
|
||||
if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
|
||||
if((driver_id = H5P_get_driver(plist)) < 0 )
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver ID")
|
||||
ret_value = H5FD_get_class(driver_id);
|
||||
} else {
|
||||
@@ -561,6 +561,50 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5FD_sb_decode() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5FD_sb_verify
|
||||
*
|
||||
* Purpose: Verify that the driver is compatable with the driver
|
||||
* that created the file. During file creation, drivers that
|
||||
* modify the HDF5 file structure when interacting with the
|
||||
* filesystem identify themselves in the file superblock.
|
||||
* When the file is reopened, the opening driver must verify
|
||||
* that it can reconstruct a logical HDF5 file from the
|
||||
* modified structure in the filesystem.
|
||||
*
|
||||
* Return: Success: TRUE if the driver is compatable, else FALSE
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Jacob Gruber
|
||||
* Friday, January 13, 2012
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
htri_t
|
||||
H5FD_sb_verify(H5FD_t *file, const char *sb_driver_id)
|
||||
{
|
||||
htri_t ret_value = FALSE; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
|
||||
HDassert(file && file->cls);
|
||||
|
||||
/* Delegate to the driver if possible. If driver doesn't implement
|
||||
* an sb_verify callback, the default return value is used,
|
||||
* indicating incompatablility.
|
||||
*/
|
||||
if(file->cls->sb_verify) {
|
||||
ret_value = (file->cls->sb_verify)(file, sb_driver_id);
|
||||
if(ret_value < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "driver sb_verify request failed")
|
||||
} /* end if */
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5FD_sb_verify() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5FD_pl_copy
|
||||
@@ -1054,7 +1098,7 @@ H5FD_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
|
||||
|
||||
/* Get the VFD to open the file with */
|
||||
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
if((driver_id = H5P_get_driver(plist)) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver ID")
|
||||
|
||||
/* Get driver info */
|
||||
|
||||
@@ -160,6 +160,7 @@ static const H5FD_class_t H5FD_core_g = {
|
||||
NULL, /*sb_size */
|
||||
NULL, /*sb_encode */
|
||||
NULL, /*sb_decode */
|
||||
NULL, /*sb_verify */
|
||||
sizeof(H5FD_core_fapl_t), /*fapl_size */
|
||||
H5FD_core_fapl_get, /*fapl_get */
|
||||
NULL, /*fapl_copy */
|
||||
|
||||
@@ -181,6 +181,7 @@ static const H5FD_class_t H5FD_direct_g = {
|
||||
NULL, /*sb_size */
|
||||
NULL, /*sb_encode */
|
||||
NULL, /*sb_decode */
|
||||
NULL, /*sb_verify */
|
||||
sizeof(H5FD_direct_fapl_t), /*fapl_size */
|
||||
H5FD_direct_fapl_get, /*fapl_get */
|
||||
H5FD_direct_fapl_copy, /*fapl_copy */
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
#include "H5Eprivate.h" /* Error handling */
|
||||
#include "H5Fprivate.h" /* File access */
|
||||
#include "H5FDprivate.h" /* File drivers */
|
||||
#include "H5FDfamily.h" /* Family file driver */
|
||||
#include "H5FDfamily.h" /* Family file driver */
|
||||
#include "H5Iprivate.h" /* IDs */
|
||||
#include "H5MMprivate.h" /* Memory management */
|
||||
#include "H5Pprivate.h" /* Property lists */
|
||||
@@ -99,6 +99,7 @@ static herr_t H5FD_family_sb_encode(H5FD_t *_file, char *name/*out*/,
|
||||
unsigned char *buf/*out*/);
|
||||
static herr_t H5FD_family_sb_decode(H5FD_t *_file, const char *name,
|
||||
const unsigned char *buf);
|
||||
static htri_t H5FD_family_sb_verify(H5FD_t *_file, const char *driver_id);
|
||||
static H5FD_t *H5FD_family_open(const char *name, unsigned flags,
|
||||
hid_t fapl_id, haddr_t maxaddr);
|
||||
static herr_t H5FD_family_close(H5FD_t *_file);
|
||||
@@ -124,6 +125,7 @@ static const H5FD_class_t H5FD_family_g = {
|
||||
H5FD_family_sb_size, /*sb_size */
|
||||
H5FD_family_sb_encode, /*sb_encode */
|
||||
H5FD_family_sb_decode, /*sb_decode */
|
||||
H5FD_family_sb_verify, /*sb_verify */
|
||||
sizeof(H5FD_family_fapl_t), /*fapl_size */
|
||||
H5FD_family_fapl_get, /*fapl_get */
|
||||
H5FD_family_fapl_copy, /*fapl_copy */
|
||||
@@ -623,7 +625,7 @@ H5FD_family_sb_encode(H5FD_t *_file, char *name/*out*/, unsigned char *buf/*out*
|
||||
FUNC_ENTER_NOAPI_NOINIT_NOERR
|
||||
|
||||
/* Name and version number */
|
||||
HDstrncpy(name, "NCSAfami", (size_t)9);
|
||||
HDstrncpy(name, H5FD_DRIVER_ID_FAMILY, (size_t)9);
|
||||
name[8] = '\0';
|
||||
|
||||
/* Store member file size. Use the member file size from the property here.
|
||||
@@ -699,6 +701,37 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5FD_family_sb_decode() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5FD_family_sb_verify
|
||||
*
|
||||
* Purpose: Verify that the family driver is compatable with the driver
|
||||
* that created the file.
|
||||
*
|
||||
* Return: Success: TRUE if the driver is compatible, esle FALSE
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Jacob Gruber
|
||||
* Friday, January 13, 2012
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static htri_t
|
||||
H5FD_family_sb_verify(H5FD_t UNUSED *_file, const char *sb_driver_id)
|
||||
{
|
||||
htri_t ret_value = FALSE; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
|
||||
/* Check if the suerblock was written by a family driver. */
|
||||
if(HDstrncmp(sb_driver_id, H5FD_DRIVER_ID_FAMILY, (size_t)8) == 0) {
|
||||
ret_value = TRUE;
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5FD_family_sb_verify() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5FD_family_open
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#define H5FDfamily_H
|
||||
|
||||
#define H5FD_FAMILY (H5FD_family_init())
|
||||
#define H5FD_DRIVER_ID_FAMILY "NCSAfami"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -209,6 +209,7 @@ static const H5FD_class_t H5FD_log_g = {
|
||||
NULL, /*sb_size */
|
||||
NULL, /*sb_encode */
|
||||
NULL, /*sb_decode */
|
||||
NULL, /*sb_verify */
|
||||
sizeof(H5FD_log_fapl_t), /*fapl_size */
|
||||
H5FD_log_fapl_get, /*fapl_get */
|
||||
H5FD_log_fapl_copy, /*fapl_copy */
|
||||
|
||||
@@ -103,6 +103,7 @@ static const H5FD_class_mpi_t H5FD_mpio_g = {
|
||||
NULL, /*sb_size */
|
||||
NULL, /*sb_encode */
|
||||
NULL, /*sb_decode */
|
||||
NULL, /*sb_verify */
|
||||
sizeof(H5FD_mpio_fapl_t), /*fapl_size */
|
||||
H5FD_mpio_fapl_get, /*fapl_get */
|
||||
H5FD_mpio_fapl_copy, /*fapl_copy */
|
||||
|
||||
@@ -212,6 +212,7 @@ static const H5FD_class_mpi_t H5FD_mpiposix_g = {
|
||||
NULL, /*sb_size */
|
||||
NULL, /*sb_encode */
|
||||
NULL, /*sb_decode */
|
||||
NULL, /*sb_verify */
|
||||
sizeof(H5FD_mpiposix_fapl_t), /*fapl_size */
|
||||
H5FD_mpiposix_fapl_get, /*fapl_get */
|
||||
H5FD_mpiposix_fapl_copy, /*fapl_copy */
|
||||
|
||||
@@ -123,6 +123,7 @@ static herr_t H5FD_multi_sb_encode(H5FD_t *file, char *name/*out*/,
|
||||
unsigned char *buf/*out*/);
|
||||
static herr_t H5FD_multi_sb_decode(H5FD_t *file, const char *name,
|
||||
const unsigned char *buf);
|
||||
static htri_t H5FD_multi_sb_verify(H5FD_t *file, const char *driver_id);
|
||||
static void *H5FD_multi_fapl_get(H5FD_t *file);
|
||||
static void *H5FD_multi_fapl_copy(const void *_old_fa);
|
||||
static herr_t H5FD_multi_fapl_free(void *_fa);
|
||||
@@ -157,6 +158,7 @@ static const H5FD_class_t H5FD_multi_g = {
|
||||
H5FD_multi_sb_size, /*sb_size */
|
||||
H5FD_multi_sb_encode, /*sb_encode */
|
||||
H5FD_multi_sb_decode, /*sb_decode */
|
||||
H5FD_multi_sb_verify, /*sb_verify */
|
||||
sizeof(H5FD_multi_fapl_t), /*fapl_size */
|
||||
H5FD_multi_fapl_get, /*fapl_get */
|
||||
H5FD_multi_fapl_copy, /*fapl_copy */
|
||||
@@ -778,7 +780,7 @@ H5FD_multi_sb_encode(H5FD_t *_file, char *name/*out*/,
|
||||
H5Eclear2(H5E_DEFAULT);
|
||||
|
||||
/* Name and version number */
|
||||
strncpy(name, "NCSAmulti", (size_t)8);
|
||||
strncpy(name, H5FD_DRIVER_ID_MULTI, (size_t)8);
|
||||
name[8] = '\0';
|
||||
|
||||
assert(7==H5FD_MEM_NTYPES);
|
||||
@@ -863,7 +865,7 @@ H5FD_multi_sb_decode(H5FD_t *_file, const char *name, const unsigned char *buf)
|
||||
H5Eclear2(H5E_DEFAULT);
|
||||
|
||||
/* Make sure the name/version number is correct */
|
||||
if (strcmp(name, "NCSAmult"))
|
||||
if (strcmp(name, H5FD_DRIVER_ID_MULTI))
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_BADVALUE, "invalid multi superblock", -1)
|
||||
|
||||
/* Set default values */
|
||||
@@ -981,6 +983,34 @@ H5FD_multi_sb_decode(H5FD_t *_file, const char *name, const unsigned char *buf)
|
||||
return 0;
|
||||
} /* end H5FD_multi_sb_decode() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5FD_multi_sb_verify
|
||||
*
|
||||
* Purpose: Verify that the multi driver is compatable with the driver
|
||||
* that created the file.
|
||||
*
|
||||
* Return: Success: TRUE if the driver is compatible, else FALSE
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Jacob Gruber
|
||||
* Friday, January 13, 2012
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static htri_t
|
||||
H5FD_multi_sb_verify(H5FD_t *_file, const char *sb_driver_id)
|
||||
{
|
||||
static const char *func = "H5FD_multi_sb_verify";
|
||||
|
||||
/* Check that the superblock was written by the multi driver */
|
||||
if(strncmp(sb_driver_id, H5FD_DRIVER_ID_MULTI, (size_t)8) == 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
} /* end H5FD_family_sb_verify() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5FD_multi_fapl_get
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#define H5FDmulti_H
|
||||
|
||||
#define H5FD_MULTI (H5FD_multi_init())
|
||||
#define H5FD_DRIVER_ID_MULTI "NCSAmult"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
1353
src/H5FDnull.c
Normal file
1353
src/H5FDnull.c
Normal file
File diff suppressed because it is too large
Load Diff
41
src/H5FDnull.h
Normal file
41
src/H5FDnull.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* 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: Jacob Gruber
|
||||
* Thursday, January 5, 2012
|
||||
*
|
||||
* Purpose: The public header file for the null driver.
|
||||
*/
|
||||
#ifndef H5FDnull_H
|
||||
#define H5FDnull_H
|
||||
|
||||
#include "H5Ipublic.h"
|
||||
|
||||
#define H5FD_NULL (H5FD_null_init())
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
H5_DLL hid_t H5FD_null_init(void);
|
||||
H5_DLL herr_t H5Pset_fapl_null(hid_t fapl_id, hid_t inner_fapl_id);
|
||||
H5_DLL herr_t H5Pget_fapl_null(hid_t fapl_id, hid_t *inner_fapl_id/*out*/);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -38,7 +38,6 @@
|
||||
/* Package Private Macros */
|
||||
/**************************/
|
||||
|
||||
|
||||
/****************************/
|
||||
/* Package Private Typedefs */
|
||||
/****************************/
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
/* Length of filename buffer */
|
||||
#define H5FD_MAX_FILENAME_LEN 1024
|
||||
|
||||
|
||||
/****************************/
|
||||
/* Library Private Typedefs */
|
||||
/****************************/
|
||||
@@ -93,6 +92,7 @@ H5_DLL H5FD_class_t *H5FD_get_class(hid_t id);
|
||||
H5_DLL hsize_t H5FD_sb_size(H5FD_t *file);
|
||||
H5_DLL herr_t H5FD_sb_encode(H5FD_t *file, char *name/*out*/, uint8_t *buf);
|
||||
H5_DLL herr_t H5FD_sb_decode(H5FD_t *file, const char *name, const uint8_t *buf);
|
||||
H5_DLL herr_t H5FD_sb_verify(H5FD_t *file, const char *sb_driver_id);
|
||||
H5_DLL void *H5FD_fapl_get(H5FD_t *file);
|
||||
H5_DLL herr_t H5FD_fapl_open(struct H5P_genplist_t *plist, hid_t driver_id, const void *driver_info);
|
||||
H5_DLL herr_t H5FD_fapl_close(hid_t driver_id, void *fapl);
|
||||
@@ -125,10 +125,6 @@ H5_DLL herr_t H5FD_get_fileno(const H5FD_t *file, unsigned long *filenum);
|
||||
H5_DLL herr_t H5FD_get_vfd_handle(H5FD_t *file, hid_t fapl, void** file_handle);
|
||||
H5_DLL herr_t H5FD_set_base_addr(H5FD_t *file, haddr_t base_addr);
|
||||
H5_DLL haddr_t H5FD_get_base_addr(const H5FD_t *file);
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
H5_DLL herr_t H5FD_set_mpio_atomicity(H5FD_t *file, hbool_t flag);
|
||||
H5_DLL herr_t H5FD_get_mpio_atomicity(H5FD_t *file, hbool_t *flag);
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
#endif /* !_H5FDprivate_H */
|
||||
|
||||
|
||||
@@ -235,6 +235,12 @@ typedef enum H5F_mem_t H5FD_mem_t;
|
||||
*/
|
||||
#define H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS 0x00000800
|
||||
|
||||
/*
|
||||
* Define the internal 8 character identifier stored in the superblock for
|
||||
* files created by drivers that modify the file structure.
|
||||
*/
|
||||
#define H5FD_DRIVER_ID_FAMILY "NCSAfami"
|
||||
#define H5FD_DRIVER_ID_MULTI "NCSAmulti"
|
||||
|
||||
/* Forward declaration */
|
||||
typedef struct H5FD_t H5FD_t;
|
||||
@@ -249,6 +255,7 @@ typedef struct H5FD_class_t {
|
||||
herr_t (*sb_encode)(H5FD_t *file, char *name/*out*/,
|
||||
unsigned char *p/*out*/);
|
||||
herr_t (*sb_decode)(H5FD_t *f, const char *name, const unsigned char *p);
|
||||
htri_t (*sb_verify)(H5FD_t *file, const char *sb_driver_id);
|
||||
size_t fapl_size;
|
||||
void * (*fapl_get)(H5FD_t *file);
|
||||
void * (*fapl_copy)(const void *fapl);
|
||||
|
||||
@@ -167,6 +167,7 @@ static const H5FD_class_t H5FD_sec2_g = {
|
||||
NULL, /*sb_size */
|
||||
NULL, /*sb_encode */
|
||||
NULL, /*sb_decode */
|
||||
NULL, /*sb_verify */
|
||||
0, /*fapl_size */
|
||||
NULL, /*fapl_get */
|
||||
NULL, /*fapl_copy */
|
||||
|
||||
@@ -202,6 +202,7 @@ static const H5FD_class_t H5FD_stdio_g = {
|
||||
NULL, /* sb_size */
|
||||
NULL, /* sb_encode */
|
||||
NULL, /* sb_decode */
|
||||
NULL, /* sb_verify */
|
||||
0, /* fapl_size */
|
||||
NULL, /* fapl_get */
|
||||
NULL, /* fapl_copy */
|
||||
|
||||
@@ -128,6 +128,7 @@ H5F_sblock_load(H5F_t *f, hid_t dxpl_id, haddr_t UNUSED addr, void *_udata)
|
||||
uint8_t *p; /* Temporary pointer into encoding buffer */
|
||||
unsigned super_vers; /* Superblock version */
|
||||
hbool_t *dirtied = (hbool_t *)_udata; /* Set up dirtied out value */
|
||||
htri_t sb_verify_result; /* Result of sb_verify call */
|
||||
H5F_super_t *ret_value; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT
|
||||
@@ -360,13 +361,11 @@ H5F_sblock_load(H5F_t *f, hid_t dxpl_id, haddr_t UNUSED addr, void *_udata)
|
||||
drv_name[8] = '\0';
|
||||
p += 8; /* advance past name/version */
|
||||
|
||||
/* Check if driver matches driver information saved. Unfortunately, we can't push this
|
||||
* function to each specific driver because we're checking if the driver is correct.
|
||||
*/
|
||||
if(!HDstrncmp(drv_name, "NCSAfami", (size_t)8) && HDstrcmp(lf->cls->name, "family"))
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "family driver should be used")
|
||||
if(!HDstrncmp(drv_name, "NCSAmult", (size_t)8) && HDstrcmp(lf->cls->name, "multi"))
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "multi driver should be used")
|
||||
/* Check if the driver is compatible with the driver information saved. */
|
||||
if((sb_verify_result = H5FD_sb_verify(lf, drv_name)) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to determine driver compatability")
|
||||
else if(sb_verify_result == 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "driver does not support this file")
|
||||
|
||||
/* Read in variable-sized portion of driver info block */
|
||||
if(H5FD_set_eoa(lf, H5FD_MEM_SUPER, sblock->driver_addr + H5F_DRVINFOBLOCK_HDR_SIZE + drv_variable_size) < 0)
|
||||
@@ -522,13 +521,11 @@ H5F_sblock_load(H5F_t *f, hid_t dxpl_id, haddr_t UNUSED addr, void *_udata)
|
||||
if(NULL == H5O_msg_read(&ext_loc, H5O_DRVINFO_ID, &drvinfo, dxpl_id))
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "driver info message not present")
|
||||
|
||||
/* Check if driver matches driver information saved. Unfortunately, we can't push this
|
||||
* function to each specific driver because we're checking if the driver is correct.
|
||||
*/
|
||||
if(!HDstrncmp(drvinfo.name, "NCSAfami", (size_t)8) && HDstrcmp(lf->cls->name, "family"))
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "family driver should be used")
|
||||
if(!HDstrncmp(drvinfo.name, "NCSAmult", (size_t)8) && HDstrcmp(lf->cls->name, "multi"))
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "multi driver should be used")
|
||||
/* Check if the driver is compatible with the driver information saved. */
|
||||
if((sb_verify_result = H5FD_sb_verify(lf, drvinfo.name)) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to determine driver compatability")
|
||||
else if(sb_verify_result == 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "driver does not support this file")
|
||||
|
||||
/* Decode driver information */
|
||||
if(H5FD_sb_decode(lf, drvinfo.name, drvinfo.buf) < 0)
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
#define H5F_ACS_GARBG_COLCT_REF_DEF 0
|
||||
/* Definition for file driver ID */
|
||||
#define H5F_ACS_FILE_DRV_ID_SIZE sizeof(hid_t)
|
||||
#define H5F_ACS_FILE_DRV_ID_DEF H5_DEFAULT_VFD
|
||||
#define H5F_ACS_FILE_DRV_ID_DEF H5FD_VFD_DEFAULT
|
||||
/* Definition for file driver info */
|
||||
#define H5F_ACS_FILE_DRV_INFO_SIZE sizeof(void*)
|
||||
#define H5F_ACS_FILE_DRV_INFO_DEF NULL
|
||||
@@ -352,7 +352,8 @@ H5P_facc_create(hid_t fapl_id, void UNUSED *copy_data)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
|
||||
|
||||
/* Retrieve driver ID property */
|
||||
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
//if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
if((driver_id = H5P_get_driver(plist)) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID")
|
||||
|
||||
if(driver_id > 0) {
|
||||
@@ -400,7 +401,8 @@ H5P_facc_copy(hid_t dst_fapl_id, hid_t src_fapl_id, void UNUSED *copy_data)
|
||||
/* Get driver ID from source property list */
|
||||
if(NULL == (src_plist = (H5P_genplist_t *)H5I_object(src_fapl_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't get property list")
|
||||
if(H5P_get(src_plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
//if(H5P_get(src_plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
if((driver_id = H5P_get_driver(src_plist)) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID")
|
||||
|
||||
if(driver_id > 0) {
|
||||
@@ -453,7 +455,8 @@ H5P_facc_close(hid_t fapl_id, void UNUSED *close_data)
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
|
||||
|
||||
/* Get driver ID property */
|
||||
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
//if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
||||
if((driver_id = H5P_get_driver(plist)) < 0)
|
||||
HGOTO_DONE(FAIL) /* Can't return errors when library is shutting down */
|
||||
|
||||
if(driver_id > 0) {
|
||||
|
||||
@@ -61,7 +61,7 @@ libhdf5_la_SOURCES= H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
|
||||
H5FAstat.c H5FAtest.c \
|
||||
H5FD.c H5FDcore.c \
|
||||
H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
|
||||
H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
|
||||
H5FDmpiposix.c H5FDmulti.c H5FDnull.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
|
||||
H5FL.c H5FO.c H5FS.c H5FScache.c H5FSdbg.c H5FSsection.c H5FSstat.c H5FStest.c \
|
||||
H5G.c H5Gbtree2.c H5Gcache.c \
|
||||
H5Gcompact.c H5Gdense.c H5Gdeprec.c H5Gent.c \
|
||||
@@ -113,8 +113,8 @@ include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5vers
|
||||
H5Apublic.h H5ACpublic.h \
|
||||
H5Cpublic.h H5Dpublic.h \
|
||||
H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \
|
||||
H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
|
||||
H5FDmulti.h H5FDsec2.h H5FDstdio.h \
|
||||
H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
|
||||
H5FDmulti.h H5FDnull.h H5FDsec2.h H5FDstdio.h \
|
||||
H5Gpublic.h H5Ipublic.h H5Lpublic.h \
|
||||
H5MMpublic.h H5Opublic.h H5Ppublic.h H5Rpublic.h H5Spublic.h \
|
||||
H5Tpublic.h H5Zpublic.h
|
||||
|
||||
@@ -112,10 +112,10 @@ am_libhdf5_la_OBJECTS = H5.lo H5checksum.lo H5dbg.lo H5system.lo \
|
||||
H5FAcache.lo H5FAdbg.lo H5FAdblock.lo H5FAdblkpage.lo \
|
||||
H5FAhdr.lo H5FAstat.lo H5FAtest.lo H5FD.lo H5FDcore.lo \
|
||||
H5FDdirect.lo H5FDfamily.lo H5FDint.lo H5FDlog.lo H5FDmpi.lo \
|
||||
H5FDmpio.lo H5FDmpiposix.lo H5FDmulti.lo H5FDsec2.lo \
|
||||
H5FDspace.lo H5FDstdio.lo H5FL.lo H5FO.lo H5FS.lo H5FScache.lo \
|
||||
H5FSdbg.lo H5FSsection.lo H5FSstat.lo H5FStest.lo H5G.lo \
|
||||
H5Gbtree2.lo H5Gcache.lo H5Gcompact.lo H5Gdense.lo \
|
||||
H5FDmpio.lo H5FDmpiposix.lo H5FDmulti.lo H5FDnull.lo \
|
||||
H5FDsec2.lo H5FDspace.lo H5FDstdio.lo H5FL.lo H5FO.lo H5FS.lo \
|
||||
H5FScache.lo H5FSdbg.lo H5FSsection.lo H5FSstat.lo H5FStest.lo \
|
||||
H5G.lo H5Gbtree2.lo H5Gcache.lo H5Gcompact.lo H5Gdense.lo \
|
||||
H5Gdeprec.lo H5Gent.lo H5Gint.lo H5Glink.lo H5Gloc.lo \
|
||||
H5Gname.lo H5Gnode.lo H5Gobj.lo H5Goh.lo H5Groot.lo H5Gstab.lo \
|
||||
H5Gtest.lo H5Gtraverse.lo H5HF.lo H5HFbtree2.lo H5HFcache.lo \
|
||||
@@ -520,7 +520,7 @@ libhdf5_la_SOURCES = H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
|
||||
H5FAstat.c H5FAtest.c \
|
||||
H5FD.c H5FDcore.c \
|
||||
H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
|
||||
H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
|
||||
H5FDmpiposix.c H5FDmulti.c H5FDnull.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
|
||||
H5FL.c H5FO.c H5FS.c H5FScache.c H5FSdbg.c H5FSsection.c H5FSstat.c H5FStest.c \
|
||||
H5G.c H5Gbtree2.c H5Gcache.c \
|
||||
H5Gcompact.c H5Gdense.c H5Gdeprec.c H5Gent.c \
|
||||
@@ -572,8 +572,8 @@ include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5vers
|
||||
H5Apublic.h H5ACpublic.h \
|
||||
H5Cpublic.h H5Dpublic.h \
|
||||
H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \
|
||||
H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
|
||||
H5FDmulti.h H5FDsec2.h H5FDstdio.h \
|
||||
H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
|
||||
H5FDmulti.h H5FDnull.h H5FDsec2.h H5FDstdio.h \
|
||||
H5Gpublic.h H5Ipublic.h H5Lpublic.h \
|
||||
H5MMpublic.h H5Opublic.h H5Ppublic.h H5Rpublic.h H5Spublic.h \
|
||||
H5Tpublic.h H5Zpublic.h
|
||||
@@ -777,6 +777,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmpio.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmpiposix.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmulti.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDnull.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDsec2.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDspace.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDstdio.Plo@am__quote@
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "H5FDmulti.h" /* Usage-partitioned file family */
|
||||
#include "H5FDsec2.h" /* POSIX unbuffered file I/O */
|
||||
#include "H5FDstdio.h" /* Standard C buffered I/O */
|
||||
#include "H5FDnull.h" /* Basic stackable file driver */
|
||||
#ifdef H5_HAVE_WINDOWS
|
||||
#include "H5FDwindows.h" /* Windows buffered I/O */
|
||||
#endif
|
||||
|
||||
231
test/vfd.c
231
test/vfd.c
@@ -51,6 +51,8 @@ const char *FILENAME[] = {
|
||||
"stdio_file", /*7*/
|
||||
"windows_file", /*8*/
|
||||
"new_multi_file_v16",/*9*/
|
||||
"null_core_file", /*10*/
|
||||
"null_family_file", /*11*/
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -1291,6 +1293,229 @@ error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: test_null
|
||||
*
|
||||
* Purpose: Tests the file handle interface for the NULL driver.
|
||||
* The first component of this test is to wrap the null driver
|
||||
* around the core driver and run the core test suite.
|
||||
* Since the core driver does not implement all VFD features,
|
||||
* other drivers need to be tested as well.
|
||||
*
|
||||
* Return: Success: 0
|
||||
* Failure: -1
|
||||
*
|
||||
* Programmer: Jacob Gruber
|
||||
* Friday, January 5, 2012
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
test_null(void)
|
||||
{
|
||||
hid_t file=(-1), null_fapl, core_fapl, family_fapl;
|
||||
hid_t null_fapl2=(-1), core_fapl2=(-1);
|
||||
hid_t dset1=(-1), space1=(-1);
|
||||
char filename[1024];
|
||||
void *fhandle=NULL;
|
||||
hsize_t file_size, dims1[2];
|
||||
int i, j, n, *points, *check, *p1, *p2;
|
||||
|
||||
TESTING("NULL file driver");
|
||||
|
||||
/* Set property list for the CORE driver */
|
||||
core_fapl = h5_fileaccess();
|
||||
if(H5Pset_fapl_core(core_fapl, (size_t)CORE_INCREMENT, TRUE) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Stack the null driver on top of the core driver. */
|
||||
null_fapl = h5_fileaccess();
|
||||
if(H5Pset_fapl_null(null_fapl, core_fapl) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Set the file name in the core driver */
|
||||
h5_fixname(FILENAME[10], null_fapl, filename, sizeof filename);
|
||||
|
||||
/* Create the file with the null driver */
|
||||
if((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, null_fapl)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Retrieve the top access property list... */
|
||||
if((null_fapl2 = H5Fget_access_plist(file)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Retrieve the bottom access property list */
|
||||
if (H5Pget_fapl_null(null_fapl2, &core_fapl2) < 0)
|
||||
TEST_ERROR;
|
||||
if (core_fapl2 < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
|
||||
/* Check that the top driver is correct */
|
||||
if(H5FD_NULL != H5Pget_driver(null_fapl2))
|
||||
TEST_ERROR;
|
||||
|
||||
/* Check that the bottom driver is correct */
|
||||
if(H5FD_CORE != H5Pget_driver(core_fapl2))
|
||||
TEST_ERROR;
|
||||
|
||||
/* Close the bottom property list */
|
||||
if (H5Pclose(core_fapl2) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* ...and close the top property list */
|
||||
if (H5Pclose(null_fapl2) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Check the file handle API */
|
||||
if(H5Fget_vfd_handle(file, H5P_DEFAULT, &fhandle) < 0)
|
||||
TEST_ERROR;
|
||||
if(fhandle == NULL)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Check file size API */
|
||||
if(H5Fget_filesize(file, &file_size) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* There is no garantee the size of metadata in file is constant.
|
||||
* Just try to check if it's reasonable. Why is this 4KB?
|
||||
*/
|
||||
if(file_size<2*KB || file_size>6*KB)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Close the file */
|
||||
if(H5Fclose(file) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Turn off the backing store in the core driver. This is done
|
||||
* to increase the speed of the test. The null driver only stores
|
||||
* a reference to this fapl, so the change is immediately
|
||||
* recognized.
|
||||
*/
|
||||
if(H5Pset_fapl_core(core_fapl, (size_t)CORE_INCREMENT, FALSE) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Open the file with the null driver */
|
||||
if((file=H5Fopen(filename, H5F_ACC_RDWR, null_fapl)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Allocate memory for data set. */
|
||||
points=(int*)malloc(DSET1_DIM1*DSET1_DIM2*sizeof(int));
|
||||
check=(int*)malloc(DSET1_DIM1*DSET1_DIM2*sizeof(int));
|
||||
|
||||
/* Initialize the dset1 */
|
||||
p1 = points;
|
||||
for(i = n = 0; i < DSET1_DIM1; i++)
|
||||
for(j = 0; j < DSET1_DIM2; j++)
|
||||
*p1++ = n++;
|
||||
|
||||
/* Create the data space1 */
|
||||
dims1[0] = DSET1_DIM1;
|
||||
dims1[1] = DSET1_DIM2;
|
||||
if((space1 = H5Screate_simple(2, dims1, NULL)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Create the dset1 */
|
||||
if((dset1 = H5Dcreate2(file, DSET1_NAME, H5T_NATIVE_INT, space1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Write the data to the dset1 */
|
||||
if(H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, points) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Close the dset */
|
||||
if(H5Dclose(dset1) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Reopen the dset */
|
||||
if((dset1 = H5Dopen2(file, DSET1_NAME, H5P_DEFAULT)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Read the data back from dset1 */
|
||||
if(H5Dread(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, check) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Check that the values read are the same as the values written */
|
||||
p1 = points;
|
||||
p2 = check;
|
||||
for(i = 0; i < DSET1_DIM1; i++)
|
||||
for(j = 0; j < DSET1_DIM2; j++)
|
||||
if(*p1++ != *p2++) {
|
||||
H5_FAILED();
|
||||
printf(" Read different values than written in data set 1.\n");
|
||||
printf(" At index %d,%d\n", i, j);
|
||||
TEST_ERROR;
|
||||
} /* end if */
|
||||
|
||||
/* Clean up */
|
||||
if(H5Sclose(space1) < 0)
|
||||
TEST_ERROR;
|
||||
if(H5Dclose(dset1) < 0)
|
||||
TEST_ERROR;
|
||||
if(H5Fclose(file) < 0)
|
||||
TEST_ERROR;
|
||||
if(points)
|
||||
free(points);
|
||||
if(check)
|
||||
free(check);
|
||||
if(H5Pclose(core_fapl) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
h5_cleanup(FILENAME, null_fapl);
|
||||
|
||||
/* Test the superblock fucntions. The superblock is only used when
|
||||
* testing the compatibility of the family and multi drivers, so
|
||||
* a separate test is needed.
|
||||
*/
|
||||
|
||||
/* Set up family FAPL */
|
||||
family_fapl = h5_fileaccess();
|
||||
if(H5Pset_fapl_family(family_fapl, (hsize_t)FAMILY_SIZE, H5P_DEFAULT) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Wrap null around family driver */
|
||||
null_fapl = h5_fileaccess();
|
||||
if(H5Pset_fapl_null(null_fapl, family_fapl) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Set the file name. Thsi must be done with the family driver so that
|
||||
* the member numbers are properly set up.
|
||||
*/
|
||||
h5_fixname(FILENAME[11], family_fapl, filename, sizeof filename);
|
||||
|
||||
/* Create file with the null driver*/
|
||||
if((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, null_fapl)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* close file */
|
||||
if(H5Fclose(file) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Reopen file, testing suplerblocks for compatability */
|
||||
if((file=H5Fopen(filename, H5F_ACC_RDWR, null_fapl)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Cleanup */
|
||||
if(H5Fclose(file) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
h5_cleanup(FILENAME, family_fapl);
|
||||
if(H5Pclose(null_fapl) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
PASSED();
|
||||
return 0;
|
||||
|
||||
error:
|
||||
H5E_BEGIN_TRY {
|
||||
H5Pclose (core_fapl);
|
||||
H5Pclose (null_fapl);
|
||||
H5Fclose(file);
|
||||
} H5E_END_TRY;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: test_log
|
||||
@@ -1411,6 +1636,11 @@ test_stdio(void)
|
||||
if((access_fapl = H5Fget_access_plist(file)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Check that the driver is correct */
|
||||
/* Retrieve the access property list... */
|
||||
if((access_fapl = H5Fget_access_plist(file)) < 0)
|
||||
TEST_ERROR;
|
||||
|
||||
/* Check that the driver is correct */
|
||||
if(H5FD_STDIO != H5Pget_driver(access_fapl))
|
||||
TEST_ERROR;
|
||||
@@ -1572,6 +1802,7 @@ main(void)
|
||||
nerrors += test_family_compat() < 0 ? 1 : 0;
|
||||
nerrors += test_multi() < 0 ? 1 : 0;
|
||||
nerrors += test_multi_compat() < 0 ? 1 : 0;
|
||||
nerrors += test_null() < 0 ? 1 : 0;
|
||||
nerrors += test_direct() < 0 ? 1 : 0;
|
||||
nerrors += test_log() < 0 ? 1 : 0;
|
||||
nerrors += test_stdio() < 0 ? 1 : 0;
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
obj1 </soft_link1> is a dangling link.
|
||||
obj2 </soft_link1> is a dangling link.
|
||||
dangling link: </soft_link1> and </soft_link1>
|
||||
0 differences found
|
||||
EXIT CODE: 0
|
||||
@@ -1,3 +0,0 @@
|
||||
obj2 </soft_link2> is a dangling link.
|
||||
1 differences found
|
||||
EXIT CODE: 1
|
||||
@@ -1,5 +0,0 @@
|
||||
obj1 </ext_link4> is a dangling link.
|
||||
obj2 </ext_link4> is a dangling link.
|
||||
dangling link: </ext_link4> and </ext_link4>
|
||||
0 differences found
|
||||
EXIT CODE: 0
|
||||
@@ -1,3 +0,0 @@
|
||||
obj2 </ext_link2> is a dangling link.
|
||||
1 differences found
|
||||
EXIT CODE: 1
|
||||
@@ -1,42 +0,0 @@
|
||||
HDF5 "tarray2.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [3][4][5] H5T_STD_I32LE }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray3.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_ARRAY { [6][3] H5T_STD_I32LE } }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray4.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_COMPOUND {
|
||||
H5T_STD_I32LE "i";
|
||||
H5T_IEEE_F32LE "f";
|
||||
} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray5.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_COMPOUND {
|
||||
H5T_STD_I32LE "i";
|
||||
H5T_ARRAY { [4] H5T_IEEE_F32LE } "f";
|
||||
} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray6.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_VLEN { H5T_STD_U32LE} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray7.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_VLEN { H5T_ARRAY { [4] H5T_STD_U32LE }} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
dset1 Dataset {5}
|
||||
g1 Group
|
||||
g2 Group
|
||||
g3 Group, same as /
|
||||
slink1 Soft Link {somevalue}
|
||||
slink2 Soft Link {linkvalue}
|
||||
@@ -1,83 +0,0 @@
|
||||
HDF5 "tarray1.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_STD_I32LE }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray2.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [3][4][5] H5T_STD_I32LE }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray3.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_ARRAY { [6][3] H5T_STD_I32LE } }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray4.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_COMPOUND {
|
||||
H5T_STD_I32LE "i";
|
||||
H5T_IEEE_F32LE "f";
|
||||
} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray5.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_COMPOUND {
|
||||
H5T_STD_I32LE "i";
|
||||
H5T_ARRAY { [4] H5T_IEEE_F32LE } "f";
|
||||
} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray6.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_VLEN { H5T_STD_U32LE} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray7.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_VLEN { H5T_ARRAY { [4] H5T_STD_U32LE }} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray8.h5" {
|
||||
}
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Dopen2(): not found
|
||||
major: Dataset
|
||||
minor: Object not found
|
||||
#001: (file name) line (number) in H5G_loc_find(): can't find object
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#002: (file name) line (number) in H5G_traverse(): internal path traversal failed
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
|
||||
major: Symbol table
|
||||
minor: Callback failed
|
||||
#004: (file name) line (number) in H5G_loc_find_cb(): object 'Dataset1' doesn't exist
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Lget_info(): unable to get link info
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#001: (file name) line (number) in H5L_get_info(): name doesn't exist
|
||||
major: Symbol table
|
||||
minor: Object already exists
|
||||
#002: (file name) line (number) in H5G_traverse(): internal path traversal failed
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
|
||||
major: Symbol table
|
||||
minor: Callback failed
|
||||
#004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
h5dump error: unable to get link info from "Dataset1"
|
||||
@@ -1,30 +0,0 @@
|
||||
HDF5 "tslink.h5" {
|
||||
SOFTLINK "/slink1" {
|
||||
LINKTARGET "somevalue"
|
||||
}
|
||||
}
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Dopen2(): not found
|
||||
major: Dataset
|
||||
minor: Object not found
|
||||
#001: (file name) line (number) in H5G_loc_find(): can't find object
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#002: (file name) line (number) in H5G_traverse(): internal path traversal failed
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#003: (file name) line (number) in H5G_traverse_real(): special link traversal failed
|
||||
major: Links
|
||||
minor: Link traversal failure
|
||||
#004: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed
|
||||
major: Links
|
||||
minor: Link traversal failure
|
||||
#005: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#006: (file name) line (number) in H5G_traverse_real(): traversal operator failed
|
||||
major: Symbol table
|
||||
minor: Callback failed
|
||||
#007: (file name) line (number) in H5G_traverse_slink_cb(): component not found
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
@@ -1,89 +0,0 @@
|
||||
HDF5 "tarray1_big.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [1000] H5T_STD_I32LE }
|
||||
DATASPACE SIMPLE { ( 2000 ) / ( 2000 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray1.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_STD_I32LE }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray2.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [3][4][5] H5T_STD_I32LE }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray3.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_ARRAY { [6][3] H5T_STD_I32LE } }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray4.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_COMPOUND {
|
||||
H5T_STD_I32LE "i";
|
||||
H5T_IEEE_F32LE "f";
|
||||
} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray5.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_COMPOUND {
|
||||
H5T_STD_I32LE "i";
|
||||
H5T_ARRAY { [4] H5T_IEEE_F32LE } "f";
|
||||
} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray6.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_VLEN { H5T_STD_U32LE} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray7.h5" {
|
||||
DATASET "Dataset1" {
|
||||
DATATYPE H5T_ARRAY { [4] H5T_VLEN { H5T_ARRAY { [4] H5T_STD_U32LE }} }
|
||||
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||
}
|
||||
}
|
||||
HDF5 "tarray8.h5" {
|
||||
}
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Dopen2(): not found
|
||||
major: Dataset
|
||||
minor: Object not found
|
||||
#001: (file name) line (number) in H5G_loc_find(): can't find object
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#002: (file name) line (number) in H5G_traverse(): internal path traversal failed
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
|
||||
major: Symbol table
|
||||
minor: Callback failed
|
||||
#004: (file name) line (number) in H5G_loc_find_cb(): object 'Dataset1' doesn't exist
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Lget_info(): unable to get link info
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#001: (file name) line (number) in H5L_get_info(): name doesn't exist
|
||||
major: Symbol table
|
||||
minor: Object already exists
|
||||
#002: (file name) line (number) in H5G_traverse(): internal path traversal failed
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#003: (file name) line (number) in H5G_traverse_real(): traversal operator failed
|
||||
major: Symbol table
|
||||
minor: Callback failed
|
||||
#004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
h5dump error: unable to get link info from "Dataset1"
|
||||
Reference in New Issue
Block a user