mirror of
https://github.com/mpv-player/mpv
synced 2025-01-08 16:10:29 +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"
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
@ -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
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