Starting the work on next package update.
[samtools.git] / knetfile.h
index bf45f3df809b8f3ebd54b17c711dd188ab3dbb36..0a0e66f7a0aaeb65eac7068b687a5af945419e70 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 <winsock2.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;
+       char *response, *retr, *size_cmd;
        int64_t seek_offset; // for lazy seek
+    int64_t file_size;
+
+       // the following are for HTTP only
+       char *path, *http_host;
 } knetFile;
 
 #define knet_tell(fp) ((fp)->offset)
@@ -28,6 +43,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);
 
        /* 
@@ -45,7 +65,7 @@ extern "C" {
          This routine only sets ->offset and ->is_ready=0. It does not
          communicate with the FTP server.
         */
-       int knet_seek(knetFile *fp, off_t off, int whence);
+       off_t knet_seek(knetFile *fp, int64_t off, int whence);
        int knet_close(knetFile *fp);
 
 #ifdef __cplusplus