sync code with last improvements from OpenBSD
This commit is contained in:
parent
e1ec829e63
commit
68fa196282
30 changed files with 268 additions and 1060 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,3 +1 @@
|
|||
**/obj
|
||||
**/tags
|
||||
**/CVS
|
||||
|
|
12
3RDPARTY
12
3RDPARTY
|
@ -1,5 +1,5 @@
|
|||
|
||||
# $OpenBSD: 3RDPARTY,v 1.416 2023/07/03 19:04:51 matthieu Exp $
|
||||
# $OpenBSD: 3RDPARTY,v 1.417 2023/10/12 19:30:50 matthieu Exp $
|
||||
#
|
||||
Package: Freetype
|
||||
Version: 2.13.0
|
||||
|
@ -9,25 +9,25 @@ Archive Site: http://download.savannah.gnu.org/releases/freetype/
|
|||
|
||||
Package: xterm
|
||||
Version: 378
|
||||
Current Vers: 383
|
||||
Current Vers: 385
|
||||
Maintainer: Thomas E. Dickey
|
||||
Archive Site: http://invisible-island.net/xterm/xterm.html
|
||||
Archive Site: https://invisible-island.net/xterm/xterm.html
|
||||
|
||||
Package: Mesa
|
||||
Version 22.3.7
|
||||
Current Vers: 23.1.2
|
||||
Current Vers: 23.1.7
|
||||
Maintainer: Brian Paul
|
||||
Archive Site: https://archive.mesa3d.org/
|
||||
|
||||
Package: libdrm
|
||||
Version: 2.4.115
|
||||
Current Vers: 2.4.115
|
||||
Current Vers: 2.4.116
|
||||
Maintainer: Freedesktop.org
|
||||
Archive Site: https://dri.freedesktop.org/libdrm/
|
||||
|
||||
Package: libGLU
|
||||
Version: 9.0.1
|
||||
Current Vers: 9.0.2
|
||||
Current Vers: 9.0.3
|
||||
Maintainer: Matt Turner
|
||||
Archive Site: https://archive.mesa3d.org/glu/
|
||||
|
||||
|
|
22
MODULES
22
MODULES
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: MODULES,v 1.510 2023/07/03 19:04:51 matthieu Exp $
|
||||
# $OpenBSD: MODULES,v 1.511 2023/10/12 19:30:50 matthieu Exp $
|
||||
#
|
||||
# X.Org maintained modules
|
||||
#
|
||||
|
@ -8,7 +8,7 @@ app/bdftopcf 1.1.1
|
|||
app/beforelight 1.0.6
|
||||
app/bitmap 1.1.0
|
||||
app/editres 1.0.8
|
||||
app/fonttosfnt 1.2.2
|
||||
app/fonttosfnt 1.2.3 needs-update
|
||||
app/iceauth 1.0.9
|
||||
app/ico 1.0.6
|
||||
app/listres 1.0.5
|
||||
|
@ -36,7 +36,7 @@ app/xdpyinfo 1.3.4
|
|||
app/xdriinfo 1.0.7
|
||||
app/xedit 1.2.3
|
||||
app/xev 1.2.5
|
||||
app/xeyes 1.2.0
|
||||
app/xeyes 1.3.0 needs-update
|
||||
app/xf86dga 1.0.3
|
||||
app/xfd 1.1.4
|
||||
app/xfontsel 1.1.0
|
||||
|
@ -103,7 +103,7 @@ driver/xf86-video-nv 2.1.22
|
|||
driver/xf86-video-openchrome 0.6.179 needs-update
|
||||
driver/xf86-video-r128 6.12.1
|
||||
driver/xf86-video-savage 2.4.0 needs-update
|
||||
driver/xf86-video-siliconmotion 1.7.9
|
||||
driver/xf86-video-siliconmotion 1.7.10 needs-update
|
||||
driver/xf86-video-sunffb 1.2.3
|
||||
driver/xf86-video-vesa 2.6.0 needs-update
|
||||
driver/xf86-video-vmware 13.4.0 needs-update
|
||||
|
@ -143,13 +143,13 @@ font/schumacher-misc 1.1.3
|
|||
font/screen-cyrillic 1.0.5
|
||||
font/sony-misc 1.0.4
|
||||
font/sun-misc 1.0.4
|
||||
font/util 1.4.0
|
||||
font/util 1.4.1 needs-update
|
||||
font/winitzki-cyrillic 1.0.4
|
||||
font/xfree86-type1 1.0.5
|
||||
|
||||
lib/libICE 1.1.1
|
||||
lib/libSM 1.2.4
|
||||
lib/libX11 1.8.6 needs-update
|
||||
lib/libX11 1.8.7 needs-update
|
||||
lib/libXScrnSaver 1.2.4
|
||||
lib/libXau 1.0.11
|
||||
lib/libXaw 1.0.15
|
||||
|
@ -164,9 +164,9 @@ lib/libXft 2.3.8
|
|||
lib/libXi 1.8.1
|
||||
lib/libXinerama 1.1.5
|
||||
lib/libXmu 1.1.4
|
||||
lib/libXpm 3.5.16
|
||||
lib/libXpm 3.5.17 needs-update
|
||||
lib/libXpresent 1.0.1
|
||||
lib/libXrandr 1.5.3
|
||||
lib/libXrandr 1.5.4 needs-update
|
||||
lib/libXrender 0.9.11
|
||||
lib/libXres 1.2.2
|
||||
lib/libXt 1.3.0
|
||||
|
@ -177,7 +177,7 @@ lib/libXxf86dga 1.1.6
|
|||
lib/libXxf86vm 1.1.5
|
||||
lib/libfontenc 1.1.7
|
||||
lib/libpciaccess 0.17
|
||||
lib/libxcb 1.15
|
||||
lib/libxcb 1.16 needs-update
|
||||
lib/libxcvt 0.1.2
|
||||
lib/libxkbfile 1.1.2
|
||||
lib/libxshmfence 1.3.2
|
||||
|
@ -190,8 +190,8 @@ lib/xcb-util-keysyms 0.4.1
|
|||
lib/xcb-util-renderutil 0.3.10
|
||||
lib/xcb-util-wm 0.4.2
|
||||
|
||||
proto/xcb-proto 1.15.2
|
||||
proto/xorgproto 2023.1 needs-update
|
||||
proto/xcb-proto 1.16.0 needs-update
|
||||
proto/xorgproto 2023.2 needs-update
|
||||
|
||||
util/cf 1.0.4
|
||||
util/gccmakedep 1.0.3
|
||||
|
|
|
@ -225,10 +225,10 @@
|
|||
./usr/X11R6/lib/libXau.la
|
||||
./usr/X11R6/lib/libXau.so.10.0
|
||||
./usr/X11R6/lib/libXaw.a
|
||||
./usr/X11R6/lib/libXaw.so.15.0
|
||||
./usr/X11R6/lib/libXaw.so.16.0
|
||||
./usr/X11R6/lib/libXaw7.a
|
||||
./usr/X11R6/lib/libXaw7.la
|
||||
./usr/X11R6/lib/libXaw7.so.15.0
|
||||
./usr/X11R6/lib/libXaw7.so.16.0
|
||||
./usr/X11R6/lib/libXcomposite.a
|
||||
./usr/X11R6/lib/libXcomposite.la
|
||||
./usr/X11R6/lib/libXcomposite.so.4.0
|
||||
|
@ -267,7 +267,7 @@
|
|||
./usr/X11R6/lib/libXmuu.so.6.0
|
||||
./usr/X11R6/lib/libXpm.a
|
||||
./usr/X11R6/lib/libXpm.la
|
||||
./usr/X11R6/lib/libXpm.so.9.0
|
||||
./usr/X11R6/lib/libXpm.so.10.0
|
||||
./usr/X11R6/lib/libXpresent.a
|
||||
./usr/X11R6/lib/libXpresent.la
|
||||
./usr/X11R6/lib/libXpresent.so.1.0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# $OpenBSD: Makefile.bsd-wrapper,v 1.13 2016/10/02 19:11:16 matthieu Exp $
|
||||
# $OpenBSD: Makefile.bsd-wrapper,v 1.14 2023/10/17 13:08:08 matthieu Exp $
|
||||
|
||||
SHARED_LIBS= Xaw7 15.0
|
||||
SHARED_LIBS= Xaw7 16.0
|
||||
|
||||
CONFIGURE_ARGS= --disable-xaw6 --without-fop --without-xmlto
|
||||
|
||||
|
@ -9,10 +9,10 @@ afterinstall:
|
|||
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.a libXaw.a && \
|
||||
chown -h $(BINOWN):$(BINGRP) libXaw.a )
|
||||
# redo link
|
||||
-rm -f $(DESTDIR)$(LIBDIR)/libXaw.so.15.0
|
||||
-rm -f $(DESTDIR)$(LIBDIR)/libXaw.so.16.0
|
||||
-rm -f $(DESTDIR)$(LIBDIR)/libXaw.so.7
|
||||
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.so.15.0 libXaw.so.15.0 && \
|
||||
chown -h $(BINOWN):$(BINGRP) libXaw.so.15.0)
|
||||
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.so.16.0 libXaw.so.16.0 && \
|
||||
chown -h $(BINOWN):$(BINGRP) libXaw.so.16.0)
|
||||
|
||||
.include <bsd.xorg.mk>
|
||||
.include <bsd.own.mk>
|
||||
|
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
5
lib/libXpm/m4/libtool.m4
vendored
5
lib/libXpm/m4/libtool.m4
vendored
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
#include "config.h"
|
||||
|
||||
#include "../src/XpmI.h"
|
||||
#include "../src/rgb.c"
|
||||
#include <glib.h>
|
||||
|
||||
/*
|
||||
|
|
|
@ -730,7 +730,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
|||
XIDestroyDeviceProperty(prop);
|
||||
return BadAlloc;
|
||||
}
|
||||
new_value.size = len;
|
||||
new_value.size = total_len;
|
||||
new_value.type = type;
|
||||
new_value.format = format;
|
||||
|
||||
|
@ -747,7 +747,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
|||
case PropModePrepend:
|
||||
new_data = new_value.data;
|
||||
old_data = (void *) (((char *) new_value.data) +
|
||||
(prop_value->size * size_in_bytes));
|
||||
(len * size_in_bytes));
|
||||
break;
|
||||
}
|
||||
if (new_data)
|
||||
|
|
|
@ -58,8 +58,6 @@ extern void DeviceFocusEvent(DeviceIntPtr dev,
|
|||
|
||||
extern void EnterWindow(DeviceIntPtr dev, WindowPtr win, int mode);
|
||||
|
||||
extern void LeaveWindow(DeviceIntPtr dev);
|
||||
|
||||
extern void CoreFocusEvent(DeviceIntPtr kbd,
|
||||
int type, int mode, int detail, WindowPtr pWin);
|
||||
|
||||
|
|
|
@ -410,6 +410,7 @@ typedef struct {
|
|||
#endif
|
||||
DevPrivateKeyRec gcPrivateKeyRec;
|
||||
DevPrivateKeyRec winPrivateKeyRec;
|
||||
CloseScreenProcPtr CloseScreen;
|
||||
} FbScreenPrivRec, *FbScreenPrivPtr;
|
||||
|
||||
#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
Bool
|
||||
fbCloseScreen(ScreenPtr pScreen)
|
||||
{
|
||||
FbScreenPrivPtr screen_priv = fbGetScreenPrivate(pScreen);
|
||||
int d;
|
||||
DepthPtr depths = pScreen->allowedDepths;
|
||||
|
||||
|
@ -37,9 +38,10 @@ fbCloseScreen(ScreenPtr pScreen)
|
|||
free(depths[d].vids);
|
||||
free(depths);
|
||||
free(pScreen->visuals);
|
||||
if (pScreen->devPrivate)
|
||||
FreePixmap((PixmapPtr)pScreen->devPrivate);
|
||||
return TRUE;
|
||||
|
||||
pScreen->CloseScreen = screen_priv->CloseScreen;
|
||||
|
||||
return pScreen->CloseScreen(pScreen);
|
||||
}
|
||||
|
||||
Bool
|
||||
|
@ -144,6 +146,7 @@ fbFinishScreenInit(ScreenPtr pScreen, void *pbits, int xsize, int ysize,
|
|||
int dpix, int dpiy, int width, int bpp)
|
||||
#endif
|
||||
{
|
||||
FbScreenPrivPtr screen_priv;
|
||||
VisualPtr visuals;
|
||||
DepthPtr depths;
|
||||
int nvisuals;
|
||||
|
@ -177,8 +180,11 @@ fbFinishScreenInit(ScreenPtr pScreen, void *pbits, int xsize, int ysize,
|
|||
rootdepth, ndepths, depths,
|
||||
defaultVisual, nvisuals, visuals))
|
||||
return FALSE;
|
||||
/* overwrite miCloseScreen with our own */
|
||||
|
||||
screen_priv = fbGetScreenPrivate(pScreen);
|
||||
screen_priv->CloseScreen = pScreen->CloseScreen;
|
||||
pScreen->CloseScreen = fbCloseScreen;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -727,13 +727,6 @@ vfbCloseScreen(ScreenPtr pScreen)
|
|||
|
||||
pScreen->CloseScreen = pvfb->closeScreen;
|
||||
|
||||
/*
|
||||
* fb overwrites miCloseScreen, so do this here
|
||||
*/
|
||||
if (pScreen->devPrivate)
|
||||
(*pScreen->DestroyPixmap) (pScreen->devPrivate);
|
||||
pScreen->devPrivate = NULL;
|
||||
|
||||
return pScreen->CloseScreen(pScreen);
|
||||
}
|
||||
|
||||
|
|
|
@ -335,4 +335,7 @@ union _InternalEvent {
|
|||
GestureEvent gesture_event;
|
||||
};
|
||||
|
||||
extern void
|
||||
LeaveWindow(DeviceIntPtr dev);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -397,8 +397,21 @@ miPointerWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
|
|||
#ifdef PANORAMIX
|
||||
&& noPanoramiXExtension
|
||||
#endif
|
||||
)
|
||||
UpdateSpriteForScreen(pDev, pScreen);
|
||||
) {
|
||||
DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER);
|
||||
/* Hack for CVE-2023-5380: if we're moving
|
||||
* screens PointerWindows[] keeps referring to the
|
||||
* old window. If that gets destroyed we have a UAF
|
||||
* bug later. Only happens when jumping from a window
|
||||
* to the root window on the other screen.
|
||||
* Enter/Leave events are incorrect for that case but
|
||||
* too niche to fix.
|
||||
*/
|
||||
LeaveWindow(pDev);
|
||||
if (master)
|
||||
LeaveWindow(master);
|
||||
UpdateSpriteForScreen(pDev, pScreen);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -249,10 +249,10 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */
|
|||
pScreen->numVisuals = numVisuals;
|
||||
pScreen->visuals = visuals;
|
||||
if (width) {
|
||||
pScreen->CloseScreen = miCloseScreen;
|
||||
#ifdef MITSHM
|
||||
ShmRegisterFbFuncs(pScreen);
|
||||
#endif
|
||||
pScreen->CloseScreen = miCloseScreen;
|
||||
}
|
||||
/* else CloseScreen */
|
||||
/* QueryBestSize */
|
||||
|
|
|
@ -209,7 +209,7 @@ RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
|
|||
RRDestroyOutputProperty(prop);
|
||||
return BadAlloc;
|
||||
}
|
||||
new_value.size = len;
|
||||
new_value.size = total_len;
|
||||
new_value.type = type;
|
||||
new_value.format = format;
|
||||
|
||||
|
@ -226,7 +226,7 @@ RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
|
|||
case PropModePrepend:
|
||||
new_data = new_value.data;
|
||||
old_data = (void *) (((char *) new_value.data) +
|
||||
(prop_value->size * size_in_bytes));
|
||||
(len * size_in_bytes));
|
||||
break;
|
||||
}
|
||||
if (new_data)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue