[FFmpeg-cvslog] r19124 - trunk/libavformat/http.c

jai_menon subversion
Sat Jun 6 18:44:21 CEST 2009


Author: jai_menon
Date: Sat Jun  6 18:44:21 2009
New Revision: 19124

Log:
Introduce http_get_line and modify http_connect to use http_get_line.
Patch by Peter Holik <$firstname @ $lastname . at>

Modified:
   trunk/libavformat/http.c

Modified: trunk/libavformat/http.c
==============================================================================
--- trunk/libavformat/http.c	Sat Jun  6 14:42:11 2009	(r19123)
+++ trunk/libavformat/http.c	Sat Jun  6 18:44:21 2009	(r19124)
@@ -151,6 +151,30 @@ static int http_getc(HTTPContext *s)
     return *s->buf_ptr++;
 }
 
+static int http_get_line(HTTPContext *s, char *line, int line_size)
+{
+    int ch;
+    char *q;
+
+    q = line;
+    for(;;) {
+        ch = http_getc(s);
+        if (ch < 0)
+            return AVERROR(EIO);
+        if (ch == '\n') {
+            /* process line */
+            if (q > line && q[-1] == '\r')
+                q--;
+            *q = '\0';
+
+            return 0;
+        } else {
+            if ((q - line) < line_size - 1)
+                *q++ = ch;
+        }
+    }
+}
+
 static int process_line(URLContext *h, char *line, int line_count,
                         int *new_location)
 {
@@ -209,8 +233,8 @@ static int http_connect(URLContext *h, c
                         const char *auth, int *new_location)
 {
     HTTPContext *s = h->priv_data;
-    int post, err, ch;
-    char line[1024], *q;
+    int post, err;
+    char line[1024];
     char *auth_b64;
     int auth_b64_len = (strlen(auth) + 2) / 3 * 4 + 1;
     int64_t off = s->off;
@@ -251,16 +275,9 @@ static int http_connect(URLContext *h, c
     }
 
     /* wait for header */
-    q = line;
     for(;;) {
-        ch = http_getc(s);
-        if (ch < 0)
+        if (http_get_line(s, line, sizeof(line)) < 0)
             return AVERROR(EIO);
-        if (ch == '\n') {
-            /* process line */
-            if (q > line && q[-1] == '\r')
-                q--;
-            *q = '\0';
 #ifdef DEBUG
             printf("header='%s'\n", line);
 #endif
@@ -270,11 +287,6 @@ static int http_connect(URLContext *h, c
             if (err == 0)
                 break;
             s->line_count++;
-            q = line;
-        } else {
-            if ((q - line) < sizeof(line) - 1)
-                *q++ = ch;
-        }
     }
 
     return (off == s->off) ? 0 : -1;



More information about the ffmpeg-cvslog mailing list