			GIFLIB NEWS

Short-form summary of recent news:
 * Reverted a backport that shouldn't have been done.

Version 4.2.3
=============
* Reverted a backport that shouldn't have been done.

Version 4.2.2
=============
* Added -no-undefined option for MSYS builds.
* Backported a minor fix to error reporting from the 5.x branch:
  D_GIF_ERR_NO_SCRN_DSCR is now set when appropriate.
* Backported the 5.x fix for code table overflow.

Version 4.2.1
=============
* A bug that made EGifSetGifVersion() ineffective has been fixed.

Version 4.2.0
=============

Now maintained by ESR again after handoff by Toshio Kuratomi.

Code Fixes
----------
* Code updated internally to C99 to enable more correctness checks by
  the compiler. Compiles under GCC 4.6.1 without errors or warnings.
* A rare resource leak in the colormap-object maker was found with
  Coverity and fixed.
* The code now audits clean under Coverity and cppcheck.
* splint cleanup begun, there's a lot of work still to do on this.

New API Features
----------------
* The default GIF version to write is now computed at write time from
  the types of an image's extension blocks, but can be overridden with 
  EGifSetGifVersion().
* EGifSpew() is now thread-safe. 
* Two new functions, GifError() and GifErrorString(),
  return the error state in a form that can be used by programs.
* Two library functions - EGifOpenFileName() and EGifPutImageDesc() -
  now have bool rather than int flag arguments. Since bool is a
  typedef of int and TRUE/FALSE have been redefined to true/false, 
  both source and object compatibility with older library versions
  should be preserved. 
* GAGetArgs(), used only in the utilities, now returns bool rather
  than int. 
* The undocumented GIF_LIB_VERSION symbol is gone from the library header.  
  It has been replaced with three documented symbols: GIFLIB_MAJOR,
  GIFLIB_MINOR, and GIFLIB_RELEASE.

Retirements
-----------
* The gif2epsn and gif2iris utilities are gone.  They were full of
  platform dependencies for platforms long dead.  There are enough
  platform-independent GIF viewers in the world that these weren't
  adding any value. Removing these gets rid of a dependency on GL.
* The rle2gif, gif2rle, and gif2ps utilities are also gone. There are enough
  multiformat image converters in the world that these weren't adding 
  any value either.  Removing them reduces the codebase's dependencies.
* The gifburst utility is gone.  Everybody has image viewers that
  can pan now, and removing it gets rid of a dependency on Perl.
* The undocumented DumpScreen2Gif() is gone from the library.  The
  only non-obsolete capture mode it supported was through X, and that
  probably hasn't been used in years and is replaceable by any number
  of capture utilities.  Dropping this code makes the library's 
  portability issues go away.
* QuantizeBuffer(), GifQprintf(), PrintGifError(), GIF_ERROR() 
  and GIF_MESSAGE() have been removed from the core library.  
  They were used only by the utilities. QuantizeBuffer() has been
  inlined where it was used and the latter three are now part of the
  utility support library.
* The Game Boy Advanced test code is gone.  The platform was discontinued
  in 2008; more to the point, nobody ever documented the code's assumptions
  or expected results.
* The Changelog file is now retained for archival purposes only, and because
  autotools throws a hissy fit if there isn't one.  The single point of
  truth about changes and the reasons for them is the repository history.

Behavior changes
----------------
* The -q option of the utilities is replaced by an opposite -v (verbose)
  option; the default is now quiet for all platforms.  Defaulting to chattiness
  on MSDOS made sense in a world of slow text consoles, but not today.

Testing
-------
* There is now a proper regression-test suite; run 'make' in tests/.
  The old test-unx script is now tests/visual-check and can be run 
  occasionally for a check with the Mark One Eyeball.

Documentation
-------------
* Build instructions now live in build.txt
* An overview of the giflib API now lives in api.txt.
* Documentation is now in DocBook-XML, so either HTML or man pages can
  be generated from it.

Version 4.1.6
=============
Brown paper bag release.  Fix a problem with header inclusion that could
prevent the library from building on some platforms.

Version 4.1.5
=============
This version has some important fixes for segfaults when working with corrupt
files.  All users are strongly encouraged to upgrade.

Code Fixes
----------
* Fix segfault in utilities due to referencing ColorMaps in GifFiles that had
  no ColorMap present.
* Fix gif2x11 to work on 24 bit displays.
* Fix for giftext segfault when the GifFile does not store a global colormap.
* Checks to fail gracefully when an image contains improper LZ codes.
* Close file handles on failure in DGifOpenFileHandle()
* Checks to operate on files in binary mode on WIN32 as well as MSDOS.

Building
--------
* Add checks to make building on Win32 easier.
* Allow turning off gl_s, rle, and X11 support from the configure command line.
* Fix for finding a 32 bit integer type on some platforms.
* Only enable -Wall if we're using gcc.

Version 4.1.4
=============
This version fixes some bugs with deallocating ColorMaps.  Fix building on
several platforms.  Fix x86_64 builds to not hang the encoder.

