aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2010-06-18 22:36:45 -0700
committerDenys Vlasenko <vda.linux@googlemail.com>2010-06-19 20:03:18 +0200
commit0635ddd8f7bbd8ed40ef4e5e01ff116ee959fa34 (patch)
treee1e9d33dc63415885cb0273a663af5e1fb6db578
parentfdd7b566ecdc174907f38d9389b28ba842d2b4bf (diff)
downloadbusybox-w32-0635ddd8f7bbd8ed40ef4e5e01ff116ee959fa34.tar.gz
busybox-w32-0635ddd8f7bbd8ed40ef4e5e01ff116ee959fa34.tar.bz2
busybox-w32-0635ddd8f7bbd8ed40ef4e5e01ff116ee959fa34.zip
Added code for nonstandard function strsep()
Signed-off-by: Dan Fandrich <dan@coneharvesters.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--include/platform.h6
-rw-r--r--libbb/platform.c27
2 files changed, 33 insertions, 0 deletions
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 @@
16#define HAVE_SETBIT 1 16#define HAVE_SETBIT 1
17#define HAVE_STRCASESTR 1 17#define HAVE_STRCASESTR 1
18#define HAVE_STRCHRNUL 1 18#define HAVE_STRCHRNUL 1
19#define HAVE_STRSEP 1
19#define HAVE_STRSIGNAL 1 20#define HAVE_STRSIGNAL 1
20#define HAVE_VASPRINTF 1 21#define HAVE_VASPRINTF 1
21 22
@@ -353,6 +354,7 @@ typedef unsigned smalluint;
353# undef HAVE_SETBIT 354# undef HAVE_SETBIT
354# undef HAVE_STRCASESTR 355# undef HAVE_STRCASESTR
355# undef HAVE_STRCHRNUL 356# undef HAVE_STRCHRNUL
357# undef HAVE_STRSEP
356# undef HAVE_STRSIGNAL 358# undef HAVE_STRSIGNAL
357# undef HAVE_VASPRINTF 359# undef HAVE_VASPRINTF
358#endif 360#endif
@@ -391,6 +393,10 @@ extern char *strcasestr(const char *s, const char *pattern) FAST_FUNC;
391extern char *strchrnul(const char *s, int c) FAST_FUNC; 393extern char *strchrnul(const char *s, int c) FAST_FUNC;
392#endif 394#endif
393 395
396#ifndef HAVE_STRSEP
397extern char *strsep(char **stringp, const char *delim) FAST_FUNC;
398#endif
399
394#ifndef HAVE_STRSIGNAL 400#ifndef HAVE_STRSIGNAL
395/* Not exactly the same: instead of "Stopped" it shows "STOP" etc */ 401/* Not exactly the same: instead of "Stopped" it shows "STOP" etc */
396# define strsignal(sig) get_signame(sig) 402# 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)
107 return 0; 107 return 0;
108} 108}
109#endif 109#endif
110
111#ifndef HAVE_STRSEP
112/* Copyright (C) 2004 Free Software Foundation, Inc. */
113char* FAST_FUNC strsep(char **stringp, const char *delim)
114{
115 char *start = *stringp;
116 char *ptr;
117
118 if (!start)
119 return NULL;
120
121 if (!*delim)
122 ptr = start + strlen(start);
123 else {
124 ptr = strpbrk(start, delim);
125 if (!ptr) {
126 *stringp = NULL;
127 return start;
128 }
129 }
130
131 *ptr = '\0';
132 *stringp = ptr + 1;
133
134 return start;
135}
136#endif