windows missing functions
diff --git a/lib/TH/THDiskFile.c b/lib/TH/THDiskFile.c
index b197556..073e055 100644
--- a/lib/TH/THDiskFile.c
+++ b/lib/TH/THDiskFile.c
@@ -528,11 +528,7 @@
 {
   THDiskFile *dfself = (THDiskFile*)(self);
   if(dfself->handle)
-#ifdef _WIN32
-    _pclose(dfself->handle);
-#else
     pclose(dfself->handle);
-#endif
   THFree(dfself->name);
   THFree(dfself);
 }
@@ -576,7 +572,7 @@
   THArgCheck(THPipeFile_mode(mode, &isReadable, &isWritable), 2, "file mode should be 'r','w'");
 
 #ifdef _WIN32
-  handle = _popen(name, (isReadable ? "rb" : "wb"));
+  handle = popen(name, (isReadable ? "rb" : "wb"));
 #else
   handle = popen(name, (isReadable ? "r" : "w"));
 #endif
diff --git a/lib/TH/THGeneral.h.in b/lib/TH/THGeneral.h.in
index b22670d..786931f 100644
--- a/lib/TH/THGeneral.h.in
+++ b/lib/TH/THGeneral.h.in
@@ -75,6 +75,9 @@
 
 #ifdef _MSC_VER
 # define log1p(x) THLog1p(x)
+#define snprintf _snprintf
+#define popen _popen
+#define pclose _pclose
 #endif
 
 #endif