* Fix several areas in decoding where we removed a ColorMap from our GifFile
  but didn't set the pointer to NULL.  This could lead to double free's of
  the ColorMap.
* Fix a bug in dev2gif.c where we redefined some gl types incorrectly.
* Fix a bug in the gif LZW encoder that was triggered on modern 64 bit
  platforms.
* Fix building on Windows.  Note -- there has been one API changing event for
  Windows (renaming DrawText to DrawGifText.)  This should have conflicted with
  Windows API and therefore caused the builds to fail previously.  If you had
  it working with DrawText before, apologies, you'll need to change to
  DrawGifText in your code.  This only affects Windows.
* Add support for building on The Game Boy Advance.  Note: Due to the GBA's
  limited memory, the API for the GBA uses short's in many places where the
  other platforms use ints.  This shouldn't affect anyone unless you've
  been able to get an older version of the code to run on GBA and want to
  start using this version instead.  A recompile of your dependent code
  will be necessary in this case.

Version 4.1.3
=============
This version fixes some bugs in the Extension writing code in
EGifPutExtensionFirst, Next, and Last.  Using these functions, it is possible
to output extensions that contain multiple subblocks.  Additionally, library
code has been updated to use these functions, making it safe to output
long Comments, and multi-block extensions read in from another file.

* giflib is now hosted on sourceforge with libungif:
  http://sourceforge.net/projects/libungif
* Make the EGifPutExtension{First,Next,Last} family of functions use WRITE
  so user defined WRITE methods will output them correctly.
* Modify EGifSpew and EGifPutComment to use EGifPutExtension{First,Next,Last}
  so we won't output broken GIFs when dealing with GIFs with multiple
  subblocks.
* More -Wall fixes revealed while testing on Solaris and FreeBSD.
* Updated the gif_lib.html documentation to not use EGifPutExtension when
  dealing with multiple subblocks.  Use EGifPutExtension{First,Next,Last}
  instead.
* Some Windows code from the old CVS repository now available in the windows
  subdirectory.  I don't have a Windows environment to test and maintain this
  but maybe someone out there will find it useful.  Caveat hacker.

Version 4.1.2
=============
* Numerous bug fixes from people on the old libungif mailing list.
* GIF_ERROR and GIF_MESSAGE are on the deprecation list as they are also
  utility helper functions rather than essential to the functioning of the
  library.
* Complete deprecation list is now in the README file
* Audited the sources with gcc -Wall. Everything detectable has now been fixed.
* Ran the library code through indent.
  
Version 4.1.1
=============
* Merge in many bug fixes that were sent in while I was hiking the
  Appalachian Trail.
* The qprintf methods of the library are now deprecated.  Do not use 
  GifQuietPrint or GifQprintf.  These should have been pushed out into the
  utility helper library instead of sitting around in the library proper at
  the same time as the getarg functions were moved out.  Getting rid of these
  will let us get rid of our dependence on stdarg.h/varargs.h (Which a Gif
  reading library has no business requiring.)

Version 4.1.0
=============
* Several minor memory leaks in error conditions have been plugged.
* New Function EGifOpen(void *userData, OutputFunc writeFunc) allows user
  specified gif writing functions.
* Old copyright notices in a few source files have been updated.  All library
  copyrights should now reflect the copyright notice in the COPYING file.

Version 4.0.0 -- giflib
=======================
This version of the giflib library merges Eric Raymond's giflib-3.0 release
with the libungif-4.0 release to give people a binary compatible choice
between the two libraries and gives me the chance to add bugfixes to giflib
that have been incorporated in libungif.

PLEASE READ THE FILE PATENT_PROBLEMS BEFORE USING THIS LIBRARY!

Version 4.0.0
=============
Major fixes have been made to the code that handles Extensions.
Unfortunately, this causes binary incompatibility with giflib-3.0 and
libungif-3.x.  However, the API is still intact.  I am, however, deprecating
the use of saveImage[x].Function.  Use
saveImage[x].ExtensionBlocks[y].Function instead.

Version 3.1.1
=============
 The following bugs which caused SegFaults have been fixed:
 * When reading gif files with extensions, DGifSlurp would violate memory.
 * When closing a gif that had a local colormap, DGifCloseFile would attempt
   to free the colormap twice.
 * Fix a potential memory leak in DGifSlurp.
 * New function DGifOpen to allow specifying a user definable gif reading
   function.

Version 3.1.0
=============
 * Add a new function:
        GifFileType *DGifOpen(void * userData, InputFunc readFunc)
   to read the gif image from a user defined input function.
 * A few bugfixes.

Version 3.0
===========

Changes from Eric Raymond's libgif
----------------------------------
* A new gif encoder that makes uncompressed gifs rather than standard,
  LZW-compressed gifs.  This is actually the major motivating factor behind
  libungif; to provide third-party distributors a means to provide a gif
  library without the patented LZW encoder.
