Added code for nonstandard function strsep()

Signed-off-by: Dan Fandrich <dan@coneharvesters.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/include/platform.h b/include/platform.h
index 4bd7a3d..0dadf42 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 @@
 # 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 *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 17ad3f7..7a8b176 100644
--- a/libbb/platform.c
+++ b/libbb/platform.c
@@ -107,3 +107,30 @@
 	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