mirror of
https://github.com/mpv-player/mpv
synced 2025-01-09 08:29:36 +00: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:
parent
d40f8f30c2
commit
de4701d8bb
18
configure
vendored
18
configure
vendored
@ -1573,6 +1573,21 @@ echocheck "linux devfs"
|
|||||||
echores "$_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()"
|
echocheck "vsscanf()"
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
@ -3484,6 +3499,9 @@ $_def_zlib
|
|||||||
/* Define this if you have shm support */
|
/* Define this if you have shm support */
|
||||||
$_def_shm
|
$_def_shm
|
||||||
|
|
||||||
|
/* Define this if your system has strsep */
|
||||||
|
$_def_strsep
|
||||||
|
|
||||||
/* Define this if your system has vsscanf */
|
/* Define this if your system has vsscanf */
|
||||||
$_def_vsscanf
|
$_def_vsscanf
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ include ../config.mak
|
|||||||
|
|
||||||
LIBNAME = libosdep.a
|
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)
|
OBJS=$(SRCS:.c=.o)
|
||||||
|
|
||||||
ifeq ($(TARGET_ARCH_X86),yes)
|
ifeq ($(TARGET_ARCH_X86),yes)
|
||||||
|
42
linux/strsep.c
Normal file
42
linux/strsep.c
Normal 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
|
Loading…
Reference in New Issue
Block a user