diff options
author | mosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-08-25 09:12:28 +0000 |
---|---|---|
committer | mosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-08-25 09:12:28 +0000 |
commit | e20785db5002446bd5700d48183d9f2d7803dc66 (patch) | |
tree | db77de5b8cc36b220f55c0285369e93bcea2890b /subreader.c | |
parent | de38c06bee3ec1fde966283536088927559341c3 (diff) | |
download | mpv-e20785db5002446bd5700d48183d9f2d7803dc66.tar.bz2 mpv-e20785db5002446bd5700d48183d9f2d7803dc66.tar.xz |
Support for case insensitive string matching in SAMI subtitle files. Patch by Bruno Lecointre.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10693 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'subreader.c')
-rw-r--r-- | subreader.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/subreader.c b/subreader.c index de618c1af0..93629a3f57 100644 --- a/subreader.c +++ b/subreader.c @@ -74,6 +74,20 @@ static void trail_space(char *s) { while (i > 0 && isspace(s[i])) s[i--] = '\0'; } +static char *stristr(const char *haystack, const char *needle) { + int len = 0; + const char *p = haystack; + + if (!(haystack && needle)) return NULL; + + len=strlen(needle); + while (*p != '\0') { + if (strncasecmp(p, needle, len) == 0) return (char*)p; + p++; + } + + return NULL; +} subtitle *sub_read_line_sami(FILE *fd, subtitle *current) { static char line[LINE_LEN+1]; @@ -92,11 +106,11 @@ subtitle *sub_read_line_sami(FILE *fd, subtitle *current) { switch (state) { case 0: /* find "START=" or "Slacktime:" */ - slacktime_s = strstr (s, "Slacktime:"); + slacktime_s = stristr (s, "Slacktime:"); if (slacktime_s) sub_slacktime = strtol (slacktime_s+10, NULL, 0) / 10; - s = strstr (s, "Start="); + s = stristr (s, "Start="); if (s) { current->start = strtol (s + 6, &s, 0) / 10; state = 1; continue; @@ -104,7 +118,7 @@ subtitle *sub_read_line_sami(FILE *fd, subtitle *current) { break; case 1: /* find "<P" */ - if ((s = strstr (s, "<P"))) { s += 2; state = 2; continue; } + if ((s = stristr (s, "<P"))) { s += 2; state = 2; continue; } break; case 2: /* find ">" */ @@ -131,7 +145,7 @@ subtitle *sub_read_line_sami(FILE *fd, subtitle *current) { continue; case 4: /* get current->end or skip <TAG> */ - q = strstr (s, "Start="); + q = stristr (s, "Start="); if (q) { current->end = strtol (q + 6, &q, 0) / 10 - 1; *p = '\0'; trail_space (text); |