diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-09-29 23:23:41 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-09-29 23:23:41 +0000 |
commit | 798b1048015df4ee5a63b7a815a5ba47aa92d34a (patch) | |
tree | a02ea7e718bd8f9672f7d07eb010af953090d062 /m_option.c | |
parent | 050ff7d8bd3209df2e7395b9e23540bc9dd99638 (diff) | |
download | mpv-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.c | 27 |
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; } |