summaryrefslogtreecommitdiffstats
path: root/m_option.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-09-29 23:23:41 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-09-29 23:23:41 +0000
commit798b1048015df4ee5a63b7a815a5ba47aa92d34a (patch)
treea02ea7e718bd8f9672f7d07eb010af953090d062 /m_option.c
parent050ff7d8bd3209df2e7395b9e23540bc9dd99638 (diff)
downloadmpv-798b1048015df4ee5a63b7a815a5ba47aa92d34a.tar.bz2
mpv-798b1048015df4ee5a63b7a815a5ba47aa92d34a.tar.xz
Fix broken parse_time_size, it would cause MPlayer to parse its parameter twice,
e.g. "mplayer file -endpos 01" would try to play the file "01", too git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@20009 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'm_option.c')
-rw-r--r--m_option.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/m_option.c b/m_option.c
index c5a718fe63..1812d1ab54 100644
--- a/m_option.c
+++ b/m_option.c
@@ -1178,13 +1178,7 @@ m_option_type_t m_option_type_afmt = {
// Time or size (-endpos)
static int parse_time_size(m_option_t* opt,char *name, char *param, void* dst, int src) {
-
- if (dst == NULL)
- return 0;
-
- m_time_size_t* ts = dst;
- ts->pos=0;
-
+ m_time_size_t ts;
char unit[4];
int a,b;
float d;
@@ -1193,9 +1187,10 @@ static int parse_time_size(m_option_t* opt,char *name, char *param, void* dst, i
if (param == NULL || strlen(param) == 0)
return M_OPT_MISSING_PARAM;
+ ts.pos=0;
/* End at size parsing */
if(sscanf(param, "%lf%3s", &end_at, unit) == 2) {
- ts->type = END_AT_SIZE;
+ ts.type = END_AT_SIZE;
if(!strcasecmp(unit, "b"))
;
else if(!strcasecmp(unit, "kb"))
@@ -1205,11 +1200,11 @@ static int parse_time_size(m_option_t* opt,char *name, char *param, void* dst, i
else if(!strcasecmp(unit, "gb"))
end_at *= 1024*1024*1024;
else
- ts->type = END_AT_NONE;
+ ts.type = END_AT_NONE;
- if (ts->type == END_AT_SIZE) {
- ts->pos = end_at;
- return 1;
+ if (ts.type == END_AT_SIZE) {
+ ts.pos = end_at;
+ goto out;
}
}
@@ -1227,9 +1222,11 @@ static int parse_time_size(m_option_t* opt,char *name, char *param, void* dst, i
return M_OPT_INVALID;
}
- ts->type = END_AT_TIME;
- ts->pos = end_at;
-
+ ts.type = END_AT_TIME;
+ ts.pos = end_at;
+out:
+ if(dst)
+ *(m_time_size_t *)dst = ts;
return 1;
}