]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - libavformat/tcp.c
Makefile.omk sucks in config generated by config4omk.
[frescor/ffmpeg.git] / libavformat / tcp.c
index 21a66a22b5f418e9b55c26bd23cbff4187df938b..b7983e7c9899c327a5d50a11c522172c2bdab445 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * TCP protocol
- * Copyright (c) 2002 Fabrice Bellard.
+ * Copyright (c) 2002 Fabrice Bellard
  *
  * This file is part of FFmpeg.
  *
@@ -22,6 +22,9 @@
 #include <unistd.h>
 #include "network.h"
 #include "os_support.h"
+#if HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
 #include <sys/time.h>
 
 typedef struct TCPContext {
@@ -32,25 +35,20 @@ typedef struct TCPContext {
 static int tcp_open(URLContext *h, const char *uri, int flags)
 {
     struct sockaddr_in dest_addr;
-    char hostname[1024], *q;
     int port, fd = -1;
     TCPContext *s = NULL;
     fd_set wfds;
     int fd_max, ret;
     struct timeval tv;
     socklen_t optlen;
-    char proto[1024],path[1024],tmp[1024];
+    char hostname[1024],proto[1024],path[1024];
 
     if(!ff_network_init())
         return AVERROR(EIO);
 
     url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname),
-      &port, path, sizeof(path), uri);
-    if (strcmp(proto,"tcp"))
-        return AVERROR(EINVAL);
-    if ((q = strchr(hostname,'@'))) { strcpy(tmp,q+1); strcpy(hostname,tmp); }
-
-    if (port <= 0 || port >= 65536)
+        &port, path, sizeof(path), uri);
+    if (strcmp(proto,"tcp") || port <= 0 || port >= 65536)
         return AVERROR(EINVAL);
 
     dest_addr.sin_family = AF_INET;
@@ -183,6 +181,12 @@ static int tcp_close(URLContext *h)
     return 0;
 }
 
+static int tcp_get_file_handle(URLContext *h)
+{
+    TCPContext *s = h->priv_data;
+    return s->fd;
+}
+
 URLProtocol tcp_protocol = {
     "tcp",
     tcp_open,
@@ -190,4 +194,5 @@ URLProtocol tcp_protocol = {
     tcp_write,
     NULL, /* seek */
     tcp_close,
+    .url_get_file_handle = tcp_get_file_handle,
 };