summaryrefslogtreecommitdiffstats
path: root/tools/h5tools.c
diff options
context:
space:
mode:
authorPatrick Lu <ptlu@hawkwind.ncsa.uiuc.edu>1999-05-27 15:43:12 (GMT)
committerPatrick Lu <ptlu@hawkwind.ncsa.uiuc.edu>1999-05-27 15:43:12 (GMT)
commit01191731a61cf87b07e2989c046bb8c463d707f7 (patch)
tree6d5b0c6e36a8c9ee49a5a52f5b9a36c0787f7c03 /tools/h5tools.c
parent8bb58b439986c25f3fe714280566e59c47a5fef3 (diff)
downloadhdf5-01191731a61cf87b07e2989c046bb8c463d707f7.zip
hdf5-01191731a61cf87b07e2989c046bb8c463d707f7.tar.gz
hdf5-01191731a61cf87b07e2989c046bb8c463d707f7.tar.bz2
[svn-r1285]
fixed the last bug with the repeating in the tstr.h5 test added an extra parameter to the h5dump_sprint function. it was for the repeat_threshold before it was hardcoded as 8 but now i let it be a parameter so that if it is set to a negative number then it will not count the repeats and print all the values out.
Diffstat (limited to 'tools/h5tools.c')
-rw-r--r--tools/h5tools.c96
1 files changed, 44 insertions, 52 deletions
diff --git a/tools/h5tools.c b/tools/h5tools.c
index f5cbf9b..d058fc0 100644
--- a/tools/h5tools.c
+++ b/tools/h5tools.c
@@ -38,7 +38,10 @@ int compound_data=0;
*/
#define REPEAT_VERBOSE
-
+/*
+ this is the original value of the repeat_threshold in the h5dump_sprint function
+*/
+#define DEFAULT_REPEAT_THRESHOLD 8
/*
* The output functions need a temporary buffer to hold a piece of the
* dataset while it's being printed. This constant sets the limit on the
@@ -446,15 +449,19 @@ h5dump_escape(char *s/*in,out*/, size_t size, int escape_spaces)
*
*-------------------------------------------------------------------------
*/
+
+/*
+ if the repeat_threshold = -1 or less then that will mean we will let it
+ repeat as much as it wants to.
+*/
static char *
h5dump_sprint(h5dump_str_t *str/*in,out*/, const h5dump_t *info,
- hid_t type, void *vp)
+ hid_t type, void *vp, const int repeat_threshold)
{
size_t i, n, offset, size, dims[H5S_MAX_RANK], nelmts, start;
char *name, quote='\0';
hid_t memb;
int nmembs, j, k, ndims;
- const int repeat_threshold = 8;
static char fmt_llong[8], fmt_ullong[8];
H5T_str_t pad;
@@ -515,12 +522,15 @@ h5dump_sprint(h5dump_str_t *str/*in,out*/, const h5dump_t *info,
for (i=0; i<size && ((pad == H5T_STR_NULLPAD)?1:(((char*)vp)[i] != '\0')); i++) {
/* Count how many times the next character repeats */
- /* if (repeat_threshold >= 0){*/
+ /* if the threshold = -1 or lower then that will mean we will let
+ it repeat as much as it wants to. */
+ if (repeat_threshold >= 0){
j=1;
while (i+j<size && ((char*)vp)[i]==((char*)vp)[i+j]) j++;
- /* }
- else j = -2;
- */
+ }
+ else {
+ j = repeat_threshold - 1;
+ }
/*
* Print the opening quote. If the repeat count is high enough
* to warrant printing the number of repeats instead of
@@ -675,7 +685,7 @@ h5dump_sprint(h5dump_str_t *str/*in,out*/, const h5dump_t *info,
OPT(info->arr_sep,
"," OPTIONAL_LINE_BREAK));
}
- h5dump_sprint(str, info, memb, (char*)vp+offset+i*size);
+ h5dump_sprint(str, info, memb, (char*)vp+offset+i*size, repeat_threshold);
}
if (nelmts>1) {
h5dump_str_append(str, "%s", OPT(info->arr_suf, "]"));
@@ -839,7 +849,7 @@ h5dump_simple_data(FILE *stream, const h5dump_t *info,
/* Render the element */
h5dump_str_reset(&buffer);
- h5dump_sprint(&buffer, info, type, mem+i*size);
+ h5dump_sprint(&buffer, info, type, mem+i*size, DEFAULT_REPEAT_THRESHOLD);
if (i+1<nelmts || 0==(flags & END_OF_DATA)) {
h5dump_str_append(&buffer, "%s", OPT(info->elmt_suf1, ","));
}
@@ -1465,7 +1475,8 @@ struct h5dump_str_t tempstr;
for (i=0; i<hs_nelmts && (elmtno+i) < p_nelmts; i++) {
h5dump_str_reset(&tempstr);
- h5dump_sprint(&tempstr, &info, p_type, sm_buf+i*p_type_nbytes);
+ h5dump_sprint(&tempstr, &info, p_type, sm_buf+i*p_type_nbytes, -1);
+ tempstr.len = tempstr.len - 2; /* since there are 2 quotes added from the h5dump_sprint function*/
if ((int)(strlen(out_buf)+tempstr.len+1) > (NCOLS-indent-COL)) {
/* first row of member */
if (compound_data && (elmtno+i+1) == dim_n_size)
@@ -1574,8 +1585,11 @@ static void display_string
row_size++;
h5dump_str_reset(&tempstr);
- h5dump_sprint(&tempstr, &info,p_type, sm_buf+i*p_type_nbytes);
-
+ h5dump_sprint(&tempstr, &info,p_type, sm_buf+i*p_type_nbytes,-1);
+
+ memmove(tempstr.s, tempstr.s + 1, tempstr.len -1);
+ tempstr.s[tempstr.len - 2] = '\0';
+
free_space = NCOLS - indent - COL - strlen(out_buf);
if ((elmtno+i+1) == p_nelmts) { /* last element */
@@ -1601,20 +1615,16 @@ static void display_string
} else {
x = free_space - 5;
if (compound_data && first_row) {
- /* printf("%s\"", out_buf);*/
- printf("%s", out_buf);
+ printf("%s\"", out_buf);
strncpy(out_buf, tempstr.s, x);
out_buf[x] = '\0';
- /*printf("%s\" //\n", out_buf);*/
- printf("%s //\n", out_buf);
+ printf("%s\" //\n", out_buf);
first_row = 0;
} else {
indentation(indent+COL);
- /* printf("%s\"", out_buf);*/
- printf("%s", out_buf);
+ printf("%s\"", out_buf);
strncpy(out_buf, tempstr.s, x);
out_buf[x] = '\0';
- /*printf("%s //\n", out_buf);*/
printf("%s\" //\n", out_buf);
}
out_buf[0] = '\0';
@@ -1631,8 +1641,7 @@ static void display_string
indentation(indent+COL);
strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
- /*printf("\"%s\" //\n", out_buf);*/
- printf("%s //\n", out_buf);
+ printf("\"%s\" //\n", out_buf);
}
if ((elmtno+i+1) == p_nelmts) { /* last element */
@@ -1640,11 +1649,9 @@ static void display_string
indentation(indent+COL);
strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
- /*printf("\"%s\" //\n", out_buf);*/
- printf("%s //\n", out_buf);
+ printf("\"%s\" //\n", out_buf);
indentation(indent+COL);
- /*printf("\"%s\"", tempstr.s+x+m*y);*/
- printf("%s", tempstr.s+x+m*y);
+ printf("\"%s\"", tempstr.s+x+m*y);
if (compound_data) {
if ((NCOLS-strlen(out_buf)-indent-COL) < 2) {
printf("\n");
@@ -1655,9 +1662,7 @@ static void display_string
} else {
indentation(indent+COL);
- /*printf("\"%s\"", tempstr.s+x+j*y);*/
-
- printf("%s", tempstr.s+x+j*y);
+ printf("\"%s\"", tempstr.s+x+j*y);
if (compound_data) {
if ((NCOLS-strlen(out_buf)-indent-COL) < 2) {
printf("\n");
@@ -1673,15 +1678,12 @@ static void display_string
indentation(indent+COL);
strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
- /*printf("\"%s\" //\n", out_buf);*/
- printf("%s //\n", out_buf);
+ printf("\"%s\" //\n", out_buf);
indentation(indent+COL);
- /*printf("\"%s\",\n", tempstr.s+x+m*y);*/
- printf("%s,\n", tempstr.s+x+m*y);
+ printf("\"%s\",\n", tempstr.s+x+m*y);
} else {
indentation(indent+COL);
- /*printf("\"%s\",\n", tempstr.s+x+j*y);*/
- printf("%s,\n", tempstr.s+x+j*y);
+ printf("\"%s\",\n", tempstr.s+x+j*y);
}
out_buf[0] = '\0';
@@ -1692,19 +1694,15 @@ static void display_string
indentation(indent+COL);
strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
- /*printf("\"%s\" //\n", out_buf);*/
- printf("%s //\n", out_buf);
-
- /* strcpy(out_buf, "\"");*/
+ printf("\"%s\" //\n", out_buf);
+ strcpy(out_buf, "\"");
strcat(out_buf, tempstr.s+x+m*y);
- /*strcat(out_buf, "\",");*/
- strcat(out_buf, ",");
+ strcat(out_buf, "\",");
if ((int)strlen(out_buf) < (NCOLS-indent-COL)) strcat(out_buf, " ");
} else {
- /* strcpy(out_buf, "\"");*/
+ strcpy(out_buf, "\"");
strcat (out_buf, tempstr.s+x+j*y);
- /*strcat(out_buf, "\",");*/
- strcat(out_buf, ",");
+ strcat(out_buf, "\",");
if ((int)strlen(out_buf) < (NCOLS-indent-COL)) strcat(out_buf, " ");
}
}
@@ -1715,17 +1713,13 @@ static void display_string
/* flush out_buf if it's end of a row */
if (row_size == dim_n_size) {
if (compound_data && (elmtno+i+1) == dim_n_size) { /* 1st row */
-/*
+
printf("%s\"%s\"", out_buf, tempstr.s);
-*/
- printf("%s%s", out_buf, tempstr.s);
first_row = 0;
} else {
indentation(indent+COL);
-/*
+
printf("%s\"%s\"", out_buf, tempstr.s);
-*/
- printf("%s%s", out_buf, tempstr.s);
}
if ((elmtno+i+1) != p_nelmts)
@@ -1742,11 +1736,9 @@ static void display_string
out_buf[0] = '\0';
row_size = 0;
} else {
- /* strcat(out_buf, "\"");
+ strcat(out_buf, "\"");
strcat(out_buf, tempstr.s);
strcat(out_buf, "\",");
- */
- strcat(out_buf, tempstr.s);
if ((int)strlen(out_buf) < (NCOLS-indent-COL)) strcat(out_buf, " ");
}