mirror of
https://github.com/mpv-player/mpv
synced 2025-02-16 12:17:12 +00:00
Replace strsep() uses
This function sucks and apparently is not very portable (at least on mingw, the configure check fails). Also remove the emulation of that function from osdep/strsep*, and remove the configure check.
This commit is contained in:
parent
cbdee50f29
commit
20c9dfa616
1
Makefile
1
Makefile
@ -56,7 +56,6 @@ SOURCES-$(MPG123) += audio/decode/ad_mpg123.c
|
|||||||
SOURCES-$(NEED_GETTIMEOFDAY) += osdep/gettimeofday.c
|
SOURCES-$(NEED_GETTIMEOFDAY) += osdep/gettimeofday.c
|
||||||
SOURCES-$(NEED_GLOB) += osdep/glob-win.c
|
SOURCES-$(NEED_GLOB) += osdep/glob-win.c
|
||||||
SOURCES-$(NEED_SHMEM) += osdep/shmem.c
|
SOURCES-$(NEED_SHMEM) += osdep/shmem.c
|
||||||
SOURCES-$(NEED_STRSEP) += osdep/strsep.c
|
|
||||||
SOURCES-$(NETWORKING) += stream/stream_netstream.c \
|
SOURCES-$(NETWORKING) += stream/stream_netstream.c \
|
||||||
stream/asf_mmst_streaming.c \
|
stream/asf_mmst_streaming.c \
|
||||||
stream/asf_streaming.c \
|
stream/asf_streaming.c \
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "osdep/strsep.h"
|
|
||||||
|
|
||||||
#include "af.h"
|
#include "af.h"
|
||||||
|
|
||||||
@ -129,7 +128,13 @@ static struct af_instance* af_create(struct af_stream* s, const char* name_with_
|
|||||||
memset(new,0,sizeof(struct af_instance));
|
memset(new,0,sizeof(struct af_instance));
|
||||||
|
|
||||||
// Check for commandline parameters
|
// Check for commandline parameters
|
||||||
strsep(&cmdline, "=");
|
char *skip = strstr(cmdline, "=");
|
||||||
|
if (skip) {
|
||||||
|
*skip = '\0'; // for name
|
||||||
|
cmdline = skip + 1;
|
||||||
|
} else {
|
||||||
|
cmdline = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// Find filter from name
|
// Find filter from name
|
||||||
if(NULL == (new->info=af_find(name)))
|
if(NULL == (new->info=af_find(name)))
|
||||||
|
15
configure
vendored
15
configure
vendored
@ -1617,19 +1617,6 @@ fi
|
|||||||
echores "$_shm"
|
echores "$_shm"
|
||||||
|
|
||||||
|
|
||||||
echocheck "strsep()"
|
|
||||||
_strsep=no
|
|
||||||
statement_check string.h 'char *s = "Hello, world!"; strsep(&s, ",")' && _strsep=yes
|
|
||||||
if test "$_strsep" = yes ; then
|
|
||||||
def_strsep='#define HAVE_STRSEP 1'
|
|
||||||
need_strsep=no
|
|
||||||
else
|
|
||||||
def_strsep='#undef HAVE_STRSEP'
|
|
||||||
need_strsep=yes
|
|
||||||
fi
|
|
||||||
echores "$_strsep"
|
|
||||||
|
|
||||||
|
|
||||||
echocheck "POSIX select()"
|
echocheck "POSIX select()"
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -3110,7 +3097,6 @@ $(mak_enable "$subarch_all" "$subarch" ARCH)
|
|||||||
|
|
||||||
NEED_GLOB = $need_glob
|
NEED_GLOB = $need_glob
|
||||||
NEED_SHMEM = $need_shmem
|
NEED_SHMEM = $need_shmem
|
||||||
NEED_STRSEP = $need_strsep
|
|
||||||
|
|
||||||
# features
|
# features
|
||||||
ALSA = $_alsa
|
ALSA = $_alsa
|
||||||
@ -3246,7 +3232,6 @@ $def_posix_select
|
|||||||
$def_select
|
$def_select
|
||||||
$def_setmode
|
$def_setmode
|
||||||
$def_shm
|
$def_shm
|
||||||
$def_strsep
|
|
||||||
$def_sysi86
|
$def_sysi86
|
||||||
$def_sysi86_iv
|
$def_sysi86_iv
|
||||||
$def_termcap
|
$def_termcap
|
||||||
|
13
core/bstr.c
13
core/bstr.c
@ -121,6 +121,19 @@ struct bstr bstr_split(struct bstr str, const char *sep, struct bstr *rest)
|
|||||||
return bstr_splice(str, 0, end);
|
return bstr_splice(str, 0, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unlike with bstr_split(), tok is a string, and not a set of char.
|
||||||
|
// If tok is in str, return true, and: concat(out_left, tok, out_right) == str
|
||||||
|
// Otherwise, return false, and set out_left==str, out_right==""
|
||||||
|
bool bstr_split_tok(bstr str, const char *tok, bstr *out_left, bstr *out_right)
|
||||||
|
{
|
||||||
|
bstr bsep = bstr0(tok);
|
||||||
|
int pos = bstr_find(str, bsep);
|
||||||
|
if (pos < 0)
|
||||||
|
pos = str.len;
|
||||||
|
*out_left = bstr_splice(str, 0, pos);
|
||||||
|
*out_right = bstr_cut(str, pos + bsep.len);
|
||||||
|
return pos != str.len;
|
||||||
|
}
|
||||||
|
|
||||||
struct bstr bstr_splice(struct bstr str, int start, int end)
|
struct bstr bstr_splice(struct bstr str, int start, int end)
|
||||||
{
|
{
|
||||||
|
@ -65,6 +65,7 @@ struct bstr *bstr_splitlines(void *talloc_ctx, struct bstr str);
|
|||||||
struct bstr bstr_lstrip(struct bstr str);
|
struct bstr bstr_lstrip(struct bstr str);
|
||||||
struct bstr bstr_strip(struct bstr str);
|
struct bstr bstr_strip(struct bstr str);
|
||||||
struct bstr bstr_split(struct bstr str, const char *sep, struct bstr *rest);
|
struct bstr bstr_split(struct bstr str, const char *sep, struct bstr *rest);
|
||||||
|
bool bstr_split_tok(bstr str, const char *tok, bstr *out_left, bstr *out_right);
|
||||||
struct bstr bstr_splice(struct bstr str, int start, int end);
|
struct bstr bstr_splice(struct bstr str, int start, int end);
|
||||||
long long bstrtoll(struct bstr str, struct bstr *rest, int base);
|
long long bstrtoll(struct bstr str, struct bstr *rest, int base);
|
||||||
double bstrtod(struct bstr str, struct bstr *rest);
|
double bstrtod(struct bstr str, struct bstr *rest);
|
||||||
|
@ -51,7 +51,6 @@
|
|||||||
#include "audio/filter/af.h"
|
#include "audio/filter/af.h"
|
||||||
#include "video/decode/dec_video.h"
|
#include "video/decode/dec_video.h"
|
||||||
#include "audio/decode/dec_audio.h"
|
#include "audio/decode/dec_audio.h"
|
||||||
#include "osdep/strsep.h"
|
|
||||||
#include "sub/spudec.h"
|
#include "sub/spudec.h"
|
||||||
#include "core/path.h"
|
#include "core/path.h"
|
||||||
#include "sub/ass_mp.h"
|
#include "sub/ass_mp.h"
|
||||||
@ -2266,16 +2265,19 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
|
|||||||
if (!sh_audio)
|
if (!sh_audio)
|
||||||
break;
|
break;
|
||||||
char *af_args = strdup(cmd->args[0].v.s);
|
char *af_args = strdup(cmd->args[0].v.s);
|
||||||
char *af_commands = af_args;
|
bstr af_commands = bstr0(af_args);
|
||||||
char *af_command;
|
|
||||||
struct af_instance *af;
|
struct af_instance *af;
|
||||||
while ((af_command = strsep(&af_commands, ",")) != NULL) {
|
while (af_commands.len) {
|
||||||
|
bstr af_command;
|
||||||
|
bstr_split_tok(af_commands, ",", &af_command, &af_commands);
|
||||||
|
char *af_command0 = bstrdup0(NULL, af_command);
|
||||||
if (cmd->id == MP_CMD_AF_DEL) {
|
if (cmd->id == MP_CMD_AF_DEL) {
|
||||||
af = af_get(mpctx->mixer.afilter, af_command);
|
af = af_get(mpctx->mixer.afilter, af_command0);
|
||||||
if (af != NULL)
|
if (af != NULL)
|
||||||
af_remove(mpctx->mixer.afilter, af);
|
af_remove(mpctx->mixer.afilter, af);
|
||||||
} else
|
} else
|
||||||
af_add(mpctx->mixer.afilter, af_command);
|
af_add(mpctx->mixer.afilter, af_command0);
|
||||||
|
talloc_free(af_command0);
|
||||||
}
|
}
|
||||||
reinit_audio_chain(mpctx);
|
reinit_audio_chain(mpctx);
|
||||||
free(af_args);
|
free(af_args);
|
||||||
|
11
demux/mf.c
11
demux/mf.c
@ -35,7 +35,6 @@
|
|||||||
#else
|
#else
|
||||||
#include "osdep/glob.h"
|
#include "osdep/glob.h"
|
||||||
#endif
|
#endif
|
||||||
#include "osdep/strsep.h"
|
|
||||||
|
|
||||||
#include "core/mp_msg.h"
|
#include "core/mp_msg.h"
|
||||||
#include "stream/stream.h"
|
#include "stream/stream.h"
|
||||||
@ -91,9 +90,14 @@ mf_t* open_mf_pattern(char * filename)
|
|||||||
if( strchr( filename,',') )
|
if( strchr( filename,',') )
|
||||||
{
|
{
|
||||||
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] filelist: %s\n",filename );
|
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] filelist: %s\n",filename );
|
||||||
|
bstr bfilename = bstr0(filename);
|
||||||
|
|
||||||
while ( ( fname=strsep( &filename,"," ) ) )
|
while (bfilename.len)
|
||||||
{
|
{
|
||||||
|
bstr bfname;
|
||||||
|
bstr_split_tok(bfilename, ",", &bfname, &bfilename);
|
||||||
|
char *fname = bstrdup0(NULL, bfname);
|
||||||
|
|
||||||
if ( !mp_path_exists( fname ) )
|
if ( !mp_path_exists( fname ) )
|
||||||
{
|
{
|
||||||
mp_msg( MSGT_STREAM,MSGL_V,"[mf] file not found: '%s'\n",fname );
|
mp_msg( MSGT_STREAM,MSGL_V,"[mf] file not found: '%s'\n",fname );
|
||||||
@ -101,10 +105,11 @@ mf_t* open_mf_pattern(char * filename)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
mf->names=realloc( mf->names,( mf->nr_of_files + 1 ) * sizeof( char* ) );
|
mf->names=realloc( mf->names,( mf->nr_of_files + 1 ) * sizeof( char* ) );
|
||||||
mf->names[mf->nr_of_files]=strdup( fname );
|
mf->names[mf->nr_of_files] = strdup(fname);
|
||||||
// mp_msg( MSGT_STREAM,MSGL_V,"[mf] added file %d.: %s\n",mf->nr_of_files,mf->names[mf->nr_of_files] );
|
// mp_msg( MSGT_STREAM,MSGL_V,"[mf] added file %d.: %s\n",mf->nr_of_files,mf->names[mf->nr_of_files] );
|
||||||
mf->nr_of_files++;
|
mf->nr_of_files++;
|
||||||
}
|
}
|
||||||
|
talloc_free(fname);
|
||||||
}
|
}
|
||||||
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files );
|
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files );
|
||||||
|
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* strsep implementation for systems that do not have it in libc
|
|
||||||
*
|
|
||||||
* This file is part of MPlayer.
|
|
||||||
*
|
|
||||||
* MPlayer is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* MPlayer is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#include "strsep.h"
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* strsep implementation for systems that do not have it in libc
|
|
||||||
*
|
|
||||||
* This file is part of MPlayer.
|
|
||||||
*
|
|
||||||
* MPlayer is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* MPlayer is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*/
|
|
||||||
#ifndef MPLAYER_STRSEP_H
|
|
||||||
#define MPLAYER_STRSEP_H
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#ifndef HAVE_STRSEP
|
|
||||||
char *strsep(char **stringp, const char *delim);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* MPLAYER_STRSEP_H */
|
|
Loading…
Reference in New Issue
Block a user