diff -urp john-1.7.3.1-all-4/src/Makefile john-1.7.3.1/src/Makefile
--- john-1.7.3.1-all-4/src/Makefile	2008-09-15 02:45:13 +0000
+++ john-1.7.3.1/src/Makefile	2008-09-17 03:27:32 +0000
@@ -18,13 +18,10 @@ CPPFLAGS = -E
 CFLAGS = -c -Wall -O2 -fomit-frame-pointer -I/usr/local/include -L/usr/local/lib
 ASFLAGS = -c
 LDFLAGS = -s -L/usr/local/lib -L/usr/local/ssl/lib -lcrypto -lm
+LDFLAGS_MKV = -s -lm
 OPT_NORMAL = -funroll-loops
 OPT_INLINE = -finline-functions
 
-# MKVFLAGS have to be fairly generic because they are not overridden when
-# using non-gcc.  This is a dirty hack.
-MKVFLAGS = -O2 -s -lm
-
 JOHN_OBJS_MINIMAL = \
 	DES_fmt.o DES_std.o DES_bs.o \
 	BSDI_fmt.o \
@@ -106,6 +103,9 @@ BENCH_OBJS = \
 	bench.o best.o common.o config.o formats.o math.o memory.o miscnl.o \
 	params.o path.o signals.o tty.o
 
+GENMKVPWD_OBJS = \
+	genmkvpwd.o mkvlib.o memory.o miscnl.o
+
 PROJ = ../run/john ../run/unshadow ../run/unafs ../run/unique ../run/undrop \
 	../run/genmkvpwd ../run/mkvcalcproba ../run/calc_stat
 PROJ_DOS = ../run/john.bin ../run/john.com \
@@ -869,7 +869,7 @@ john.com: john.asm
 	@echo Use Borland TASM/TLINK to make JOHN.COM
 
 ../run/john.exe: $(JOHN_OBJS)
-	$(LD) $(JOHN_OBJS) -lkernel32 -lssl -lcrypto -o ../run/john.exe
+	$(LD) $(JOHN_OBJS) -lkernel32 -lcrypto -o ../run/john.exe
 	strip ../run/john.exe
 
 ../run/unshadow.exe: symlink.c
@@ -888,23 +888,23 @@ john.com: john.asm
 	$(CC) symlink.c -o ../run/unique.exe
 	strip ../run/unique.exe
 
-../run/genmkvpwd: genmkvpwd.c mkvlib.o misc.o
-	$(CC) $(MKVFLAGS) -DEXTERNAL genmkvpwd.c mkvlib.c memory.c -o ../run/genmkvpwd
+../run/genmkvpwd: $(GENMKVPWD_OBJS)
+	$(LD) $(GENMKVPWD_OBJS) $(LDFLAGS_MKV) -o ../run/genmkvpwd
 
-../run/genmkvpwd.exe: genmkvpwd.c mkvlib.o misc.o
-	$(CC) $(MKVFLAGS) -DEXTERNAL genmkvpwd.c mkvlib.c memory.c -o ../run/genmkvpwd.exe
+../run/genmkvpwd.exe: $(GENMKVPWD_OBJS)
+	$(LD) $(GENMKVPWD_OBJS) $(LDFLAGS_MKV) -o ../run/genmkvpwd.exe
 
-../run/mkvcalcproba: mkvcalcproba.c 
-	$(CC) $(MKVFLAGS) mkvcalcproba.c -o ../run/mkvcalcproba
+../run/mkvcalcproba: mkvcalcproba.o
+	$(LD) mkvcalcproba.o $(LDFLAGS_MKV) -o ../run/mkvcalcproba
 
-../run/mkvcalcproba.exe: mkvcalcproba.c 
-	$(CC) $(MKVFLAGS) mkvcalcproba.c -o ../run/mkvcalcproba.exe
+../run/mkvcalcproba.exe: mkvcalcproba.o
+	$(LD) mkvcalcproba.o $(LDFLAGS_MKV) -o ../run/mkvcalcproba.exe
 
-../run/calc_stat: calc_stat.c
-	$(CC) $(MKVFLAGS) calc_stat.c -o ../run/calc_stat 
+../run/calc_stat: calc_stat.o
+	$(LD) calc_stat.o $(LDFLAGS_MKV) -o ../run/calc_stat
 
-../run/calc_stat.exe: calc_stat.c
-	$(CC) $(MKVFLAGS) calc_stat.c -o ../run/calc_stat.exe 
+../run/calc_stat.exe: calc_stat.o
+	$(LD) calc_stat.o $(LDFLAGS_MKV) -o ../run/calc_stat.exe
 
 # Inlining the S-boxes produces faster code, as long as they fit in the cache
 # (that is, on RISC with at least 8 KB of L1 code cache).
diff -urp john-1.7.3.1-all-4/src/mkvlib.c john-1.7.3.1/src/mkvlib.c
--- john-1.7.3.1-all-4/src/mkvlib.c	2007-09-21 13:29:53 +0000
+++ john-1.7.3.1/src/mkvlib.c	2008-09-17 03:11:00 +0000
@@ -159,11 +159,7 @@ void init_probatables(char * filename)
 	if(!fichier)
 	{
 		fprintf(stderr, "could not open %s\n", filename);
-#ifdef EXTERNAL
-		perror(filename);
-#else
 		error();
-#endif
 	}
 
 	first = mem_alloc( sizeof(int) * 256 );