Merge branch 'upstream'
[samtools.git] / knetfile.h
index bf45f3df809b8f3ebd54b17c711dd188ab3dbb36..9021b937ac211c1459ef1afec3c20b49ce6007a1 100644 (file)
@@ -4,6 +4,17 @@
 #include <stdint.h>
 #include <fcntl.h>
 
+#ifndef _WIN32
+#define netread(fd, ptr, len) read(fd, ptr, len)
+#define netwrite(fd, ptr, len) write(fd, ptr, len)
+#define netclose(fd) close(fd)
+#else
+#include <winsock.h>
+#define netread(fd, ptr, len) recv(fd, ptr, len, 0)
+#define netwrite(fd, ptr, len) send(fd, ptr, len, 0)
+#define netclose(fd) closesocket(fd)
+#endif
+
 // FIXME: currently I/O is unbuffered
 
 #define KNF_TYPE_LOCAL 1
 typedef struct knetFile_s {
        int type, fd;
        int64_t offset;
-       char *host;
+       char *host, *port;
 
        // the following are for FTP only
        int ctrl_fd, pasv_ip[4], pasv_port, max_response, no_reconnect, is_ready;
        char *response, *retr;
        int64_t seek_offset; // for lazy seek
+
+       // the following are for HTTP only
+       char *path, *http_host;
 } knetFile;
 
 #define knet_tell(fp) ((fp)->offset)
@@ -28,6 +42,11 @@ typedef struct knetFile_s {
 extern "C" {
 #endif
 
+#ifdef _WIN32
+       int knet_win32_init();
+       void knet_win32_destroy();
+#endif
+
        knetFile *knet_open(const char *fn, const char *mode);
 
        /*