pkgsrc/graphics/giflib
ryoon f2e33ed300 Update to 5.0.4
Changelog:

Version 5.0.4
=============

Fix for a rare misrendering bug when a GIF overruns the decompression-code
table. The image on which this was spotted was a relatively long-running
animated GIF; still images of ordinary size should have been immune.

Version 5.0.3
=============

Fix a build-system glitch so it will install manpages.

Version 5.0.2
=============

Documentation and polish
------------------------
* Partial build is now possible on systems without xmlto.

Code Fixes
----------
* Change unused return of EGifSetGifVersion() to void.
* Buffer overrun prevention in gifinto.

Version 5.0.1
=============

Documentation and polish
------------------------
* There is now an installable manual page for the GIFLIB utility kit.

Retirements
-----------
* gifinter is gone.  Use convert -interlace from the ImageMagic suite.

Code Fixes
----------
* In 5.0.0 the private gif89 bit wasn't being guaranteed cleared at
  the beginning of EGifGetGifVersion(); this occasionally led to an
  incorrect version prefix being issued dependent on the state of
  malloced memory.
* An EGifSetGifVersion() function taking a GifFile argument has been
  added for use with the low-level sequential API. This change requires
  a bump of the library revision number.

Version 5.0.0
=============

Changes to the API require a library major-version bump. Certain
initialization functions have acquired an integer address argument for
passing back an error code, in order to avoid thread-unsafe static
storage. Application code using extension blocks will require minor
changes. A few functions have been renamed.

Code Fixes
----------
* Fixes applied for CVE-2005-2974 and CVE-2005-3350
  This closes Debian bug #337972.

New API Features
----------------

Thread Safety
~~~~~~~~~~~~~
The library is now completely re-entrant and thread-safe.

* Library error handling no longer uses a static cell to store the last
  error code registered; that made the library thread-unsafe.  For functions
  other than GIF file openers, the code is now put in an Error member of
  the GifFileType structure.  The GifError() amd GifLastError() functions
  that referenced that static cell are gone, and the GifErrorString()
  function introduced in the 4.2 release now takes an explicit error code
  argument.
* GIF file openers - DGifOpenFileName(), DGifOpenFileHandle(), DGifOpen(),
  EGifOpenFileName(), EGifOpenFileHandle(), and EGifOpen() - all now take
  a final integer address argument.  If non-null, this is used to pass
  back an error code when the function returns NULL.

Extensions
~~~~~~~~~~
The ExtensionBlock API has been repaired, solving some problems with GIF89
extension handling in earlier versions.

* DGifSlurp() and EGifSpew() now preserve trailing extension blocks with
  no following image file.
* Three documented functions - EGifPutExtensionFirst(), EGifPutExtensionNext(),
  and EGifPutExtensionLast() - have been relaced by new functions
  EGifPutExtensionLeader(), EGifPutExtensionBlock(), and
  EGifPutExtensionTrailer().  See the Compatibility section of
  the library API documentation for details.
* New functions DGifSavedExtensionToGCB() and EGifGCBToSavedExtension()
  make it easy to read and edit GIF89 graphics control blocks in saved images.

Namespacing
~~~~~~~~~~~
All functions exported by giflib now have DGif, EGif, or Gif as a name prefix.

* Three documented functions - MakeMapObject(), FreeMapObject(), and
  UnionColorMap() - have been renamed to GifMakeMapObject(),
  GifFreeMapObject(), and GifUnionColorMap() respectively.
* The library Draw* functions are now prefixed GifDraw*, and the
  text-drawing ones are suffixed with "8x8". This fixes a conflict
  with the Windows API and leaves the door open for more general text-drawing
  functions with different font sizes.

Other changes
~~~~~~~~~~~~~
* DGifSlurp() and EGifSpew() now read and write interlaced images properly.
* The amazingly obscure colormap sort flag and pixel aspect ratio
  features of GIF are now read and preserved, for whatever good that
  may do.
