--- ./xdl.c.org	Wed Feb  3 15:14:02 1993
+++ ./xdl.c	Mon Jul 17 17:09:43 1995
@@ -20,7 +20,11 @@
 
 #include <stdio.h>
 #include <signal.h>
+#ifdef __FreeBSD__
+#include <stdlib.h>
+#else
 #include <malloc.h>
+#endif
 #include <sys/types.h>
 #ifdef BSDTYPES
 #include <sys/bsdtypes.h>
@@ -215,6 +219,16 @@
 }
 
 
+void
+freepixmaps(dlinfo)
+    DL_info dlinfo;
+{
+    int i, j;
+    for (j = 0; j < dlinfo.num_screen; j++)
+        for (i = 0; i < dlinfo.images_per_screen; i++)
+            XFreePixmap(x_display, pixmap[j * (dlinfo.format * 3 + 1) + i]);
+}
+
 static void die(s)char*s;{fprintf(stderr,"%s\n",s);exit(1);}
 static void dummy(){};
 
@@ -468,6 +482,18 @@
                     } else if (x_depth == 8) {
                         x_image->data[pixelcount++] = (u_char)pixels[*src];
 
+                    } else if (x_depth == 16) {
+                        if (x_image->byte_order == MSBFirst) {
+                            x_image->data[pixelcount++] 
+                                = (pixels[*src]>>8) & 0xff;
+                            x_image->data[pixelcount++] 
+                                = pixels[*src] & 0xff;
+                        } else {
+                            x_image->data[pixelcount++] 
+                                = pixels[*src] & 0xff;
+                            x_image->data[pixelcount++] 
+                                = (pixels[*src]>>8) & 0xff;
+			}
                     } else { /* 24 or 32 bits */
                         if (x_image->byte_order == MSBFirst) {
                             x_image->data[pixelcount++] = 0;
@@ -607,8 +633,11 @@
 #endif 
 				    if (x_depth == 8)
 					XFreeColormap(x_display, cmap);
+			            freepixmaps(dlinfo);
 				    return;
-			    case 3: exit(0);
+			    case 3:
+			            freepixmaps(dlinfo);
+			            exit(0);
 			}
 		    }
 		}
--- ./Makefile.org	Wed Feb  3 14:08:27 1993
+++ ./Makefile	Mon Jul 17 16:42:43 1995
@@ -24,14 +24,14 @@
 #
 # Modify these to fit the compiler setup on your system.
 CC = gcc
-CFLAGS = -O2
-LIBS = -lX11 $(IXLIBS)
+CFLAGS = -O2 -I${X11BASE}/include
+LIBS = -L${X11BASE}/lib -lX11 $(IXLIBS)
 
 #
 # These specify where to install the binary
 # and the manual.
-BINDIR = /usr/local/bin
-MANDIR = /usr/local/man/man1
+BINDIR = ${PREFIX}/bin
+MANDIR = ${PREFIX}/man/man1
 MANEXT = 1
 
 all: xdl
@@ -40,8 +40,8 @@
 	$(CC) $(CFLAGS) $(TIMER) $(BSDT) -o xdl xdl.c $(LIBS)
 
 install: xdl xdl.man
-	cp xdl $(BINDIR)
-	cp xdl.man $(MANDIR)/xdl.$(MANEXT)
+	install -c xdl $(BINDIR)
+	install -c xdl.man $(MANDIR)/xdl.$(MANEXT)
 
 clean:
 	$(RM) xdl *.o *~ core
