Update to xlsclients 1.1.0. Rewritten to use XCB.
This commit is contained in:
parent
a33d3d9ce4
commit
f59c0fe9bd
@ -1,4 +1,5 @@
|
||||
Copyright 1989, 1991, 1994, 1998 The Open Group
|
||||
Copyright 2009 Open Text Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software and its
|
||||
documentation for any purpose is hereby granted without fee, provided that
|
||||
@ -19,3 +20,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
Except as contained in this notice, the name of The Open Group shall not be
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from The Open Group.
|
||||
|
||||
Copyright (c) 2009 Apple Inc.
|
||||
|
||||
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
|
||||
THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
|
||||
|
@ -1,3 +1,130 @@
|
||||
commit cc6dbd2c1e7966b32e333142ab7630ed19700414
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Thu Jun 3 16:05:20 2010 -0700
|
||||
|
||||
xlsclients 1.1.0
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 1a4649f30813b02caac49de85e2f8b52b7a967fb
|
||||
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||
Date: Thu Nov 26 09:19:54 2009 -0500
|
||||
|
||||
Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES
|
||||
|
||||
Now that the INSTALL file is generated.
|
||||
Allows running make maintainer-clean.
|
||||
|
||||
commit 677599f014077c139d42d1c081f24cfcd15882da
|
||||
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||
Date: Wed Oct 28 14:09:08 2009 -0400
|
||||
|
||||
INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206
|
||||
|
||||
Add missing INSTALL file. Use standard GNU file on building tarball
|
||||
README may have been updated
|
||||
Remove AUTHORS file as it is empty and no content available yet.
|
||||
Remove NEWS file as it is empty and no content available yet.
|
||||
|
||||
commit d3a3f207f7ee1a4d6ee854d262f9875449bca29f
|
||||
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||
Date: Mon Oct 26 22:08:39 2009 -0400
|
||||
|
||||
Makefile.am: ChangeLog not required: EXTRA_DIST or *CLEANFILES #24432
|
||||
|
||||
ChangeLog filename is known to Automake and requires no further
|
||||
coding in the makefile.
|
||||
|
||||
commit ca9714918eaa05fb631448519c60457d00bb66ae
|
||||
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||
Date: Thu Oct 22 12:34:15 2009 -0400
|
||||
|
||||
.gitignore: use common defaults with custom section # 24239
|
||||
|
||||
Using common defaults will reduce errors and maintenance.
|
||||
Only the very small or inexistent custom section need periodic maintenance
|
||||
when the structure of the component changes. Do not edit defaults.
|
||||
|
||||
commit 8dda84e71446de8726846a2fa5c83b4354e4811b
|
||||
Author: Alan Coopersmith <alan.coopersmith@sun.com>
|
||||
Date: Tue Oct 27 12:54:51 2009 -0700
|
||||
|
||||
Add Copyright/License notice for xcb & strnlen changes to COPYING
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
|
||||
|
||||
commit 9745fd920083438ef2c1566947f179b105bf8deb
|
||||
Author: Alan Coopersmith <alan.coopersmith@sun.com>
|
||||
Date: Tue Oct 20 16:20:18 2009 -0700
|
||||
|
||||
Fix check for xcb_connect failure
|
||||
|
||||
Prevents core dump when display can't be opened
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
|
||||
|
||||
commit 222dc9735d6fd2ab1b22003eb00348b98b87afe7
|
||||
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||
Date: Wed Oct 21 12:25:58 2009 -0700
|
||||
|
||||
xlsclients is not a GNU project, so declare it foreign.
|
||||
|
||||
On Wed, 2009-10-21 at 13:36 +1000, Peter Hutterer wrote:
|
||||
> On Tue, Oct 20, 2009 at 08:23:55PM -0700, Jeremy Huddleston wrote:
|
||||
> > I noticed an INSTALL file in xlsclients and libXvMC today, and it
|
||||
> > was quite annoying to work around since 'autoreconf -fvi' replaces
|
||||
> > it and git wants to commit it. Should these files even be in git?
|
||||
> > Can I nuke them for the betterment of humanity and since they get
|
||||
> > created by autoreconf anyways?
|
||||
>
|
||||
> See https://bugs.freedesktop.org/show_bug.cgi?id=24206
|
||||
|
||||
As an interim measure, replace AM_INIT_AUTOMAKE([dist-bzip2]) with
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2]). This will prevent the generation
|
||||
of the INSTALL file. It is also part of the 24206 solution.
|
||||
|
||||
commit 7720fa29dfe664c363c27c0038a269bc8aeea74f
|
||||
Author: Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
|
||||
Date: Wed Oct 21 00:18:26 2009 -0500
|
||||
|
||||
Use inttypes.h for correct printf formats
|
||||
|
||||
xcb_atom_t and xcb_window_t are both typedef'd as uint32_t.
|
||||
|
||||
Since PRI*32 are a C99 feature that may not be available, fallbacks
|
||||
are provided based on the assumption of a 32-bit int.
|
||||
|
||||
Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
|
||||
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
|
||||
Signed-off-by: Jamey Sharp <jamey@minilop.net>
|
||||
|
||||
commit 2793689cc2eda675ec11a3a0cfed5e470fa83ee3
|
||||
Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
|
||||
Date: Tue Oct 20 15:40:13 2009 -0700
|
||||
|
||||
Add implementation of strnlen for systems without this function
|
||||
|
||||
Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
|
||||
Signed-off-by: Jeremy Huddleston <jeremyhu@freedesktop.org>
|
||||
|
||||
commit 1839eabbdd697039a264fe7ebb3f4d26f08ddabe
|
||||
Author: Peter Harris <pharris@opentext.com>
|
||||
Date: Mon Oct 19 18:21:26 2009 -0700
|
||||
|
||||
Rewrite xlsclients to use XCB, avoiding many (many) round trips
|
||||
|
||||
This version spends bandwidth to reduce latency; in particular, it
|
||||
aggressively calls query_tree before the answer to get_property(WM_STATE) is
|
||||
available.
|
||||
|
||||
Even on my local box, this version is 4-10 times faster (30ms typical, vs
|
||||
200ms typical for Xlib). I get similar results over the local network.
|
||||
|
||||
At least one person reports this version takes less than 2 seconds over ssh,
|
||||
vs over a minute for the Xlib version (~30x faster).
|
||||
|
||||
Reviewed-by: Jamey Sharp <jamey@minilop.net>
|
||||
|
||||
commit 47f2d188a231a1c59d5d3030a1a2470c774d1e0d
|
||||
Author: Alan Coopersmith <alan.coopersmith@sun.com>
|
||||
Date: Fri Oct 16 18:56:01 2009 -0700
|
||||
|
@ -1,6 +1,297 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
6. Often, you can also type `make uninstall' to remove the installed
|
||||
files again.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *Note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
bin_PROGRAMS = xlsclients
|
||||
|
||||
AM_CFLAGS = $(CWARNFLAGS) $(XLSCLIENTS_CFLAGS)
|
||||
xlsclients_LDADD = $(XLSCLIENTS_LIBS)
|
||||
xlsclients_LDADD = $(XLSCLIENTS_LIBS) $(LIBOBJS)
|
||||
|
||||
xlsclients_SOURCES = \
|
||||
xlsclients.c
|
||||
@ -36,6 +36,7 @@ appmandir = $(APP_MAN_DIR)
|
||||
appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
|
||||
|
||||
EXTRA_DIST = $(appman_PRE)
|
||||
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
||||
CLEANFILES = $(appman_DATA)
|
||||
|
||||
SED = sed
|
||||
@ -62,12 +63,13 @@ SUFFIXES = .$(APP_MAN_SUFFIX) .man
|
||||
.man.$(APP_MAN_SUFFIX):
|
||||
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
|
||||
|
||||
EXTRA_DIST += ChangeLog
|
||||
MAINTAINERCLEANFILES = ChangeLog
|
||||
|
||||
.PHONY: ChangeLog
|
||||
.PHONY: ChangeLog INSTALL
|
||||
|
||||
INSTALL:
|
||||
$(INSTALL_CMD)
|
||||
|
||||
ChangeLog:
|
||||
$(CHANGELOG_CMD)
|
||||
|
||||
dist-hook: ChangeLog
|
||||
dist-hook: ChangeLog INSTALL
|
||||
|
@ -62,7 +62,7 @@ bin_PROGRAMS = xlsclients$(EXEEXT)
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||
config.guess config.sub depcomp install-sh missing
|
||||
config.guess config.sub depcomp install-sh missing strnlen.c
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
@ -79,7 +79,8 @@ PROGRAMS = $(bin_PROGRAMS)
|
||||
am_xlsclients_OBJECTS = xlsclients.$(OBJEXT)
|
||||
xlsclients_OBJECTS = $(am_xlsclients_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
xlsclients_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am__DEPENDENCIES_2 = @LIBOBJS@
|
||||
xlsclients_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -109,12 +110,14 @@ am__remove_distdir = \
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
|
||||
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
APP_MAN_DIR = @APP_MAN_DIR@
|
||||
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
@ -141,6 +144,7 @@ EXEEXT = @EXEEXT@
|
||||
FILE_MAN_DIR = @FILE_MAN_DIR@
|
||||
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
||||
GREP = @GREP@
|
||||
INSTALL_CMD = @INSTALL_CMD@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
@ -155,6 +159,19 @@ MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAN_SUBSTS = \
|
||||
-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
|
||||
-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
|
||||
-e 's|__xservername__|Xorg|g' \
|
||||
-e 's|__xconfigfile__|xorg.conf|g' \
|
||||
-e 's|__projectroot__|$(prefix)|g' \
|
||||
-e 's|__apploaddir__|$(appdefaultdir)|' \
|
||||
-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
|
||||
-e 's|__libmansuffix__|$(LIB_MAN_SUFFIX)|g' \
|
||||
-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
|
||||
-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
|
||||
-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
|
||||
|
||||
MISC_MAN_DIR = @MISC_MAN_DIR@
|
||||
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
|
||||
OBJEXT = @OBJEXT@
|
||||
@ -166,12 +183,14 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
SED = sed
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
XLSCLIENTS_CFLAGS = @XLSCLIENTS_CFLAGS@
|
||||
XLSCLIENTS_LIBS = @XLSCLIENTS_LIBS@
|
||||
XORG_MAN_PAGE = @XORG_MAN_PAGE@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
@ -188,7 +207,6 @@ build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
distcleancheck_listfiles = @distcleancheck_listfiles@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
@ -217,7 +235,7 @@ sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
AM_CFLAGS = $(CWARNFLAGS) $(XLSCLIENTS_CFLAGS)
|
||||
xlsclients_LDADD = $(XLSCLIENTS_LIBS)
|
||||
xlsclients_LDADD = $(XLSCLIENTS_LIBS) $(LIBOBJS)
|
||||
xlsclients_SOURCES = \
|
||||
xlsclients.c
|
||||
|
||||
@ -226,28 +244,14 @@ appman_PRE = \
|
||||
|
||||
appmandir = $(APP_MAN_DIR)
|
||||
appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
|
||||
EXTRA_DIST = $(appman_PRE) ChangeLog
|
||||
EXTRA_DIST = $(appman_PRE)
|
||||
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
||||
CLEANFILES = $(appman_DATA)
|
||||
SED = sed
|
||||
|
||||
# Strings to replace in man pages
|
||||
XORGRELSTRING = @PACKAGE_STRING@
|
||||
XORGMANNAME = X Version 11
|
||||
MAN_SUBSTS = \
|
||||
-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
|
||||
-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
|
||||
-e 's|__xservername__|Xorg|g' \
|
||||
-e 's|__xconfigfile__|xorg.conf|g' \
|
||||
-e 's|__projectroot__|$(prefix)|g' \
|
||||
-e 's|__apploaddir__|$(appdefaultdir)|' \
|
||||
-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
|
||||
-e 's|__libmansuffix__|$(LIB_MAN_SUFFIX)|g' \
|
||||
-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
|
||||
-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
|
||||
-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
|
||||
|
||||
SUFFIXES = .$(APP_MAN_SUFFIX) .man
|
||||
MAINTAINERCLEANFILES = ChangeLog
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
||||
|
||||
@ -259,15 +263,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --foreign \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
@ -336,6 +340,7 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strnlen.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xlsclients.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@ -586,7 +591,7 @@ clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-hdr distclean-tags
|
||||
@ -614,7 +619,7 @@ installcheck-am:
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
@ -652,12 +657,15 @@ uninstall-am: uninstall-appmanDATA uninstall-binPROGRAMS \
|
||||
.man.$(APP_MAN_SUFFIX):
|
||||
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
|
||||
|
||||
.PHONY: ChangeLog
|
||||
.PHONY: ChangeLog INSTALL
|
||||
|
||||
INSTALL:
|
||||
$(INSTALL_CMD)
|
||||
|
||||
ChangeLog:
|
||||
$(CHANGELOG_CMD)
|
||||
|
||||
dist-hook: ChangeLog
|
||||
dist-hook: ChangeLog INSTALL
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
@ -1,6 +1,9 @@
|
||||
xlsclients is a utility for listing information about the client
|
||||
applications running on a X11 server.
|
||||
|
||||
Version 1.1 and later of xlsclients use (and require) libxcb instead
|
||||
of libX11, for more efficient communication with the X server.
|
||||
|
||||
All questions regarding this software should be directed at the
|
||||
Xorg mailing list:
|
||||
|
||||
|
843
app/xlsclients/aclocal.m4
vendored
843
app/xlsclients/aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
@ -18,6 +18,9 @@
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have a working strnlen function. */
|
||||
#undef HAVE_STRNLEN
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
@ -59,3 +62,35 @@
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define to 1 if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||
this defined. */
|
||||
#undef _POSIX_1_SOURCE
|
||||
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
#endif
|
||||
/* Enable GNU extensions on systems that have them. */
|
||||
#ifndef _GNU_SOURCE
|
||||
# undef _GNU_SOURCE
|
||||
#endif
|
||||
/* Enable threading extensions on Solaris. */
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
# undef _POSIX_PTHREAD_SEMANTICS
|
||||
#endif
|
||||
/* Enable extensions on HP NonStop. */
|
||||
#ifndef _TANDEM_SOURCE
|
||||
# undef _TANDEM_SOURCE
|
||||
#endif
|
||||
/* Enable general extensions on Solaris. */
|
||||
#ifndef __EXTENSIONS__
|
||||
# undef __EXTENSIONS__
|
||||
#endif
|
||||
|
||||
|
750
app/xlsclients/configure
vendored
750
app/xlsclients/configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.62 for xlsclients 1.0.2.
|
||||
# Generated by GNU Autoconf 2.62 for xlsclients 1.1.0.
|
||||
#
|
||||
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
||||
#
|
||||
@ -596,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='xlsclients'
|
||||
PACKAGE_TARNAME='xlsclients'
|
||||
PACKAGE_VERSION='1.0.2'
|
||||
PACKAGE_STRING='xlsclients 1.0.2'
|
||||
PACKAGE_VERSION='1.1.0'
|
||||
PACKAGE_STRING='xlsclients 1.1.0'
|
||||
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
||||
|
||||
# Factoring default headers for most tests.
|
||||
@ -716,9 +716,11 @@ am__fastdepCC_FALSE
|
||||
CPP
|
||||
GREP
|
||||
EGREP
|
||||
LIBOBJS
|
||||
CWARNFLAGS
|
||||
CHANGELOG_CMD
|
||||
distcleancheck_listfiles
|
||||
PKG_CONFIG
|
||||
INSTALL_CMD
|
||||
build
|
||||
build_cpu
|
||||
build_vendor
|
||||
@ -727,6 +729,7 @@ host
|
||||
host_cpu
|
||||
host_vendor
|
||||
host_os
|
||||
SED
|
||||
APP_MAN_SUFFIX
|
||||
LIB_MAN_SUFFIX
|
||||
FILE_MAN_SUFFIX
|
||||
@ -739,10 +742,11 @@ FILE_MAN_DIR
|
||||
MISC_MAN_DIR
|
||||
DRIVER_MAN_DIR
|
||||
ADMIN_MAN_DIR
|
||||
PKG_CONFIG
|
||||
XORG_MAN_PAGE
|
||||
MAN_SUBSTS
|
||||
AM_DEFAULT_VERBOSITY
|
||||
XLSCLIENTS_CFLAGS
|
||||
XLSCLIENTS_LIBS
|
||||
LIBOBJS
|
||||
LTLIBOBJS'
|
||||
ac_subst_files=''
|
||||
ac_user_opts='
|
||||
@ -750,7 +754,6 @@ enable_option_checking
|
||||
enable_maintainer_mode
|
||||
enable_dependency_tracking
|
||||
enable_strict_compilation
|
||||
with_release_version
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
@ -1316,7 +1319,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 xlsclients 1.0.2 to adapt to many kinds of systems.
|
||||
\`configure' configures xlsclients 1.1.0 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1386,7 +1389,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of xlsclients 1.0.2:";;
|
||||
short | recursive ) echo "Configuration of xlsclients 1.1.0:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1402,12 +1405,6 @@ Optional Features:
|
||||
Enable all warnings from compiler and make them
|
||||
errors (default: disabled)
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-release-version=STRING
|
||||
Use release version string in package name
|
||||
|
||||
Some influential environment variables:
|
||||
CC C compiler command
|
||||
CFLAGS C compiler flags
|
||||
@ -1489,7 +1486,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
xlsclients configure 1.0.2
|
||||
xlsclients configure 1.1.0
|
||||
generated by GNU Autoconf 2.62
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||
@ -1503,7 +1500,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 xlsclients $as_me 1.0.2, which was
|
||||
It was created by xlsclients $as_me 1.1.0, which was
|
||||
generated by GNU Autoconf 2.62. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -2152,7 +2149,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='xlsclients'
|
||||
VERSION='1.0.2'
|
||||
VERSION='1.1.0'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@ -3538,6 +3535,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
|
||||
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
||||
|
||||
|
||||
# Check for functional strnlen
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
@ -4158,6 +4156,332 @@ fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
if test "${ac_cv_header_minix_config_h+set}" = set; then
|
||||
{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
|
||||
$as_echo_n "checking for minix/config.h... " >&6; }
|
||||
if test "${ac_cv_header_minix_config_h+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
|
||||
$as_echo "$ac_cv_header_minix_config_h" >&6; }
|
||||
else
|
||||
# Is the header compilable?
|
||||
{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5
|
||||
$as_echo_n "checking minix/config.h usability... " >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
#include <minix/config.h>
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (ac_try="$ac_compile"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_compile") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && {
|
||||
test -z "$ac_c_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
} && test -s conftest.$ac_objext; then
|
||||
ac_header_compiler=yes
|
||||
else
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_compiler=no
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||
$as_echo "$ac_header_compiler" >&6; }
|
||||
|
||||
# Is the header present?
|
||||
{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5
|
||||
$as_echo_n "checking minix/config.h presence... " >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <minix/config.h>
|
||||
_ACEOF
|
||||
if { (ac_try="$ac_cpp conftest.$ac_ext"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } >/dev/null && {
|
||||
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
}; then
|
||||
ac_header_preproc=yes
|
||||
else
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_preproc=no
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
$as_echo "$ac_header_preproc" >&6; }
|
||||
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||
yes:no: )
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
|
||||
ac_header_preproc=yes
|
||||
;;
|
||||
no:yes:* )
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
|
||||
$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
|
||||
( cat <<\_ASBOX
|
||||
## ---------------------------------------------------------------------- ##
|
||||
## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg ##
|
||||
## ---------------------------------------------------------------------- ##
|
||||
_ASBOX
|
||||
) | sed "s/^/$as_me: WARNING: /" >&2
|
||||
;;
|
||||
esac
|
||||
{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
|
||||
$as_echo_n "checking for minix/config.h... " >&6; }
|
||||
if test "${ac_cv_header_minix_config_h+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_cv_header_minix_config_h=$ac_header_preproc
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
|
||||
$as_echo "$ac_cv_header_minix_config_h" >&6; }
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_minix_config_h = yes; then
|
||||
MINIX=yes
|
||||
else
|
||||
MINIX=
|
||||
fi
|
||||
|
||||
|
||||
if test "$MINIX" = yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define _POSIX_SOURCE 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define _POSIX_1_SOURCE 2
|
||||
_ACEOF
|
||||
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define _MINIX 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
|
||||
$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
|
||||
if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
# define __EXTENSIONS__ 1
|
||||
$ac_includes_default
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (ac_try="$ac_compile"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_compile") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && {
|
||||
test -z "$ac_c_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
} && test -s conftest.$ac_objext; then
|
||||
ac_cv_safe_to_define___extensions__=yes
|
||||
else
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_cv_safe_to_define___extensions__=no
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5
|
||||
$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
|
||||
test $ac_cv_safe_to_define___extensions__ = yes &&
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define __EXTENSIONS__ 1
|
||||
_ACEOF
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define _ALL_SOURCE 1
|
||||
_ACEOF
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define _GNU_SOURCE 1
|
||||
_ACEOF
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define _POSIX_PTHREAD_SEMANTICS 1
|
||||
_ACEOF
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define _TANDEM_SOURCE 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking for working strnlen" >&5
|
||||
$as_echo_n "checking for working strnlen... " >&6; }
|
||||
if test "${ac_cv_func_strnlen_working+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
if test "$cross_compiling" = yes; then
|
||||
ac_cv_func_strnlen_working=no
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
#define S "foobar"
|
||||
#define S_LEN (sizeof S - 1)
|
||||
|
||||
/* At least one implementation is buggy: that of AIX 4.3 would
|
||||
give strnlen (S, 1) == 3. */
|
||||
|
||||
int i;
|
||||
for (i = 0; i < S_LEN + 1; ++i)
|
||||
{
|
||||
int expected = i <= S_LEN ? i : S_LEN;
|
||||
if (strnlen (S, i) != expected)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest$ac_exeext
|
||||
if { (ac_try="$ac_link"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_link") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_cv_func_strnlen_working=yes
|
||||
else
|
||||
$as_echo "$as_me: program exited with status $ac_status" >&5
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
( exit $ac_status )
|
||||
ac_cv_func_strnlen_working=no
|
||||
fi
|
||||
rm -rf conftest.dSYM
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strnlen_working" >&5
|
||||
$as_echo "$ac_cv_func_strnlen_working" >&6; }
|
||||
test $ac_cv_func_strnlen_working = no && case " $LIBOBJS " in
|
||||
*" strnlen.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS strnlen.$ac_objext"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
if test "x$ac_cv_func_strnlen_working" = xyes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_STRNLEN 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
|
||||
$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
|
||||
if test "${ac_cv_prog_cc_c99+set}" = set; then
|
||||
@ -4360,6 +4684,126 @@ esac
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||
if test -n "$ac_tool_prefix"; then
|
||||
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
|
||||
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $PKG_CONFIG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
|
||||
if test -n "$PKG_CONFIG"; then
|
||||
{ $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
|
||||
$as_echo "$PKG_CONFIG" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
if test -z "$ac_cv_path_PKG_CONFIG"; then
|
||||
ac_pt_PKG_CONFIG=$PKG_CONFIG
|
||||
# Extract the first word of "pkg-config", so it can be a program name with args.
|
||||
set dummy pkg-config; ac_word=$2
|
||||
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $ac_pt_PKG_CONFIG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
|
||||
if test -n "$ac_pt_PKG_CONFIG"; then
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
|
||||
$as_echo "$ac_pt_PKG_CONFIG" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
if test "x$ac_pt_PKG_CONFIG" = x; then
|
||||
PKG_CONFIG=""
|
||||
else
|
||||
case $cross_compiling:$ac_tool_warned in
|
||||
yes:)
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&5
|
||||
$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&2;}
|
||||
ac_tool_warned=yes ;;
|
||||
esac
|
||||
PKG_CONFIG=$ac_pt_PKG_CONFIG
|
||||
fi
|
||||
else
|
||||
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
|
||||
fi
|
||||
|
||||
fi
|
||||
if test -n "$PKG_CONFIG"; then
|
||||
_pkg_min_version=0.9.0
|
||||
{ $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
|
||||
$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
PKG_CONFIG=""
|
||||
fi
|
||||
|
||||
fi
|
||||
# Make sure we can run config.sub.
|
||||
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
|
||||
@ -4443,13 +4887,85 @@ IFS=$ac_save_IFS
|
||||
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
|
||||
$as_echo_n "checking for a sed that does not truncate output... " >&6; }
|
||||
if test "${ac_cv_path_SED+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
|
||||
for ac_i in 1 2 3 4 5 6 7; do
|
||||
ac_script="$ac_script$as_nl$ac_script"
|
||||
done
|
||||
echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
|
||||
$as_unset ac_script || ac_script=
|
||||
if test -z "$SED"; then
|
||||
ac_path_SED_found=false
|
||||
# Loop through the user's path and test for each of PROGNAME-LIST
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_prog in sed gsed; do
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
|
||||
{ test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
|
||||
# Check for GNU ac_path_SED and select it if it is found.
|
||||
# Check for GNU $ac_path_SED
|
||||
case `"$ac_path_SED" --version 2>&1` in
|
||||
*GNU*)
|
||||
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
|
||||
*)
|
||||
ac_count=0
|
||||
$as_echo_n 0123456789 >"conftest.in"
|
||||
while :
|
||||
do
|
||||
cat "conftest.in" "conftest.in" >"conftest.tmp"
|
||||
mv "conftest.tmp" "conftest.in"
|
||||
cp "conftest.in" "conftest.nl"
|
||||
$as_echo '' >> "conftest.nl"
|
||||
"$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
||||
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
||||
ac_count=`expr $ac_count + 1`
|
||||
if test $ac_count -gt ${ac_path_SED_max-0}; then
|
||||
# Best one so far, save it but keep looking for a better one
|
||||
ac_cv_path_SED="$ac_path_SED"
|
||||
ac_path_SED_max=$ac_count
|
||||
fi
|
||||
# 10*(2^10) chars as input seems more than enough
|
||||
test $ac_count -gt 10 && break
|
||||
done
|
||||
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
||||
esac
|
||||
|
||||
$ac_path_SED_found && break 3
|
||||
done
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
if test -z "$ac_cv_path_SED"; then
|
||||
{ { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
|
||||
$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
else
|
||||
ac_cv_path_SED=$SED
|
||||
fi
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
|
||||
$as_echo "$ac_cv_path_SED" >&6; }
|
||||
SED="$ac_cv_path_SED"
|
||||
rm -f conftest.sed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x$GCC" = xyes ; then
|
||||
CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
|
||||
-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
|
||||
-Wbad-function-cast"
|
||||
-Wbad-function-cast -Wformat=2"
|
||||
case `$CC -dumpversion` in
|
||||
3.4.* | 4.*)
|
||||
CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
|
||||
@ -4522,8 +5038,7 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# If the module's configure.ac calls AC_PROG_CC later on, CC gets set to C89
|
||||
|
||||
|
||||
|
||||
@ -4666,20 +5181,6 @@ CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
|
||||
|
||||
|
||||
|
||||
# Check whether --with-release-version was given.
|
||||
if test "${with_release_version+set}" = set; then
|
||||
withval=$with_release_version; RELEASE_VERSION="$withval"
|
||||
else
|
||||
RELEASE_VERSION=""
|
||||
fi
|
||||
|
||||
if test "x$RELEASE_VERSION" != "x"; then
|
||||
PACKAGE="$PACKAGE-$RELEASE_VERSION"
|
||||
PACKAGE_TARNAME="$PACKAGE_TARNAME-$RELEASE_VERSION"
|
||||
{ $as_echo "$as_me:$LINENO: Building with package name set to $PACKAGE" >&5
|
||||
$as_echo "$as_me: Building with package name set to $PACKAGE" >&6;}
|
||||
fi
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1`
|
||||
_ACEOF
|
||||
@ -4704,11 +5205,20 @@ _ACEOF
|
||||
|
||||
|
||||
|
||||
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > .changelog.tmp && \
|
||||
mv .changelog.tmp ChangeLog) || (rm -f .changelog.tmp; touch ChangeLog; \
|
||||
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
|
||||
mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
|
||||
|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
|
||||
echo 'git directory not found: installing possibly empty changelog.' >&2)"
|
||||
|
||||
distcleancheck_listfiles='find . -type f ! -name ChangeLog -print'
|
||||
|
||||
|
||||
|
||||
macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
|
||||
INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
|
||||
mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
|
||||
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
|
||||
echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -4782,130 +5292,30 @@ fi
|
||||
|
||||
|
||||
|
||||
XORG_MAN_PAGE="X Version 11"
|
||||
|
||||
MAN_SUBSTS="\
|
||||
-e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \
|
||||
-e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \
|
||||
-e 's|__xservername__|Xorg|g' \
|
||||
-e 's|__xconfigfile__|xorg.conf|g' \
|
||||
-e 's|__projectroot__|\$(prefix)|g' \
|
||||
-e 's|__apploaddir__|\$(appdefaultdir)|g' \
|
||||
-e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \
|
||||
-e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \
|
||||
-e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \
|
||||
-e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \
|
||||
-e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \
|
||||
-e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'"
|
||||
|
||||
|
||||
|
||||
AM_DEFAULT_VERBOSITY=1
|
||||
|
||||
|
||||
|
||||
# Checks for pkg-config packages
|
||||
|
||||
|
||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||
if test -n "$ac_tool_prefix"; then
|
||||
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
|
||||
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $PKG_CONFIG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
|
||||
if test -n "$PKG_CONFIG"; then
|
||||
{ $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
|
||||
$as_echo "$PKG_CONFIG" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
if test -z "$ac_cv_path_PKG_CONFIG"; then
|
||||
ac_pt_PKG_CONFIG=$PKG_CONFIG
|
||||
# Extract the first word of "pkg-config", so it can be a program name with args.
|
||||
set dummy pkg-config; ac_word=$2
|
||||
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $ac_pt_PKG_CONFIG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
|
||||
if test -n "$ac_pt_PKG_CONFIG"; then
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
|
||||
$as_echo "$ac_pt_PKG_CONFIG" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
if test "x$ac_pt_PKG_CONFIG" = x; then
|
||||
PKG_CONFIG=""
|
||||
else
|
||||
case $cross_compiling:$ac_tool_warned in
|
||||
yes:)
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&5
|
||||
$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&2;}
|
||||
ac_tool_warned=yes ;;
|
||||
esac
|
||||
PKG_CONFIG=$ac_pt_PKG_CONFIG
|
||||
fi
|
||||
else
|
||||
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
|
||||
fi
|
||||
|
||||
fi
|
||||
if test -n "$PKG_CONFIG"; then
|
||||
_pkg_min_version=0.9.0
|
||||
{ $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
|
||||
$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
PKG_CONFIG=""
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
pkg_failed=no
|
||||
{ $as_echo "$as_me:$LINENO: checking for XLSCLIENTS" >&5
|
||||
$as_echo_n "checking for XLSCLIENTS... " >&6; }
|
||||
@ -4915,12 +5325,12 @@ if test -n "$PKG_CONFIG"; then
|
||||
pkg_cv_XLSCLIENTS_CFLAGS="$XLSCLIENTS_CFLAGS"
|
||||
else
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
{ ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"x11 xmuu\"") >&5
|
||||
($PKG_CONFIG --exists --print-errors "x11 xmuu") 2>&5
|
||||
{ ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-atom\"") >&5
|
||||
($PKG_CONFIG --exists --print-errors "xcb xcb-atom") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; then
|
||||
pkg_cv_XLSCLIENTS_CFLAGS=`$PKG_CONFIG --cflags "x11 xmuu" 2>/dev/null`
|
||||
pkg_cv_XLSCLIENTS_CFLAGS=`$PKG_CONFIG --cflags "xcb xcb-atom" 2>/dev/null`
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
@ -4933,12 +5343,12 @@ if test -n "$PKG_CONFIG"; then
|
||||
pkg_cv_XLSCLIENTS_LIBS="$XLSCLIENTS_LIBS"
|
||||
else
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
{ ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"x11 xmuu\"") >&5
|
||||
($PKG_CONFIG --exists --print-errors "x11 xmuu") 2>&5
|
||||
{ ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xcb xcb-atom\"") >&5
|
||||
($PKG_CONFIG --exists --print-errors "xcb xcb-atom") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; then
|
||||
pkg_cv_XLSCLIENTS_LIBS=`$PKG_CONFIG --libs "x11 xmuu" 2>/dev/null`
|
||||
pkg_cv_XLSCLIENTS_LIBS=`$PKG_CONFIG --libs "xcb xcb-atom" 2>/dev/null`
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
@ -4957,14 +5367,14 @@ else
|
||||
_pkg_short_errors_supported=no
|
||||
fi
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
XLSCLIENTS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "x11 xmuu"`
|
||||
XLSCLIENTS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xcb xcb-atom"`
|
||||
else
|
||||
XLSCLIENTS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "x11 xmuu"`
|
||||
XLSCLIENTS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xcb xcb-atom"`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$XLSCLIENTS_PKG_ERRORS" >&5
|
||||
|
||||
{ { $as_echo "$as_me:$LINENO: error: Package requirements (x11 xmuu) were not met:
|
||||
{ { $as_echo "$as_me:$LINENO: error: Package requirements (xcb xcb-atom) were not met:
|
||||
|
||||
$XLSCLIENTS_PKG_ERRORS
|
||||
|
||||
@ -4975,7 +5385,7 @@ Alternatively, you may set the environment variables XLSCLIENTS_CFLAGS
|
||||
and XLSCLIENTS_LIBS to avoid the need to call pkg-config.
|
||||
See the pkg-config man page for more details.
|
||||
" >&5
|
||||
$as_echo "$as_me: error: Package requirements (x11 xmuu) were not met:
|
||||
$as_echo "$as_me: error: Package requirements (xcb xcb-atom) were not met:
|
||||
|
||||
$XLSCLIENTS_PKG_ERRORS
|
||||
|
||||
@ -5461,7 +5871,7 @@ exec 6>&1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by xlsclients $as_me 1.0.2, which was
|
||||
This file was extended by xlsclients $as_me 1.1.0, which was
|
||||
generated by GNU Autoconf 2.62. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -5514,7 +5924,7 @@ Report bugs to <bug-autoconf@gnu.org>."
|
||||
_ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_version="\\
|
||||
xlsclients config.status 1.0.2
|
||||
xlsclients config.status 1.1.0
|
||||
configured by $0, generated by GNU Autoconf 2.62,
|
||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||
|
||||
|
@ -22,8 +22,10 @@ dnl
|
||||
dnl Process this file with autoconf to create configure.
|
||||
|
||||
AC_PREREQ([2.57])
|
||||
AC_INIT(xlsclients, [1.0.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xlsclients)
|
||||
AM_INIT_AUTOMAKE([dist-bzip2])
|
||||
AC_INIT(xlsclients, [1.1.0],
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||
xlsclients)
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
# Require xorg-macros 1.3 or later: XORG_DEFAULT_OPTIONS
|
||||
@ -36,10 +38,17 @@ AM_CONFIG_HEADER(config.h)
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
|
||||
# Check for functional strnlen
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_FUNC_STRNLEN
|
||||
if test "x$ac_cv_func_strnlen_working" = xyes; then
|
||||
AC_DEFINE(HAVE_STRNLEN, 1, [Define to 1 if you have a working strnlen function.])
|
||||
fi
|
||||
|
||||
XORG_DEFAULT_OPTIONS
|
||||
|
||||
# Checks for pkg-config packages
|
||||
PKG_CHECK_MODULES(XLSCLIENTS, x11 xmuu)
|
||||
PKG_CHECK_MODULES(XLSCLIENTS, xcb xcb-atom)
|
||||
AC_SUBST(XLSCLIENTS_CFLAGS)
|
||||
AC_SUBST(XLSCLIENTS_LIBS)
|
||||
|
||||
|
37
app/xlsclients/strnlen.c
Normal file
37
app/xlsclients/strnlen.c
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (c) 2009 Apple Inc.
|
||||
*
|
||||
* 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
|
||||
* THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Jeremy Huddleston, Apple Inc.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <strnlen.h>
|
||||
#include <string.h>
|
||||
|
||||
size_t strnlen(const char *s, size_t maxlen) {
|
||||
const char *p = memchr(s, 0, maxlen);
|
||||
return (size_t)(p ? (p - s) : maxlen);
|
||||
}
|
@ -1,8 +1,6 @@
|
||||
/*
|
||||
* $Xorg: xlsclients.c,v 1.4 2001/02/09 02:05:54 xorgcvs Exp $
|
||||
*
|
||||
*
|
||||
Copyright 1989, 1998 The Open Group
|
||||
Copyright 2009 Open Text Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software and its
|
||||
documentation for any purpose is hereby granted without fee, provided that
|
||||
@ -25,26 +23,47 @@ used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from The Open Group.
|
||||
* *
|
||||
* Author: Jim Fulton, MIT X Consortium
|
||||
* Author: Peter Harris, Open Text Corporation
|
||||
*/
|
||||
/* $XFree86: xc/programs/xlsclients/xlsclients.c,v 1.5 2001/04/01 14:00:23 tsi Exp $ */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <X11/Xos.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xmu/WinUtil.h>
|
||||
#include <inttypes.h>
|
||||
#include <xcb/xcb.h>
|
||||
#include <xcb/xproto.h>
|
||||
#include <xcb/xcb_atom.h>
|
||||
#ifndef HAVE_STRNLEN
|
||||
#include "strnlen.h"
|
||||
#endif
|
||||
|
||||
#ifndef PRIx32
|
||||
#define PRIx32 "x"
|
||||
#endif
|
||||
#ifndef PRIu32
|
||||
#define PRIu32 "u"
|
||||
#endif
|
||||
|
||||
static char *ProgramName;
|
||||
|
||||
static void lookat ( Display *dpy, Window root, Bool verbose, int maxcmdlen );
|
||||
static void print_client_properties ( Display *dpy, Window w,
|
||||
Bool verbose, int maxcmdlen );
|
||||
static void print_text_field ( Display *dpy, char *s, XTextProperty *tp );
|
||||
static int print_quoted_word ( char *s, int maxlen );
|
||||
static void unknown ( Display *dpy, Atom actual_type, int actual_format );
|
||||
static xcb_atom_t WM_STATE;
|
||||
|
||||
static void lookat (xcb_connection_t *dpy, xcb_window_t root, int verbose, int maxcmdlen);
|
||||
static void print_client_properties (xcb_connection_t *dpy, xcb_window_t w,
|
||||
int verbose, int maxcmdlen );
|
||||
static void print_text_field (xcb_connection_t *dpy, char *s, xcb_get_property_reply_t *tp );
|
||||
static int print_quoted_word (char *s, int maxlen);
|
||||
static void unknown (xcb_connection_t *dpy, xcb_atom_t actual_type, int actual_format );
|
||||
|
||||
/* For convenience: */
|
||||
typedef int Bool;
|
||||
#define False (0)
|
||||
#define True (!False)
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
@ -54,6 +73,73 @@ usage(void)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
typedef void (*queue_func)(void *closure);
|
||||
typedef struct queue_blob {
|
||||
queue_func func;
|
||||
void *closure;
|
||||
struct queue_blob *next;
|
||||
} queue_blob;
|
||||
|
||||
static queue_blob *head = NULL;
|
||||
static queue_blob **tail = &head;
|
||||
|
||||
static void enqueue(queue_func func, void *closure)
|
||||
{
|
||||
queue_blob *blob = malloc(sizeof(*blob));
|
||||
if (!blob)
|
||||
return; /* TODO: print OOM error */
|
||||
|
||||
blob->func = func;
|
||||
blob->closure = closure;
|
||||
blob->next = NULL;
|
||||
*tail = blob;
|
||||
tail = &blob->next;
|
||||
}
|
||||
|
||||
static void run_queue(void)
|
||||
{
|
||||
while (head) {
|
||||
queue_blob *blob = head;
|
||||
blob->func(blob->closure);
|
||||
head = blob->next;
|
||||
free(blob);
|
||||
}
|
||||
tail = &head;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
xcb_connection_t *c;
|
||||
xcb_intern_atom_cookie_t cookie;
|
||||
xcb_atom_t *atom;
|
||||
} atom_state;
|
||||
|
||||
static void atom_done(void *closure)
|
||||
{
|
||||
xcb_intern_atom_reply_t *reply;
|
||||
atom_state *as = closure;
|
||||
|
||||
reply = xcb_intern_atom_reply(as->c, as->cookie, NULL);
|
||||
if (!reply)
|
||||
goto done; /* TODO: print Error message */
|
||||
|
||||
*(as->atom) = reply->atom;
|
||||
free(reply);
|
||||
|
||||
done:
|
||||
free(as);
|
||||
}
|
||||
|
||||
static void init_atoms(xcb_connection_t *c)
|
||||
{
|
||||
atom_state *as;
|
||||
|
||||
as = malloc(sizeof(*as));
|
||||
as->c = c;
|
||||
as->atom = &WM_STATE;
|
||||
as->cookie = xcb_intern_atom(c, 0, strlen("WM_STATE"), "WM_STATE");
|
||||
enqueue(atom_done, as);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
@ -61,7 +147,9 @@ main(int argc, char *argv[])
|
||||
char *displayname = NULL;
|
||||
Bool all_screens = False;
|
||||
Bool verbose = False;
|
||||
Display *dpy;
|
||||
xcb_connection_t *dpy;
|
||||
const xcb_setup_t *setup;
|
||||
int screen_number = 0;
|
||||
int maxcmdlen = 10000;
|
||||
|
||||
ProgramName = argv[0];
|
||||
@ -100,146 +188,391 @@ main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
dpy = XOpenDisplay (displayname);
|
||||
if (!dpy) {
|
||||
dpy = xcb_connect(displayname, &screen_number);
|
||||
if (xcb_connection_has_error(dpy)) {
|
||||
char *name = displayname;
|
||||
if (!name)
|
||||
name = getenv("DISPLAY");
|
||||
if (!name)
|
||||
name = "";
|
||||
fprintf (stderr, "%s: unable to open display \"%s\"\r\n",
|
||||
ProgramName, XDisplayName (displayname));
|
||||
ProgramName, name);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
init_atoms(dpy);
|
||||
|
||||
setup = xcb_get_setup(dpy);
|
||||
if (all_screens) {
|
||||
for (i = 0; i < ScreenCount(dpy); i++) {
|
||||
lookat (dpy, RootWindow(dpy,i), verbose, maxcmdlen);
|
||||
}
|
||||
xcb_screen_iterator_t screen;
|
||||
|
||||
screen = xcb_setup_roots_iterator(setup);
|
||||
do {
|
||||
lookat(dpy, screen.data->root, verbose, maxcmdlen);
|
||||
xcb_screen_next(&screen);
|
||||
} while (screen.rem);
|
||||
} else {
|
||||
lookat (dpy, DefaultRootWindow(dpy), verbose, maxcmdlen);
|
||||
xcb_screen_iterator_t screen;
|
||||
|
||||
screen = xcb_setup_roots_iterator(setup);
|
||||
for (i = 0; i < screen_number; i++)
|
||||
xcb_screen_next(&screen);
|
||||
|
||||
lookat (dpy, screen.data->root, verbose, maxcmdlen);
|
||||
}
|
||||
|
||||
XCloseDisplay (dpy);
|
||||
run_queue();
|
||||
|
||||
xcb_disconnect(dpy);
|
||||
exit (0);
|
||||
}
|
||||
|
||||
static void
|
||||
lookat(Display *dpy, Window root, Bool verbose, int maxcmdlen)
|
||||
typedef struct {
|
||||
xcb_connection_t *c;
|
||||
xcb_get_property_cookie_t *prop_cookie;
|
||||
xcb_query_tree_cookie_t *tree_cookie;
|
||||
xcb_window_t *win;
|
||||
xcb_window_t orig_win;
|
||||
int list_length;
|
||||
int verbose;
|
||||
int maxcmdlen;
|
||||
} child_wm_state;
|
||||
|
||||
static void child_info(void *closure)
|
||||
{
|
||||
Window dummy, *children = NULL, client;
|
||||
unsigned int i, nchildren = 0;
|
||||
child_wm_state *cs = closure;
|
||||
xcb_window_t orig = cs->orig_win;
|
||||
xcb_connection_t *c = cs->c;
|
||||
int verbose = cs->verbose;
|
||||
int maxcmdlen = cs->maxcmdlen;
|
||||
int i, j;
|
||||
|
||||
/*
|
||||
* clients are not allowed to stomp on the root and ICCCM doesn't yet
|
||||
* say anything about window managers putting stuff there; but, try
|
||||
* anyway.
|
||||
*/
|
||||
print_client_properties (dpy, root, verbose, maxcmdlen);
|
||||
int child_count, num_rep;
|
||||
xcb_query_tree_reply_t **reply;
|
||||
|
||||
/*
|
||||
* then, get the list of windows
|
||||
*/
|
||||
if (!XQueryTree (dpy, root, &dummy, &dummy, &children, &nchildren)) {
|
||||
return;
|
||||
for (i = 0; i < cs->list_length; i++) {
|
||||
xcb_get_property_reply_t *reply;
|
||||
reply = xcb_get_property_reply(c, cs->prop_cookie[i], NULL);
|
||||
if (reply) {
|
||||
if (reply->type) {
|
||||
/* Show information for this window */
|
||||
print_client_properties(c, cs->win[i], cs->verbose, cs->maxcmdlen);
|
||||
|
||||
free(reply);
|
||||
|
||||
/* drain stale replies */
|
||||
for (j = i+1; j < cs->list_length; j++) {
|
||||
reply = xcb_get_property_reply(c, cs->prop_cookie[j], NULL);
|
||||
if (reply)
|
||||
free(reply);
|
||||
}
|
||||
for (j = 0; j < cs->list_length; j++) {
|
||||
xcb_query_tree_reply_t *rep;
|
||||
rep = xcb_query_tree_reply(c, cs->tree_cookie[j], NULL);
|
||||
if (rep)
|
||||
free(rep);
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
free(reply);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < nchildren; i++) {
|
||||
client = XmuClientWindow (dpy, children[i]);
|
||||
if (client != None)
|
||||
print_client_properties (dpy, client, verbose, maxcmdlen);
|
||||
/* WM_STATE not found. Recurse into children: */
|
||||
num_rep = 0;
|
||||
reply = malloc(sizeof(*reply) * cs->list_length);
|
||||
if (!reply)
|
||||
goto done; /* TODO: print OOM message, drain reply queue */
|
||||
|
||||
for (i = 0; i < cs->list_length; i++) {
|
||||
reply[num_rep] = xcb_query_tree_reply(c, cs->tree_cookie[i], NULL);
|
||||
if (reply[num_rep])
|
||||
num_rep++;
|
||||
}
|
||||
|
||||
child_count = 0;
|
||||
for (i = 0; i < num_rep; i++)
|
||||
child_count += reply[i]->children_len;
|
||||
|
||||
if (!child_count) {
|
||||
/* No children have CS_STATE; try the parent window */
|
||||
print_client_properties(c, cs->orig_win, cs->verbose, cs->maxcmdlen);
|
||||
goto reply_done;
|
||||
}
|
||||
|
||||
cs = malloc(sizeof(*cs) + child_count * (sizeof(*cs->prop_cookie) + sizeof(*cs->tree_cookie) + sizeof(*cs->win)));
|
||||
if (!cs)
|
||||
goto reply_done; /* TODO: print OOM message */
|
||||
|
||||
cs->c = c;
|
||||
cs->verbose = verbose;
|
||||
cs->maxcmdlen = maxcmdlen;
|
||||
cs->orig_win = orig;
|
||||
cs->prop_cookie = (void *)&cs[1];
|
||||
cs->tree_cookie = (void *)&cs->prop_cookie[child_count];
|
||||
cs->win = (void *)&cs->tree_cookie[child_count];
|
||||
cs->list_length = child_count;
|
||||
|
||||
child_count = 0;
|
||||
for (i = 0; i < num_rep; i++) {
|
||||
xcb_window_t *child = xcb_query_tree_children(reply[i]);
|
||||
for (j = 0; j < reply[i]->children_len; j++) {
|
||||
cs->win[child_count] = child[j];
|
||||
cs->prop_cookie[child_count] = xcb_get_property(c, 0, child[j],
|
||||
WM_STATE, XCB_GET_PROPERTY_TYPE_ANY,
|
||||
0, 0);
|
||||
/* Just in case the property isn't there, get the tree too */
|
||||
cs->tree_cookie[child_count++] = xcb_query_tree(c, child[j]);
|
||||
}
|
||||
}
|
||||
|
||||
enqueue(child_info, cs);
|
||||
|
||||
reply_done:
|
||||
for (i = 0; i < num_rep; i++)
|
||||
free(reply[i]);
|
||||
free(reply);
|
||||
|
||||
done:
|
||||
free(closure);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
xcb_connection_t *c;
|
||||
xcb_query_tree_cookie_t cookie;
|
||||
int verbose;
|
||||
int maxcmdlen;
|
||||
} root_list_state;
|
||||
|
||||
static void root_list(void *closure)
|
||||
{
|
||||
int i;
|
||||
xcb_window_t *child;
|
||||
xcb_query_tree_reply_t *reply;
|
||||
root_list_state *rl = closure;
|
||||
|
||||
reply = xcb_query_tree_reply(rl->c, rl->cookie, NULL);
|
||||
if (!reply)
|
||||
goto done;
|
||||
|
||||
child = xcb_query_tree_children(reply);
|
||||
for (i = 0; i < reply->children_len; i++) {
|
||||
/* Get information about each child */
|
||||
child_wm_state *cs = malloc(sizeof(*cs) + sizeof(*cs->prop_cookie) + sizeof(*cs->tree_cookie) + sizeof(*cs->win));
|
||||
if (!cs)
|
||||
goto done; /* TODO: print OOM message */
|
||||
cs->c = rl->c;
|
||||
cs->verbose = rl->verbose;
|
||||
cs->maxcmdlen = rl->maxcmdlen;
|
||||
cs->prop_cookie = (void *)&cs[1];
|
||||
cs->tree_cookie = (void *)&cs->prop_cookie[1];
|
||||
cs->win = (void *)&cs->tree_cookie[1];
|
||||
|
||||
cs->orig_win = child[i];
|
||||
cs->win[0] = child[i];
|
||||
|
||||
cs->prop_cookie[0] = xcb_get_property(rl->c, 0, child[i],
|
||||
WM_STATE, XCB_GET_PROPERTY_TYPE_ANY,
|
||||
0, 0);
|
||||
/* Just in case the property isn't there, get the tree too */
|
||||
cs->tree_cookie[0] = xcb_query_tree(rl->c, child[i]);
|
||||
|
||||
cs->list_length = 1;
|
||||
enqueue(child_info, cs);
|
||||
}
|
||||
free(reply);
|
||||
|
||||
done:
|
||||
free(rl);
|
||||
}
|
||||
|
||||
static void
|
||||
lookat(xcb_connection_t *dpy, xcb_window_t root, int verbose, int maxcmdlen)
|
||||
{
|
||||
root_list_state *rl = malloc(sizeof(*rl));
|
||||
|
||||
if (!rl)
|
||||
return; /* TODO: OOM message */
|
||||
|
||||
/*
|
||||
* get the list of windows
|
||||
*/
|
||||
|
||||
rl->c = dpy;
|
||||
rl->cookie = xcb_query_tree(dpy, root);
|
||||
rl->verbose = verbose;
|
||||
rl->maxcmdlen = maxcmdlen;
|
||||
enqueue(root_list, rl);
|
||||
}
|
||||
|
||||
static char *Nil = "(nil)";
|
||||
|
||||
typedef struct {
|
||||
xcb_connection_t *c;
|
||||
xcb_get_property_cookie_t client_machine;
|
||||
xcb_get_property_cookie_t command;
|
||||
xcb_get_property_cookie_t name;
|
||||
xcb_get_property_cookie_t icon_name;
|
||||
xcb_get_property_cookie_t wm_class;
|
||||
xcb_window_t w;
|
||||
int verbose;
|
||||
int maxcmdlen;
|
||||
} client_state;
|
||||
|
||||
static void
|
||||
print_client_properties(Display *dpy, Window w, Bool verbose, int maxcmdlen)
|
||||
show_client_properties(void *closure)
|
||||
{
|
||||
char **cliargv = NULL;
|
||||
int i, cliargc;
|
||||
XTextProperty nametp, machtp, tp;
|
||||
int charsleft = maxcmdlen;
|
||||
client_state *cs = closure;
|
||||
xcb_get_property_reply_t *client_machine;
|
||||
xcb_get_property_reply_t *command;
|
||||
xcb_get_property_reply_t *name;
|
||||
xcb_get_property_reply_t *icon_name;
|
||||
xcb_get_property_reply_t *wm_class;
|
||||
char *argv;
|
||||
int charsleft = cs->maxcmdlen;
|
||||
int i;
|
||||
|
||||
/*
|
||||
* get the WM_MACHINE and WM_COMMAND list of strings
|
||||
*/
|
||||
if (!XGetWMClientMachine (dpy, w, &machtp)) {
|
||||
machtp.value = NULL;
|
||||
machtp.encoding = None;
|
||||
client_machine = xcb_get_property_reply(cs->c, cs->client_machine, NULL);
|
||||
command = xcb_get_property_reply(cs->c, cs->command, NULL);
|
||||
if (cs->verbose) {
|
||||
name = xcb_get_property_reply(cs->c, cs->name, NULL);
|
||||
icon_name = xcb_get_property_reply(cs->c, cs->icon_name, NULL);
|
||||
wm_class = xcb_get_property_reply(cs->c, cs->wm_class, NULL);
|
||||
}
|
||||
|
||||
if (!XGetCommand (dpy, w, &cliargv, &cliargc)) {
|
||||
if (machtp.value) XFree ((char *) machtp.value);
|
||||
return;
|
||||
}
|
||||
if (!command || !command->type)
|
||||
goto done;
|
||||
|
||||
/*
|
||||
* do header information
|
||||
*/
|
||||
if (verbose) {
|
||||
printf ("Window 0x%lx:\n", w);
|
||||
print_text_field (dpy, " Machine: ", &machtp);
|
||||
if (XGetWMName (dpy, w, &nametp)) {
|
||||
print_text_field (dpy, " Name: ", &nametp);
|
||||
if (nametp.value) XFree ((char *) nametp.value);
|
||||
}
|
||||
if (cs->verbose) {
|
||||
printf ("Window 0x%" PRIx32 ":\n", cs->w);
|
||||
print_text_field (cs->c, " Machine: ", client_machine);
|
||||
if (name && name->type)
|
||||
print_text_field (cs->c, " Name: ", name);
|
||||
} else {
|
||||
print_text_field (dpy, NULL, &machtp);
|
||||
print_text_field (cs->c, NULL, client_machine);
|
||||
putchar (' ');
|
||||
putchar (' ');
|
||||
}
|
||||
if (machtp.value) XFree ((char *) machtp.value);
|
||||
|
||||
if (verbose) {
|
||||
if (XGetWMIconName (dpy, w, &tp)) {
|
||||
print_text_field (dpy, " Icon Name: ", &tp);
|
||||
if (tp.value) XFree ((char *) tp.value);
|
||||
}
|
||||
}
|
||||
|
||||
if (cs->verbose)
|
||||
if (icon_name && icon_name->type)
|
||||
print_text_field (cs->c, " Icon Name: ", icon_name);
|
||||
|
||||
|
||||
/*
|
||||
* do the command
|
||||
*/
|
||||
if (verbose) {
|
||||
if (cs->verbose)
|
||||
printf (" Command: ");
|
||||
}
|
||||
for (i = 0; i < cliargc && charsleft > 0; ) {
|
||||
charsleft -= print_quoted_word (cliargv[i], charsleft);
|
||||
i++;
|
||||
if (i < cliargc && charsleft > 0) {
|
||||
putchar (' '); charsleft--;
|
||||
argv = xcb_get_property_value(command);
|
||||
for (i = 0; i < command->value_len && charsleft > 0; ) {
|
||||
charsleft -= print_quoted_word (argv + i, charsleft);
|
||||
i += strnlen(argv + i, command->value_len - i) + 1;
|
||||
if (i < command->value_len && charsleft > 0) {
|
||||
putchar (' ');
|
||||
charsleft--;
|
||||
}
|
||||
}
|
||||
putchar ('\n');
|
||||
XFreeStringList (cliargv);
|
||||
|
||||
|
||||
/*
|
||||
* do trailer information
|
||||
*/
|
||||
if (verbose) {
|
||||
XClassHint clh;
|
||||
if (XGetClassHint (dpy, w, &clh)) {
|
||||
printf (" Instance/Class: %s/%s",
|
||||
clh.res_name ? clh.res_name : Nil,
|
||||
clh.res_class ? clh.res_class : Nil);
|
||||
if (clh.res_name) XFree (clh.res_name);
|
||||
if (clh.res_class) XFree (clh.res_class);
|
||||
if (cs->verbose) {
|
||||
if (wm_class && wm_class->type) {
|
||||
char *res_name, *res_class;
|
||||
int name_len, class_len;
|
||||
res_name = xcb_get_property_value(wm_class);
|
||||
name_len = strnlen(res_name, wm_class->value_len) + 1;
|
||||
class_len = wm_class->value_len - name_len;
|
||||
if (class_len > 0) {
|
||||
res_class = res_name + name_len;
|
||||
} else {
|
||||
res_class = Nil;
|
||||
class_len = strlen(res_class);
|
||||
}
|
||||
|
||||
printf (" Instance/Class: %.*s/%.*s",
|
||||
name_len, res_name,
|
||||
class_len, res_class);
|
||||
putchar ('\n');
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
if (client_machine)
|
||||
free(client_machine);
|
||||
if (command)
|
||||
free(command);
|
||||
if (cs->verbose) {
|
||||
if (name)
|
||||
free(name);
|
||||
if (icon_name)
|
||||
free(icon_name);
|
||||
if (wm_class)
|
||||
free(wm_class);
|
||||
}
|
||||
free(cs);
|
||||
}
|
||||
|
||||
static void
|
||||
print_text_field(Display *dpy, char *s, XTextProperty *tp)
|
||||
print_client_properties(xcb_connection_t *dpy, xcb_window_t w, int verbose, int maxcmdlen)
|
||||
{
|
||||
if (tp->encoding == None || tp->format == 0) {
|
||||
client_state *cs = malloc(sizeof(*cs));
|
||||
if (!cs)
|
||||
return; /* TODO: print OOM message */
|
||||
|
||||
cs->c = dpy;
|
||||
cs->w = w;
|
||||
cs->verbose = verbose;
|
||||
cs->maxcmdlen = maxcmdlen;
|
||||
|
||||
/*
|
||||
* get the WM_CLIENT_MACHINE and WM_COMMAND list of strings
|
||||
*/
|
||||
cs->client_machine = xcb_get_property(dpy, 0, w,
|
||||
WM_CLIENT_MACHINE, XCB_GET_PROPERTY_TYPE_ANY,
|
||||
0, 1000000L);
|
||||
cs->command = xcb_get_property(dpy, 0, w,
|
||||
WM_COMMAND, XCB_GET_PROPERTY_TYPE_ANY,
|
||||
0, 1000000L);
|
||||
|
||||
if (verbose) {
|
||||
cs->name = xcb_get_property(dpy, 0, w,
|
||||
WM_NAME, XCB_GET_PROPERTY_TYPE_ANY,
|
||||
0, 1000000L);
|
||||
cs->icon_name = xcb_get_property(dpy, 0, w,
|
||||
WM_ICON_NAME, XCB_GET_PROPERTY_TYPE_ANY,
|
||||
0, 1000000L);
|
||||
cs->wm_class = xcb_get_property(dpy, 0, w,
|
||||
WM_CLASS, STRING,
|
||||
0, 1000000L);
|
||||
}
|
||||
|
||||
enqueue(show_client_properties, cs);
|
||||
}
|
||||
|
||||
static void
|
||||
print_text_field(xcb_connection_t *dpy, char *s, xcb_get_property_reply_t *tp)
|
||||
{
|
||||
if (tp->type == XCB_NONE || tp->format == 0) { /* Or XCB_ATOM_NONE after libxcb 1.5 */
|
||||
printf ("''");
|
||||
return;
|
||||
}
|
||||
|
||||
if (s) printf ("%s", s);
|
||||
if (tp->encoding == XA_STRING && tp->format == 8) {
|
||||
printf ("%s", tp->value ? (char *) tp->value : Nil);
|
||||
if (tp->type == STRING && tp->format == 8) {
|
||||
printf ("%.*s", (int)tp->value_len, (char *)xcb_get_property_value(tp));
|
||||
} else {
|
||||
unknown (dpy, tp->encoding, tp->format);
|
||||
unknown (dpy, tp->type, tp->format);
|
||||
}
|
||||
if (s) putchar ('\n');
|
||||
}
|
||||
@ -303,18 +636,22 @@ print_quoted_word(char *s,
|
||||
}
|
||||
|
||||
static void
|
||||
unknown(Display *dpy, Atom actual_type, int actual_format)
|
||||
unknown(xcb_connection_t *dpy, xcb_atom_t actual_type, int actual_format)
|
||||
{
|
||||
char *s;
|
||||
|
||||
printf ("<unknown type ");
|
||||
if (actual_type == None) printf ("None");
|
||||
else if ((s = XGetAtomName (dpy, actual_type)) != NULL) {
|
||||
fputs (s, stdout);
|
||||
XFree (s);
|
||||
} else {
|
||||
fputs (Nil, stdout);
|
||||
if (actual_type == XCB_NONE)
|
||||
printf ("None");
|
||||
else {
|
||||
/* This should happen so rarely as to make no odds. Eat a round-trip: */
|
||||
xcb_get_atom_name_reply_t *atom =
|
||||
xcb_get_atom_name_reply(dpy,
|
||||
xcb_get_atom_name(dpy, actual_type), NULL);
|
||||
if (atom) {
|
||||
printf("%.*s", xcb_get_atom_name_name_length(atom),
|
||||
xcb_get_atom_name_name(atom));
|
||||
free(atom);
|
||||
} else
|
||||
fputs (Nil, stdout);
|
||||
}
|
||||
printf (" (%ld) or format %d>", actual_type, actual_format);
|
||||
printf (" (%" PRIu32 ") or format %d>", actual_type, actual_format);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user