Update to libXRes 1.2.0

This commit is contained in:
matthieu 2017-10-22 09:14:28 +00:00
parent f51fea01a3
commit b9ca6f3dea
9 changed files with 811 additions and 114 deletions

View File

@ -1,12 +1,76 @@
commit b51a7b0ccf0d5ccb53fbd5d34ed8fe57603d2604
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Thu May 30 17:51:12 2013 -0700
commit 84b9156c7833dfd91c65d33542420ff4fe226948
Author: Adam Jackson <ajax@redhat.com>
Date: Wed Oct 11 11:11:01 2017 -0400
libXres 1.0.7
libXRes 1.2.0
Signed-off-by: Adam Jackson <ajax@redhat.com>
commit 1bc34457619c0d9b94ebd1cadac53366da20fbe3
Author: Mihail Konev <k.mvc@ya.ru>
Date: Thu Jan 26 13:52:49 2017 +1000
autogen: add default patch prefix
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
commit e5fbb99729d460eda477bf6e299728bc47542ccb
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date: Mon Mar 9 12:00:52 2015 +0000
autogen.sh: use quoted string variables
Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
fall-outs, when they contain space.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit 16b2d184302d259a8481693285976045386fcc01
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jan 24 10:32:07 2017 +1000
autogen.sh: use exec instead of waiting for configure to finish
Syncs the invocation of configure with the one from the server.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
commit ae0ddaa9c960aee1b7845da01270b00177f95f3d
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Nov 22 23:22:36 2013 -0800
Remove fallback for _XEatDataWords, require libX11 1.6 for it
_XEatDataWords was orignally introduced with the May 2013 security
patches, and in order to ease the process of delivering those,
fallback versions of _XEatDataWords were included in the X extension
library patches so they could be applied to older versions that didn't
have libX11 1.6 yet. Now that we're past that hurdle, we can drop
the fallbacks and just require libX11 1.6 for building new versions
of the extension libraries.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit ad156a716a324ee60362c8ba66a5ed8c835c219b
commit 0f5cfdc3136dd8ef43800bda64f9d39e6b23b2e9
Author: Julien Cristau <jcristau@debian.org>
Date: Sun Jun 30 20:09:49 2013 +0200
Compute number of bytes correctly in XResQueryClientPixmapBytes
64-bit servers send the upper 32-bit in bytes_overflow. We were
multiplying by 2^32 - 1 instead of 2^32 when putting things back
together.
Debian bug#621702
Reported-by: Kevin Ryde <user42@zip.com.au>
Signed-off-by: Julien Cristau <jcristau@debian.org>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit f468184963e53feda848853c4aefd0197b2cc116
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Apr 12 23:36:13 2013 -0700
@ -19,7 +83,7 @@ Date: Fri Apr 12 23:36:13 2013 -0700
Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 3ec2db9eeb9ba8fb561802b0c4b8bf79e321b7a2
commit b053d215b80e721f9afdc5794e4f3f4f2aee0141
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Apr 12 23:36:13 2013 -0700
@ -32,7 +96,7 @@ Date: Fri Apr 12 23:36:13 2013 -0700
Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 95b352b0f4a1ab1bc254e78adbc73cd65223ded4
commit 69457711050ac3a53859ef11790a7ac815cd7d94
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Sat Apr 13 10:34:22 2013 -0700
@ -42,7 +106,7 @@ Date: Sat Apr 13 10:34:22 2013 -0700
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit d54acff47096cf52a9b8e018a26f7165e1092eb5
commit 83e7693515369d57dcd11c2bb1f03563f51bc500
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Jan 18 23:06:20 2013 -0800
@ -58,7 +122,61 @@ Date: Fri Jan 18 23:06:20 2013 -0800
the current minimum level required to build X.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
(cherry picked from commit 83e7693515369d57dcd11c2bb1f03563f51bc500)
commit d9324b7d07294bb18e4902596a1b8ee387188364
Author: Colin Walters <walters@verbum.org>
Date: Wed Jan 4 17:37:06 2012 -0500
autogen.sh: Implement GNOME Build API
http://people.gnome.org/~walters/docs/build-api.txt
Signed-off-by: Adam Jackson <ajax@redhat.com>
commit 6d1f115422cde2bfca4b69caa395345f3ac454e7
Author: Adam Jackson <ajax@redhat.com>
Date: Tue Jan 15 14:28:48 2013 -0500
configure: Remove AM_MAINTAINER_MODE
Signed-off-by: Adam Jackson <ajax@redhat.com>
commit f44f4e265ec3ab7ef87d6d7009ec079ba4c49336
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Mon Apr 23 18:57:48 2012 -0700
Bump version to 1.1.99.0 to reflect addition of 1.2 API
As noted in configure.ac comment, we try to keep library version
based on the protocol version number, so since the protocol skipped
to 1.2, we'll do that with the library as well for simplicity's sake.
Sets resourceproto requirement to version 1.2.0 since there were no
intermediate/snapshot versions between 1.1.2 & 1.2.0.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 01fc6f81f0a2935741dd1114aa3fa267d8be9095
Author: Erkki Seppälä <erkki.seppala@vincit.fi>
Date: Wed Dec 15 13:48:09 2010 +0200
Implemented second part of XResource extension v1.2: XResQueryResourceBytes
Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi>
Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi>
Reviewed-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 0f38938a27df1f865dcdda35f4d2ef191092ba42
Author: Erkki Seppälä <erkki.seppala@vincit.fi>
Date: Mon Nov 29 12:43:51 2010 +0200
Implemented first part of XResource extension v1.2: XResQueryClientIds
Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi>
Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi>
Reviewed-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit e6e0e02e4bf764fa58798540793bdeb44a60cc7f
Author: Alan Coopersmith <alan.coopersmith@oracle.com>

View File

@ -1,5 +1,5 @@
# $OpenBSD: Makefile.bsd-wrapper,v 1.3 2013/08/13 07:07:13 guenther Exp $
# $OpenBSD: Makefile.bsd-wrapper,v 1.4 2017/10/22 09:14:28 matthieu Exp $
SHARED_LIBS= XRes 5.0
SHARED_LIBS= XRes 5.1
.include <bsd.xorg.mk>

View File

@ -75,8 +75,8 @@ subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(srcdir)/xres.pc.in $(top_srcdir)/configure AUTHORS COPYING \
ChangeLog INSTALL config.guess config.sub depcomp install-sh \
ltmain.sh missing
ChangeLog INSTALL compile config.guess config.sub depcomp \
install-sh ltmain.sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \

347
lib/libXRes/compile Normal file
View File

@ -0,0 +1,347 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View File

@ -30,9 +30,6 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `_XEatDataWords' function. */
#undef HAVE__XEATDATAWORDS
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR

99
lib/libXRes/configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for libXres 1.0.7.
# Generated by GNU Autoconf 2.69 for libXres 1.2.0.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libXres'
PACKAGE_TARNAME='libXres'
PACKAGE_VERSION='1.0.7'
PACKAGE_STRING='libXres 1.0.7'
PACKAGE_VERSION='1.2.0'
PACKAGE_STRING='libXres 1.2.0'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL=''
@ -668,6 +668,9 @@ CHANGELOG_CMD
STRICT_CFLAGS
CWARNFLAGS
BASE_CFLAGS
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
CPP
OTOOL64
OTOOL
@ -715,9 +718,6 @@ build_vendor
build_cpu
build
LIBTOOL
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
am__untar
am__tar
AMTAR
@ -782,7 +782,6 @@ SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
enable_maintainer_mode
enable_shared
enable_static
with_pic
@ -791,6 +790,7 @@ enable_dependency_tracking
with_gnu_ld
with_sysroot
enable_libtool_lock
enable_maintainer_mode
enable_selective_werror
enable_strict_compilation
enable_silent_rules
@ -1350,7 +1350,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures libXres 1.0.7 to adapt to many kinds of systems.
\`configure' configures libXres 1.2.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1420,7 +1420,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of libXres 1.0.7:";;
short | recursive ) echo "Configuration of libXres 1.2.0:";;
esac
cat <<\_ACEOF
@ -1428,9 +1428,6 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-maintainer-mode
enable make rules and dependencies not useful (and
sometimes confusing) to the casual installer
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
@ -1440,6 +1437,9 @@ Optional Features:
--disable-dependency-tracking
speeds up one-time build
--disable-libtool-lock avoid locking (might break parallel builds)
--enable-maintainer-mode
enable make rules and dependencies not useful (and
sometimes confusing) to the casual installer
--disable-selective-werror
Turn off selective compiler errors. (default:
enabled)
@ -1543,7 +1543,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
libXres configure 1.0.7
libXres configure 1.2.0
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1867,7 +1867,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by libXres $as_me 1.0.7, which was
It was created by libXres $as_me 1.2.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2696,7 +2696,7 @@ fi
# Define the identity of the package.
PACKAGE='libXres'
VERSION='1.0.7'
VERSION='1.2.0'
cat >>confdefs.h <<_ACEOF
@ -2743,29 +2743,6 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Check whether --enable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then :
enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
else
USE_MAINTAINER_MODE=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
$as_echo "$USE_MAINTAINER_MODE" >&6; }
if test $USE_MAINTAINER_MODE = yes; then
MAINTAINER_MODE_TRUE=
MAINTAINER_MODE_FALSE='#'
else
MAINTAINER_MODE_TRUE='#'
MAINTAINER_MODE_FALSE=
fi
MAINT=$MAINTAINER_MODE_TRUE
# Initialize libtool
case `pwd` in
*\ * | *\ *)
@ -17622,10 +17599,6 @@ fi
# Check xres configuration, strip extra digits from package version to
# find the required protocol version
RES_VERSION=`echo $VERSION | sed 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`
# Obtain compiler/linker options for depedencies
pkg_failed=no
@ -17636,12 +17609,12 @@ if test -n "$XRES_CFLAGS"; then
pkg_cv_XRES_CFLAGS="$XRES_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11 xext xextproto resourceproto >= \$RES_VERSION\""; } >&5
($PKG_CONFIG --exists --print-errors "x11 xext xextproto resourceproto >= $RES_VERSION") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11 >= 1.6 xext xextproto resourceproto >= 1.2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "x11 >= 1.6 xext xextproto resourceproto >= 1.2.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_XRES_CFLAGS=`$PKG_CONFIG --cflags "x11 xext xextproto resourceproto >= $RES_VERSION" 2>/dev/null`
pkg_cv_XRES_CFLAGS=`$PKG_CONFIG --cflags "x11 >= 1.6 xext xextproto resourceproto >= 1.2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@ -17653,12 +17626,12 @@ if test -n "$XRES_LIBS"; then
pkg_cv_XRES_LIBS="$XRES_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11 xext xextproto resourceproto >= \$RES_VERSION\""; } >&5
($PKG_CONFIG --exists --print-errors "x11 xext xextproto resourceproto >= $RES_VERSION") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11 >= 1.6 xext xextproto resourceproto >= 1.2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "x11 >= 1.6 xext xextproto resourceproto >= 1.2.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_XRES_LIBS=`$PKG_CONFIG --libs "x11 xext xextproto resourceproto >= $RES_VERSION" 2>/dev/null`
pkg_cv_XRES_LIBS=`$PKG_CONFIG --libs "x11 >= 1.6 xext xextproto resourceproto >= 1.2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@ -17679,14 +17652,14 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
XRES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "x11 xext xextproto resourceproto >= $RES_VERSION" 2>&1`
XRES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "x11 >= 1.6 xext xextproto resourceproto >= 1.2.0" 2>&1`
else
XRES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "x11 xext xextproto resourceproto >= $RES_VERSION" 2>&1`
XRES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "x11 >= 1.6 xext xextproto resourceproto >= 1.2.0" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$XRES_PKG_ERRORS" >&5
as_fn_error $? "Package requirements (x11 xext xextproto resourceproto >= $RES_VERSION) were not met:
as_fn_error $? "Package requirements (x11 >= 1.6 xext xextproto resourceproto >= 1.2.0) were not met:
$XRES_PKG_ERRORS
@ -17719,22 +17692,6 @@ $as_echo "yes" >&6; }
fi
# Check for _XEatDataWords function that may be patched into older Xlib release
SAVE_LIBS="$LIBS"
LIBS="$XRES_LIBS"
for ac_func in _XEatDataWords
do :
ac_fn_c_check_func "$LINENO" "_XEatDataWords" "ac_cv_func__XEatDataWords"
if test "x$ac_cv_func__XEatDataWords" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE__XEATDATAWORDS 1
_ACEOF
fi
done
LIBS="$SAVE_LIBS"
ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile xres.pc"
cat >confcache <<\_ACEOF
@ -17862,10 +17819,6 @@ else
am__EXEEXT_FALSE=
fi
if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
as_fn_error $? "conditional \"AMDEP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@ -18275,7 +18228,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by libXres $as_me 1.0.7, which was
This file was extended by libXres $as_me 1.2.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -18341,7 +18294,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
libXres config.status 1.0.7
libXres config.status 1.2.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@ -29,14 +29,13 @@ AC_PREREQ([2.60])
# digit in the version number to track changes which don't affect the
# protocol, so XRes version l.n.m corresponds to protocol version l.n
#
AC_INIT([libXres], [1.0.7],
AC_INIT([libXres], [1.2.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXres])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
# Initialize Automake
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
# Initialize libtool
AC_PROG_LIBTOOL
@ -48,18 +47,8 @@ XORG_MACROS_VERSION(1.8)
XORG_DEFAULT_OPTIONS
XORG_CHECK_MALLOC_ZERO
# Check xres configuration, strip extra digits from package version to
# find the required protocol version
RES_VERSION=[`echo $VERSION | sed 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`]
# Obtain compiler/linker options for depedencies
PKG_CHECK_MODULES(XRES, x11 xext xextproto [resourceproto >= $RES_VERSION])
# Check for _XEatDataWords function that may be patched into older Xlib release
SAVE_LIBS="$LIBS"
LIBS="$XRES_LIBS"
AC_CHECK_FUNCS([_XEatDataWords])
LIBS="$SAVE_LIBS"
PKG_CHECK_MODULES(XRES, [x11 >= 1.6] xext xextproto [resourceproto >= 1.2.0])
AC_CONFIG_FILES([Makefile
src/Makefile

View File

@ -7,6 +7,8 @@
#include <X11/Xfuncproto.h>
/* v1.0 */
typedef struct {
XID resource_base;
XID resource_mask;
@ -17,8 +19,51 @@ typedef struct {
unsigned int count;
} XResType;
/* v1.2 */
typedef enum {
XRES_CLIENT_ID_XID,
XRES_CLIENT_ID_PID,
XRES_CLIENT_ID_NR
} XResClientIdType;
typedef enum {
XRES_CLIENT_ID_XID_MASK = 1 << XRES_CLIENT_ID_XID,
XRES_CLIENT_ID_PID_MASK = 1 << XRES_CLIENT_ID_PID
} XResClientIdMask;
typedef struct {
XID client;
unsigned int mask;
} XResClientIdSpec;
typedef struct {
XResClientIdSpec spec;
long length;
void *value;
} XResClientIdValue;
typedef struct {
XID resource;
Atom type;
} XResResourceIdSpec;
typedef struct {
XResResourceIdSpec spec;
long bytes;
long ref_count;
long use_count;
} XResResourceSizeSpec;
typedef struct {
XResResourceSizeSpec size;
long num_cross_references;
XResResourceSizeSpec *cross_references;
} XResResourceSizeValue;
_XFUNCPROTOBEGIN
/* v1.0 */
Bool XResQueryExtension (
Display *dpy,
@ -51,6 +96,40 @@ Status XResQueryClientPixmapBytes (
unsigned long *bytes
);
/* v1.2 */
Status XResQueryClientIds (
Display *dpy,
long num_specs,
XResClientIdSpec *client_specs, /* in */
long *num_ids, /* out */
XResClientIdValue **client_ids /* out */
);
XResClientIdType XResGetClientIdType(XResClientIdValue* value);
/* return -1 if no pid associated to the value */
pid_t XResGetClientPid(XResClientIdValue* value);
void XResClientIdsDestroy (
long num_ids,
XResClientIdValue *client_ids
);
Status XResQueryResourceBytes (
Display *dpy,
XID client,
long num_specs,
XResResourceIdSpec *resource_specs, /* in */
long *num_sizes, /* out */
XResResourceSizeValue **sizes /* out */
);
void XResResourceSizeValuesDestroy (
long num_sizes,
XResResourceSizeValue *sizes
);
_XFUNCPROTOEND
#endif /* _XRES_H */

View File

@ -12,19 +12,9 @@
#include <X11/extensions/extutil.h>
#include <X11/extensions/XResproto.h>
#include <X11/extensions/XRes.h>
#include <assert.h>
#include <limits.h>
#ifndef HAVE__XEATDATAWORDS
static inline void _XEatDataWords(Display *dpy, unsigned long n)
{
# ifndef LONG64
if (n >= (ULONG_MAX >> 2))
_XIOError(dpy);
# endif
_XEatData (dpy, n << 2);
}
#endif
static XExtensionInfo _xres_ext_info_data;
static XExtensionInfo *xres_ext_info = &_xres_ext_info_data;
static const char *xres_extension_name = XRES_NAME;
@ -239,7 +229,7 @@ Status XResQueryClientPixmapBytes (
}
#ifdef LONG64
*bytes = (rep.bytes_overflow * 4294967295) + rep.bytes;
*bytes = (rep.bytes_overflow * 4294967296UL) + rep.bytes;
#else
*bytes = rep.bytes_overflow ? 0xffffffff : rep.bytes;
#endif
@ -249,3 +239,227 @@ Status XResQueryClientPixmapBytes (
return 1;
}
static Bool ReadClientValues(
Display *dpy,
long num_ids,
XResClientIdValue *client_ids /* out */
)
{
int c;
for (c = 0; c < num_ids; ++c) {
XResClientIdValue* client = client_ids + c;
long int value;
_XRead32 (dpy, &value, 4);
client->spec.client = value;
_XRead32 (dpy, &value, 4);
client->spec.mask = value;
_XRead32 (dpy, &value, 4);
client->length = value;
client->value = malloc(client->length);
_XRead32 (dpy, client->value, client->length);
}
return True;
}
Status XResQueryClientIds (
Display *dpy,
long num_specs,
XResClientIdSpec *client_specs, /* in */
long *num_ids, /* out */
XResClientIdValue **client_ids /* out */
)
{
XExtDisplayInfo *info = find_display (dpy);
xXResQueryClientIdsReq *req;
xXResQueryClientIdsReply rep;
int c;
*num_ids = 0;
XResCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (XResQueryClientIds, req);
req->reqType = info->codes->major_opcode;
req->XResReqType = X_XResQueryClientIds;
req->length += num_specs * 2; /* 2 longs per client id spec */
req->numSpecs = num_specs;
for (c = 0; c < num_specs; ++c) {
Data32(dpy, &client_specs[c].client, 4);
Data32(dpy, &client_specs[c].mask, 4);
}
if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) {
goto error;
}
*client_ids = calloc(rep.numIds, sizeof(**client_ids));
*num_ids = rep.numIds;
if (!ReadClientValues(dpy, *num_ids, *client_ids)) {
goto error;
}
UnlockDisplay (dpy);
SyncHandle ();
return Success;
error:
XResClientIdsDestroy (*num_ids, *client_ids);
*client_ids = NULL;
UnlockDisplay (dpy);
SyncHandle ();
return !Success;
}
void XResClientIdsDestroy (
long num_ids,
XResClientIdValue *client_ids
)
{
int c;
for (c = 0; c < num_ids; ++c) {
free(client_ids[c].value);
}
free(client_ids);
}
XResClientIdType XResGetClientIdType(
XResClientIdValue* value
)
{
int bit;
XResClientIdType idType = 0;
Bool found = False;
for (bit = 0; bit < XRES_CLIENT_ID_NR; ++bit) {
if (value->spec.mask & (1 << bit)) {
assert(!found);
found = True;
idType = bit;
}
}
assert(found);
return idType;
}
pid_t XResGetClientPid(
XResClientIdValue* value
)
{
if (value->spec.mask & XRES_CLIENT_ID_PID_MASK && value->length >= 4) {
return (pid_t) * (CARD32*) value->value;
} else {
return (pid_t) -1;
}
}
static Status ReadResourceSizeSpec(
Display *dpy,
XResResourceSizeSpec *size
)
{
long int value;
_XRead32(dpy, &value, 4);
size->spec.resource = value;
_XRead32(dpy, &value, 4);
size->spec.type = value;
_XRead32(dpy, &value, 4);
size->bytes = value;
_XRead32(dpy, &value, 4);
size->ref_count = value;
_XRead32(dpy, &value, 4);
size->use_count = value;
return 0;
}
static Status ReadResourceSizeValues(
Display *dpy,
long num_sizes,
XResResourceSizeValue *sizes)
{
int c;
int d;
for (c = 0; c < num_sizes; ++c) {
long int num;
ReadResourceSizeSpec(dpy, &sizes[c].size);
_XRead32(dpy, &num, 4);
sizes[c].num_cross_references = num;
sizes[c].cross_references = num ? calloc(num, sizeof(*sizes[c].cross_references)) : NULL;
for (d = 0; d < num; ++d) {
ReadResourceSizeSpec(dpy, &sizes[c].cross_references[d]);
}
}
return Success;
}
Status XResQueryResourceBytes (
Display *dpy,
XID client,
long num_specs,
XResResourceIdSpec *resource_specs, /* in */
long *num_sizes, /* out */
XResResourceSizeValue **sizes /* out */
)
{
XExtDisplayInfo *info = find_display (dpy);
xXResQueryResourceBytesReq *req;
xXResQueryResourceBytesReply rep;
int c;
*num_sizes = 0;
XResCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (XResQueryResourceBytes, req);
req->reqType = info->codes->major_opcode;
req->XResReqType = X_XResQueryResourceBytes;
req->length += num_specs * 2; /* 2 longs per client id spec */
req->client = client;
req->numSpecs = num_specs;
for (c = 0; c < num_specs; ++c) {
Data32(dpy, &resource_specs[c].resource, 4);
Data32(dpy, &resource_specs[c].type, 4);
}
*num_sizes = 0;
*sizes = NULL;
if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) {
goto error;
}
*sizes = calloc(rep.numSizes, sizeof(**sizes));
*num_sizes = rep.numSizes;
if (ReadResourceSizeValues(dpy, *num_sizes, *sizes) != Success) {
goto error;
}
UnlockDisplay (dpy);
SyncHandle ();
return Success;
error:
XResResourceSizeValuesDestroy(*num_sizes, *sizes);
UnlockDisplay (dpy);
SyncHandle ();
return !Success;
}
void XResResourceSizeValuesDestroy (
long num_sizes,
XResResourceSizeValue *sizes
)
{
int c;
for (c = 0; c < num_sizes; ++c) {
free(sizes[c].cross_references);
}
free(sizes);
}