Mercurial > mplayer.hg
changeset 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 | d7c586ebbacf |
children | cc405b698747 |
files | configure linux/Makefile linux/strsep.c |
diffstat | 3 files changed, 61 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/configure Fri Mar 29 15:12:41 2002 +0000 +++ b/configure Fri Mar 29 21:24:36 2002 +0000 @@ -1573,6 +1573,21 @@ echores "$_linux_devfs" +echocheck "strsep()" +cat > $TMPC << EOF +#include <string.h> +int main (void) { char *s = "Hello, world!"; (void) strsep(&s, ","); return 0; } +EOF +_strsep=no +cc_check && _strsep=yes +if test "$_strsep" = yes ; then + _def_strsep='#define HAVE_STRSEP 1' +else + _def_strsep='#undef HAVE_STRSEP' +fi +echores "$_strsep" + + echocheck "vsscanf()" cat > $TMPC << EOF #include <stdarg.h> @@ -3484,6 +3499,9 @@ /* Define this if you have shm support */ $_def_shm +/* Define this if your system has strsep */ +$_def_strsep + /* Define this if your system has vsscanf */ $_def_vsscanf
--- a/linux/Makefile Fri Mar 29 15:12:41 2002 +0000 +++ b/linux/Makefile Fri Mar 29 21:24:36 2002 +0000 @@ -3,7 +3,7 @@ LIBNAME = libosdep.a -SRCS=getch2.c timer-lx.c shmem.c # timer.c +SRCS=getch2.c timer-lx.c shmem.c strsep.c # timer.c OBJS=$(SRCS:.c=.o) ifeq ($(TARGET_ARCH_X86),yes)
--- /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