diff options
author | laaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-01 20:05:12 +0000 |
---|---|---|
committer | laaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-01 20:05:12 +0000 |
commit | 619fa401bb417f3a7978e378a21848dcd191f104 (patch) | |
tree | a27c6daae3edfaedf2f697b140d46c126f52f7e6 /subreader.c | |
parent | b064ad2fb8877dd56879b5cd3298a7574c9f5066 (diff) | |
download | mpv-619fa401bb417f3a7978e378a21848dcd191f104.tar.bz2 mpv-619fa401bb417f3a7978e378a21848dcd191f104.tar.xz |
more stabile
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@933 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'subreader.c')
-rw-r--r-- | subreader.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/subreader.c b/subreader.c index 211ce39627..d345f2ab6a 100644 --- a/subreader.c +++ b/subreader.c @@ -110,9 +110,11 @@ subtitle *sub_read_line_sami(FILE *fd, subtitle *current) { char *sub_readtext(char *source, char **dest) { int len=0; - char *p; + char *p=source; - for (p=source;*p!='\r' && *p!='\n' && *p!='|'; p++,len++); + while ( !eol(*p) && *p!= '|' ) { + p++,len++; + } *dest= (char *)malloc (len+1); if (!dest) {return ERR;} @@ -136,21 +138,17 @@ subtitle *sub_read_line_microdvd(FILE *fd,subtitle *current) { do { if (!fgets (line, 1000, fd)) return NULL; - } while (*line=='\n' || *line == '\r' || !*line); - - if (sscanf (line, "{%ld}{%ld}%s", &(current->start), &(current->end),line2) <2) {return ERR;} + } while (sscanf (line, "{%ld}{%ld}%[^\r\n]", &(current->start), &(current->end),line2) <3); - p=line; - while (*p++!='}'); - while (*p++!='}'); + p=line2; next=p, i=0; - while ((next =sub_readtext (next, &(current->text[i])))) { + while (next =sub_readtext (next, &(current->text[i]))) { if (current->text[i]==ERR) {return ERR;} i++; if (i>=SUB_MAX_TEXT) { printf ("Too many lines in a subtitle\n");current->lines=i;return;} } - current->lines=i+1; + current->lines= ++i; return current; } |