diff options
author | Frank Berghaus <berghaus@cern.ch> | 2022-09-21 16:50:17 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-21 16:50:17 (GMT) |
commit | 100b22e6c23c44a082fd69b8c05a63c7492083f7 (patch) | |
tree | 744a5409278b46f62765dfe23345d0b6a3c66dfb /test | |
parent | d491c33a72c9e6cabe10a7508c1cc76c1d638479 (diff) | |
download | hdf5-100b22e6c23c44a082fd69b8c05a63c7492083f7.zip hdf5-100b22e6c23c44a082fd69b8c05a63c7492083f7.tar.gz hdf5-100b22e6c23c44a082fd69b8c05a63c7492083f7.tar.bz2 |
Use case-insensitive comparison for headers fix #2100 (#2101)
* Use case-inseneitive comparison for headers
HTTP headers should be case-insensitive. Use case-insensitive string
comparisons when working with HTTP header responses to ensure
compatibility.
* Revert "Use case-inseneitive comparison for headers"
This reverts commit a02f591723506b62b7208449be6eef7122120398
* Ignore case when searching HTTP header responses
Looking up the Content-Length in the header returned by S3 storage
endpoints should ignore case. To guarantee portability implement a
function for case-insensitive string search, because it is non-standard.
* Add an _ after H5 for the strcasestr implementation
It is a private function and should sport that underscore.
* Remove author comment from the doc comment
* Use search function defined by system if available
Check whether the system provides a function implementing case
insensitive string searches. Only use the custom implementation if the
system does not provide the functionality.
* Add tests for case-insensitive search
Basic tests:
- Search for empty string
- Search with exact match
- Search with case-insensitive match
- search with no match
* Enforce clang-format style
Some variable definitions in the th5_system tests did not conform to
clang-format's expectations. Updated the offending lines.
* Correct comment describing test case
* Added some spaces to please clang-format
* Ignore discarding const
Ask the compiler to ignore discarding the const when retunring a match from H5_strcasestr
Co-authored-by: Frank Berghaus <frank.berghaus@mpcdf.mpg.de>
Diffstat (limited to 'test')
-rw-r--r-- | test/th5_system.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/th5_system.c b/test/th5_system.c index 09570cf..784cb3f 100644 --- a/test/th5_system.c +++ b/test/th5_system.c @@ -438,6 +438,31 @@ test_h5_basename(void) } static void +test_h5_strcasestr(void) +{ + const char *const haystack = "My test string"; + char *str = NULL; + + MESSAGE(5, ("Testing H5_strcasestr\n")); + + /* check that H5_strcasestr returns target in empty search */ + str = H5_strcasestr(haystack, ""); + CHECK_PTR_EQ(str, haystack, "H5_strcasestr search for empty"); + + /* Check that H5_strcasestr find a string of same case */ + str = H5_strcasestr(haystack, "string"); + CHECK_PTR_EQ(str, &(haystack[8]), "H5_strcasestr search same case"); + + /* Check that H5_strcasestr find a string of different case */ + str = H5_strcasestr(haystack, "sTrInG"); + CHECK_PTR_EQ(str, &(haystack[8]), "H5_strcasestr search different case"); + + /* Check that H5_strcasestr returns NULL if no match is found */ + str = H5_strcasestr(haystack, "nomatch"); + CHECK_PTR_NULL(str, "H5_strcasestr search with no match"); +} + +static void test_h5_strndup(void) { #ifdef H5_HAVE_WIN32_API @@ -495,6 +520,7 @@ test_h5_system(void) test_h5_dirname(); test_h5_basename(); + test_h5_strcasestr(); test_h5_strndup(); } |