summaryrefslogtreecommitdiffstats
path: root/hl/tools/h5watch/h5watch.c
diff options
context:
space:
mode:
Diffstat (limited to 'hl/tools/h5watch/h5watch.c')
-rw-r--r--hl/tools/h5watch/h5watch.c556
1 files changed, 265 insertions, 291 deletions
diff --git a/hl/tools/h5watch/h5watch.c b/hl/tools/h5watch/h5watch.c
index 56f9b63..0190545 100644
--- a/hl/tools/h5watch/h5watch.c
+++ b/hl/tools/h5watch/h5watch.c
@@ -18,10 +18,9 @@
/*
* Note: This tool used private routine
*/
-#define PROGRAMNAME "h5watch" /* Name of tool */
-#define FIELD_SEP "," /* nested field separator */
-#define DEFAULT_RETRY 50 /* number of times to try opening the file */
-
+#define PROGRAMNAME "h5watch" /* Name of tool */
+#define FIELD_SEP "," /* nested field separator */
+#define DEFAULT_RETRY 50 /* number of times to try opening the file */
/*
* Note:(see comments in hl/src/H5LDprivate.h)
@@ -29,80 +28,57 @@
* This tool uses H5LD_memb_t data structure declared in H5LDprivate.h
*/
-const char *progname = "h5watch"; /* tool name */
-static char *g_list_of_fields = NULL; /* command line input for "list_of_fields" */
-static char *g_dup_fields = NULL; /* copy of "list_of_fields" */
-static H5LD_memb_t **g_listv = NULL; /* vector info for "list_of_fields" */
+const char * progname = "h5watch"; /* tool name */
+static char * g_list_of_fields = NULL; /* command line input for "list_of_fields" */
+static char * g_dup_fields = NULL; /* copy of "list_of_fields" */
+static H5LD_memb_t **g_listv = NULL; /* vector info for "list_of_fields" */
-static hbool_t g_monitor_size_only = FALSE; /* monitor changes in dataset dimension sizes */
-static unsigned g_polling_interval = 1; /* polling interval to check appended data */
+static hbool_t g_monitor_size_only = FALSE; /* monitor changes in dataset dimension sizes */
+static unsigned g_polling_interval = 1; /* polling interval to check appended data */
-static hbool_t g_label = FALSE; /* label compound values */
-static int g_display_width = 80; /* output width in characters */
-static hbool_t g_simple_output = FALSE; /* make output more machine-readable */
-static unsigned g_retry = DEFAULT_RETRY; /* # of times to try opening the file if somehow file is unstable */
-static hbool_t g_display_hex = FALSE; /* display data in hexadecimal format : LATER */
-static hbool_t g_user_interrupt = FALSE; /* Flag to indicate that user interrupted execution */
+static hbool_t g_label = FALSE; /* label compound values */
+static int g_display_width = 80; /* output width in characters */
+static hbool_t g_simple_output = FALSE; /* make output more machine-readable */
+static unsigned g_retry = DEFAULT_RETRY; /* # of times to try opening the file if somehow file is unstable */
+static hbool_t g_display_hex = FALSE; /* display data in hexadecimal format : LATER */
+static hbool_t g_user_interrupt = FALSE; /* Flag to indicate that user interrupted execution */
static herr_t doprint(hid_t did, hsize_t *start, hsize_t *block, int rank);
-static herr_t slicendump(hid_t did, hsize_t *prev_dims, hsize_t *cur_dims,
- hsize_t *start, hsize_t *block, int rank, int subrank);
+static herr_t slicendump(hid_t did, hsize_t *prev_dims, hsize_t *cur_dims, hsize_t *start, hsize_t *block,
+ int rank, int subrank);
static herr_t monitor_dataset(hid_t fid, char *dsetname);
static herr_t process_cmpd_fields(hid_t fid, char *dsetname);
static herr_t check_dataset(hid_t fid, char *dsetname);
-static void leave(int ret);
-static void usage(const char *prog);
-static void parse_command_line(int argc, const char *argv[]);
-
+static void leave(int ret);
+static void usage(const char *prog);
+static void parse_command_line(int argc, const char *argv[]);
/*
* Command-line options: The user can only specify long-named parameters.
* The long-named ones can be partially spelled. When
* adding more, make sure that they don't clash with each other.
*/
-static const char *s_opts ="?";
-static struct long_options l_opts[] = {
- { "help", no_arg, 'h' },
- { "hel", no_arg, 'h' },
- { "dim", no_arg, 'd' },
- { "di", no_arg, 'd' },
- { "label", no_arg, 'l' },
- { "labe", no_arg, 'l' },
- { "lab", no_arg, 'l' },
- { "la", no_arg, 'l' },
- { "simple", no_arg, 'S' },
- { "simpl", no_arg, 'S' },
- { "simp", no_arg, 'S' },
- { "sim", no_arg, 'S' },
- { "si", no_arg, 'S' },
- { "hexdump", no_arg, 'x' },
- { "hexdum", no_arg, 'x' },
- { "hexdu", no_arg, 'x' },
- { "hexd", no_arg, 'x' },
- { "hex", no_arg, 'x' },
- { "width", require_arg, 'w' },
- { "widt", require_arg, 'w' },
- { "wid", require_arg, 'w' },
- { "wi", require_arg, 'w' },
- { "polling", require_arg, 'p' },
- { "pollin", require_arg, 'p' },
- { "polli", require_arg, 'p' },
- { "poll", require_arg, 'p' },
- { "pol", require_arg, 'p' },
- { "po", require_arg, 'p' },
- { "fields", require_arg, 'f' },
- { "field", require_arg, 'f' },
- { "fiel", require_arg, 'f' },
- { "fie", require_arg, 'f' },
- { "fi", require_arg, 'f' },
- { "version", no_arg, 'V' },
- { "versio", no_arg, 'V' },
- { "versi", no_arg, 'V' },
- { "vers", no_arg, 'V' },
- { "ver", no_arg, 'V' },
- { "ve", no_arg, 'V' },
- { NULL, 0, '\0' }
-};
+static const char * s_opts = "?";
+static struct long_options l_opts[] = {{"help", no_arg, 'h'}, {"hel", no_arg, 'h'},
+ {"dim", no_arg, 'd'}, {"di", no_arg, 'd'},
+ {"label", no_arg, 'l'}, {"labe", no_arg, 'l'},
+ {"lab", no_arg, 'l'}, {"la", no_arg, 'l'},
+ {"simple", no_arg, 'S'}, {"simpl", no_arg, 'S'},
+ {"simp", no_arg, 'S'}, {"sim", no_arg, 'S'},
+ {"si", no_arg, 'S'}, {"hexdump", no_arg, 'x'},
+ {"hexdum", no_arg, 'x'}, {"hexdu", no_arg, 'x'},
+ {"hexd", no_arg, 'x'}, {"hex", no_arg, 'x'},
+ {"width", require_arg, 'w'}, {"widt", require_arg, 'w'},
+ {"wid", require_arg, 'w'}, {"wi", require_arg, 'w'},
+ {"polling", require_arg, 'p'}, {"pollin", require_arg, 'p'},
+ {"polli", require_arg, 'p'}, {"poll", require_arg, 'p'},
+ {"pol", require_arg, 'p'}, {"po", require_arg, 'p'},
+ {"fields", require_arg, 'f'}, {"field", require_arg, 'f'},
+ {"fiel", require_arg, 'f'}, {"fie", require_arg, 'f'},
+ {"fi", require_arg, 'f'}, {"version", no_arg, 'V'},
+ {"versio", no_arg, 'V'}, {"versi", no_arg, 'V'},
+ {"vers", no_arg, 'V'}, {"ver", no_arg, 'V'},
+ {"ve", no_arg, 'V'}, {NULL, 0, '\0'}};
/*-------------------------------------------------------------------------
* Function: doprint()
@@ -121,29 +97,29 @@ static struct long_options l_opts[] = {
static herr_t
doprint(hid_t did, hsize_t *start, hsize_t *block, int rank)
{
- h5tools_context_t ctx; /* print context */
- h5tool_format_t info; /* Format info for the tools library */
- static char fmt_double[16], fmt_float[16]; /* Format info */
- struct subset_t subset; /* Subsetting info */
- hsize_t ss_start[H5S_MAX_RANK]; /* Info for hyperslab */
- hsize_t ss_stride[H5S_MAX_RANK]; /* Info for hyperslab */
- hsize_t ss_block[H5S_MAX_RANK]; /* Info for hyperslab */
- hsize_t ss_count[H5S_MAX_RANK]; /* Info for hyperslab */
- int i; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ h5tools_context_t ctx; /* print context */
+ h5tool_format_t info; /* Format info for the tools library */
+ static char fmt_double[16], fmt_float[16]; /* Format info */
+ struct subset_t subset; /* Subsetting info */
+ hsize_t ss_start[H5S_MAX_RANK]; /* Info for hyperslab */
+ hsize_t ss_stride[H5S_MAX_RANK]; /* Info for hyperslab */
+ hsize_t ss_block[H5S_MAX_RANK]; /* Info for hyperslab */
+ hsize_t ss_count[H5S_MAX_RANK]; /* Info for hyperslab */
+ int i; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
/* Subsetting information for the tools library printing routines */
- subset.start.data = ss_start;
+ subset.start.data = ss_start;
subset.stride.data = ss_stride;
- subset.block.data = ss_block;
- subset.count.data = ss_count;
+ subset.block.data = ss_block;
+ subset.count.data = ss_count;
/* Initialize subsetting information */
- for(i = 0; i < rank; i++) {
+ for (i = 0; i < rank; i++) {
subset.stride.data[i] = 1;
- subset.count.data[i] = 1;
- subset.start.data[i] = start[i];
- subset.block.data[i] = block[i];
+ subset.count.data[i] = 1;
+ subset.start.data[i] = start[i];
+ subset.block.data[i] = block[i];
} /* end for */
HDmemset(&ctx, 0, sizeof(ctx));
@@ -152,13 +128,13 @@ doprint(hid_t did, hsize_t *start, hsize_t *block, int rank)
/* Set to all default values and then override */
HDmemset(&info, 0, sizeof info);
- if(g_simple_output) {
- info.idx_fmt = "";
- info.line_ncols = 65535; /*something big*/
- info.line_per_line = 1;
+ if (g_simple_output) {
+ info.idx_fmt = "";
+ info.line_ncols = 65535; /*something big*/
+ info.line_per_line = 1;
info.line_multi_new = 0;
- info.line_pre = " ";
- info.line_cont = " ";
+ info.line_pre = " ";
+ info.line_cont = " ";
info.arr_pre = "";
info.arr_suf = "";
@@ -169,18 +145,18 @@ doprint(hid_t did, hsize_t *start, hsize_t *block, int rank)
info.cmpd_sep = " ";
/* The "fields" selected by the user */
- info.cmpd_listv = (const struct H5LD_memb_t * const *)g_listv;
+ info.cmpd_listv = (const struct H5LD_memb_t *const *)g_listv;
- if(g_label)
+ if (g_label)
info.cmpd_name = "%s=";
- info.elmt_suf1 = " ";
+ info.elmt_suf1 = " ";
info.str_locale = ESCAPE_HTML;
-
- } else {
+ }
+ else {
info.idx_fmt = "(%s)";
- if(!g_display_width) {
- info.line_ncols = 65535;
+ if (!g_display_width) {
+ info.line_ncols = 65535;
info.line_per_line = 1;
} /* end if */
else
@@ -189,11 +165,11 @@ doprint(hid_t did, hsize_t *start, hsize_t *block, int rank)
info.line_multi_new = 1;
/* The "fields" selected by the user */
- info.cmpd_listv = (const struct H5LD_memb_t * const *)g_listv;
- if(g_label)
+ info.cmpd_listv = (const struct H5LD_memb_t *const *)g_listv;
+ if (g_label)
info.cmpd_name = "%s=";
- info.line_pre = " %s ";
- info.line_cont = " %s ";
+ info.line_pre = " %s ";
+ info.line_cont = " %s ";
info.str_repeat = 8;
} /* end else */
@@ -203,25 +179,25 @@ doprint(hid_t did, hsize_t *start, hsize_t *block, int rank)
sprintf(fmt_double, "%%1.%dg", DBL_DIG);
info.fmt_double = fmt_double;
- info.dset_format = "DSET-%s ";
+ info.dset_format = "DSET-%s ";
info.dset_hidefileno = 0;
- info.obj_format = "-%lu:%" PRIuHADDR;
+ info.obj_format = "-%lu:%" PRIuHADDR;
info.obj_hidefileno = 0;
info.dset_blockformat_pre = "%sBlk%lu: ";
- info.dset_ptformat_pre = "%sPt%lu: ";
+ info.dset_ptformat_pre = "%sPt%lu: ";
info.line_indent = "";
- if(g_display_hex) {
+ if (g_display_hex) {
/* Print all data in hexadecimal format if the `-x' or `--hexdump'
* command line switch was given. */
info.raw = TRUE;
} /* end if */
/* Print the values. */
- if((ret_value = h5tools_dump_dset(stdout, &info, &ctx, did)) < 0)
+ if ((ret_value = h5tools_dump_dset(stdout, &info, &ctx, did)) < 0)
error_msg("unable to print data\n");
HDfprintf(stdout, "\n");
@@ -251,25 +227,26 @@ doprint(hid_t did, hsize_t *start, hsize_t *block, int rank)
*-------------------------------------------------------------------------
*/
static herr_t
-slicendump(hid_t did, hsize_t *prev_dims, hsize_t *cur_dims, hsize_t *start, hsize_t *block, int rank, int subrank)
+slicendump(hid_t did, hsize_t *prev_dims, hsize_t *cur_dims, hsize_t *start, hsize_t *block, int rank,
+ int subrank)
{
- int i; /* Local index variable */
- int ind; /* Index for the current rank */
+ int i; /* Local index variable */
+ int ind; /* Index for the current rank */
herr_t ret_value = SUCCEED; /* Return value */
ind = rank - subrank;
- if((subrank - 1) > 0) {
+ if ((subrank - 1) > 0) {
/* continue onto the next dimension */
- for (i = 0; i < (hssize_t)MIN(prev_dims[ind], cur_dims[ind]); i++){
+ for (i = 0; i < (hssize_t)MIN(prev_dims[ind], cur_dims[ind]); i++) {
start[ind] = (hsize_t)i;
- if((ret_value = slicendump(did, prev_dims, cur_dims, start, block, rank, subrank-1)) < 0)
+ if ((ret_value = slicendump(did, prev_dims, cur_dims, start, block, rank, subrank - 1)) < 0)
goto done;
} /* end for */
- } /* end if */
+ } /* end if */
/* this dimension remains the same or shrinking */
- if(cur_dims[ind] <= prev_dims[ind])
+ if (cur_dims[ind] <= prev_dims[ind])
goto done;
/* select first the slice for the faster changing dimension */
@@ -277,7 +254,7 @@ slicendump(hid_t did, hsize_t *prev_dims, hsize_t *cur_dims, hsize_t *start, hsi
start[ind] = prev_dims[ind];
block[ind] = cur_dims[ind] - prev_dims[ind];
- for(i = ind + 1; i < rank; i++){
+ for (i = ind + 1; i < rank; i++) {
start[i] = 0;
block[i] = cur_dims[i];
} /* end for */
@@ -289,7 +266,6 @@ done:
return ret_value;
} /* end slicendump() */
-
/*-------------------------------------------------------------------------
* Function: monitor_dataset
*
@@ -309,30 +285,30 @@ done:
static herr_t
monitor_dataset(hid_t fid, char *dsetname)
{
- hid_t did; /* dataset id */
- hid_t sid; /* dataspace id */
- int ndims; /* # of dimensions in the dataspace */
- int i, u; /* local index variable */
- hsize_t prev_dims[H5S_MAX_RANK]; /* current dataspace dimensions */
- hsize_t cur_dims[H5S_MAX_RANK]; /* previous dataspace dimensions */
- herr_t ret_value = SUCCEED; /* return value */
+ hid_t did; /* dataset id */
+ hid_t sid; /* dataspace id */
+ int ndims; /* # of dimensions in the dataspace */
+ int i, u; /* local index variable */
+ hsize_t prev_dims[H5S_MAX_RANK]; /* current dataspace dimensions */
+ hsize_t cur_dims[H5S_MAX_RANK]; /* previous dataspace dimensions */
+ herr_t ret_value = SUCCEED; /* return value */
HDfprintf(stdout, "Monitoring dataset %s...\n", dsetname);
/* Open the dataset for minitoring */
- if((did = H5Dopen2(fid, dsetname, H5P_DEFAULT)) < 0) {
+ if ((did = H5Dopen2(fid, dsetname, H5P_DEFAULT)) < 0) {
error_msg("error in opening dataset \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
- if((sid = H5Dget_space(did)) < 0) {
+ if ((sid = H5Dget_space(did)) < 0) {
error_msg("error in getting dataspace id for dataset \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
/* Get the dataset's dimension sizes */
- if((ndims = H5Sget_simple_extent_dims(sid, prev_dims, NULL)) < 0) {
+ if ((ndims = H5Sget_simple_extent_dims(sid, prev_dims, NULL)) < 0) {
error_msg("unable to get dimensions sizes for \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
@@ -340,58 +316,60 @@ monitor_dataset(hid_t fid, char *dsetname)
HDfflush(stdout);
/* Loop until an error occurs or the user interrupts execution */
- while(!g_user_interrupt) {
+ while (!g_user_interrupt) {
/* Refreshes the dataset */
- if(H5Drefresh(did) < 0) {
+ if (H5Drefresh(did) < 0) {
ret_value = FAIL;
goto done;
}
/* Get the dataset's current dimension sizes */
- if(H5LDget_dset_dims(did, cur_dims) < 0) {
+ if (H5LDget_dset_dims(did, cur_dims) < 0) {
error_msg("unable to get dimension sizes for \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
/* Check the dimension sizes */
- for(i = 0; i < ndims; i++)
- if(cur_dims[i] != prev_dims[i])
+ for (i = 0; i < ndims; i++)
+ if (cur_dims[i] != prev_dims[i])
break;
/* at least one dimension has changed */
- if(i != ndims) {
+ if (i != ndims) {
/* Printing changes in dimension sizes */
- for(u = 0; u < ndims; u++) {
- HDfprintf(stdout, "dimension %d: %" PRIuHSIZE "->%" PRIuHSIZE "", u, prev_dims[u], cur_dims[u]);
- if(cur_dims[u] > prev_dims[u])
+ for (u = 0; u < ndims; u++) {
+ HDfprintf(stdout, "dimension %d: %" PRIuHSIZE "->%" PRIuHSIZE "", u, prev_dims[u],
+ cur_dims[u]);
+ if (cur_dims[u] > prev_dims[u])
HDfprintf(stdout, " (increases)\n");
- else if(cur_dims[u] < prev_dims[u])
+ else if (cur_dims[u] < prev_dims[u])
HDfprintf(stdout, " (decreases)\n");
else
HDfprintf(stdout, " (unchanged)\n");
}
/* Printing elements appended to the dataset if there is */
- if(!g_monitor_size_only) {
+ if (!g_monitor_size_only) {
/* See if at least one dimension size has increased */
- for(u = 0; u < ndims; u++) {
- int j;
+ for (u = 0; u < ndims; u++) {
+ int j;
hsize_t start[H5S_MAX_RANK];
hsize_t block[H5S_MAX_RANK];
/* Print the new appended data to the dataset */
- if(cur_dims[u] > prev_dims[u]) {
+ if (cur_dims[u] > prev_dims[u]) {
HDfprintf(stdout, " Data:\n");
- for(j = 0; j < ndims; j++) {
+ for (j = 0; j < ndims; j++) {
start[j] = 0;
block[j] = 1;
}
- if((ret_value = slicendump(did, prev_dims, cur_dims, start, block, ndims, ndims)) < 0)
+ if ((ret_value = slicendump(did, prev_dims, cur_dims, start, block, ndims, ndims)) <
+ 0)
goto done;
break;
}
@@ -412,10 +390,10 @@ monitor_dataset(hid_t fid, char *dsetname)
done:
/* Closing */
H5E_BEGIN_TRY
- H5Dclose(did);
+ H5Dclose(did);
H5E_END_TRY
- return(ret_value);
+ return (ret_value);
} /* monitor_dataset() */
/*-------------------------------------------------------------------------
@@ -433,53 +411,53 @@ done:
static herr_t
process_cmpd_fields(hid_t fid, char *dsetname)
{
- hid_t did=-1; /* dataset id */
- hid_t dtid=-1, tid=-1; /* dataset's data type id */
+ hid_t did = -1; /* dataset id */
+ hid_t dtid = -1, tid = -1; /* dataset's data type id */
size_t len; /* number of comma-separated fields in "g_list_of_fields" */
herr_t ret_value = SUCCEED; /* Return value */
HDassert(g_list_of_fields && *g_list_of_fields);
/* Open the dataset */
- if((did = H5Dopen2(fid, dsetname, H5P_DEFAULT)) < 0) {
+ if ((did = H5Dopen2(fid, dsetname, H5P_DEFAULT)) < 0) {
error_msg("error in opening dataset \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
/* Get the dataset's datatype */
- if(((dtid = H5Dget_type(did)) < 0) || (tid = H5Tget_native_type(dtid, H5T_DIR_DEFAULT)) < 0) {
+ if (((dtid = H5Dget_type(did)) < 0) || (tid = H5Tget_native_type(dtid, H5T_DIR_DEFAULT)) < 0) {
error_msg("error in getting dataset's datatype\n");
ret_value = FAIL;
goto done;
}
/* Check to make sure that the dataset's datatype is compound type */
- if(H5Tget_class(dtid) != H5T_COMPOUND) {
+ if (H5Tget_class(dtid) != H5T_COMPOUND) {
error_msg("dataset should be compound type for <list_of_fields>\n");
ret_value = FAIL;
goto done;
}
/* Make a copy of "g_list_of_fields" */
- if((g_dup_fields = HDstrdup(g_list_of_fields)) == NULL) {
+ if ((g_dup_fields = HDstrdup(g_list_of_fields)) == NULL) {
error_msg("error in duplicating g_list_of_fields\n");
ret_value = FAIL;
goto done;
}
/* Estimate the number of comma-separated fields in "g_list of_fields" */
- len = HDstrlen(g_list_of_fields)/2 + 2;
+ len = HDstrlen(g_list_of_fields) / 2 + 2;
/* Allocate memory for a list vector of H5LD_memb_t structures to store "g_list_of_fields" info */
- if((g_listv = (H5LD_memb_t **)HDcalloc(len, sizeof(H5LD_memb_t *))) == NULL) {
+ if ((g_listv = (H5LD_memb_t **)HDcalloc(len, sizeof(H5LD_memb_t *))) == NULL) {
error_msg("error in allocating memory for H5LD_memb_t\n");
ret_value = FAIL;
goto done;
}
/* Process and store info for "g_listv" */
- if(H5LD_construct_vector(g_dup_fields, g_listv, tid) < 0) {
+ if (H5LD_construct_vector(g_dup_fields, g_listv, tid) < 0) {
error_msg("error in processing <list_of_fields>\n");
ret_value = FAIL;
goto done;
@@ -489,14 +467,13 @@ process_cmpd_fields(hid_t fid, char *dsetname)
done:
/* Closing */
H5E_BEGIN_TRY
- H5Tclose(dtid);
- H5Tclose(tid);
- H5Dclose(did);
+ H5Tclose(dtid);
+ H5Tclose(tid);
+ H5Dclose(did);
H5E_END_TRY
- return(ret_value);
+ return (ret_value);
} /* process_cmpd_fields() */
-
/*-------------------------------------------------------------------------
* Function: check_dataset
*
@@ -513,44 +490,44 @@ done:
static herr_t
check_dataset(hid_t fid, char *dsetname)
{
- hid_t did=-1; /* Dataset id */
- hid_t dcp=-1; /* Dataset creation property */
- hid_t sid=-1; /* Dataset's dataspace id */
- int ndims; /* # of dimensions in the dataspace */
- unsigned u; /* Local index variable */
- hsize_t cur_dims[H5S_MAX_RANK]; /* size of dataspace dimensions */
- hsize_t max_dims[H5S_MAX_RANK]; /* maximum size of dataspace dimensions */
- hbool_t unlim_max_dims = FALSE; /* whether dataset has unlimited or max. dimension setting */
- void *edata;
- H5E_auto2_t func;
- H5D_layout_t layout;
- herr_t ret_value = SUCCEED; /* Return value */
+ hid_t did = -1; /* Dataset id */
+ hid_t dcp = -1; /* Dataset creation property */
+ hid_t sid = -1; /* Dataset's dataspace id */
+ int ndims; /* # of dimensions in the dataspace */
+ unsigned u; /* Local index variable */
+ hsize_t cur_dims[H5S_MAX_RANK]; /* size of dataspace dimensions */
+ hsize_t max_dims[H5S_MAX_RANK]; /* maximum size of dataspace dimensions */
+ hbool_t unlim_max_dims = FALSE; /* whether dataset has unlimited or max. dimension setting */
+ void * edata;
+ H5E_auto2_t func;
+ H5D_layout_t layout;
+ herr_t ret_value = SUCCEED; /* Return value */
/* Disable error reporting */
H5Eget_auto2(H5E_DEFAULT, &func, &edata);
H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
/* Open the dataset */
- if((did = H5Dopen2(fid, dsetname, H5P_DEFAULT)) < 0) {
+ if ((did = H5Dopen2(fid, dsetname, H5P_DEFAULT)) < 0) {
error_msg("unable to open dataset \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
/* Get dataset's creation property list */
- if((dcp = H5Dget_create_plist(did)) < 0) {
+ if ((dcp = H5Dget_create_plist(did)) < 0) {
error_msg("unable to get dataset's creation property list \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
/* Query dataset's layout; the layout should be chunked or virtual */
- if((layout = H5Pget_layout(dcp)) < 0) {
+ if ((layout = H5Pget_layout(dcp)) < 0) {
error_msg("unable to get dataset layout \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
- if(layout != H5D_CHUNKED && layout != H5D_VIRTUAL) {
+ if (layout != H5D_CHUNKED && layout != H5D_VIRTUAL) {
error_msg("\"%s\" should be a chunked or virtual dataset\n", dsetname);
ret_value = FAIL;
goto done;
@@ -560,27 +537,27 @@ check_dataset(hid_t fid, char *dsetname)
HDmemset(max_dims, 0, sizeof max_dims);
/* Get dataset's dataspace */
- if((sid = H5Dget_space(did)) < 0) {
+ if ((sid = H5Dget_space(did)) < 0) {
error_msg("can't get dataset's dataspace\"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
/* Get dimension size of dataset's dataspace */
- if((ndims = H5Sget_simple_extent_dims(sid, cur_dims, max_dims)) < 0) {
+ if ((ndims = H5Sget_simple_extent_dims(sid, cur_dims, max_dims)) < 0) {
error_msg("can't get dataspace dimensions for dataset \"%s\"\n", dsetname);
ret_value = FAIL;
goto done;
}
/* Check whether dataset has unlimited dimension or max. dimension setting */
- for(u = 0; u < (unsigned)ndims; u++)
- if(max_dims[u] == H5S_UNLIMITED || cur_dims[u] != max_dims[u]) {
- unlim_max_dims = TRUE;
- break;
- }
+ for (u = 0; u < (unsigned)ndims; u++)
+ if (max_dims[u] == H5S_UNLIMITED || cur_dims[u] != max_dims[u]) {
+ unlim_max_dims = TRUE;
+ break;
+ }
- if(!unlim_max_dims) {
+ if (!unlim_max_dims) {
error_msg("\"%s\" should have unlimited or max. dimension setting\n", dsetname);
ret_value = FAIL;
}
@@ -590,15 +567,14 @@ done:
/* Closing */
H5E_BEGIN_TRY
- H5Sclose(sid);
- H5Pclose(dcp);
- H5Dclose(did);
+ H5Sclose(sid);
+ H5Pclose(dcp);
+ H5Dclose(did);
H5E_END_TRY
- return(ret_value);
+ return (ret_value);
} /* check_dataset() */
-
/*-------------------------------------------------------------------------
* Function: leave
*
@@ -619,7 +595,6 @@ leave(int ret)
exit(ret);
}
-
/*-------------------------------------------------------------------------
* Function: usage
*
@@ -647,10 +622,12 @@ usage(const char *prog)
HDfprintf(stdout, " A value of 0 sets the number of columns to the\n");
HDfprintf(stdout, " maximum (65535). The default width is 80 columns.\n");
HDfprintf(stdout, " --polling=N Set the polling interval to N (in seconds) when the\n");
- HDfprintf(stdout, " dataset will be checked for appended data. The default\n");
+ HDfprintf(stdout,
+ " dataset will be checked for appended data. The default\n");
HDfprintf(stdout, " polling interval is 1.\n");
HDfprintf(stdout, " --fields=<list_of_fields>\n");
- HDfprintf(stdout, " Display data for the fields specified in <list_of_fields>\n");
+ HDfprintf(stdout,
+ " Display data for the fields specified in <list_of_fields>\n");
HDfprintf(stdout, " for a compound data type. <list_of_fields> can be\n");
HDfprintf(stdout, " specified as follows:\n");
HDfprintf(stdout, " 1) A comma-separated list of field names in a\n");
@@ -660,7 +637,8 @@ usage(const char *prog)
HDfprintf(stdout, " 2) A single field name in a compound data type.\n");
HDfprintf(stdout, " Can use this option multiple times.\n");
HDfprintf(stdout, " Note that backslash is the escape character to avoid\n");
- HDfprintf(stdout, " characters in field names that conflict with the tool's\n");
+ HDfprintf(stdout,
+ " characters in field names that conflict with the tool's\n");
HDfprintf(stdout, " separators.\n");
HDfprintf(stdout, "\n");
HDfprintf(stdout, " OBJECT is specified as [<filename>/<path_to_dataset>/<dsetname>]\n");
@@ -669,11 +647,11 @@ usage(const char *prog)
HDfprintf(stdout, " <path_to_dataset> Path separated by slashes to the specified dataset\n");
HDfprintf(stdout, " <dsetname> Name of the dataset\n");
HDfprintf(stdout, "\n");
- HDfprintf(stdout, " User can end the h5watch process by ctrl-C (SIGINT) or kill the process (SIGTERM).\n");
+ HDfprintf(stdout,
+ " User can end the h5watch process by ctrl-C (SIGINT) or kill the process (SIGTERM).\n");
} /* usage() */
-
/*-------------------------------------------------------------------------
* Function: parse_command_line
*
@@ -689,10 +667,10 @@ usage(const char *prog)
static void
parse_command_line(int argc, const char *argv[])
{
- int opt; /* Command line option */
+ int opt; /* Command line option */
int tmp;
- /* no arguments */
+ /* no arguments */
if (argc == 1) {
usage(h5tools_getprogname());
leave(EXIT_FAILURE);
@@ -701,80 +679,77 @@ parse_command_line(int argc, const char *argv[])
/* parse command line options */
while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) {
switch ((char)opt) {
- case '?':
- case 'h': /* --help */
- usage(h5tools_getprogname());
- leave(EXIT_SUCCESS);
- break;
-
- case 'V': /* --version */
- print_version(progname);
- leave(EXIT_SUCCESS);
- break;
-
- case 'w': /* --width=N */
- g_display_width = (int)HDstrtol(opt_arg, NULL, 0);
- if(g_display_width < 0) {
+ case '?':
+ case 'h': /* --help */
usage(h5tools_getprogname());
- leave(EXIT_FAILURE);
- }
- break;
+ leave(EXIT_SUCCESS);
+ break;
- case 'd': /* --dim */
- g_monitor_size_only = TRUE;
- break;
+ case 'V': /* --version */
+ print_version(progname);
+ leave(EXIT_SUCCESS);
+ break;
- case 'S': /* --simple */
- g_simple_output = TRUE;
- break;
+ case 'w': /* --width=N */
+ g_display_width = (int)HDstrtol(opt_arg, NULL, 0);
+ if (g_display_width < 0) {
+ usage(h5tools_getprogname());
+ leave(EXIT_FAILURE);
+ }
+ break;
- case 'l': /* --label */
- g_label = TRUE;
- break;
+ case 'd': /* --dim */
+ g_monitor_size_only = TRUE;
+ break;
- case 'p': /* --polling=N */
- /* g_polling_interval = HDstrtod(opt_arg, NULL); */
- if((tmp = (int)HDstrtol(opt_arg, NULL, 10)) <= 0) {
- usage(h5tools_getprogname());
- leave(EXIT_FAILURE);
- }
- g_polling_interval = (unsigned)tmp;
- break;
+ case 'S': /* --simple */
+ g_simple_output = TRUE;
+ break;
+
+ case 'l': /* --label */
+ g_label = TRUE;
+ break;
- case 'f': /* --fields=<list_of_fields> */
- if(g_list_of_fields == NULL) {
- if((g_list_of_fields = HDstrdup(opt_arg)) == NULL) {
- error_msg("memory allocation failed (file %s:line %d)\n",
- __FILE__, __LINE__);
+ case 'p': /* --polling=N */
+ /* g_polling_interval = HDstrtod(opt_arg, NULL); */
+ if ((tmp = (int)HDstrtol(opt_arg, NULL, 10)) <= 0) {
+ usage(h5tools_getprogname());
leave(EXIT_FAILURE);
}
- } else {
- char *str;
+ g_polling_interval = (unsigned)tmp;
+ break;
- if((str = HDstrdup(opt_arg)) == NULL) {
- error_msg("memory allocation failed (file %s:line %d)\n",
- __FILE__, __LINE__);
- leave(EXIT_FAILURE);
+ case 'f': /* --fields=<list_of_fields> */
+ if (g_list_of_fields == NULL) {
+ if ((g_list_of_fields = HDstrdup(opt_arg)) == NULL) {
+ error_msg("memory allocation failed (file %s:line %d)\n", __FILE__, __LINE__);
+ leave(EXIT_FAILURE);
+ }
}
- if((g_list_of_fields = (char *)HDrealloc(g_list_of_fields, HDstrlen(g_list_of_fields) + HDstrlen(str) + 2)) == NULL) {
- error_msg("memory allocation failed (file %s:line %d)\n",
- __FILE__, __LINE__);
- leave(EXIT_FAILURE);
+ else {
+ char *str;
+ if ((str = HDstrdup(opt_arg)) == NULL) {
+ error_msg("memory allocation failed (file %s:line %d)\n", __FILE__, __LINE__);
+ leave(EXIT_FAILURE);
+ }
+ if ((g_list_of_fields = (char *)HDrealloc(
+ g_list_of_fields, HDstrlen(g_list_of_fields) + HDstrlen(str) + 2)) == NULL) {
+ error_msg("memory allocation failed (file %s:line %d)\n", __FILE__, __LINE__);
+ leave(EXIT_FAILURE);
+ }
+ HDstrcat(g_list_of_fields, FIELD_SEP);
+ HDstrcat(g_list_of_fields, str);
}
- HDstrcat(g_list_of_fields, FIELD_SEP);
- HDstrcat(g_list_of_fields, str);
- }
- break;
+ break;
- default:
- usage(h5tools_getprogname());
- leave(EXIT_FAILURE);
+ default:
+ usage(h5tools_getprogname());
+ leave(EXIT_FAILURE);
}
}
-
/* check for object to be processed */
if (argc <= opt_ind) {
error_msg("missing dataset name\n");
@@ -783,7 +758,6 @@ parse_command_line(int argc, const char *argv[])
}
} /* parse_command_line() */
-
/*-------------------------------------------------------------------------
* Function: catch_signal
*
@@ -796,13 +770,13 @@ parse_command_line(int argc, const char *argv[])
*
*-------------------------------------------------------------------------
*/
-static void catch_signal(int H5_ATTR_UNUSED signo)
+static void
+catch_signal(int H5_ATTR_UNUSED signo)
{
/* Set the flag to get out of the main loop */
g_user_interrupt = TRUE;
} /* catch_signal() */
-
/*-------------------------------------------------------------------------
* Function: main
*
@@ -818,12 +792,12 @@ static void catch_signal(int H5_ATTR_UNUSED signo)
int
main(int argc, const char *argv[])
{
- char drivername[50]; /* VFD name */
- char *fname = NULL; /* File name */
- char *dname = NULL; /* Dataset name */
- char *x; /* Temporary string pointer */
- hid_t fid = -1; /* File ID */
- hid_t fapl = -1; /* File access property list */
+ char drivername[50]; /* VFD name */
+ char *fname = NULL; /* File name */
+ char *dname = NULL; /* Dataset name */
+ char *x; /* Temporary string pointer */
+ hid_t fid = -1; /* File ID */
+ hid_t fapl = -1; /* File access property list */
/* Set up tool name and exit status */
h5tools_setprogname(PROGRAMNAME);
@@ -833,13 +807,13 @@ main(int argc, const char *argv[])
h5tools_init();
/* To exit from h5watch for SIGTERM signal */
- if(HDsignal(SIGTERM, catch_signal) == SIG_ERR) {
+ if (HDsignal(SIGTERM, catch_signal) == SIG_ERR) {
error_msg("An error occurred while setting a signal handler.\n");
leave(EXIT_FAILURE);
}
/* To exit from h5watch for SIGINT signal */
- if(HDsignal(SIGINT, catch_signal) == SIG_ERR) {
+ if (HDsignal(SIGINT, catch_signal) == SIG_ERR) {
error_msg("An error occurred while setting a signal handler.\n");
leave(EXIT_FAILURE);
}
@@ -847,7 +821,7 @@ main(int argc, const char *argv[])
/* parse command line options */
parse_command_line(argc, argv);
- if(argc <= opt_ind) {
+ if (argc <= opt_ind) {
error_msg("missing dataset name\n");
usage(h5tools_getprogname());
leave(EXIT_FAILURE);
@@ -871,60 +845,61 @@ main(int argc, const char *argv[])
* then there must have been something wrong with the file (perhaps it
* doesn't exist).
*/
- if((fname = HDstrdup(argv[opt_ind])) == NULL) {
+ if ((fname = HDstrdup(argv[opt_ind])) == NULL) {
error_msg("memory allocation failed (file %s:line %d)\n", __FILE__, __LINE__);
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
/* Create a copy of file access property list */
- if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
+ if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
/* Set to use the latest library format */
- if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) {
+ if (H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) {
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
do {
- while(fname && *fname) {
- fid = h5tools_fopen(fname, H5F_ACC_RDONLY|H5F_ACC_SWMR_READ, fapl, FALSE, drivername, sizeof drivername);
+ while (fname && *fname) {
+ fid = h5tools_fopen(fname, H5F_ACC_RDONLY | H5F_ACC_SWMR_READ, fapl, FALSE, drivername,
+ sizeof drivername);
- if(fid >= 0) {
+ if (fid >= 0) {
HDfprintf(stdout, "Opened \"%s\" with %s driver.\n", fname, drivername);
break; /*success*/
- } /* end if */
+ } /* end if */
/* Shorten the file name; lengthen the object name */
- x = dname;
+ x = dname;
dname = HDstrrchr(fname, '/');
- if(x)
+ if (x)
*x = '/';
- if(!dname)
+ if (!dname)
break;
*dname = '\0';
} /* end while */
- /* Try opening the file again if somehow unstable */
- } while(g_retry-- > 0 && fid == FAIL);
+ /* Try opening the file again if somehow unstable */
+ } while (g_retry-- > 0 && fid == FAIL);
- if(fid < 0) {
+ if (fid < 0) {
error_msg("unable to open file \"%s\"\n", fname);
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
- if(!dname) {
+ if (!dname) {
error_msg("no dataset specified\n");
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
else {
*dname = '/';
- x = dname;
- if((dname = HDstrdup(dname)) == NULL) {
+ x = dname;
+ if ((dname = HDstrdup(dname)) == NULL) {
error_msg("memory allocation failed (file %s:line %d)\n", __FILE__, __LINE__);
h5tools_setstatus(EXIT_FAILURE);
goto done;
@@ -932,13 +907,13 @@ main(int argc, const char *argv[])
else {
*x = '\0';
/* Validate dataset */
- if(check_dataset(fid, dname) < 0) {
+ if (check_dataset(fid, dname) < 0) {
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
/* Validate input "fields" */
- else if(g_list_of_fields && *g_list_of_fields) {
- if(process_cmpd_fields(fid, dname) < 0) {
+ else if (g_list_of_fields && *g_list_of_fields) {
+ if (process_cmpd_fields(fid, dname) < 0) {
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
@@ -947,33 +922,33 @@ main(int argc, const char *argv[])
}
/* If everything is fine, start monitoring the datset */
- if(h5tools_getstatus() != EXIT_FAILURE)
- if(monitor_dataset(fid, dname) < 0)
+ if (h5tools_getstatus() != EXIT_FAILURE)
+ if (monitor_dataset(fid, dname) < 0)
h5tools_setstatus(EXIT_FAILURE);
done:
/* Free spaces */
- if(fname)
+ if (fname)
HDfree(fname);
- if(dname)
+ if (dname)
HDfree(dname);
- if(g_list_of_fields)
+ if (g_list_of_fields)
HDfree(g_list_of_fields);
- if(g_listv) {
+ if (g_listv) {
H5LD_clean_vector(g_listv);
HDfree(g_listv);
}
- if(g_dup_fields)
+ if (g_dup_fields)
HDfree(g_dup_fields);
/* Close the file access property list */
- if(fapl >= 0 && H5Pclose(fapl) < 0) {
+ if (fapl >= 0 && H5Pclose(fapl) < 0) {
error_msg("unable to close file access property list\n");
h5tools_setstatus(EXIT_FAILURE);
}
/* Close the file */
- if(fid >= 0 && H5Fclose(fid) < 0) {
+ if (fid >= 0 && H5Fclose(fid) < 0) {
error_msg("unable to close file\n");
h5tools_setstatus(EXIT_FAILURE);
}
@@ -981,4 +956,3 @@ done:
/* exit */
leave(h5tools_getstatus());
} /* main() */
-