Adjust source code to work with giflib 5.1x

Downloaded patch for gif.c from
https://projects.archlinux.org/svntogit/community.git/plain/trunk/giflib-5.1.patch?h=packages/fbv

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

diff -wbBur fbv-1.0b/gif.c fbv-1.0b.my/gif.c
--- fbv-1.0b/gif.c	2003-08-25 00:23:02.000000000 +0400
+++ fbv-1.0b.my/gif.c	2014-05-29 18:39:41.337332872 +0400
@@ -31,10 +31,10 @@
 #include <string.h>
 #define min(a,b) ((a) < (b) ? (a) : (b))
 #define gflush return(FH_ERROR_FILE);
-#define grflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); }
-#define mgrflush { free(lb); free(slb); DGifCloseFile(gft); return(FH_ERROR_FORMAT); }
+#define grflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); }
+#define mgrflush { free(lb); free(slb); DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); }
 #define agflush return(FH_ERROR_FORMAT);
-#define agrflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); }
+#define agrflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); }
 
 
 int fh_gif_id(char *name)
@@ -81,7 +81,7 @@
     ColorMapObject *cmap;
     int cmaps;
 
-    gft=DGifOpenFileName(name);
+    gft=DGifOpenFileName(name, NULL);
     if(gft==NULL){printf("err5\n"); gflush;} //////////
     do
     {
@@ -170,7 +170,7 @@
 	}
     }
     while( rt!= TERMINATE_RECORD_TYPE );
-    DGifCloseFile(gft);
+    DGifCloseFile(gft, NULL);
     return(FH_ERROR_OK);
 }
 
@@ -184,7 +184,7 @@
     int extcode;
     GifRecordType rt;
 
-    gft=DGifOpenFileName(name);
+    gft=DGifOpenFileName(name, NULL);
     if(gft==NULL) gflush;
     do
     {
@@ -197,7 +197,7 @@
 		px=gft->Image.Width;
 		py=gft->Image.Height;
 		*x=px; *y=py;
-		DGifCloseFile(gft);
+		DGifCloseFile(gft, NULL);
 		return(FH_ERROR_OK);
 		break;
 	    case EXTENSION_RECORD_TYPE:
@@ -210,7 +210,7 @@
 	}  
     }
     while( rt!= TERMINATE_RECORD_TYPE );
-    DGifCloseFile(gft);
+    DGifCloseFile(gft, NULL);
     return(FH_ERROR_FORMAT);
 }
 #endif
diff -uNr fbv-1.0b.org/configure fbv-1.0b/configure
--- fbv-1.0b.org/configure	2004-09-07 13:29:27.000000000 +0200
+++ fbv-1.0b/configure	2015-01-29 19:58:30.374599874 +0100
@@ -106,9 +106,9 @@
 ungif="no"
 echo "libungif check" >>./config.log
 echo "  1st:" >>./config.log
-$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif $libs
+$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lgif $libs
 if [ -e \$\$~test ]; then
-	libs="-lungif $libs" ; ungif="yes"
+	libs="-lgif $libs" ; ungif="yes"
 else
 	echo "  2nd: -lX11 -L$xdir/lib" >>./config.log
 	$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif -lX11 -L$xdir/lib $libs
