summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/h5tools.c74
1 files changed, 40 insertions, 34 deletions
diff --git a/tools/h5tools.c b/tools/h5tools.c
index 44a2522..50ce060 100644
--- a/tools/h5tools.c
+++ b/tools/h5tools.c
@@ -1593,26 +1593,32 @@ struct h5dump_str_t tempstr;
static void display_string
(hsize_t hs_nelmts, hid_t p_type, unsigned char *sm_buf, size_t p_type_nbytes,
hsize_t p_nelmts, hsize_t dim_n_size, hsize_t elmtno) {
-hsize_t i, row_size=0;
-int j, m, x, y, z, first_row=1;
-int free_space, long_string = 0;
-char p_buf[256], out_buf[NCOLS];
-
+ hsize_t i, row_size=0;
+ int j, m, x, y, z, first_row=1;
+ int free_space, long_string = 0;
+ char out_buf[NCOLS];
+ struct h5dump_str_t tempstr;
+
out_buf[0] = '\0';
- if ((indent+COL) > NCOLS) indent = 0;
-
+
+ memset(&tempstr, 0, sizeof(h5dump_str_t));
+
+
+ h5dump_str_reset(&tempstr);
for (i=0; i<hs_nelmts && (elmtno+i) < p_nelmts; i++) {
- row_size++;
- h5dump_sprint(p_buf, NULL,p_type, sm_buf+i*p_type_nbytes);
-
- free_space = NCOLS - indent - COL - strlen(out_buf);
+ row_size++;
+
+ h5dump_str_reset(&tempstr);
+ h5dump_sprint(&tempstr, NULL,p_type, sm_buf+i*p_type_nbytes);
+
+ free_space = NCOLS - indent - COL - strlen(out_buf);
if ((elmtno+i+1) == p_nelmts) { /* last element */
/* 2 for double quotes */
- if (((int)strlen(p_buf) + 2) > free_space) long_string = 1;
+ if (((int)strlen(tempstr.s) + 2) > free_space) long_string = 1;
} else
/* 3 for double quotes and one comma */
- if (((int)strlen(p_buf) + 3) > free_space) long_string = 1;
+ if (((int)strlen(tempstr.s) + 3) > free_space) long_string = 1;
if (long_string) {
@@ -1631,14 +1637,14 @@ char p_buf[256], out_buf[NCOLS];
x = free_space - 5;
if (compound_data && first_row) {
printf("%s\"", out_buf);
- strncpy(out_buf, p_buf, x);
+ strncpy(out_buf, tempstr.s, x);
out_buf[x] = '\0';
printf("%s\" //\n", out_buf);
first_row = 0;
} else {
indentation(indent+COL);
printf("%s\"", out_buf);
- strncpy(out_buf, p_buf, x);
+ strncpy(out_buf, tempstr.s, x);
out_buf[x] = '\0';
printf("%s\" //\n", out_buf);
}
@@ -1647,26 +1653,26 @@ char p_buf[256], out_buf[NCOLS];
y = NCOLS - indent -COL - 5;
- m = (strlen(p_buf) - x)/y;
+ m = (strlen(tempstr.s) - x)/y;
- z = (strlen(p_buf) - x) % y;
+ z = (strlen(tempstr.s) - x) % y;
for (j = 0; j < m - 1 ; j++) {
indentation(indent+COL);
- strncpy(out_buf, p_buf+x+j*y, y);
+ strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
printf("\"%s\" //\n", out_buf);
}
if ((elmtno+i+1) == p_nelmts) { /* last element */
- if ((int)strlen(p_buf+x+j*y) > (NCOLS - indent - COL -2)) { /* 2 for double quotes */
+ if ((int)strlen(tempstr.s+x+j*y) > (NCOLS - indent - COL -2)) { /* 2 for double quotes */
indentation(indent+COL);
- strncpy(out_buf, p_buf+x+j*y, y);
+ strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
printf("\"%s\" //\n", out_buf);
indentation(indent+COL);
- printf("\"%s\"", p_buf+x+m*y);
+ printf("\"%s\"", tempstr.s+x+m*y);
if (compound_data) {
if ((NCOLS-strlen(out_buf)-indent-COL) < 2) {
printf("\n");
@@ -1677,7 +1683,7 @@ char p_buf[256], out_buf[NCOLS];
} else {
indentation(indent+COL);
- printf("\"%s\"", p_buf+x+j*y);
+ printf("\"%s\"", tempstr.s+x+j*y);
if (compound_data) {
if ((NCOLS-strlen(out_buf)-indent-COL) < 2) {
printf("\n");
@@ -1689,33 +1695,33 @@ char p_buf[256], out_buf[NCOLS];
}
out_buf[0] = '\0';
} else if ( row_size == dim_n_size) {
- if ((int)strlen(p_buf+x+j*y) > (NCOLS - indent - COL -3)) { /* 3 for 2 "'s and 1 , */
+ if ((int)strlen(tempstr.s+x+j*y) > (NCOLS - indent - COL -3)) { /* 3 for 2 "'s and 1 , */
indentation(indent+COL);
- strncpy(out_buf, p_buf+x+j*y, y);
+ strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
printf("\"%s\" //\n", out_buf);
indentation(indent+COL);
- printf("\"%s\",\n", p_buf+x+m*y);
+ printf("\"%s\",\n", tempstr.s+x+m*y);
} else {
indentation(indent+COL);
- printf("\"%s\",\n", p_buf+x+j*y);
+ printf("\"%s\",\n", tempstr.s+x+j*y);
}
out_buf[0] = '\0';
row_size = 0;
} else {
- if ((int)strlen(p_buf+x+j*y) > (NCOLS - indent - COL -3)) { /* 3 for 2 "'s and 1 , */
+ if ((int)strlen(tempstr.s+x+j*y) > (NCOLS - indent - COL -3)) { /* 3 for 2 "'s and 1 , */
indentation(indent+COL);
- strncpy(out_buf, p_buf+x+j*y, y);
+ strncpy(out_buf, tempstr.s+x+j*y, y);
out_buf[y] = '\0';
printf("\"%s\" //\n", out_buf);
strcpy(out_buf, "\"");
- strcat(out_buf, p_buf+x+m*y);
+ strcat(out_buf, tempstr.s+x+m*y);
strcat(out_buf, "\",");
if ((int)strlen(out_buf) < (NCOLS-indent-COL)) strcat(out_buf, " ");
} else {
strcpy(out_buf, "\"");
- strcat (out_buf, p_buf+x+j*y);
+ strcat (out_buf, tempstr.s+x+j*y);
strcat(out_buf, "\",");
if ((int)strlen(out_buf) < (NCOLS-indent-COL)) strcat(out_buf, " ");
}
@@ -1727,17 +1733,17 @@ char p_buf[256], out_buf[NCOLS];
/* 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, p_buf);
+ printf("%s\"%s\"", out_buf, tempstr.s);
first_row = 0;
} else {
indentation(indent+COL);
- printf("%s\"%s\"", out_buf, p_buf);
+ printf("%s\"%s\"", out_buf, tempstr.s);
}
if ((elmtno+i+1) != p_nelmts)
printf(",\n");
else if (compound_data) {
- if ((NCOLS-strlen(out_buf)-strlen(p_buf)-indent-COL) < 2) {
+ if ((NCOLS-strlen(out_buf)-strlen(tempstr.s)-indent-COL) < 2) {
/* 2 for space and ] */
printf("\n");
indentation(indent+COL-3);
@@ -1749,7 +1755,7 @@ char p_buf[256], out_buf[NCOLS];
row_size = 0;
} else {
strcat(out_buf, "\"");
- strcat(out_buf, p_buf);
+ strcat(out_buf, tempstr.s);
strcat(out_buf, "\",");
if ((int)strlen(out_buf) < (NCOLS-indent-COL)) strcat(out_buf, " ");
}