diff -u -N gd1.3/Makefile ../gd1.3/Makefile
--- gd1.3/Makefile	Tue Aug  8 13:28:27 1995
+++ ../gd1.3/Makefile	Tue Feb  2 17:43:21 1999
@@ -12,7 +12,7 @@
 CFLAGS=-O
 LIBS=-L./ -lgd -lm
 
-all: libgd.a gddemo giftogd webgif
+all: libgd.a gddemo giftogd webgif xpmimport
 
 gddemo: gddemo.o libgd.a gd.h gdfonts.h gdfontl.h
 	$(CC) gddemo.o -o gddemo	$(LIBS)
@@ -26,9 +26,12 @@
 	$(AR) rc libgd.a gd.o gdfontt.o gdfonts.o gdfontmb.o \
 		gdfontl.o gdfontg.o
 
+xpmimport: gdxpm.o libgd.a gd.h xpmgddemo.o
+	$(CC) gdxpm.o xpmgddemo.o -o xpmimport $(LIBS) -L/usr/X11R6/lib -lXpm -lX11
+
 webgif: webgif.o libgd.a gd.h
 	$(CC) webgif.o -o webgif	$(LIBS)
 
 clean:
-	rm -f *.o *.a gddemo giftogd 
+	rm -f *.o *.a gddemo giftogd xpmimport
 
