portability fixes

diff --git a/libasn1fix/check_fixer.c b/libasn1fix/check_fixer.c
index 7129a56..8808f28 100644
--- a/libasn1fix/check_fixer.c
+++ b/libasn1fix/check_fixer.c
@@ -1,15 +1,17 @@
 #undef	NDEBUG
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
+#include "asn1fix_internal.h"
+
+#ifdef	WIN32
+#include <io.h>
+#include <direct.h>
+#define	chdir _chdir
+#else
 #include <dirent.h>
-#include <errno.h>
 #include <sysexits.h>
+#endif
+#include <errno.h>
 
 #include "asn1fix.h"
-#include "asn1fix_internal.h"
 
 static int check(const char *fname,
 	enum asn1p_flags parser_flags,
@@ -19,12 +21,19 @@
 
 int
 main(int ac, char **av) {
+#ifdef	WIN32
+	intptr_t dir;
+	struct _finddata_t c_file;
+#else
 	struct dirent *dp;
 	DIR *dir;
+#endif
 	int failed = 0;
 	int completed = 0;
 	enum asn1p_flags parser_flags = A1P_NOFLAGS;
 	enum asn1f_flags fixer_flags  = A1F_NOFLAGS;
+	const char *filename;
+	int len;
 	int ret;
 
 	/*
@@ -44,8 +53,13 @@
 		fprintf(stderr, "Testing in ./tests...\n");
 		ret = chdir("../tests");
 		assert(ret == 0);
+#ifdef	WIN32
+		dir = _findfirst("*.asn1", &c_file);
+		assert(dir != -1L);
+#else
 		dir = opendir(".");
 		assert(dir);
+#endif	/* WIN32 */
 	} else {
 		dir = 0;
 	}
@@ -54,21 +68,31 @@
 	 * Scan every *.asn1 file and try to parse and fix it.
 	 */
 	if(dir) {
+#ifdef	WIN32
+		do {
+			filename = c_file.name;
+#else
 		while((dp = readdir(dir))) {
-			int len = strlen(dp->d_name);
-			if(len && strcmp(dp->d_name + len - 5, ".asn1") == 0) {
-				ret = check(dp->d_name,
-					parser_flags, fixer_flags);
+			filename = dp->d_name;
+#endif	/* WIN32 */
+			int len = strlen(filename);
+			if(len && strcmp(filename + len - 5, ".asn1") == 0) {
+				ret = check(filename, parser_flags,fixer_flags);
 				if(ret) {
-					fprintf(stderr,
-						"FAILED: %s\n",
-						dp->d_name);
+					fprintf(stderr, "FAILED: %s\n",
+						filename);
 					failed++;
 				}
 				completed++;
 			}
+#ifdef	WIN32
+		} while(_findnext(dir, &c_file) == 0);
+		_findclose(dir);
+#else
 		}
 		closedir(dir);
+#endif	/* WIN32 */
+
 
 		fprintf(stderr,
 			"Tests COMPLETED: %d\n"