diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2003-10-24 19:39:23 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2003-10-24 19:39:23 (GMT) |
commit | d0be7024289ccd82eb6545f61dd38861ec5d79ec (patch) | |
tree | 7317eb1eb65763f702f255fbb689c799d555f4d7 /src/H5Pfapl.c | |
parent | 9d22c9e61aaeb70fa03b0c3cea521edd79c95867 (diff) | |
download | hdf5-d0be7024289ccd82eb6545f61dd38861ec5d79ec.zip hdf5-d0be7024289ccd82eb6545f61dd38861ec5d79ec.tar.gz hdf5-d0be7024289ccd82eb6545f61dd38861ec5d79ec.tar.bz2 |
[svn-r7725] Purpose:
Code cleanup
Description:
Refactored handlier of VFL drivers in file access and data transfer property
lists in order to simplify and unify the code dealing with them.
Platforms tested:
FreeBSD 4.9 (sleipnir)
too minor to require h5committest
Diffstat (limited to 'src/H5Pfapl.c')
-rw-r--r-- | src/H5Pfapl.c | 60 |
1 files changed, 17 insertions, 43 deletions
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c index d9c32b5..b7168dc 100644 --- a/src/H5Pfapl.c +++ b/src/H5Pfapl.c @@ -182,7 +182,6 @@ H5P_set_driver(H5P_genplist_t *plist, hid_t new_driver_id, const void *new_drive { hid_t driver_id; /* VFL driver ID */ void *driver_info; /* VFL driver info */ - void *copied_driver_info; /* Temporary VFL driver info */ herr_t ret_value=SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(H5P_set_driver, FAIL); @@ -191,58 +190,33 @@ H5P_set_driver(H5P_genplist_t *plist, hid_t new_driver_id, const void *new_drive HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file driver ID"); if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) { - /* Remove old driver */ + /* Get the current driver information */ if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0) HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID"); if(H5P_get(plist, H5F_ACS_FILE_DRV_INFO_NAME, &driver_info) < 0) HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL,"can't get driver info"); - assert(driver_id>=0); - H5FD_fapl_free(driver_id, driver_info); - H5I_dec_ref(driver_id); - - /* Add new driver */ - H5I_inc_ref(new_driver_id); - driver_id = new_driver_id; - driver_info = H5FD_fapl_copy(new_driver_id, new_driver_info); - - if(H5P_set(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0) - HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver ID"); - if(H5P_set(plist, H5F_ACS_FILE_DRV_INFO_NAME, &driver_info) < 0) - HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't set driver info"); - + + /* Close the driver for the property list */ + if(H5FD_fapl_close(driver_id, driver_info)<0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset driver") + + /* Set the driver for the property list */ + if(H5FD_fapl_open(plist, new_driver_id, new_driver_info)<0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver") } else if( TRUE == H5P_isa_class(plist->plist_id, H5P_DATASET_XFER) ) { /* Get the current driver information */ if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id)<0) - HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID"); + HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver ID"); if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &driver_info)<0) - HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info"); - - /* Remove old driver */ - - /* Double-check value... */ - assert(driver_id>=0); - - /* Free any driver information stored */ - H5FD_dxpl_free(driver_id, driver_info); - - /* Decrement reference count for old driver */ - H5I_dec_ref(driver_id); - - /* Add new driver */ - - /* Increment reference count for new driver */ - H5I_inc_ref(new_driver_id); + HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver info"); - /* Make a copy of the driver information */ - if(H5FD_dxpl_copy(new_driver_id, new_driver_info, &copied_driver_info)<0) - HGOTO_ERROR (H5E_DATASET, H5E_CANTCOPY, FAIL, "Can't copy VFL driver"); + /* Close the driver for the property list */ + if(H5FD_dxpl_close(driver_id, driver_info)<0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset driver") - /* Set the driver info for the property list */ - if(H5P_set(plist, H5D_XFER_VFL_ID_NAME, &new_driver_id)<0) - HGOTO_ERROR (H5E_PLIST, H5E_CANTSET, FAIL, "Can't set VFL driver ID"); - if(H5P_set(plist, H5D_XFER_VFL_INFO_NAME, &copied_driver_info) < 0) - HGOTO_ERROR (H5E_PLIST, H5E_CANTSET, FAIL, "Can't set VFL driver info"); - + /* Set the driver for the property list */ + if(H5FD_dxpl_open(plist, new_driver_id, new_driver_info)<0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver") } else { HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list"); } |