1
mirror of https://github.com/mpv-player/mpv synced 2024-08-04 14:59:58 +02:00

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.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5394 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
jkeil 2002-03-29 21:24:36 +00:00
parent d40f8f30c2
commit de4701d8bb
3 changed files with 61 additions and 1 deletions

18
configure vendored
View File

@ -1573,6 +1573,21 @@ echocheck "linux devfs"
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 @@ $_def_zlib
/* 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

View File

@ -3,7 +3,7 @@ include ../config.mak
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)

42
linux/strsep.c Normal file
View File

@ -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