diff -u -N gd1.3/gdxpm.c ../gd1.3/gdxpm.c
--- gd1.3/gdxpm.c	Thu Jan  1 01:00:00 1970
+++ ../gd1.3/gdxpm.c	Tue Feb  2 17:42:18 1999
@@ -0,0 +1,69 @@
+#include <X11/xpm.h>
+#include "gd.h"
+#include "gdxpm.h"
+
+gdImagePtr gdImageCreateFromXpm(char *filename)
+	{
+	XpmInfo info;
+	XpmImage image;
+	int i,j,k,number;
+	char buf[3];
+	gdImagePtr im = 0;
+	char *apixel;
+	int *pointer;
+	int red,green,blue,color;
+	int *colors;
+
+	int ret = XpmReadFileToXpmImage(filename,&image,&info);
+	if (ret != XpmSuccess)
+		return 0;
+	buf[2] = '\0';
+
+	if (!(im = gdImageCreate(image.width, image.height))) 
+	    return 0;
+
+	number = image.ncolors;
+	colors = (int*)malloc(sizeof(int) * number);
+	if (colors == NULL)
+		return(0);
+	for (i = 0; i < number; i++) 
+		{
+		buf[0] = image.colorTable[i].c_color[1];
+		buf[1] = image.colorTable[i].c_color[2];
+		red = strtol(buf,NULL,16);
+		buf[0] = image.colorTable[i].c_color[3];
+		buf[1] = image.colorTable[i].c_color[4];
+		green = strtol(buf,NULL,16);
+		buf[0] = image.colorTable[i].c_color[5];
+		buf[1] = image.colorTable[i].c_color[6];
+		blue = strtol(buf,NULL,16);
+		colors[i] = i;
+		if (gdImageColorExact(im,red,green,blue) == -1)
+			{
+			if (color = gdImageColorAllocate(im,red,green,blue) == -1)
+				color = gdImageColorClosest(im,red,green,blue);
+			else
+				continue;
+			}
+		colors[i] = color;
+		}
+
+	apixel = (char *)malloc(image.cpp+1);
+	if (apixel == NULL)
+		return(0);
+	apixel[image.cpp] = '\0';
+
+	pointer = image.data;
+	for(i=0;i<image.height;i++)
+		{
+		for(j=0;j<image.width;j++)
+			{
+			k = *pointer++;
+			gdImageSetPixel(im,j,i,colors[k]);
+			}
+		}
+	free(apixel);
+	free(colors);
+	return(im);
+	}
+
diff -u -N gd1.3/gdxpm.h ../gd1.3/gdxpm.h
--- gd1.3/gdxpm.h	Thu Jan  1 01:00:00 1970
+++ ../gd1.3/gdxpm.h	Tue Feb  2 17:42:26 1999
@@ -0,0 +1 @@
+gdImagePtr gdImageCreateFromXpm(char *filename);
diff -u -N gd1.3/test.xpm ../gd1.3/test.xpm
--- gd1.3/test.xpm	Thu Jan  1 01:00:00 1970
+++ ../gd1.3/test.xpm	Tue Feb  2 17:41:21 1999
@@ -0,0 +1,74 @@
+/* XPM */
+
+
+static char *test[] = {
+"64  64  4  1",
+"a c #000000",
+"b c #808080",
+"c c #c0c0c0",
+"d c #ffffff",
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcabababcbaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaabcaaaaabaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaabdcdbaaaaaaaaaaaaaaaaaaaaaaaabbcaaabbaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaabcbcbaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaabdaabaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaabcbaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccbaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdcbaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaabdcdbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaabdcdcdbaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaabcccccbaaaaaaaaaaaaaaaaaaaaaaabdcdbaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaabdbaaabaaaaaaaaaaaaaaaaaaaaaaabcbcbaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaabcaabaaaaaaaaaaaaaaaaaaaaaaaabdaababbbaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaabbbabdcdbaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcbcbaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaabaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdcdcdbbaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcdcdcdcdcbaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcdcdcdcdcdcbaaabbaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdcdcdcdcdcdbaaccbbaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdcdcdcdcdcdcdbacdcbaaaaa"
+"aaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaabcdcdcdcdcdcdcbaaccaaaaaa"
+"aaaaaaaabbdcdcbbaaaaaaaaaaaaabbbaaaaaaabcccccccccccccbaaaaaabbaa"
+"aaaaaaabcdcdcdcdbaaaaaaaaaaabdcdbaaaaaabcdbdbababababbaaaaaccbba"
+"aaaaaaabdcdcdcdcbaaaaaaaaaabdcdcdbaaaaabdbdbababababcbaaaaacdcba"
+"aaaaaabdcdcdcdcdcbaaaaaaaaabcccccbaaaaaabdbababaaaaabaaaaaaaccaa"
+"aaaaaabccccccccccbaaaaaaaaabdbaaabaaaaaabcaaaaaaaaacbaaaaaaaaaaa"
+"aaaaaabdbdbabababbaaaaaaaaaabcaabaaaaaaaabcaaaaaaacbaaaaaaaaaaaa"
+"aaaaaabcdbabababcbaaaaaaaaaaabbbaaaaaaaaaabbcaaaabbaaaaaaaaaaaaa"
+"aaaaaaabcaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbaaaaaaaaaaaaaaa"
+"aaaaaaabdcaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaabbcaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaabcdcdcbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaabdcdcdcbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaabdcdcdcdcbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaabccccccccbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaabdbcbababbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaabcabababcbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaabcaaaaabaaaaaaaaaaabbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaabbcaaabbaaaaaaaaabcdcdcdcbaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaabbbbaaaaaaaaaabcdcdcdcdcbaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaacdcdcdcdcdcaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaabdcdcdcdcdcdbaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaabcdcdcdcdcdcbaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaabcccccccccccbaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaabcdbcbabababbaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaabcbababababcbaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaabcaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaabcbaaaaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaabccaaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbaaaaaaaaaaaaaaaaaaaaabbbbaaaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcdcdcbbaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdcdcdcbaaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdcdcdcdcbaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccbaa"
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababcbababbaa"
+};
diff -u -N gd1.3/xpmgddemo.c ../gd1.3/xpmgddemo.c
--- gd1.3/xpmgddemo.c	Thu Jan  1 01:00:00 1970
+++ ../gd1.3/xpmgddemo.c	Tue Feb  2 17:42:41 1999
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include "gd.h"
+#include "gdxpm.h"
+#include <X11/xpm.h>
+
+int main(void)
+{
+	/* output file */
+	FILE *out;
+
+	/* Input and output images */
+	gdImagePtr xpmtest;
+
+	xpmtest = gdImageCreateFromXpm("test.xpm");
+	if (!xpmtest)
+		fprintf(stderr, "Can't load xpm source image\n");
+	else
+		{
+		out = fopen("xpm.gif", "wb");
+		/* Write GIF */
+		gdImageGif(xpmtest, out);
+		fclose(out);
+		gdImageDestroy(xpmtest);
+		}
+	return 0;
+}
+