* Six undocumented functions have been renamed; five of these take additional
  or slightly different argument types. See the Compatibility section of
  the library API documentation for details.
* There's now an EGifGetGifVersion() that computes the version EGifSpew()
  will write.
* QuantizeBuffer() has been returned to the core library as GifQuantizeBuffer()
  - turns out some important applications (notably mplayer) were using it.
* TRUE and FALSE macros are gone, also VoidPtr.  No more namespace pollution.
* Various arguments have been made const where possible.

Retirements
-----------
* The (undocumented) gifinfo utility is gone.  Use giftool -f instead.
* The gifburst utility is gone.  Everybody has image viewers that
  can pan now, and removing it gets rid of a dependency on Perl.
* gifcompose is gone.  It was a decent idea when I wrote it in 1989,
  but I did the same thing better and cleaner a decade later with
  PILdriver in the PIL package. Removing it gets rid of a dependency
  on shell.
* gif2x11 gifasm, gifcomb, gifflip, gifovly, gifpos, gifresize, and gifrotate
  are all gone.  The ImageMagick display(1)/convert(1) utilities and PILdriver
  do these things better and in a format-independent way.
* Lennie Araki's Windows C++ wrapper is gone. It's eight years old,
  unmaintained, he has dropped out of sight, and a better one needs to
  be written to use the high-level GIFLIB API and GIF89 graphics
  control extension support.  We'll carry such a wrapper when we have
  a maintainer for it.
* EGifSetVersion(), introduced in 4.2, is gone. The library always
  writes GIF87 or GIF89 as required by the data. This change helps
  with thread safety.

Utilities
---------
* Several utilities have been renamed to (a) fix last-century's habit
  of arbitarily smashing vowels out of names to make them just one or two
  characters shorter, (b) ensure that every utility in this set has 'gif'
  as a name prefix. Here's the list:

	giffiltr -> giffilter
	gifspnge -> gifsponge
	icon2gif -> gifbuild
	text2gif -> gifecho
  	raw2gif  -> gif2raw

* To go with its new name, gif2raw now dumps raw pixels from a GIF if the
  (previously required) size option is missing.
* Standalone rgb2gif is gone; the same capability is now a mode of gif2rgb.
* giftext displays the parsed contents of GIF89 graphics control blocks.
* gifbuild handles GIF89 graphics control blocks and Netscape animation
  loop blocks; it can can display and update either.
* gifrotate and other filter utilities now preserve extension blocks,
  including the graphics control information for transparency and delay time.
* A new utility, giftool, supports a wide variety of filtering operations
  on GIFs, including: setting background and transparency colors, changing
  interlacing, setting image delays, setting the user-input flag, and setting
  the aspect-ratio byte.  It can sequence multiple operations.
* The test-pattern generators gifbg, gifcolor, gihisto and gifwedge and the
  code templates giffilter and gifsponge are no longer installed by default.

Documentation and polish
------------------------
* The history.txt and build.txt and files from 4.2.0 now have .asc extensions
  to indicate that they use asciidoc markup, contrasting with the txt
  standards files from CompuServe.
* The documentation now includes "What's In A GIF", a very detailed narrative
  description of the file format.
* The -A option of gifasm (for inserting a loop control block) is documented.
* The documentation directory includes a copy of the original GIF87
  specification as well as GIF89's.
* The project now has a logo.

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 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.
2013-07-05 13:23:20 +00:00
..
buildlink3.mk Update to 5.0.4 2013-07-05 13:23:20 +00:00
DESCR
distinfo Update to 5.0.4 2013-07-05 13:23:20 +00:00
Makefile Update to 5.0.4 2013-07-05 13:23:20 +00:00
Makefile.common Update to 5.0.4 2013-07-05 13:23:20 +00:00
PLIST split giflib into 2 pkgs: one for the lib, one for cmd line utils 2011-09-06 18:45:45 +00:00