changeset 31280:17db8e56de4c

Extract duplicated code into a separate function.
author reimar
date Mon, 07 Jun 2010 19:01:15 +0000
parents 0fc579d95340
children cc43f6d8bb6b
files subreader.c
diffstat 1 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/subreader.c	Mon Jun 07 18:53:20 2010 +0000
+++ b/subreader.c	Mon Jun 07 19:01:15 2010 +0000
@@ -111,6 +111,15 @@
     return NULL;
 }
 
+static void sami_add_line(subtitle *current, char *buffer, char **pos) {
+    char *p = *pos;
+    *p = 0;
+    trail_space(buffer);
+    if (*buffer && current->lines < SUB_MAX_TEXT)
+        current->text[current->lines++] = strdup(buffer);
+    *pos = buffer;
+}
+
 static subtitle *sub_read_line_sami(stream_t* st, subtitle *current, int utf16) {
     static char line[LINE_LEN+1];
     static char *s = NULL, *slacktime_s;
@@ -162,9 +171,7 @@
 	case 3: /* get all text until '<' appears */
 	    if (*s == '\0') break;
 	    else if (!strncasecmp (s, "<br>", 4)) {
-		*p = '\0'; p = text; trail_space (text);
-		if (text[0] != '\0' && current->lines < SUB_MAX_TEXT)
-		    current->text[current->lines++] = strdup (text);
+                sami_add_line(current, text, &p);
 		s += 4;
 	    }
 	    else if ((*s == '{') && !sub_no_text_pp) { state = 5; ++s; continue; }
@@ -243,9 +250,7 @@
     // For the last subtitle
     if (current->end <= 0) {
         current->end = current->start + sub_slacktime;
-	*p = '\0'; trail_space (text);
-	if (text[0] != '\0' && current->lines < SUB_MAX_TEXT)
-	    current->text[current->lines++] = strdup (text);
+        sami_add_line(current, text, &p);
     }
 
     return current;