12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- diff -u -r meh-0.3/src/gif.c meh-0.3-git/src/gif.c
- --- meh-0.3/src/gif.c 2010-01-04 17:45:01.000000000 +0000
- +++ meh-0.3-git/src/gif.c 2015-08-27 16:11:39.082286073 +0100
- @@ -32,7 +32,11 @@
- /* HACK HACK HACK */
- rewind(f);
- lseek(fileno(f), 0L, SEEK_SET);
- +#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5
- + if(!(gif = DGifOpenFileHandle(fileno(f), NULL))){
- +#else
- if(!(gif = DGifOpenFileHandle(fileno(f)))){
- +#endif
- /* HACK AND HOPE */
- rewind(f);
- lseek(fileno(f), 0L, SEEK_SET);
- @@ -55,11 +59,10 @@
- struct gif_t *g = (struct gif_t *)img;
- GifColorType *colormap;
- SavedImage *s;
- + int ret;
-
- - if(DGifSlurp(g->gif) == GIF_ERROR){
- - PrintGifError();
- - return 1;
- - }
- + if((ret = DGifSlurp(g->gif)) != GIF_OK)
- + goto error;
-
- s = &g->gif->SavedImages[0];
-
- @@ -67,10 +70,8 @@
- colormap = s->ImageDesc.ColorMap->Colors;
- else if(g->gif->SColorMap)
- colormap = g->gif->SColorMap->Colors;
- - else{
- - PrintGifError();
- - return 1;
- - }
- + else
- + goto error;
-
- for(i = 0; i < img->bufwidth * img->bufheight; i++){
- unsigned char idx = s->RasterBits[i];
- @@ -82,11 +83,37 @@
- img->state |= LOADED | SLOWLOADED;
-
- return 0;
- +error:
- +#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5
- + fprintf(stderr, "GIFLIB: %s\n", GifErrorString(ret));
- +#elif defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && ((GIFLIB_MAJOR == 4 && GIFLIB_MINOR >= 2) || GIFLIB_MAJOR > 4)
- + fprintf(stderr, "GIFLIB: %s\n", GifErrorString());
- +#else
- + PrintGifError();
- +#endif
- + return 1;
- }
-
- void gif_close(struct image *img){
- struct gif_t *g = (struct gif_t *)img;
- +#if defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1)
- + int ret;
- +#endif
- +
- +#if defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1)
- + DGifCloseFile(g->gif,&ret);
- + if(ret != GIF_OK) {
- +#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5
- + fprintf(stderr, "GIFLIB: %s\n", GifErrorString(ret));
- +#elif defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && ((GIFLIB_MAJOR == 4 && GIFLIB_MINOR >= 2) || GIFLIB_MAJOR > 4)
- + fprintf(stderr, "GIFLIB: %s\n", GifErrorString());
- +#else
- + PrintGifError();
- +#endif
- + }
- +#else
- DGifCloseFile(g->gif);
- +#endif
- fclose(g->f);
- }
-
|