[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/gd_gd2.c
+++ gd-2.0.35/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 */
