|
|
78d8421 |
diff -rupN magicpoint-1.13a/image/gif.c magicpoint-1.13a-new/image/gif.c
|
|
|
78d8421 |
--- magicpoint-1.13a/image/gif.c 2018-01-23 00:03:20.104053476 +0100
|
|
|
78d8421 |
+++ magicpoint-1.13a-new/image/gif.c 2018-02-11 23:45:01.983204432 +0100
|
|
|
78d8421 |
@@ -32,6 +32,14 @@ static int InterlacedOffset[] = { 0, 4,
|
|
|
78d8421 |
/* be read - offsets and jumps... */
|
|
|
78d8421 |
static int InterlacedJumps[] = { 8, 8, 4, 2 };
|
|
|
78d8421 |
|
|
|
78d8421 |
+static void printGifError(int errorCode)
|
|
|
78d8421 |
+{
|
|
|
78d8421 |
+ const char* giflib_error_str = (const char*) GifErrorString(errorCode);
|
|
|
78d8421 |
+ if (giflib_error_str == NULL)
|
|
|
78d8421 |
+ giflib_error_str = "Unknown error";
|
|
|
78d8421 |
+ fprintf(stderr, "GIFLIB: %s\n", giflib_error_str);
|
|
|
78d8421 |
+}
|
|
|
78d8421 |
+
|
|
|
78d8421 |
Image *
|
|
|
78d8421 |
gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
char *fullname, *name;
|
|
|
78d8421 |
@@ -50,7 +58,7 @@ gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
ColorMapObject *ColorMap;
|
|
|
78d8421 |
GifColorType *ColorMapEntry;
|
|
|
78d8421 |
|
|
|
78d8421 |
- GifFile = DGifOpenFileName(fullname);
|
|
|
78d8421 |
+ GifFile = DGifOpenFileName(fullname, NULL);
|
|
|
78d8421 |
if (GifFile == NULL)
|
|
|
78d8421 |
return NULL;
|
|
|
78d8421 |
|
|
|
78d8421 |
@@ -87,13 +95,13 @@ gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
/* Scan the content of the GIF file and load the image(s) in: */
|
|
|
78d8421 |
do {
|
|
|
78d8421 |
if (DGifGetRecordType(GifFile, &RecordType) == GIF_ERROR) {
|
|
|
78d8421 |
- PrintGifError();
|
|
|
78d8421 |
+ printGifError(GifFile->Error);
|
|
|
78d8421 |
exit(-1);
|
|
|
78d8421 |
}
|
|
|
78d8421 |
switch (RecordType) {
|
|
|
78d8421 |
case IMAGE_DESC_RECORD_TYPE:
|
|
|
78d8421 |
if (DGifGetImageDesc(GifFile) == GIF_ERROR) {
|
|
|
78d8421 |
- PrintGifError();
|
|
|
78d8421 |
+ printGifError(GifFile->Error);
|
|
|
78d8421 |
exit(-1);
|
|
|
78d8421 |
}
|
|
|
78d8421 |
Row = GifFile->Image.Top; /* Image Position relative to Screen. */
|
|
|
78d8421 |
@@ -113,7 +121,7 @@ gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
j += InterlacedJumps[i]) {
|
|
|
78d8421 |
if (DGifGetLine(GifFile, &ScreenBuffer[j][Col],
|
|
|
78d8421 |
Width) == GIF_ERROR) {
|
|
|
78d8421 |
- PrintGifError();
|
|
|
78d8421 |
+ printGifError(GifFile->Error);
|
|
|
78d8421 |
exit(-1);
|
|
|
78d8421 |
}
|
|
|
78d8421 |
}
|
|
|
78d8421 |
@@ -122,7 +130,7 @@ gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
for (i = 0; i < Height; i++) {
|
|
|
78d8421 |
if (DGifGetLine(GifFile, &ScreenBuffer[Row++][Col],
|
|
|
78d8421 |
Width) == GIF_ERROR) {
|
|
|
78d8421 |
- PrintGifError();
|
|
|
78d8421 |
+ printGifError(GifFile->Error);
|
|
|
78d8421 |
exit(-1);
|
|
|
78d8421 |
}
|
|
|
78d8421 |
}
|
|
|
78d8421 |
@@ -131,7 +139,7 @@ gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
case EXTENSION_RECORD_TYPE:
|
|
|
78d8421 |
/* Skip any extension blocks in file: */
|
|
|
78d8421 |
if (DGifGetExtension(GifFile, &ExtCode, &Extension) == GIF_ERROR) {
|
|
|
78d8421 |
- PrintGifError();
|
|
|
78d8421 |
+ printGifError(GifFile->Error);
|
|
|
78d8421 |
exit(-1);
|
|
|
78d8421 |
}
|
|
|
78d8421 |
/* very adhoc transparency support */
|
|
|
78d8421 |
@@ -141,7 +149,7 @@ gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
}
|
|
|
78d8421 |
while (Extension != NULL) {
|
|
|
78d8421 |
if (DGifGetExtensionNext(GifFile, &Extension) == GIF_ERROR) {
|
|
|
78d8421 |
- PrintGifError();
|
|
|
78d8421 |
+ printGifError(GifFile->Error);
|
|
|
78d8421 |
exit(-1);
|
|
|
78d8421 |
}
|
|
|
78d8421 |
}
|
|
|
78d8421 |
@@ -179,8 +187,8 @@ gifLoad(fullname, name, verbose)
|
|
|
78d8421 |
pixline[x] = GifRow[x];
|
|
|
78d8421 |
}
|
|
|
78d8421 |
|
|
|
78d8421 |
- if (DGifCloseFile(GifFile) == GIF_ERROR) {
|
|
|
78d8421 |
- PrintGifError();
|
|
|
78d8421 |
+ if (DGifCloseFile(GifFile, NULL) == GIF_ERROR) {
|
|
|
78d8421 |
+ printGifError(GifFile->Error);
|
|
|
78d8421 |
exit(-1);
|
|
|
78d8421 |
}
|
|
|
78d8421 |
|
|
|
78d8421 |
@@ -196,12 +204,12 @@ gifIdent(fullname, name)
|
|
|
78d8421 |
GifFileType *gifp;
|
|
|
78d8421 |
int ret;
|
|
|
78d8421 |
|
|
|
78d8421 |
- gifp = DGifOpenFileName(fullname);
|
|
|
78d8421 |
+ gifp = DGifOpenFileName(fullname, NULL);
|
|
|
78d8421 |
if (gifp == NULL)
|
|
|
78d8421 |
ret = 0;
|
|
|
78d8421 |
else {
|
|
|
78d8421 |
tellAboutImage(name, gifp);
|
|
|
78d8421 |
- DGifCloseFile(gifp);
|
|
|
78d8421 |
+ DGifCloseFile(gifp, NULL);
|
|
|
78d8421 |
ret = 1;
|
|
|
78d8421 |
}
|
|
|
78d8421 |
return ret;
|