Use ddsrt_strsep instead of ddsrt_strtok_r

The two do essentially the same think, and ddsrt_strtok_r was only used
in one place.  (Triggered by Solaris 2.6 not providing strtok_r.)

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2019-07-05 23:57:26 +02:00 committed by eboasson
parent 0d33462664
commit 96e09d2d4e
4 changed files with 3 additions and 66 deletions

View file

@ -52,21 +52,6 @@ ddsrt_strncasecmp(
size_t n)
ddsrt_nonnull((1,2));
/**
* @brief Split string into tokens.
*
* @param[in] str String to split into tokens.
* @param[in] delim Characters that delimit a token.
* @param[in,out] saveptr Pointer to a char * used internally.
*
* @returns The next token or NULL if there are no more tokens.
*/
DDS_EXPORT char *
ddsrt_strtok_r(
char *str,
const char *delim,
char **saveptr);
/**
* @brief Extract token from string.
*

View file

@ -12,9 +12,6 @@
#include <assert.h>
#include <ctype.h>
#include <stdint.h>
#if defined(__IAR_SYSTEMS_ICC__)
#define _DLIB_ADD_EXTRA_SYMBOLS /* Export strtok_r. */
#endif
#include <string.h>
#include "dds/ddsrt/heap.h"
@ -65,19 +62,6 @@ ddsrt_strncasecmp(
return cr;
}
char *
ddsrt_strtok_r(
char *str,
const char *delim,
char **saveptr)
{
#if _WIN32
return strtok_s(str, delim, saveptr);
#else
return strtok_r(str, delim, saveptr);
#endif
}
char *
ddsrt_strsep(char **str, const char *sep)
{

View file

@ -67,35 +67,3 @@ CU_Theory((const char *s1, const char *s2, size_t n, eq_t e), ddsrt_strncasecmp,
CU_ASSERT((e == eq && r == 0) || (e == lt && r < 0) || (e == gt && r > 0));
}
CU_Test(ddsrt_string, strtok_r)
{
char *res;
char *saveptr;
char ts1[] = "123,234";
char ts2[] = ",;,123abc,,456,:,";
char ts3[] = ",,,123,,456,789,,,";
res = ddsrt_strtok_r(ts1, ",", &saveptr);
CU_ASSERT(strcmp(res, "123") == 0);
res = ddsrt_strtok_r( NULL, ",", &saveptr);
CU_ASSERT(strcmp(res, "234") == 0);
res = ddsrt_strtok_r( NULL, ",", &saveptr);
CU_ASSERT(res == NULL);
res = ddsrt_strtok_r(ts2, ",;", &saveptr);
CU_ASSERT(strcmp(res, "123abc") == 0);
res = ddsrt_strtok_r( NULL, ",", &saveptr);
CU_ASSERT(strcmp(res, "456") == 0);
res = ddsrt_strtok_r( NULL, ",:", &saveptr);
CU_ASSERT(res == NULL);
res = ddsrt_strtok_r(ts3, ",", &saveptr);
CU_ASSERT(strcmp(res, "123") == 0);
res = ddsrt_strtok_r( NULL, ",", &saveptr);
CU_ASSERT(strcmp(res, "456") == 0);
res = ddsrt_strtok_r( NULL, ",", &saveptr);
CU_ASSERT(strcmp(res, "789") == 0);
res = ddsrt_strtok_r( NULL, ",:", &saveptr);
CU_ASSERT(res == NULL);
}

View file

@ -2516,10 +2516,10 @@ int main(int argc, char *argv[]) {
}
break;
case 'S': {
char *copy = dds_string_dup(optarg), *tok, *lasts;
char *copy = dds_string_dup(optarg), *tok, *cursor = copy;
if (copy == NULL)
abort();
tok = ddsrt_strtok_r(copy, ",", &lasts);
tok = ddsrt_strsep(&cursor, ",");
while (tok) {
if (strcmp(tok, "pr") == 0 || strcmp(tok, "pre-read") == 0)
spec[specidx].rd.print_match_pre_read = 1;
@ -2551,7 +2551,7 @@ int main(int argc, char *argv[]) {
fprintf (stderr, "-S %s: invalid event\n", tok);
exit(2);
}
tok = ddsrt_strtok_r(NULL, ",", &lasts);
tok = ddsrt_strsep(&cursor, ",");
}
dds_free(copy);
}