diff linux/strsep.c @ 5393:cbf0fed4d211

Add a configure test for the strsep function (it's missing on solaris) Provide an implementation of strsep in libosdep.a, if it's missing in the system's libc library.
author jkeil
date Fri, 29 Mar 2002 21:24:36 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/linux/strsep.c	Fri Mar 29 21:24:36 2002 +0000
@@ -0,0 +1,42 @@
+/* strsep implementation for systems that do not have it in libc */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "../config.h"
+
+#ifndef HAVE_STRSEP
+char *strsep(char **stringp, const char *delim) {
+  char *begin, *end;
+
+  begin = *stringp;
+  if(begin == NULL)
+    return NULL;
+
+  if(delim[0] == '\0' || delim[1] == '\0') {
+    char ch = delim[0];
+
+    if(ch == '\0')
+      end = NULL;
+    else {
+      if(*begin == ch)
+        end = begin;
+      else if(*begin == '\0')
+        end = NULL;
+      else
+        end = strchr(begin + 1, ch);
+    }
+  }
+  else
+    end = strpbrk(begin, delim);
+
+  if(end) {
+    *end++ = '\0';
+    *stringp = end;
+  }
+  else
+    *stringp = NULL;
+ 
+  return begin;
+}
+#endif