eb54983fdf
The recent zlib bump broke imagemagick. This has been fixed upstream in 6.7.5, but the xml2-config fix is still not upstream and 6.7.5 needs autoconf 2.67 to autoreconf (and we have 2.65), so we cannot easily use that. Instead move to the most recent version using autoconf 2.64 and backport the fix from imagemagick svn. At the same time also ensure zlib+bzip2 support is picked up if enabled. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
228 lines
6.4 KiB
Diff
228 lines
6.4 KiB
Diff
[PATCH] Fix build with recent versions of zlib
|
|
|
|
From upstream:
|
|
r6633 + r6636 @ https://www.imagemagick.org/subversion/ImageMagick
|
|
|
|
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
|
|
---
|
|
magick/blob.c | 68 ++++++++++++++++++++++++++++++++++------------------------
|
|
1 file changed, 40 insertions(+), 28 deletions(-)
|
|
|
|
Index: ImageMagick-6.7.2-10/magick/blob.c
|
|
===================================================================
|
|
--- ImageMagick-6.7.2-10.orig/magick/blob.c
|
|
+++ ImageMagick-6.7.2-10/magick/blob.c
|
|
@@ -120,8 +120,20 @@
|
|
StreamType
|
|
type;
|
|
|
|
- FILE
|
|
- *file;
|
|
+ union {
|
|
+ FILE
|
|
+ *file;
|
|
+
|
|
+#if defined(MAGICKCORE_ZLIB_DELEGATE)
|
|
+ gzFile
|
|
+ gzfile;
|
|
+#endif
|
|
+
|
|
+#if defined(MAGICKCORE_BZLIB_DELEGATE)
|
|
+ BZFILE
|
|
+ *bzfile;
|
|
+#endif
|
|
+ };
|
|
|
|
struct stat
|
|
properties;
|
|
@@ -505,14 +517,14 @@
|
|
case ZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_ZLIB_DELEGATE)
|
|
- (void) gzerror(image->blob->file,&status);
|
|
+ (void) gzerror(image->blob->gzfile,&status);
|
|
#endif
|
|
break;
|
|
}
|
|
case BZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_BZLIB_DELEGATE)
|
|
- (void) BZ2_bzerror((BZFILE *) image->blob->file,&status);
|
|
+ (void) BZ2_bzerror(image->blob->bzfile,&status);
|
|
#endif
|
|
break;
|
|
}
|
|
@@ -546,14 +558,14 @@
|
|
case ZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_ZLIB_DELEGATE)
|
|
- status=gzclose(image->blob->file);
|
|
+ status=gzclose(image->blob->gzfile);
|
|
#endif
|
|
break;
|
|
}
|
|
case BZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_BZLIB_DELEGATE)
|
|
- BZ2_bzclose((BZFILE *) image->blob->file);
|
|
+ BZ2_bzclose(image->blob->bzfile);
|
|
#endif
|
|
break;
|
|
}
|
|
@@ -843,7 +855,7 @@
|
|
status;
|
|
|
|
status=0;
|
|
- (void) BZ2_bzerror((BZFILE *) image->blob->file,&status);
|
|
+ (void) BZ2_bzerror(image->blob->bzfile,&status);
|
|
image->blob->eof=status == BZ_UNEXPECTED_EOF ? MagickTrue : MagickFalse;
|
|
#endif
|
|
break;
|
|
@@ -2486,8 +2498,8 @@
|
|
((int) magick[2] == 0x08))
|
|
{
|
|
(void) fclose(image->blob->file);
|
|
- image->blob->file=(FILE *) gzopen(filename,type);
|
|
- if (image->blob->file != (FILE *) NULL)
|
|
+ image->blob->gzfile=gzopen(filename,type);
|
|
+ if (image->blob->gzfile != (gzFile) NULL)
|
|
image->blob->type=ZipStream;
|
|
}
|
|
#endif
|
|
@@ -2495,8 +2507,8 @@
|
|
if (strncmp((char *) magick,"BZh",3) == 0)
|
|
{
|
|
(void) fclose(image->blob->file);
|
|
- image->blob->file=(FILE *) BZ2_bzopen(filename,type);
|
|
- if (image->blob->file != (FILE *) NULL)
|
|
+ image->blob->bzfile=BZ2_bzopen(filename,type);
|
|
+ if (image->blob->bzfile != (BZFILE *) NULL)
|
|
image->blob->type=BZipStream;
|
|
}
|
|
#endif
|
|
@@ -2555,8 +2567,8 @@
|
|
{
|
|
if (mode == WriteBinaryBlobMode)
|
|
type="wb";
|
|
- image->blob->file=(FILE *) gzopen(filename,type);
|
|
- if (image->blob->file != (FILE *) NULL)
|
|
+ image->blob->gzfile=gzopen(filename,type);
|
|
+ if (image->blob->gzfile != (gzFile) NULL)
|
|
image->blob->type=ZipStream;
|
|
}
|
|
else
|
|
@@ -2564,8 +2576,8 @@
|
|
#if defined(MAGICKCORE_BZLIB_DELEGATE)
|
|
if (LocaleCompare(extension,".bz2") == 0)
|
|
{
|
|
- image->blob->file=(FILE *) BZ2_bzopen(filename,type);
|
|
- if (image->blob->file != (FILE *) NULL)
|
|
+ image->blob->bzfile=BZ2_bzopen(filename,type);
|
|
+ if (image->blob->bzfile != (BZFILE *) NULL)
|
|
image->blob->type=BZipStream;
|
|
}
|
|
else
|
|
@@ -2771,12 +2783,12 @@
|
|
{
|
|
default:
|
|
{
|
|
- count=(ssize_t) gzread(image->blob->file,q,(unsigned int) length);
|
|
+ count=(ssize_t) gzread(image->blob->gzfile,q,(unsigned int) length);
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
- c=gzgetc(image->blob->file);
|
|
+ c=gzgetc(image->blob->gzfile);
|
|
if (c == EOF)
|
|
break;
|
|
*q++=(unsigned char) c;
|
|
@@ -2784,7 +2796,7 @@
|
|
}
|
|
case 1:
|
|
{
|
|
- c=gzgetc(image->blob->file);
|
|
+ c=gzgetc(image->blob->gzfile);
|
|
if (c == EOF)
|
|
break;
|
|
*q++=(unsigned char) c;
|
|
@@ -2799,7 +2811,7 @@
|
|
case BZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_BZLIB_DELEGATE)
|
|
- count=(ssize_t) BZ2_bzread((BZFILE *) image->blob->file,q,(int) length);
|
|
+ count=(ssize_t) BZ2_bzread(image->blob->bzfile,q,(int) length);
|
|
#endif
|
|
break;
|
|
}
|
|
@@ -3527,7 +3539,7 @@
|
|
case ZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_ZLIB_DELEGATE)
|
|
- if (gzseek(image->blob->file,(off_t) offset,whence) < 0)
|
|
+ if (gzseek(image->blob->gzfile,(off_t) offset,whence) < 0)
|
|
return(-1);
|
|
#endif
|
|
image->blob->offset=TellBlob(image);
|
|
@@ -3791,14 +3803,14 @@
|
|
case ZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_ZLIB_DELEGATE)
|
|
- status=gzflush(image->blob->file,Z_SYNC_FLUSH);
|
|
+ status=gzflush(image->blob->gzfile,Z_SYNC_FLUSH);
|
|
#endif
|
|
break;
|
|
}
|
|
case BZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_BZLIB_DELEGATE)
|
|
- status=BZ2_bzflush((BZFILE *) image->blob->file);
|
|
+ status=BZ2_bzflush(image->blob->bzfile);
|
|
#endif
|
|
break;
|
|
}
|
|
@@ -3865,7 +3877,7 @@
|
|
case ZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_ZLIB_DELEGATE)
|
|
- offset=(MagickOffsetType) gztell(image->blob->file);
|
|
+ offset=(MagickOffsetType) gztell(image->blob->gzfile);
|
|
#endif
|
|
break;
|
|
}
|
|
@@ -4014,20 +4026,20 @@
|
|
{
|
|
default:
|
|
{
|
|
- count=(ssize_t) gzwrite(image->blob->file,(void *) data,
|
|
+ count=(ssize_t) gzwrite(image->blob->gzfile,(void *) data,
|
|
(unsigned int) length);
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
- c=gzputc(image->blob->file,(int) *p++);
|
|
+ c=gzputc(image->blob->gzfile,(int) *p++);
|
|
if (c == EOF)
|
|
break;
|
|
count++;
|
|
}
|
|
case 1:
|
|
{
|
|
- c=gzputc(image->blob->file,(int) *p++);
|
|
+ c=gzputc(image->blob->gzfile,(int) *p++);
|
|
if (c == EOF)
|
|
break;
|
|
count++;
|
|
@@ -4041,8 +4053,8 @@
|
|
case BZipStream:
|
|
{
|
|
#if defined(MAGICKCORE_BZLIB_DELEGATE)
|
|
- count=(ssize_t) BZ2_bzwrite((BZFILE *) image->blob->file,(void *) data,
|
|
- (int) length);
|
|
+ count=(ssize_t) BZ2_bzwrite(image->blob->bzfile,(void *) data,(int)
|
|
+ length);
|
|
#endif
|
|
break;
|
|
}
|