From 0635ddd8f7bbd8ed40ef4e5e01ff116ee959fa34 Mon Sep 17 00:00:00 2001 From: Dan Fandrich Date: Fri, 18 Jun 2010 22:36:45 -0700 Subject: Added code for nonstandard function strsep() Signed-off-by: Dan Fandrich Signed-off-by: Denys Vlasenko --- include/platform.h | 6 ++++++ libbb/platform.c | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/include/platform.h b/include/platform.h index 4bd7a3d2e..0dadf42bd 100644 --- a/include/platform.h +++ b/include/platform.h @@ -16,6 +16,7 @@ #define HAVE_SETBIT 1 #define HAVE_STRCASESTR 1 #define HAVE_STRCHRNUL 1 +#define HAVE_STRSEP 1 #define HAVE_STRSIGNAL 1 #define HAVE_VASPRINTF 1 @@ -353,6 +354,7 @@ typedef unsigned smalluint; # undef HAVE_SETBIT # undef HAVE_STRCASESTR # undef HAVE_STRCHRNUL +# undef HAVE_STRSEP # undef HAVE_STRSIGNAL # undef HAVE_VASPRINTF #endif @@ -391,6 +393,10 @@ extern char *strcasestr(const char *s, const char *pattern) FAST_FUNC; extern char *strchrnul(const char *s, int c) FAST_FUNC; #endif +#ifndef HAVE_STRSEP +extern char *strsep(char **stringp, const char *delim) FAST_FUNC; +#endif + #ifndef HAVE_STRSIGNAL /* Not exactly the same: instead of "Stopped" it shows "STOP" etc */ # define strsignal(sig) get_signame(sig) diff --git a/libbb/platform.c b/libbb/platform.c index 17ad3f75a..7a8b17657 100644 --- a/libbb/platform.c +++ b/libbb/platform.c @@ -107,3 +107,30 @@ char* FAST_FUNC strcasestr(const char *s, const char *pattern) return 0; } #endif + +#ifndef HAVE_STRSEP +/* Copyright (C) 2004 Free Software Foundation, Inc. */ +char* FAST_FUNC strsep(char **stringp, const char *delim) +{ + char *start = *stringp; + char *ptr; + + if (!start) + return NULL; + + if (!*delim) + ptr = start + strlen(start); + else { + ptr = strpbrk(start, delim); + if (!ptr) { + *stringp = NULL; + return start; + } + } + + *ptr = '\0'; + *stringp = ptr + 1; + + return start; +} +#endif -- cgit v1.2.3