* A new configure script to make compilation of the library on multiple
  platforms easier.  The package should now build shared libraries on all
  platforms supported by GNU libtool.
* Removed the getarg functions from libgif.  These were not part of the
  public API and only used by the tools in the utils directory so I separated
  them from the rest of the library.
* Fixed a few bugs in the tools in the utils directory.

Version 3.0
===========

New features
------------
* Incorporated Sirtaj Kang's changes to make both static and shared libs.
* All the utility and library docs are HTML now.
* The library and relevant utilities are now fully GIF89-aware.
* Functions for drawing text and boxes on saved images are documented.
* The distribution is now issued under a simple X-Consortium-style license.
* Can now generate package RPMs and LSM automatically.
* Home page with Web-acessible documentation at http://www.ccil.org/~esr/giflib

Bug fixes
---------
* Fix giftext to not core dump on a null extension record.
* Incorporate Philip VanBaren's change to prevent a core dump in gifasm.

Version 2.3
===========
* Fixed a core-dump bug in gifcomb revealed by ELF environment in Linux 1.2.13.

Version 2.2b
============
* Added gifburst tool.

Version 2.2
===========
* Linux is supported.

Version 2.1
===========
* Added the gifovly tool, which supports making a composite from several GIF
  images.
* Used gifovly to implement a full-fledged pasteup program in shell.  It's
  called gifcompose and lives in the util directory.
* Added a copy of the GIF89 standard to the doc directory (gif89.txt);
  also a description of the preferred compression method (lzgif.txt).

Version 2.0
===========
   With this version, development was taken over from Gershon Elber by Eric
S. Raymond <esr@snark.thyrsus.com>.  Note that I, esr, have pretty much
adhered to Gershon's coding style, even though it's quite baroque and DOS-
headed by my standards.

Library Improvements
--------------------
* New DGifSlurp() and EGifSpew() library entry points allow all GIF-bashing
  to be done in core on machines with sufficient memory.  Writing code to
  slice'n'dice multiple GIFs in non-sequential ways is now much easier (send
  kudos and brickbats to esr, small unmarked bills preferred).
* The interface has changed somewhat.  Members in the GifFileType structure
  have been renamed and regrouped.  This was required for support of the
  SavedImages member (which enables the new functions mentioned in 1).  Also,
  there is a new data type for allocated color maps and routines to handle
  it conveniently.
* Some minor bugs have been fixed.  Most notably, the DGif code now correctly
  handles the possibility of more than one code block per extension record,
  as per the GIF spec.  It's not clear, however, that anyone ever has or
  ever will use this feature for anything...

New Tools and Options
---------------------
* A brand new, ultra-spiffy tool `icon2gif' is included.  It assembles named
  GIFs with editable text color map & icon raster representations to produce
  multi-image GIFs usable as graphical resource files.  It can also dump most
  GIFs in the same text-only form it parses.  This makes it easy to edit GIFs
  even if you don't have a graphics editor.
* The gifclip utility supports a new `-c' (complement) option that allows you
  to perform an `inverse clip', removing horizontal or vertical bands from an
  image.
* The gifclrmp utility supports a new `-t' switch for shuffling color index
   values.
* A new tool `gifcolor' generates test pattern from colormap input.

New Documentation and Examples
------------------------------
* The documentation has been overhauled completely and translated out of the
  dialect spoken by the estimable Mr. Elber into something like standard
  English :-).
* Two source code files gifspnge.c and giffiltr.c have been added to the
  util directory.  These are GIF copiers that exercise the I/O routines,
  provided as skeletons for your applications.  Read the comments in them
  for more info.
* The util Makefile for UNIX has been improved.  It now uses the cc/gcc -s
  option rather than strip(1).  There are now separate install productions,
  so you can test new versions in util before installation for production
  (the top-level make script still does an install).

Version 1.2
===========
* GIFFIX - a new tool to attempt and fix broken GIF images. Currently fix
  images that has EOF prematurely by padding with the darkest color.
* Make GIF2BGI display as much as it can considering the mem. avail.
* Add -q flag to all tools for quite running scan line number mode.
* Fix a (minor!?) bug in the GIF decoder when encountering code 4095.
* New tools (RGB2GIF and GIF2RGB) to convert GIF to/from 24 bits RGB images.
* New tool GIFROTAT to rotate a gif image by an arbitrary angle.
* GifRSize was updated to resize by an arbitrary factor.

Version 1.1
===========
* GIF2BGI - a new utility to display GIF images using Borland's BGI drivers
  (if you have one...)
* TEXT2GIF - Converts plain text into GIF images.
* GIF2IRIS - SGI4D display program for GIF images.
* GIF_LIB naming convension has been modified to make sure it has unique
  names (see gif_lib.h).
* Support for SGI4D gl and X11 window grabbing has been added to the
  library. SGI4D input is quantizied into 8 bits.
  Also support for EGA/VGA devices has been added as well.
  see Dev2gif.c module.
* Support for the new gif89a format has been added.



