summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-06-16 09:03:11 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-06-16 09:03:11 +0000
commit1d0e6ef7cc82ec7933447c02aef16d652e202b55 (patch)
treeb1035aba76a36380eee1c24f406e6a03f9c7e54e
parenta1d7876900be567fe0f2d9b161a08a7cde423b29 (diff)
downloadmpv-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.116
-rw-r--r--subopt-helper.c13
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)];