]> git.donarmstrong.com Git - samtools.git/blobdiff - knetfile.h
works
[samtools.git] / knetfile.h
index 2c55c802a508d2e81266320053af249861bab8d6..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
@@ -17,8 +28,9 @@ typedef struct knetFile_s {
 
        // 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;
@@ -31,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);
 
        /* 
@@ -48,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