[PATCH] gd_gd2: provide dummy implementations for all public symbols when !zlib

gd_gd2.c only provides dummy implementations for some of it's public symbols
when zlib isn't found, causing build failures in several of the tools.

Fix it by providing dummy implementations for all of them.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 gd_gd2.c |   30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

Index: gd-2.0.35/gd_gd2.c
===================================================================
--- gd-2.0.35.orig/src/gd_gd2.c
+++ gd-2.0.35/src/gd_gd2.c
@@ -1068,4 +1068,34 @@
   fprintf (stderr, "GD2 support is not available - no libz\n");
   return NULL;
 }
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * inFile, int srcx, int srcy, int w, int h)
+{
+  fprintf (stderr, "GD2 support is not available - no libz\n");
+  return NULL;
+}
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy, int w,
+			     int h)
+{
+  fprintf (stderr, "GD2 support is not available - no libz\n");
+  return NULL;
+}
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtx * in, int srcx, int srcy, int w, int h)
+{
+  fprintf (stderr, "GD2 support is not available - no libz\n");
+  return NULL;
+}
+
+BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt)
+{
+  fprintf (stderr, "GD2 support is not available - no libz\n");
+}
+
+BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
+{
+  fprintf (stderr, "GD2 support is not available - no libz\n");
+  return NULL;
+}
 #endif /* HAVE_LIBZ */
