summaryrefslogtreecommitdiffstats
path: root/tools/h5repack/h5repack_list.c
diff options
context:
space:
mode:
authorPedro Vicente Nunes <pvn@hdfgroup.org>2003-10-22 21:43:34 (GMT)
committerPedro Vicente Nunes <pvn@hdfgroup.org>2003-10-22 21:43:34 (GMT)
commitd28bc61b335e447691521d37dbd8f58ebf83d9a1 (patch)
tree0ccbda31b3e49ba7986c5c1a4285bc6d9315dec7 /tools/h5repack/h5repack_list.c
parentce5c245a95ac147248e689ea3f2f9c4969bcc233 (diff)
downloadhdf5-d28bc61b335e447691521d37dbd8f58ebf83d9a1.zip
hdf5-d28bc61b335e447691521d37dbd8f58ebf83d9a1.tar.gz
hdf5-d28bc61b335e447691521d37dbd8f58ebf83d9a1.tar.bz2
[svn-r7703] Purpose:
h5repack new features Description: implemented some features of h5repack , mostly borrowed from hrepack like 1) the parsing of options 2) building a list of options 3) printing formats added a test program that generates files and calls h5diff to compare the input and output files Platforms tested: Misc. update:
Diffstat (limited to 'tools/h5repack/h5repack_list.c')
-rw-r--r--tools/h5repack/h5repack_list.c123
1 files changed, 123 insertions, 0 deletions
diff --git a/tools/h5repack/h5repack_list.c b/tools/h5repack/h5repack_list.c
new file mode 100644
index 0000000..21ec337e
--- /dev/null
+++ b/tools/h5repack/h5repack_list.c
@@ -0,0 +1,123 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include "h5repack.h"
+#include "h5repack_list.h"
+#include "h5diff.h"
+
+
+/*-------------------------------------------------------------------------
+ * Function: get_objlist
+ *
+ * Purpose: locate all HDF5 objects in the file
+ *
+ * Return: 0, ok, -1 no
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: September, 23, 2003
+ *
+ *-------------------------------------------------------------------------
+ */
+
+
+int get_objlist(char* fname, packoptions_t *options)
+{
+ hid_t fid;
+ int nobjects, i;
+ info_t *info=NULL;
+
+/*-------------------------------------------------------------------------
+ * open the file
+ *-------------------------------------------------------------------------
+ */
+
+ /* disable error reporting */
+ H5E_BEGIN_TRY {
+
+ /* Open the files */
+ if ((fid=H5Fopen(fname,H5F_ACC_RDONLY,H5P_DEFAULT))<0 ){
+ printf("h5repack: <%s>: No such file or directory\n", fname );
+ exit(1);
+ }
+ /* enable error reporting */
+ } H5E_END_TRY;
+
+
+/*-------------------------------------------------------------------------
+ * get the number of objects in the file
+ *-------------------------------------------------------------------------
+ */
+
+ if ((nobjects = H5get_object_info(fid, NULL ))<0) {
+ printf("h5repack: <%s>: Could not obtain object list\n", fname );
+ return -1;
+ }
+
+/*-------------------------------------------------------------------------
+ * get the list of objects in the file
+ *-------------------------------------------------------------------------
+ */
+
+ if ((info = (info_t*) malloc( nobjects * sizeof(info_t)))==NULL){
+ printf("h5repack: <%s>: Could not allocate object list\n", fname );
+ return -1;
+ }
+ if (H5get_object_info(fid, info )<0) {
+ printf("h5repack: <%s>: Could not obtain object list\n", fname );
+ return -1;
+ }
+
+/*-------------------------------------------------------------------------
+ * compare with user supplied list
+ *-------------------------------------------------------------------------
+ */
+
+ if (options->verbose)
+ printf("Opening file <%s>. Searching for objects to modify...\n",fname);
+
+ for ( i = 0; i < options->op_tbl->nelems; i++)
+ {
+ char* obj_name=options->op_tbl->objs[i].path;
+ if (options->verbose)
+ printf(PFORMAT1,"","",obj_name);
+
+ /* the input object names are present in the file and are valid */
+ if (info_getindex(obj_name,nobjects,info)<0)
+ {
+ printf("\nError: Could not find <%s> in file <%s>. Exiting...\n",
+ obj_name,fname);
+ H5Fclose(fid);
+ info_free(info,nobjects);
+ exit(1);
+ }
+ if (options->verbose)
+ printf("...Found\n");
+ }
+
+
+
+/*-------------------------------------------------------------------------
+ * free
+ *-------------------------------------------------------------------------
+ */
+ H5Fclose(fid);
+ info_free(info,nobjects);
+ return 0;
+
+}