diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-06-16 09:03:11 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-06-16 09:03:11 +0000 |
commit | 1d0e6ef7cc82ec7933447c02aef16d652e202b55 (patch) | |
tree | b1035aba76a36380eee1c24f406e6a03f9c7e54e | |
parent | a1d7876900be567fe0f2d9b161a08a7cde423b29 (diff) | |
download | mpv-1d0e6ef7cc82ec7933447c02aef16d652e202b55.tar.bz2 mpv-1d0e6ef7cc82ec7933447c02aef16d652e202b55.tar.xz |
support lenght-quoting of strings in subopt parser.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15734 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | DOCS/man/en/mplayer.1 | 16 | ||||
-rw-r--r-- | subopt-helper.c | 13 |
2 files changed, 28 insertions, 1 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1 index a52b7ca24d..7bd8da6238 100644 --- a/DOCS/man/en/mplayer.1 +++ b/DOCS/man/en/mplayer.1 @@ -383,6 +383,22 @@ Every 'flag' option has a 'noflag' counterpart, e.g.\& the opposite of the If an option is marked as (XXX only), it will only work in combination with the XXX option or if XXX is compiled in. .PP +.I NOTE: +.PD 0 +.RSs +The suboption parser (used for example for -ao pcm suboptions) supports +a special kind of string-escaping intended for use with external GUIs. +.PP +It has the following format: +.PP +%n%string_of_lenght_n +.PP +Usage example: +.PP +mplayer -ao pcm:file=%10%C:test.wav test.avi +.RE +.PD 1 +.PP You can put all of the options in a configuration file which will be read every time MPlayer is run. The system-wide configuration file 'mplayer.conf' is in your configuration diff --git a/subopt-helper.c b/subopt-helper.c index 611af73e1f..0356e036c4 100644 --- a/subopt-helper.c +++ b/subopt-helper.c @@ -247,10 +247,21 @@ static char const * parse_int( char const * const str, int * const valp ) return endp; } -static char const * parse_str( char const * const str, strarg_t * const valp ) +#define QUOTE_CHAR '%' +static char const * parse_str( char const * str, strarg_t * const valp ) { char const * match = strchr( str, ':' ); + if (str[0] == QUOTE_CHAR) { + int len = 0; + str = &str[1]; + len = (int)strtol(str, (char **)&str, 0); + if (!str || str[0] != QUOTE_CHAR || (len > strlen(str) - 1)) + return NULL; + str = &str[1]; + match = &str[len]; + } + else if ( !match ) match = &str[strlen(str)]; |