summaryrefslogtreecommitdiffstats
path: root/subreader.c
diff options
context:
space:
mode:
authorlaaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-01 20:05:12 +0000
committerlaaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-01 20:05:12 +0000
commit619fa401bb417f3a7978e378a21848dcd191f104 (patch)
treea27c6daae3edfaedf2f697b140d46c126f52f7e6 /subreader.c
parentb064ad2fb8877dd56879b5cd3298a7574c9f5066 (diff)
downloadmpv-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.c18
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;
}