summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/lib/h5tools_str.c25
-rw-r--r--tools/testfiles/tenum.ddl36
-rw-r--r--tools/testfiles/tenum.h5bin1560 -> 2128 bytes
-rw-r--r--tools/testfiles/tenum.h5.xml23
4 files changed, 45 insertions, 39 deletions
diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c
index b3ee8e3..0ed66b4 100644
--- a/tools/lib/h5tools_str.c
+++ b/tools/lib/h5tools_str.c
@@ -962,15 +962,24 @@ h5tools_escape(char *s/*in,out*/, size_t size, int escape_spaces)
size_t n = strlen(s);
const char *escape;
char octal[8];
-
+
for (i = 0; i < n; i++) {
switch (s[i]) {
- case '"':
+ case '\'':
+ escape = "\\\'";
+ break;
+ case '\"':
escape = "\\\"";
break;
case '\\':
escape = "\\\\";
break;
+ case '\?':
+ escape = "\\\?";
+ break;
+ case '\a':
+ escape = "\\a";
+ break;
case '\b':
escape = "\\b";
break;
@@ -986,11 +995,11 @@ h5tools_escape(char *s/*in,out*/, size_t size, int escape_spaces)
case '\t':
escape = "\\t";
break;
- case ' ':
- escape = escape_spaces ? "\\ " : NULL;
+ case '\v':
+ escape = "\\v";
break;
default:
- if (!isprint((int)*s)) {
+ if (!isprint(s[i])) {
sprintf(octal, "\\%03o", (unsigned char)s[i]);
escape = octal;
} else {
@@ -1007,10 +1016,10 @@ h5tools_escape(char *s/*in,out*/, size_t size, int escape_spaces)
/*would overflow*/
return NULL;
- memmove(s + i + esc_size, s + i, (n - i) + 1); /*make room*/
+ memmove(s + i + esc_size, s + i + 1, n - i); /*make room*/
memcpy(s + i, escape, esc_size); /*insert*/
- n += esc_size;
- i += esc_size - 1;
+ n += esc_size - 1; /* adjust total string size */
+ i += esc_size; /* adjust string position */
}
}
diff --git a/tools/testfiles/tenum.ddl b/tools/testfiles/tenum.ddl
index fdd3a60..496647d 100644
--- a/tools/testfiles/tenum.ddl
+++ b/tools/testfiles/tenum.ddl
@@ -3,30 +3,24 @@ Expected output for 'h5dump tenum.h5'
#############################
HDF5 "tenum.h5" {
GROUP "/" {
- DATATYPE "enum normal" {
- H5T_ENUM
- { H5T_STD_I32BE;
- "RED" 0;
- "GREEN" 1;
- "BLUE" 2;
- "WHITE" 3;
- "BLACK" 4;
+ DATATYPE "enum normal" H5T_ENUM {
+ H5T_STD_I32LE;
+ "RED" 0;
+ "GREEN
+green" 1;
+ "BLUE blue" 2;
+ "WHITE "white"" 3;
+ "BLACK 'black'" 4;
};
- }
+
DATASET "table" {
- DATATYPE { H5T_ENUM
- { H5T_STD_I32BE;
- "RED" 0;
- "GREEN" 1;
- "BLUE" 2;
- "WHITE" 3;
- "BLACK" 4;
- }
- }
- DATASPACE { SIMPLE ( 20 ) / ( 20 ) }
+ DATATYPE "/enum normal"
+ DATASPACE SIMPLE { ( 20 ) / ( 20 ) }
DATA {
- RED, GREEN, BLUE, GREEN, WHITE, WHITE, BLACK, GREEN, BLUE, RED, RED,
- BLUE, GREEN, BLACK, WHITE, RED, WHITE, GREEN, GREEN, BLUE
+ RED, GREEN\ngreen, BLUE blue, GREEN\ngreen, WHITE \"white\",
+ WHITE \"white\", BLACK \'black\', GREEN\ngreen, BLUE blue, RED, RED,
+ BLUE blue, GREEN\ngreen, BLACK \'black\', WHITE \"white\", RED,
+ WHITE \"white\", GREEN\ngreen, GREEN\ngreen, BLUE blue
}
}
}
diff --git a/tools/testfiles/tenum.h5 b/tools/testfiles/tenum.h5
index 89a3379..667be98 100644
--- a/tools/testfiles/tenum.h5
+++ b/tools/testfiles/tenum.h5
Binary files differ
diff --git a/tools/testfiles/tenum.h5.xml b/tools/testfiles/tenum.h5.xml
index 0d6c3dd..231d9cd 100644
--- a/tools/testfiles/tenum.h5.xml
+++ b/tools/testfiles/tenum.h5.xml
@@ -3,14 +3,14 @@ Expected output for 'h5dump --xml tenum.h5'
#############################
<?xml version="1.0" encoding="UTF-8"?>
<hdf5:HDF5-File xmlns:hdf5="http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hdf.ncsa.uiuc.edu/DTDs/HDF5File http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File.xsd">
-<hdf5:RootGroup OBJ-XID="xid_696" H5Path="/">
- <hdf5:NamedDataType Name="enum normal" OBJ-XID="xid_744" H5Path="/enum normal" Parents="xid_696" H5ParentPaths="/">
+<hdf5:RootGroup OBJ-XID="xid_928" H5Path="/">
+ <hdf5:NamedDataType Name="enum normal" OBJ-XID="xid_976" H5Path="/enum normal" Parents="xid_928" H5ParentPaths="/">
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:EnumType Nelems="5">
<hdf5:DataType>
<hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ <hdf5:IntegerType ByteOrder="LE" Sign="true" Size="4" />
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:EnumElement>
@@ -21,24 +21,25 @@ Expected output for 'h5dump --xml tenum.h5'
</hdf5:EnumValue>
<hdf5:EnumElement>
GREEN
+green
</hdf5:EnumElement>
<hdf5:EnumValue>
1
</hdf5:EnumValue>
<hdf5:EnumElement>
- BLUE
+ BLUE blue
</hdf5:EnumElement>
<hdf5:EnumValue>
2
</hdf5:EnumValue>
<hdf5:EnumElement>
- WHITE
+ WHITE &quot;white&quot;
</hdf5:EnumElement>
<hdf5:EnumValue>
3
</hdf5:EnumValue>
<hdf5:EnumElement>
- BLACK
+ BLACK &apos;black&apos;
</hdf5:EnumElement>
<hdf5:EnumValue>
4
@@ -47,7 +48,7 @@ Expected output for 'h5dump --xml tenum.h5'
</hdf5:AtomicType>
</hdf5:DataType>
</hdf5:NamedDataType>
- <hdf5:Dataset Name="table" OBJ-XID="xid_1152" H5Path= "/table" Parents="xid_696" H5ParentPaths="/">
+ <hdf5:Dataset Name="table" OBJ-XID="xid_1384" H5Path= "/table" Parents="xid_928" H5ParentPaths="/">
<hdf5:StorageLayout>
<hdf5:ContiguousLayout/>
</hdf5:StorageLayout>
@@ -61,11 +62,13 @@ Expected output for 'h5dump --xml tenum.h5'
<hdf5:Dimension DimSize="20" MaxDimSize="20"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
- <hdf5:NamedDataTypePtr OBJ-XID="xid_744" H5Path="/enum normal" />
+ <hdf5:NamedDataTypePtr OBJ-XID="xid_976" H5Path="/enum normal" />
<hdf5:Data>
<hdf5:DataFromFile>
- RED GREEN BLUE GREEN WHITE WHITE BLACK GREEN BLUE RED RED BLUE GREEN
- BLACK WHITE RED WHITE GREEN GREEN BLUE
+ RED GREEN\ngreen BLUE blue GREEN\ngreen WHITE \"white\" WHITE \"white\"
+ BLACK \'black\' GREEN\ngreen BLUE blue RED RED BLUE blue GREEN\ngreen
+ BLACK \'black\' WHITE \"white\" RED WHITE \"white\" GREEN\ngreen
+ GREEN\ngreen BLUE blue
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Dataset>