summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2023-10-17 13:07:34 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2023-10-17 13:07:34 +0000
commitda0d5492b55d2255955c80c4754359dcfcf60c48 (patch)
tree05526b53031a13182e53d7e8dc1a3f4c2c012cae /lib
parent56a170ffcc54f0a84bac00d9bea792161cbf0f07 (diff)
Update libXpm to version 3.5.17. ok tb@
Diffstat (limited to 'lib')
-rw-r--r--lib/libXpm/CHANGES957
-rw-r--r--lib/libXpm/ChangeLog128
-rw-r--r--lib/libXpm/Makefile.bsd-wrapper4
-rw-r--r--lib/libXpm/configure.ac5
-rw-r--r--lib/libXpm/include/X11/xpm.h8
-rw-r--r--lib/libXpm/m4/libtool.m45
-rw-r--r--lib/libXpm/src/RdFToBuf.c2
-rw-r--r--lib/libXpm/src/RdFToI.c8
-rw-r--r--lib/libXpm/src/WrFFrBuf.c2
-rw-r--r--lib/libXpm/src/WrFFrI.c4
-rw-r--r--lib/libXpm/src/XpmI.h77
-rw-r--r--lib/libXpm/src/rgb.c2
-rw-r--r--lib/libXpm/test/TestAllFiles.h6
-rw-r--r--lib/libXpm/test/XpmRead.c6
-rw-r--r--lib/libXpm/test/XpmWrite.c6
-rw-r--r--lib/libXpm/test/rgb.c2
16 files changed, 209 insertions, 1013 deletions
diff --git a/lib/libXpm/CHANGES b/lib/libXpm/CHANGES
deleted file mode 100644
index b90e6cdd7..000000000
--- a/lib/libXpm/CHANGES
+++ /dev/null
@@ -1,957 +0,0 @@
-/*
- * Copyright (C) 1989-95 GROUPE BULL
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of GROUPE BULL shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from GROUPE BULL.
- */
-
-/**************************************************************************\
-* *
-* HISTORY of user-visible changes *
-* *
-\**************************************************************************/
-
-3.4k (98/03/18)
-
- ENHANCEMENTS:
- - A new program called cxpm is provided to check on XPM files and help
- figuring out where the file might be invalid.
- - The FAQ and README are now in HTML.
-
- BUGS CORRECTED:
- - A bug in writing pixmaps out on an 32 bit depth visual and MSBFirst
- machine.
- - patch from Uwe Langenkamp <Uwe.Langenkamp@t-online.de>
- - A severe bug in parsing the pixels section when an unknown character
- is encountered.
-
-3.4j (96/12/31)
-
- ENHANCEMENTS:
- - The XPM library can now be built under Amiga DOS. This entirely comes
- from: Lorens Younes <d93-hyo@nada.kth.se>
- See the README.AMIGA file for details.
- - Changes for MSW: big performance improvement in ParseAndPutPixels(),
- fixed creation of the mask in SetColor()
- - patch from Jan Wielemaker <jan@swi.psy.uva.nl>
- - makefiles are provided for VMS
- - given by Martin P.J. Zinser m.zinser@gsi.de
- - Imakefiles reworked to get smoother builds and fixes from:
- - Paul DuBois dubois@primate.wisc.edu
- - Larry Schwimmer schwim@cyclone.stanford.edu
- - thanks to some code rearrangement the library is smaller (the size
- reduction goes from 4 to 7% depending on the system)
-
- BUGS CORRECTED:
- - A severe bug (introduced in 3.4i as part of the sprintf
- optimization) in code writing XPM extensions to a buffer
- XpmCreateBufferFromImage/Pixmap.
- - The XpmAttributes definition in xpm.h was declaring nalloc_colors to
- be Bool, it's an int.
-
-3.4i (96/09/13)
-
- NEW FEATURES:
- - The XPM library now allows the application to pass its own color
- allocation/free functions. For this matter the following was done:
- The XpmAttributes structure has three new fields alloc_color,
- free_color, and color_closure. The following new valuemasks were
- added XpmAllocColorFunc, XpmFreeColorsFunc, XpmColorClosure. And
- two new types were defined XpmAllocColorFunc and XpmFreeColorsFunc.
- See documentation for details.
-
- ENHANCEMENTS:
- - Windows NT support. It should compile and run fine based on the X
- Consortium X11R6 distribution.
- - The README file contains information to compile on Solaris with gcc.
- - Part of the code has been optimized by using the value returned by
- sprintf instead of calling strlen. Add the flag -DVOID_SPRINTF
- if on your system sprintf returns void.
- - patch from Thomas Ott thommy@rz.fh-augsburg.de
-
- BUGS CORRECTED:
- - XpmFree is now a real function (simply calling free by default).
-
- CHANGES TO THE DOC:
- - The documentation describes the new XpmAttributes fields and their
- use.
-
-3.4h (96/02/01)
-
- NEW FEATURES:
- - The XpmAttributes has a new member called 'alloc_close_colors' which
- lets the caller specify whether close colors should be allocated
- using XAllocColor or not. This is especially useful when one uses a
- private colormap full of read/write cells.
- The xpm.h header file define a new bitmap flag called
- XpmAllocCloseColors to use along with this new slot.
- - Dale Pease peased@bigbird.cso.gtegsc.com
- - The XpmAttributes has a new member called 'bitmap_format' which lets
- the caller specify the format of 1 bit depth images (XYBitmap or
- ZPixmap). The xpm.h header file define a new bitmap flag called
- XpmBitmapFormat to use along with this new field.
-
- ENHANCEMENTS:
- - XpmReadFileTo[Image/Pixmap], XpmCreate[Image/Pixmap]FromData,
- XpmCreateImageFromDataFromBuffer functions do no longer use a
- temporary XpmImage object, which reduces a lot the amount of memory
- used. On the other hand it can take a little more time, but given the
- following figures (based on sxpm) it is a real good trade-off.
-
- Reading a 22x22 pixmap with 5 colors no time change is detected
- using time:
- real 0.3
- user 0.1
- sys 0.1
-
- Reading a 1279x1023 pixmap with 14 colors (quite extreme case for
- XPM!) the time goes from:
- real 1.9
- user 0.8
- sys 0.8
-
- to:
- real 2.2
- user 1.8
- sys 0.3
-
- Reading the 22x22 pixmap with 5 colors the memory usage (under
- purify) goes from:
- 255256 code
- 55496 data/bss
- 163848 heap (peak use)
- 4248 stack
- to:
- 271240 code
- 55472 data/bss
- 159752 heap (peak use)
- 4224 stack
-
- And reading the 1279x1023 pixmap with 14 colors it goes from:
- 255256 code
- 55496 data/bss
- 6705160 heap (peak use)
- 4280 stack
- to:
- 271240 code
- 55472 data/bss
- 1732616 heap (peak use)
- 4264 stack
-
- This clearly shows that while for small pixmaps there is no real
- difference on both sides, for large pixmaps this makes a huge
- difference about the amount of memory used and it is not much
- slower.
-
- Note that you can still get the old behavior using both
- XpmReadFileToXpmImage and XpmCreate[Image/Pixmap]FromXpmImage instead
- of XpmReadFileTo[Image/Pixmap]. Once more XPM gives you the choice!
-
- BUGS CORRECTED:
- - when defined locally the global symbols strcasecmp and strdup are
- now called xpmstrcasecmp and xpmstrdup to avoid any possible
- conflict.
- - VMS has a bogus file system which requires a work around in
- XpmReadFileToBuffer.
- - patch from Bob.Deen@jpl.nasa.gov
- - the type of the exactColors attribute has been changed from unsigned
- int to Bool.
-
- CHANGES TO THE DOC:
- - the documentation describes the new XpmAttributes fields
- alloc_close_colors and bitmap_format.
-
-3.4g (95/10/08)
-
- ENHANCEMENTS:
- - The XpmAttributes structure has now two new slots: alloc_pixels and
- nalloc_pixels in order to provide an easy way to free allocated
- colors. The new bitmask XpmReturnAllocPixels should be used to
- request this data through the valuemask. Unless you really know why,
- you should use this instead of XpmReturnPixels, pixels, and npixels.
- - the XPM1 format parsing has been improved.
- - patch from Chuck Thompson <cthomp@cs.uiuc.edu>
- - compilers defining _STDC_ to something different from 1 are now
- considered as ANSI compilers.
- - the README file provides now more info on how to build XPM depending
- on the system.
-
- BUGS CORRECTED:
- - a bug introduced in 3.4f in the XPM1 format parsing function.
- - fix from Chuck Thompson <cthomp@cs.uiuc.edu>
- - the hashtable was not free when the color parsing failed.
- - patch from ackley@cs.unm.edu (David Ackley)
- - the close color mechanism wasn't used if one of the closeness
- parameter was null. Now only one needs to be different from 0.
- Lorens Younes d93-hyo@nada.kth.se
- - parsing of long comments failed with a segmentation fault.
-
- CHANGES TO THE DOC:
- - the documentation describes the new XpmAttributes fields
- alloc_pixels and nalloc_pixels and how they are used.
-
-3.4f (95/05/29)
-
- ENHANCEMENTS:
- - Defines IMAKE_DEFINES in the top Imakefile so one can easily avoid
- building the shared library.
- - Add some information about the installation process in the README.
- - filenames are surrounded with quotes when calling gzip or compress in
- order to allow spaces within filenames.
- - William Parn <parn@fgm.com>
- - the compilation and the shared library building should be smoother
- on Alpha OSF/1.
- - patch from Dale Moore <Dale.Moore@CS.cmu.edu>
-
- BUGS CORRECTED:
- - a segmentation fault occurring in some weird case.
-
-3.4e (95/03/01)
-
- ENHANCEMENTS:
- - The top Imakefile passes CDEBUGFLAGS and DEFINES to subdirs. Thus
- only this Imakefile should need to be edited by users.
- - FAQ includes the answer to the question "How can I get a non
- rectangular icon using XPM ?"
- - VMS support updated
- - patch from Martin P.J. Zinser m.zinser@gsi.de
-
- BUGS CORRECTED:
- - XpmCreateImageFromXpmImage() called from XpmReadFileToPixmap() could
- lead to a segmentation fault since free was called on a memory block
- size variable instead of the block itself. Note: this bug has been
- introduced in 3.4d.
-
-3.4d (95/01/31)
-
- ENHANCEMENTS:
- - sxpm now supports a -version option command.
-
- BUGS CORRECTED:
- - the list of pixels returned in XpmAttributes was wrong when two
- colors were defined as None in the read XPM
- - Lionel.Mallet@sophia.inria.fr
- - the parser was skipping whitespace reading extensions strings. This
- has been fixed so extensions lines are now returned exactly as they
- are.
- - some compilation control added for the dec alpha with X11R5 (LONG64)
- - patch from Fredrik Lundh <Fredrik_Lundh@ivab.se>
- - when writing an XPM file, '-' characters are replaced with '_'
- characters in the array name, in order to get a valid C syntax name.
- - XYPixmap format images were not correctly handled.
- - XPM1 file with names using multiple '_' characters are now handled
- correctly.
- - todd@erda.rl.af.mil (Todd Gleason)
-
-3.4c (94/06/06)
-
- Yes, this is kind of quick. But this is because no code has been modified,
- this is just a new packaging to make the whole stuff more suitable to the
- X development team's requests for inclusion in the R6 contrib.
-
- ENHANCEMENTS:
- - Several filenames were too long to fit without any conflict on DOS
- and CD-ROM filesystems. They have been renamed.
- - Imakefiles use XCOMM for comments instead of the # character.
- - the Postscript documentation file doc/xpm.ps is now distributed as
- doc/xpm.PS.gz and allows browsing with tools such as ghostview.
- - Besides, parts of lib/misc.c have been moved to several new files,
- and some functions of data.c have been moved to other files in
- order to get a better link profile.
- - I've also added a FAQ hoping this will prevent people from
- continuously filling my mailbox with the same questions.
- - sxpm.c includes <X11/xpm.h> instead of "xpm.h" and BUILDINCTOP is
- used in Makefiles as expected.
- - Everything can be done simply using "xmkmf -a" and "make".
-
-3.4b (94/05/24)
-
- ENHANCEMENTS:
- - XPM can now be built under MS Windows. Yes, this is possible and this
- entirely comes from:
- - Hermann Dunkel <hedu@cul-ipn.uni-kiel.de>
- See the README.MSW file for details.
-
- - building the shared library now depends on the SharedLibXpm variable
- and no longer on the SharedLibX variable which is private to the X
- Window System project.
- - patch from Stephen Gildea <gildea@x.org>
- Other variables can now be set for the various locations needed.
-
- - lib/parse.c does no longer use a 256x256 array in the stack but
- malloc it instead.
-
- - The Copyright notice which has been re-written from the X11R6's one
- should be clearer and is now present in every file.
-
- BUGS CORRECTED:
- - lib/xpmP.h does no longer define a Boolean type which conflicts with
- the Intrinsic definition. Instead the type Bool defined in Xlib is
- used.
- - neumann@watson.ibm.com (Gustaf Neumann)
-
-3.4a (94/03/29)
-
- BUGS CORRECTED:
- - passing NULL as shapemask_return to XpmReadFileToPixmap and similar
- functions was leading to a bus error.
- - Dean Luick <dean@falcon.natinst.com>
-
-3.4 (94/03/14)
-
- IMPORTANT NOTE:
- This version is not compatible with 3.3. Fortunately most people should
- only need to recompile.
- I apology for this but CDE/Motif have put heavy pressure to go that
- way. The point is that I designed and released Xpm 3.3 in order to let
- OSF include a clean version of Xpm in Motif 2.0. This new version was
- not fully compatible with 3.2 but I thought it didn't matter since this
- was going to be the first version used within Motif. Unfortunately CDE
- was already using xpm-3.2 internally and requires both source and
- binary backward compatibility. By the way I must say they didn't drop
- us a single line to let us know they were using it and thus were
- expecting stability. All this could have been avoided...
-
- However, since I had to go for a not compatible version I took this as
- an opportunity to modify the lower level API, which was new in 3.3 and
- which was somewhat clumsy, in order to provide yet a better API.
-
- The library has been modified to have both source and binary backward
- compatibility with xpm-3.2. This implies it is not either source or
- binary compatible with 3.3. The fields related to the 3.2 XpmInfos
- mechanism have been put back into the XpmAttributes structure. The new
- 3.3 XpmInfos struct has been renamed as XpmInfo to avoid conflict with
- the old 3.2 flag which is back too. All the semantic related to the
- XpmAttributes infos fields is back as well.
-
- So this new version provides a high level API which is fully
- compatible with 3.2 and still provides the 3.3 lower level API
- (XpmImage) with the XpmInfos struct renamed as XpmInfo. This leads to
- some redundancy but this was the best I could do to satisfy both
- CDE/Motif people who needed the backward compatibility and myself (who
- always tries to provide you with the best ;-).
-
- Tests have been successfully performed with pixmap-2.1, pixmap-2.4, and
- sxpm.
-
- ENHANCEMENTS:
- - The colorTable member of the XpmAttributes structure is now an
- (XpmColor*) in order to be compatible with an XpmImage colorTable.
- However in order to be backward compatible this field is cast to
- (XpmColor **), which is equivalent to (char ***), when it is used
- with the old flags XpmInfos and XpmReturnInfos. To handle the new
- type the new flags XpmColorTable and XpmReturnColorTable have been
- defined.
- - The XpmInfo struct has been extended to avoid having to deal with an
- XpmAttributes at the lower level. The idea is that all the data
- stored in an Xpm file can be retrieve through both an XpmImage and
- an XpmInfo struct. See the documentation for details.
- - XpmUndefPixel is defined and exported by xpm.h in order to let
- clients providing their own colorTable when writing out an Xpm file.
- See the documentation for details.
- - in sxpm/sxpm.c, set attribute XtNinput to True on toplevel widget.
- Windows that don't "take" input, never get focus, as mandated by
- the ICCM.
- patch from Henrique Martins <martins@hplhasm.hpl.hp.com>
- - lib/Imakefile modified to build the shared library under IRIX 5.
- patch from simon@lia.di.epfl.ch (Simon Leinen)
-
- NEW FEATURES:
- - a new function and a new define should help client figuring out with
- which Xpm library version they are working. These are
- XpmIncludeVersion and XpmLibraryVersion().
-
-3.3 (93/12/20)
-
- NEW FEATURES:
- - XPM1 files are now supported.
- - a new function is provided to get an error string related to the
- returned error code.
- - suggested by Detlef Schmier <detlef@mfr.dec.com>
-
- ENHANCEMENTS:
- - gzip and gunzip are called with the -q option (quiet)
- - patch from Chris P. Ross <cross@eng.umd.edu>
- - the parser is again more flexible about the way the strings are
- distributed on lines. Actually a single line XPM file can be read.
- - the documentation should be clearer about shapemask generation and
- XpmAttributes valuemask.
-
- BUGS CORRECTED:
- - reading some binary file was leading to a bus error.
- - patch from Detlef Schmier <detlef@mfr.dec.com>
- - the ? character is no longer used when writing an XPM file in order
- to avoid possible ANSI trigraphs.
-
-3.3alpha (93/08/13)
-
- NEW FEATURES:
- - a new level interface is provided to allow applications to do either
- icon editing or data caching.
- The XpmAttributes has been changed but most applications will just
- need to be recompiled.
- - new structures are provided to deal with the new lower level:
- XpmImage, XpmColor, XpmInfos.
-
- - a separate distribution called xpm-contrib is available. This
- includes the converters which used to be part of this distribution
- plus:
- two new applications:
- * nexpm to draw a pixmap in *any* existing window from
- Ralph Betza <gnohmon@ssiny.com>
- * xpmview to display a list of Xpm files from
- Jean Michel Leon <leon@sophia.inria.fr>
-
- a hacky string to pixmap converter, provided by
- Robert H. Forsman Jr. <thoth@manatee.cis.ufl.edu>
-
- The Xpm editor called pixmap will also be part of this contrib.
- This does not mean it is the best pixmap editor one can find
- but it is the only one that I know of which tries to handle
- all the features of this format.
-
- ENHANCEMENTS:
- - the code to build XImage data has been optimized by
- jules@x.co.uk (Julian Gosnell)
- the old code is still available when compiling with the
- -DWITHOUT_SPEEDUPS flag.
-
- - closecolor code was not re-entrant
- - dbl@visual.com (David B. Lewis)
- - fix gzip filename (*.gz and no longer *.z).
- - Jason Patterson <jasonp@fitmail.fit.qut.edu.au>
- - sxpm has 2 new options:
- -nom to do not display the mask if there is one
- -cp <color> <pixel> to override a color value with a given
- pixel, i.e. sxpm plaid.xpm -cp red 4
-
- also the '-s' adn '-p' options have been renamed to '-sc' and '-sp'.
-
- - xpm.h defines XpmFormat, XpmVersion, and XpmRevision numbers.
-
- BUGS CORRECTED:
- - closecolor minor fix
- - Jason Patterson <jasonp@fitmail.fit.qut.edu.au>
-
-3.2g (93/04/26)
-
- ENHANCEMENTS:
- - much faster close colors
- - piping from/to compressed files now handles GNU's gzip (.z) format
- - added XpmColorKey attribute - ability to specify which visual's
- colors to use (ie: now it's possible to read in a pixmap in a
- color visual, but use the colors specified for monochrome).
- - added -mono, -grey4, -grey and -color options to sxpm to demonstrate
- the XpmColorKey attribute.
- - Jason Patterson <jasonp@fitmail.qut.edu.au>
-
- BUGS CORRECTED:
- - fixed bug where redefining "None" as a pixel stopped mask generation
- - minor SVR4 defines for <string.h>
- - fixed annoying closecolor bug related to read/write color cells
- - fixed minor bug in color value -> pixel overloading
- - manual updated to include new red/green/blue closeness attributes
- - Jason Patterson <jasonp@fitmail.qut.edu.au>
-
- - the top Imakefile was missing the depend target
- - sxpm/Imakefile fixed so that -L../lib is set before the standard
- library location.
- - Vivek Khera <khera@cs.duke.edu>
-
- - lib/xpmP.h now defines bcopy as memcpy for VMS (required by recent
- versions of VMS)
- - J. Daniel Smith <dsmith@ann-arbor.applicon.slb.com>
-
- - the lib/Imakefile didn't work with X11R4.
-
-
-3.2f (93/03/17)
-
- NEW FEATURES:
- - the library provides four new functions to deal with Xpm files
- loaded in memory as single character strings buffers:
-
- XpmCreateImageFromBuffer
- XpmCreatePixmapFromBuffer
- XpmCreateBufferFromImage
- XpmCreateBufferFromPixmap
-
- - in addition, as a convenience, two functions are provided to copy a
- file in a buffer and to write a file from a buffer:
-
- XpmReadFileToBuffer
- XpmWriteFileFromBuffer
-
- ENHANCEMENTS:
- - Files are now dispatched in the following sub-directories:
- lib, sxpm, and doc.
- - Imakefiles will let you build a shared library as well as the static
- one (with either X11R4 or X11R5).
- - The documentation has been ported from LaTeX to FrameMaker and is
- now included in the distribution in its PostScript form (doc/xpm.ps).
- Source files are available on request.
- Also the documentation has been reorganized and includes a table of
- contents and an index of the functions (the number of functions
- increasing this became a requisite).
-
- BUGS CORRECTED:
- - Many warnings have been fixed - patch from Daniel Dardailler
- daniel@osf.org
-
-3.2e (93/02/05)
-
- ENHANCEMENTS:
- - use XpmMalloc, XpmRealloc, XpmCalloc, and XpmFree which are defines
- in xpmP.h. This should help people wanting to use their own functions.
-
- BUGS CORRECTED:
- - Intrinsic.h is no longer included.
- - bzero is defined as memset on SYSV and SVR4.
- - some memory initialization bug concerning XpmAttributes.
-
-3.2d (93/01/27)
-
- ENHANCEMENTS:
- - compile on Solaris 2.0
- - patch from Clint Jeffery <cjeffery@cs.arizona.edu>
-
- BUGS CORRECTED:
- - shape masks are now set correctly for LSBFirst (Decs).
- - pixmaps are now set correctly for 2 bit displays (Nexts).
- - patch from Josef Leherbauer <joe@takeFive.co.at>
- - isspace was called on getc which fails when EOF is returned.
- - Marelli Paolo <marelli@colos3.usr.dsi.unimi.it>
-
-3.2c (92/12/29)
-
- ENHANCEMENTS:
- - parsing optimized for single and double characters color
- - patch originally from Martin Brunecky
- marbru@build1.auto-trol.com
-
- BUGS CORRECTED:
- - XpmFreeExtensions was calling free on some argument without checking
- it was not NULL.
- - strdup was not correctly defined for systems which do not provide
- it. - Hans-Peter Lichtin <lich@zellweger.ch>
- - some bug in XpmCrDataFI.c
- - Sven Delmas garfield@avalanche.cs.tu-berlin.de
-
- NOTE:
- - there is still a bug with the creation of the clipmask on display of
- depth 2 but I can't find a fix because unfortunately I don't have such
- a rendering system and nobody gets the time to investigate for me.
-
-3.2b (92/10/19)
-
- ENHANCEMENTS:
- - Create XpmReadFileToData and XpmWriteFileFromData
- - Dan Greening <dgreen@sti.com>
- - added "close colors" support and ability to redefine color values
- as pixels at load time, as well as color names
- - Jason Patterson <jasonp@fitmail.qut.edu.au>
- - errors while parsing or allocating colors now revert to other
- visual defaults, creating pixmap/image as expected, and returning
- XpmSuccess. The old behavior of XpmColorError being returned and no
- pixmap/image being created can be retained by setting the
- exactColors attribute.
- - Jason Patterson <jasonp@fitmail.qut.edu.au>
-
- BUGS CORRECTED:
- - SVR4 defines for including <string.h> instead of <strings.h>
- - Jason Patterson <jasonp@fitmail.qut.edu.au>
- - attributes->extensions and attributes->nextensions fields were not
- set correctly when no extensions present in file.
- - Simon_Scott Cornish <cornish@ecr.mu.oz.au>
-
-3.2a (92/08/17)
-
- ENHANCEMENTS:
- - use the mock lisp hashing function instead of the gnu emacs one,
- it is faster in some cases and never slower (I've not found any case).
-
- BUGS CORRECTED:
- - function prototypes for ansi compilers.
- - some memory initialization bugs (purify is just great for this).
- - empty strings in extensions are now correctly handled.
-
-3.2 (92/07/06)
-
- NEW FEATURES:
- - both format and functions handle extensions data. This allow people
- to store additional data related to a pixmap. See documentation for
- detail.
- - sxpm supports the new option '-c' to use a private colormap. This is
- useful when displaying pixmaps using a lot of colors.
- - sxpm supports the new option '-v' (verbose) to get possible
- extensions print out on standard error.
-
- ENHANCEMENTS:
- - most of the code has been reworked to be improved and thus almost
- every function is faster. It takes less than 6 seconds of real time on
- a sun4 to display, with sxpm, a 487x635 pixmap using 213 colors, while
- it takes 32 seconds with the old library! It takes 18 seconds to
- display a 1279x1023 screen dump using 14 colors while xwud takes 10
- seconds.
- Of course performance improvements are not always that great, they
- depend on the size and number of colors but I'm sure everybody will
- appreciate ;-)
- I know how to improve it more but this will require changes in the
- architecture so this is not for now. Some optimizations have been
- contributed by gregor@kafka.saic.com (gregg hanna) and
- jnc@csl.biosci.arizona.edu (John N. Calley).
- - the Imakefile is modified to let you install sxpm - Rainer Klute
- <klute@irb.informatik.uni-dortmund.de>
- - xpmP.h declares popen for Sequent platforms - Clinton Jeffery
- <cjeffery@cs.arizona.edu>
- - XpmWriteFileFromImage/Pixmap rather than truncating the pixmap name
- to the first dot changes dots to underscores to get a valid C syntax
- name.
-
-
- BUGS CORRECTED:
- - there was a bug in the image creation function for some 24 bits
- displays. It is fixed.
- - allocated color pixels are now freed when an error occurs -
- nusser@dec1.wu-wien.ac.at (Stefan Nusser)
-
- CHANGES TO THE DOC:
- - the documentation describes the new XpmExtension structure and how
- to use it with read and write functions.
-
-3.1 (92/02/03)
-
- ENHANCEMENTS:
- - sxpm now have more standard options (mainly suggested by
- Rainer Sinkwitz <sinkwitz@ifi.unizh.ch>):
-
- Usage: sxpm [options...]
- Where options are:
-
- [-d host:display] Display to connect to.
- [-g geom] Geometry of window.
- [-hints] Set ResizeInc for window.
- [-icon filename] Set pixmap for iconWindow.
- [-s symbol_name color_name] Overwrite color defaults.
- [-p symbol_name pixel_value] Overwrite color defaults.
- [-plaid] Read the included plaid pixmap.
- [filename] Read from file 'filename', and from
- standard input if 'filename' is '-'.
- [-o filename] Write to file 'filename', and to standard
- output if 'filename' is '-'.
- [-nod] Don't display in window.
- [-rgb filename] Search color names in the rgb text file
- 'filename'.
-
- if no input is specified sxpm reads from standard input.
-
-
- - Xpm functions and Ppm converters now deal with multiword colornames.
- patches from Rainer Sinkwitz <sinkwitz@ifi.unizh.ch>.
-
-
-3.0 (91/10/03)
-
- Functions name and defines have been modified again (sorry for that)
- as follows:
-
- XpmReadPixmapFile XpmReadFileToPixmap
- XpmWritePixmapFile XpmWriteFileFromPixmap
-
- XpmPixmapColorError XpmColorError
- XpmPixmapSuccess XpmSuccess
- XpmPixmapOpenFailed XpmOpenFailed
- XpmPixmapFileInvalid XpmFileInvalid
- XpmPixmapNoMemory XpmNoMemory
- XpmPixmapColorFailed XpmColorFailed
-
- To update code using Xpm you can use the included shell script called
- rename with the sed commands files name-3.0b-3.0c and name-3.0c-3.0.
- Old names still valid though.
-
- NEW FEATURES:
- - four new functions to work with images instead of pixmaps:
-
- XpmReadFileToImage
- XpmWriteFileFromImage
- XpmCreateImageFromData
- XpmCreateDataFromImage
-
- ENHANCEMENTS:
- Algorithms to create and scan images and pixmaps are based on the
- MIT's R5 code, thus they are much cleaner than old ones and should
- avoid any problem with any visual (yes, I trust MIT folks :-)
-
- BUGS CORRECTED:
- Imakefile use INCDIR instead of ROOTDIR.
-
- CHANGES TO THE DOC:
- - the documentation presents the four new functions.
-
-3.0c (91/09/18)
-
- In answer to request of people functions, types and defines names have
- been changed as follows:
-
- XCreatePixmapFromData XpmCreatePixmapFromData
- XCreateDataFromPixmap XpmCreateDataFromPixmap
- XReadPixmapFile XpmReadPixmapFile
- XWritePixmapFile XpmWritePixmapFile
- XFreeXpmAttributes XpmFreeAttributes
-
- PixmapColorError XpmPixmapColorError
- PixmapSuccess XpmPixmapSuccess
- PixmapOpenFailed XpmPixmapOpenFailed
- PixmapFileInvalid XpmPixmapFileInvalid
- PixmapNoMemory XpmPixmapNoMemory
- PixmapColorFailed XpmPixmapColorFailed
-
- ColorSymbol XpmColorSymbol
-
- Generally speaking every public name begins with 'Xpm' and every
- private one with 'xpm'. This should avoid any possible conflict.
-
- Some files have also be renamed accordingly.
-
- NEW FEATURES:
- - support for VMS and two new options for sxpm: icon and hints (see
- manual for details) Richard Hess <rhess%pleione%cimshop@uunet.UU.NET>
- - DEFINES in Imakefile and Makefile.noXtree allows you to set the
- following:
-
- ZPIPE for un/compressing piped feature (default is on)
- NEED_STRCASECMP for system which doesn't provide one (default
- is off)
-
- - xpmtoppm.c has is own strstr function which is used if NEED_STRSTR
- is defined when compiling - Hugues.Leroy@irisa.fr (Hugues Leroy).
-
- BUGS CORRECTED:
- - many bugs have been fixed, especially for ansi compilers -
- Doyle C. Davidson (doyle@doyled.b23b.ingr.com) and
- Clifford D. Morrison (cdm%bigdaddy%edsr@uunet.UU.NET)
- - parser is again a little more improved
-
-3.0b (91/09/12)
-
- This is a complete new version with a new API and where files and
- structures have been renamed. So this should be taken as a new
- starting release.
- This release should be quickly followed by the 3.0 because I'm planning
- to send it for X11R5 contrib which ends October 5th.
-
- NEW FEATURES:
- - support for transparent color.
- - support for hotspot.
- - a new function: XCreateDataFromPixmap to create an XPM data from a
- pixmap in order to be able to create a new pixmap from this data using
- the XCreatePixmapFromData function later on.
- - a new structure: XpmAttributes which replace the XpmInfo structure
- and which leads to a much simpler API with less arguments.
- - arguments such as visual, colormap and depth are optional, default
- values are taken if omitted.
- - parsing and allocating color failures don't simply break anymore. If
- another default color can be found it is used and a PixmapColorError
- is returned. In case no color can be found then it breaks and returns
- PixmapColorFailed.
- - for this reason the ErrorStatus codes are redefined as follows:
-
- null if full success
- positive if partial success
- negative if failure
-
- with:
- #define PixmapColorError 1
- #define PixmapSuccess 0
- #define PixmapOpenFailed -1
- #define PixmapFileInvalid -2
- #define PixmapNoMemory -3
- #define PixmapColorFailed -4
-
- - sxpm prints out a warning when a requested color could not be parsed
- or alloc'ed, and an error when none has been found.
- - sxpm handles pixmap with transparent color. For this purpose the
- plaid_mask.xpm is added to the distribution.
-
- BUGS CORRECTED:
- - I've again improved the memory management.
- - the parser is also improved.
- - when writing a pixmap to a file the variable name could be
- "plaid.xpm" which is not valid in C. Now the extension name is cut off
- to give "plaid" as variable name.
- - reading multiple words colornames such as "peach puff" where leading
- to non readable Xpm files. They are now skipped to have only single
- word colorname. Lionel Mallet (mallet@ipvpel.unipv.it).
- - parser was triggered by the "/" character inside string.
- Doyle C. Davidson (doyle@doyled.b23b.ingr.com). This is corrected.
- - sxpm maps the window only if the option "-nod" is not selected.
-
- CHANGES TO THE DOC:
- - the documentation presents the new API and features.
-
-3.0a (91/04/10)
-
- This is an alpha version because it supports the new version of XPM,
- but the library interface is still the same. Indeed it will change in
- future release to get rid of obsolete stuff such as the type argument
- of the XWritePixmapFile function.
-
- ******************************* WARNING *********************************
- The format is not anymore XPM2, it is XPM version 3 which is XPM2
- limited to the C syntax with the key word "XPM" in place of "XPM2 C".
- The interface library has not changed yet but the type argument of
- XWritePixmapFile and the type member of XpmInfo are not used anymore.
- Meanwhile the library which is now called libXpm.a is backward
- compatible as XPM2 files can be read. But the XWritePixmapFile
- function only writes out XPM version 3 files.
- *************************************************************************
-
- NEW FEATURES:
- - the library doesn't use global variables anymore, thus it should be
- able to share it.
- - sxpm has been rewritten on top of Xt, it can be used to convert
- files from XPM2 to XPM version 3.
- - xpm1to2c.perl has been upgraded to the new XPM version and renamed
- as xpm1to3.perl
- - ppmtoxpm2.c and ppmtoxpm2.1 have been upgraded too and renamed
- ppmtoxpm.c and ppmtoxpm.1. In addition the xpmtoppm.c and xpmtoppm.1
- of the pbmplus package have been upgraded too. xpmtoppm can thus
- convert XPM version 1 and 3 to a portable pixmap. These files should
- replace the original ones which are part of the pbmplus package. See
- the ppm.README file for more details.
- - the library contains RCS variables which allows you to get revision
- numbers with ident (which is part of the RCS package). The Id number
- is an internal rcs number for my eyes only. The official one is found
- in Version.
-
- BUGS CORRECTED:
- - the memory management has been much improved in order to avoid
- memory leaks.
- - the XImage building algorithm has been changed to support correctly
- different visual depths. There is special code to handle depths 1, 4,
- 6, 8, 24, and 32 to build the image and send it in one whack, and
- other depths are supported by building the image with XPutPixel which
- is slow but sure.
- - similar algorithms are used to read pixmaps and write them out.
-
- CHANGES TO THE DOC:
- - the documentation presents the new XPM format.
-
-
-2.8 (90/12/19)
-
- ******************************* WARNING *********************************
- Since the last release two structures have been modified and have now
- bigger sizes, so ANY CODE USING THE libXPM2 NEEDS TO BE RECOMPILED.
- *************************************************************************
-
- NEW FEATURES:
- - the ColorSymbol struct contains the new member 'pixel' which allow
- to override default colors by giving a pixel value (in such a case
- symbol value must be set to NULL),
- - the XpmInfo struct contains the new member 'rgb_fname' in which one
- can specify an rgb text file name while writing a pixmap with the
- XWritePixmapFile function (otherwise this member should be set to
- NULL). This way colorname will be searched and written out if found
- instead of the RGB value,
- - Imakefile originally provided by stolcke@ICSI.Berkeley.EDU,
- - the old Makefile is now distributed as Makefile.noXtree and presents
- install targets,
- - the demo application is renamed sxpm (Show XPM), creates a window of
- the size of the pixmap if no geometry is specified, prints out
- messages instead of status when an error occurs, handles the new
- option -p for overriding colors by giving a pixel value (not really
- useful but is just here to show this new feature), handles the new
- option -rgb for specifying an rgb text file, and ends on
- keypress as buttonpress,
- - defines for SYSV have been provided by Paul Breslaw
- <paul@mecazh.uucp>,
- - the distribution includes a new directory called converters which
- contains xpm1to2 and xpm1to2c perl converters and a ppmtoxpm2
- converter provided by Paul Breslaw who upgraded the original ppmtoxpm
- written by Mark W. Snitily <mark@zok.uucp>.
-
- CHANGES TO THE DOC:
- - this file is created and will give old users a quick reference to
- changes made from one release to the next one,
- - documentation is changed to present the new ColorSymbol structure
- and the way to override colors by giving a pixel value, and to present
- the new XpmInfo structure and how to use it,
- - a man page for sxpm is added to the distrib,
- - the README file talks about sxpm and no more demo, and have
- reference to the different converters.
-
-2.7 (90/11/12)
-
- NEW FEATURES:
- - XReadPixmapFile reads from stdin if filename is NULL,
- - XWritePixmapFile writes to stdin if filename is NULL,
- - the demo application handles the new option -nod for no displaying
- the pixmap in a window (useful when used as converter).
-
- CHANGES TO THE DOC:
- - documentation about the new feature.
-
-2.6 (90/10/29)
-
- NEW FEATURES:
- - from nazgul@alphalpha.com (Kee Hinckley): changes to make the
- library usable as C++ code, and on Apollo without any warning.
-
- BUGS CORRECTED:
- - from nazgul@alphalpha.com (Kee Hinckley): the xpm include files was
- declaring XWritePixmapFile as taking in arg a Pixmap pointer instead
- of a Pixmap.
-
-2.5 (90/10/17)
-
- BUGS CORRECTED:
- - XWritePixmapFile was not closing the file while ending normally.
-
-2.4 (90/09/06)
-
- NEW FEATURES:
- - XReadPixmapFile reads from a piped uncompress if the given filename
- ends by .Z or if filename.Z exists,
- - XWritePixmapFile writes to a piped compress if the given filename
- ends by .Z.
-
- BUGS CORRECTED:
- - demo now deals with window manager.
-
- CHANGES TO THE DOC:
- - documentation about compressed files management.
-
-2.3 (90/08/30)
-
- BUGS CORRECTED:
- - handle monochrome display correctly,
- - comments can be empty.
-
-2.2 (90/08/27)
-
- BUGS CORRECTED:
- - when reading some invalid free was dumping core on some machine.
-
-2.1 (90/08/24)
-
- First distribution of XPM2.
-
diff --git a/lib/libXpm/ChangeLog b/lib/libXpm/ChangeLog
index 46076254e..047b81dd0 100644
--- a/lib/libXpm/ChangeLog
+++ b/lib/libXpm/ChangeLog
@@ -1,3 +1,128 @@
+commit a154f12b6e56f131bd5880fc96f11615ff940b29
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Oct 3 08:43:57 2023 -0700
+
+ libXpm 3.5.17
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 91f887b41bf75648df725a4ed3be036da02e911e
+Author: Yair Mizrahi <yairm@jfrog.com>
+Date: Thu Sep 7 16:59:07 2023 -0700
+
+ Avoid CVE-2023-43787 (integer overflow in XCreateImage)
+
+ This doesn't fix the CVE - that has to happen in libX11, this
+ just tries to avoid triggering it from libXpm, and saves time
+ in not pretending we can successfully create an X Image for
+ which the width * depth would overflow the signed int used to
+ store the bytes_per_line value.
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 00348988396c88150f6ddfea3d3195cbf01d60c2
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Thu Sep 7 16:55:25 2023 -0700
+
+ test: Add test case for CVE-2023-43787 (integer overflow in XCreateImage)
+
+ Provided by Yair Mizrahi of the JFrog Vulnerability Research team
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 84fb14574c039f19ad7face87eb9acc31a50701c
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed Sep 6 17:34:33 2023 -0700
+
+ Avoid CVE-2023-43786: stack exhaustion in XPutImage()
+
+ This doesn't fix the CVE - that has to happen in libX11, this
+ just tries to avoid triggering it from libXpm, and saves time
+ in not pretending we can successfully create an X11 pixmap with
+ dimensions larger than the unsigned 16-bit integers used in the
+ X11 protocol for the dimensions.
+
+ Reported by Yair Mizrahi of the JFrog Vulnerability Research team
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit edb97396620f019f8d2e707ad3fbaf6bbbd5ed36
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Sep 5 17:01:58 2023 -0700
+
+ test: Add test case for CVE-2023-43786 (stack exhaustion in PutImage)
+
+ Provided by Yair Mizrahi of the JFrog Vulnerability Research team
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 7e21cb63b9a1ca760a06cc4cd9b19bbc3fcd8f51
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sat Apr 29 18:30:34 2023 -0700
+
+ Fix CVE-2023-43789: Out of bounds read on XPM with corrupted colormap
+
+ Found with clang's libfuzzer
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit a21e7bcf0ca3d8c1605b2721a545440260870438
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sat Apr 29 18:29:29 2023 -0700
+
+ test: Add test case for CVE-2023-43789 (corrupt colormap info)
+
+ Generated by clang's -fsanitize/libfuzzer
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 2fa554b01ef6079a9b35df9332bdc4f139ed67e0
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sat Apr 29 17:50:39 2023 -0700
+
+ Fix CVE-2023-43788: Out of bounds read in XpmCreateXpmImageFromBuffer
+
+ When the test case for CVE-2022-46285 was run with the Address Sanitizer
+ enabled, it found an out-of-bounds read in ParseComment() when reading
+ from a memory buffer instead of a file, as it continued to look for the
+ closing comment marker past the end of the buffer.
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 7f60f3428aa21d5d643eb75bfd9417cfabf48970
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Sep 5 17:35:55 2023 -0700
+
+ Explicitly mark non-static symbols as export or hidden
+
+ Hides private API from external linkage
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 2695ccda5df58af60ebb15bb17f1570437554adb
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sat May 20 13:47:52 2023 -0700
+
+ test: use g_pattern_spec_match_string if available
+
+ g_pattern_spec_match_string was introduced in glib 2.70 to replace
+ g_pattern_match_string which is deprecated in glib 2.70 and later.
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 4524c578581b427145ae136844fc655a89e94777
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Mon Mar 27 18:35:46 2023 -0700
+
+ Set close-on-exec when opening files
+
+ Relies on platforms with O_CLOEXEC support following POSIX requirement
+ to not copy the close-on-exec flag to the new fd in dup2(), but to leave
+ it unset instead, since that's how fd's are passed to child processes
+ to handled compressed files.
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
commit f131de92d6c4e2f62934e85b012287276ecf009c
Author: Matt Turner <mattst88@gmail.com>
Date: Mon Apr 17 15:22:35 2023 -0400
@@ -1666,6 +1791,9 @@ Date: Tue Sep 21 17:57:35 2004 +0000
Removed inclusion of unnecessary kernel header on Linux. This may fail in
an -ansi environment.
+Notes:
+ Fixes CVE-2004-0687 (integer overflows) and CVE-2004-0688 (stack overflows)
+
commit 2773a7214e282f6f673483f5233b880505947c3f
Author: Egbert Eich <eich@suse.de>
Date: Fri Apr 23 18:42:32 2004 +0000
diff --git a/lib/libXpm/Makefile.bsd-wrapper b/lib/libXpm/Makefile.bsd-wrapper
index da436a522..da1f0862f 100644
--- a/lib/libXpm/Makefile.bsd-wrapper
+++ b/lib/libXpm/Makefile.bsd-wrapper
@@ -1,6 +1,6 @@
-# $OpenBSD: Makefile.bsd-wrapper,v 1.4 2023/05/07 16:07:42 matthieu Exp $
+# $OpenBSD: Makefile.bsd-wrapper,v 1.5 2023/10/17 13:07:33 matthieu Exp $
-SHARED_LIBS= Xpm 9.0
+SHARED_LIBS= Xpm 10.0
CONFIGURE_ARGS += --disable-unit-tests
diff --git a/lib/libXpm/configure.ac b/lib/libXpm/configure.ac
index a69daaf0b..c2a666524 100644
--- a/lib/libXpm/configure.ac
+++ b/lib/libXpm/configure.ac
@@ -1,7 +1,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
-AC_INIT([libXpm], [3.5.16],
+AC_INIT([libXpm], [3.5.17],
[https://gitlab.freedesktop.org/xorg/lib/libxpm/-/issues/], [libXpm])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
@@ -103,6 +103,9 @@ fi
AC_REQUIRE_AUX_FILE([tap-driver.sh])
XORG_ENABLE_UNIT_TESTS
XORG_WITH_GLIB([2.46])
+if test "x$have_glib" = x"yes"; then
+ AC_CHECK_FUNCS([g_pattern_spec_match_string])
+fi
XORG_MEMORY_CHECK_FLAGS
AC_CONFIG_FILES([Makefile
diff --git a/lib/libXpm/include/X11/xpm.h b/lib/libXpm/include/X11/xpm.h
index f108f1f6e..a490b523f 100644
--- a/lib/libXpm/include/X11/xpm.h
+++ b/lib/libXpm/include/X11/xpm.h
@@ -73,6 +73,7 @@
# ifdef AMIGA
# include "amigax.h"
# else /* not AMIGA */
+# include <X11/Xfuncproto.h>
# include <X11/Xlib.h>
# include <X11/Xutil.h>
# endif /* not AMIGA */
@@ -275,7 +276,12 @@ typedef struct {
/* macros for forward declarations of functions with prototypes */
-#define FUNC(f, t, p) extern t f p
+#ifndef _X_EXPORT
+# define _X_EXPORT
+# define _X_HIDDEN
+#endif
+#define FUNC(f, t, p) extern _X_EXPORT t f p
+#define HFUNC(f, t, p) extern _X_HIDDEN t f p
#define LFUNC(f, t, p) static t f p
diff --git a/lib/libXpm/m4/libtool.m4 b/lib/libXpm/m4/libtool.m4
index 44e0ecff1..8a0e858b6 100644
--- a/lib/libXpm/m4/libtool.m4
+++ b/lib/libXpm/m4/libtool.m4
@@ -1627,11 +1627,6 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=8192;
;;
- mint*)
- # On MiNT this can take a long time and run out of memory.
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
amigaos*)
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
diff --git a/lib/libXpm/src/RdFToBuf.c b/lib/libXpm/src/RdFToBuf.c
index 1b386f81f..4ee926592 100644
--- a/lib/libXpm/src/RdFToBuf.c
+++ b/lib/libXpm/src/RdFToBuf.c
@@ -72,7 +72,7 @@ XpmReadFileToBuffer(
*buffer_return = NULL;
#ifndef VAX11C
- fd = open(filename, O_RDONLY);
+ fd = open(filename, O_RDONLY | O_CLOEXEC);
#else
fd = open(filename, O_RDONLY, NULL);
#endif
diff --git a/lib/libXpm/src/RdFToI.c b/lib/libXpm/src/RdFToI.c
index a16af887e..0ce78cd4a 100644
--- a/lib/libXpm/src/RdFToI.c
+++ b/lib/libXpm/src/RdFToI.c
@@ -53,7 +53,7 @@
LFUNC(OpenReadFile, int, (const char *filename, xpmData *mdata));
LFUNC(xpmDataClose, void, (xpmData *mdata));
-FUNC(xpmPipeThrough, FILE*, (int fd,
+HFUNC(xpmPipeThrough, FILE*, (int fd,
const char *cmd,
const char *arg1,
const char *mode));
@@ -212,7 +212,7 @@ OpenReadFile(
mdata->stream.file = (stdin);
mdata->type = XPMFILE;
} else {
- int fd = open(filename, O_RDONLY);
+ int fd = open(filename, O_RDONLY | O_CLOEXEC);
#if defined(NO_ZPIPE)
if ( fd < 0 )
return XpmOpenFailed;
@@ -229,11 +229,11 @@ OpenReadFile(
return (XpmNoMemory);
strcpy(compressfile, filename);
strcpy(compressfile + len, ext = ".Z");
- fd = open(compressfile, O_RDONLY);
+ fd = open(compressfile, O_RDONLY | O_CLOEXEC);
if ( fd < 0 )
{
strcpy(compressfile + len, ext = ".gz");
- fd = open(compressfile, O_RDONLY);
+ fd = open(compressfile, O_RDONLY | O_CLOEXEC);
if ( fd < 0 )
{
XpmFree(compressfile);
diff --git a/lib/libXpm/src/WrFFrBuf.c b/lib/libXpm/src/WrFFrBuf.c
index 0e57cc886..085b5a8e6 100644
--- a/lib/libXpm/src/WrFFrBuf.c
+++ b/lib/libXpm/src/WrFFrBuf.c
@@ -45,7 +45,7 @@ XpmWriteFileFromBuffer(
char *buffer)
{
size_t fcheck, len;
- FILE *fp = fopen(filename, "w");
+ FILE *fp = fopen(filename, "w" FOPEN_CLOEXEC);
if (!fp)
return XpmOpenFailed;
diff --git a/lib/libXpm/src/WrFFrI.c b/lib/libXpm/src/WrFFrI.c
index 234197aae..4c3ecac98 100644
--- a/lib/libXpm/src/WrFFrI.c
+++ b/lib/libXpm/src/WrFFrI.c
@@ -315,7 +315,7 @@ WriteExtensions(
#ifndef NO_ZPIPE
-FUNC(xpmPipeThrough, FILE*, (int fd,
+HFUNC(xpmPipeThrough, FILE*, (int fd,
const char* cmd,
const char* arg1,
const char* mode));
@@ -336,7 +336,7 @@ OpenWriteFile(
#ifndef NO_ZPIPE
size_t len;
#endif
- int fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+ int fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0644);
if ( fd < 0 )
return(XpmOpenFailed);
#ifndef NO_ZPIPE
diff --git a/lib/libXpm/src/XpmI.h b/lib/libXpm/src/XpmI.h
index 90e6a91f1..669169351 100644
--- a/lib/libXpm/src/XpmI.h
+++ b/lib/libXpm/src/XpmI.h
@@ -103,6 +103,13 @@ extern FILE *popen();
# endif
#endif
+#ifdef O_CLOEXEC
+# define FOPEN_CLOEXEC "e"
+#else
+# define FOPEN_CLOEXEC ""
+# define O_CLOEXEC 0
+#endif
+
#define XPMMAXCMTLEN BUFSIZ
typedef struct {
unsigned int type;
@@ -144,7 +151,7 @@ typedef struct {
const char *Eoa; /* string ending assignment */
} xpmDataType;
-extern xpmDataType xpmDataTypes[];
+extern _X_HIDDEN xpmDataType xpmDataTypes[];
/*
* rgb values and ascii names (from rgb text file) rgb values,
@@ -158,7 +165,7 @@ typedef struct {
/* Maximum number of rgb mnemonics allowed in rgb text file. */
#define MAX_RGBNAMES 1024
-extern const char *xpmColorKeys[];
+extern _X_HIDDEN const char *xpmColorKeys[];
#define TRANSPARENT_COLOR "None" /* this must be a string! */
@@ -167,31 +174,31 @@ extern const char *xpmColorKeys[];
/* XPM internal routines */
-FUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
-FUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
+HFUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
+HFUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
XImage **image_return,
XImage **shapeimage_return,
XpmImage *image, XpmInfo *info,
XpmAttributes *attributes));
-FUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors));
+HFUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors));
-FUNC(xpmInitAttributes, void, (XpmAttributes *attributes));
+HFUNC(xpmInitAttributes, void, (XpmAttributes *attributes));
-FUNC(xpmInitXpmImage, void, (XpmImage *image));
+HFUNC(xpmInitXpmImage, void, (XpmImage *image));
-FUNC(xpmInitXpmInfo, void, (XpmInfo *info));
+HFUNC(xpmInitXpmInfo, void, (XpmInfo *info));
-FUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes));
-FUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
-FUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
+HFUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes));
+HFUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
+HFUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
XpmInfo *info));
#if !defined(FOR_MSW) && !defined(AMIGA)
-FUNC(xpmCreatePixmapFromImage, int, (Display *display, Drawable d,
+HFUNC(xpmCreatePixmapFromImage, int, (Display *display, Drawable d,
XImage *ximage, Pixmap *pixmap_return));
-FUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
+HFUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
XImage **ximage_return,
unsigned int *width,
unsigned int *height));
@@ -211,10 +218,10 @@ typedef struct {
xpmHashAtom *atomTable;
} xpmHashTable;
-FUNC(xpmHashTableInit, int, (xpmHashTable *table));
-FUNC(xpmHashTableFree, void, (xpmHashTable *table));
-FUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
-FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
+HFUNC(xpmHashTableInit, int, (xpmHashTable *table));
+HFUNC(xpmHashTableFree, void, (xpmHashTable *table));
+HFUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
+HFUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
#if defined(_MSC_VER) && defined(_M_X64)
#define HashAtomData(i) ((void *)(long long)i)
@@ -227,45 +234,45 @@ FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
/* I/O utility */
-FUNC(xpmNextString, int, (xpmData *mdata));
-FUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
-FUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
+HFUNC(xpmNextString, int, (xpmData *mdata));
+HFUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
+HFUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
#define xpmGetC(mdata) \
((!mdata->type || mdata->type == XPMBUFFER) ? \
(*mdata->cptr++) : (getc(mdata->stream.file)))
-FUNC(xpmNextWord, unsigned int,
+HFUNC(xpmNextWord, unsigned int,
(xpmData *mdata, char *buf, unsigned int buflen));
-FUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
-FUNC(xpmParseHeader, int, (xpmData *mdata));
-FUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
+HFUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
+HFUNC(xpmParseHeader, int, (xpmData *mdata));
+HFUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
unsigned int *height, unsigned int *ncolors,
unsigned int *cpp, unsigned int *x_hotspot,
unsigned int *y_hotspot, unsigned int *hotspot,
unsigned int *extensions));
-FUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
+HFUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
unsigned int cpp, XpmColor **colorTablePtr,
xpmHashTable *hashtable));
-FUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
+HFUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
unsigned int *nextensions));
/* RGB utility */
-FUNC(xpmReadRgbNames, int, (const char *rgb_fname, xpmRgbName *rgbn));
-FUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
+HFUNC(xpmReadRgbNames, int, (const char *rgb_fname, xpmRgbName *rgbn));
+HFUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
int red, int green, int blue));
-FUNC(xpmFreeRgbNames, void, (xpmRgbName *rgbn, int rgbn_max));
+HFUNC(xpmFreeRgbNames, void, (xpmRgbName *rgbn, int rgbn_max));
#ifdef FOR_MSW
-FUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
+HFUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
#endif
#ifndef AMIGA
-FUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
+HFUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
register XImage *img));
-FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
+HFUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
register XImage *img));
/*
@@ -313,7 +320,7 @@ FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
#endif /* not AMIGA */
#ifdef NEED_STRDUP
-FUNC(xpmstrdup, char *, (char *s1));
+HFUNC(xpmstrdup, char *, (char *s1));
#else
#undef xpmstrdup
#define xpmstrdup strdup
@@ -321,14 +328,14 @@ FUNC(xpmstrdup, char *, (char *s1));
#endif
#ifdef NEED_STRCASECMP
-FUNC(xpmstrcasecmp, int, (char *s1, char *s2));
+HFUNC(xpmstrcasecmp, int, (char *s1, char *s2));
#else
#undef xpmstrcasecmp
#define xpmstrcasecmp strcasecmp
#include <strings.h>
#endif
-FUNC(xpmatoui, unsigned int,
+HFUNC(xpmatoui, unsigned int,
(char *p, unsigned int l, unsigned int *ui_return));
#endif
diff --git a/lib/libXpm/src/rgb.c b/lib/libXpm/src/rgb.c
index 5c350eb3b..de0d17f81 100644
--- a/lib/libXpm/src/rgb.c
+++ b/lib/libXpm/src/rgb.c
@@ -66,7 +66,7 @@ xpmReadRgbNames(
xpmRgbName *rgb;
/* Open the rgb text file. Abort if error. */
- if ((rgbf = fopen(rgb_fname, "r")) == NULL)
+ if ((rgbf = fopen(rgb_fname, "r" FOPEN_CLOEXEC)) == NULL)
return 0;
/* Loop reading each line in the file. */
diff --git a/lib/libXpm/test/TestAllFiles.h b/lib/libXpm/test/TestAllFiles.h
index 505b2a32c..da171bbd5 100644
--- a/lib/libXpm/test/TestAllFiles.h
+++ b/lib/libXpm/test/TestAllFiles.h
@@ -32,6 +32,12 @@
#include "config.h"
+/* g_pattern_spec_match_string is available in glib 2.70 and later,
+ to replace the deprecated g_pattern_match_string */
+#ifdef HAVE_G_PATTERN_SPEC_MATCH_STRING
+#define g_pattern_match_string g_pattern_spec_match_string
+#endif
+
#define DEFAULT_TIMEOUT 10 /* maximum seconds for each file */
static sigjmp_buf jump_env;
diff --git a/lib/libXpm/test/XpmRead.c b/lib/libXpm/test/XpmRead.c
index df7a826f6..a231419c4 100644
--- a/lib/libXpm/test/XpmRead.c
+++ b/lib/libXpm/test/XpmRead.c
@@ -33,6 +33,10 @@
#include "TestAllFiles.h"
+#ifndef O_CLOEXEC
+# define O_CLOEXEC 0
+#endif
+
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
#endif
@@ -147,7 +151,7 @@ TestReadFileToBuffer(const gchar *filepath)
g_assert_nonnull(buffer);
/* Read file ourselves and verify the data matches */
- g_assert_no_errno(fd = open(filepath, O_RDONLY));
+ g_assert_no_errno(fd = open(filepath, O_RDONLY | O_CLOEXEC));
while ((rd = read(fd, readbuf, sizeof(readbuf))) > 0) {
g_assert_cmpmem(b, rd, readbuf, rd);
b += rd;
diff --git a/lib/libXpm/test/XpmWrite.c b/lib/libXpm/test/XpmWrite.c
index 49b5b2132..998b1bbb6 100644
--- a/lib/libXpm/test/XpmWrite.c
+++ b/lib/libXpm/test/XpmWrite.c
@@ -38,6 +38,10 @@
#include "TestAllFiles.h"
#include "CompareXpmImage.h"
+#ifndef O_CLOEXEC
+# define O_CLOEXEC 0
+#endif
+
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
#endif
@@ -295,7 +299,7 @@ TestWriteFileFromBuffer(const gchar *filepath)
ssize_t rd;
/* Read file ourselves and verify the data matches */
- g_assert_no_errno(fd = open(newfilepath, O_RDONLY));
+ g_assert_no_errno(fd = open(newfilepath, O_RDONLY | O_CLOEXEC));
while ((rd = read(fd, readbuf, sizeof(readbuf))) > 0) {
g_assert_cmpmem(b, rd, readbuf, rd);
b += rd;
diff --git a/lib/libXpm/test/rgb.c b/lib/libXpm/test/rgb.c
index a5ad58304..7b19f7966 100644
--- a/lib/libXpm/test/rgb.c
+++ b/lib/libXpm/test/rgb.c
@@ -23,7 +23,7 @@
#include "config.h"
-#include "../src/XpmI.h"
+#include "../src/rgb.c"
#include <glib.h>
/*