Update to xrdb 1.2.1

This commit is contained in:
matthieu
2021-08-09 17:45:56 +00:00
parent 7bbf316cd4
commit 8be21fc52c
9 changed files with 139 additions and 33 deletions

View File

@@ -1,3 +1,65 @@
commit 9c3a19e3f13252c6ac5b02ce703531b2bf9f7463
Author: Matthieu Herrb <matthieu.herrb@laas.fr>
Date: Mon Aug 9 19:31:28 2021 +0200
xrdb 1.2.1
Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr>
commit 4d3c11bee8c81abbc033a4731648a88db14508e1
Author: Walter Harms <wharms@bfs.de>
Date: Sat Jun 26 23:11:25 2021 +0200
fix assignment discards const qualifier
xrdb.c: In function main:
xrdb.c:1071:52: warning: assignment discards const qualifier from pointer target type [-Wdiscarded-qualifiers]
cmd_defines[num_cmd_defines++] = "-undef";
Signed-off-by: Walter Harms <wharms@bfs.de>
commit 7d69c7f52b83a9b732325a16603b22e6c2f15d93
Author: Walter Harms <wharms@bfs.de>
Date: Sat Jun 26 23:06:23 2021 +0200
XFree() can handle NULL arg
Signed-off-by: Walter Harms <wharms@bfs.de>
commit 2c57bc85c4cea7a159985a446e1f5f61a4c0f139
Author: Walter Harms <wharms@bfs.de>
Date: Sat Jun 26 22:55:46 2021 +0200
Add actual querying capabilities
The world is littered with broken grep commands because `xrdb -query`
can only dump the database and doesn't implement this simple search
feature. This patch adds a new `-get` option to search and print the
content of a single property by name.
Signed-off-by: Michele Guerini Rocco <rnhm...@inventati.org>
Reviewed-by: Walter Harms <wharms@bfs.de>
Signed-off-by: Walter Harms <wharms@bfs.de>
commit 9c51a2829f65ea03ef87376ca9561037d9262f6d
Author: Tobias Stoeckmann <tobias@stoeckmann.org>
Date: Sun Jun 7 19:56:43 2020 +0200
Fix out of boundary read.
If a binary file which starts with 0x00 is edited, xrdb performs
an off-by-one read outside of its buffer.
The fix is simple: Do not try to append an empty string to buffer,
which would be a no-op anyway.
Proof of Concept (compile with -fsanitize=address):
$ dd if=/dev/zero bs=1 count=1 of=poc.txt
$ xrdb -edit poc.txt
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
commit c281cadb06657c2a15a52598be6cf9c30fad1b12
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Tue Feb 19 15:43:17 2019 -0800

View File

@@ -300,6 +300,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

16
app/xrdb/aclocal.m4 vendored
View File

@@ -19,9 +19,9 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
dnl serial 11 (pkg-config-0.29.1)
dnl
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
# serial 12 (pkg-config-0.29.2)
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
dnl
@@ -62,7 +62,7 @@ dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
[m4_define([PKG_MACROS_VERSION], [0.29.1])
[m4_define([PKG_MACROS_VERSION], [0.29.2])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
@@ -163,7 +163,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
AC_MSG_CHECKING([for $1])
AC_MSG_CHECKING([for $2])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
@@ -173,11 +173,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
AC_MSG_RESULT([no])
AC_MSG_RESULT([no])
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
else
else
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
@@ -194,7 +194,7 @@ installed software in a non-standard prefix.
_PKG_TEXT])[]dnl
])
elif test $pkg_failed = untried; then
AC_MSG_RESULT([no])
AC_MSG_RESULT([no])
m4_default([$4], [AC_MSG_FAILURE(
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full

View File

@@ -1,9 +1,9 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
# 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/>.
# along with this program. If not, see <https://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
@@ -255,7 +255,8 @@ EOF
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
@@ -339,9 +340,9 @@ exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

42
app/xrdb/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 xrdb 1.2.0.
# Generated by GNU Autoconf 2.69 for xrdb 1.2.1.
#
# Report bugs to <https://gitlab.freedesktop.org/xorg/app/xrdb/issues>.
#
@@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='xrdb'
PACKAGE_TARNAME='xrdb'
PACKAGE_VERSION='1.2.0'
PACKAGE_STRING='xrdb 1.2.0'
PACKAGE_VERSION='1.2.1'
PACKAGE_STRING='xrdb 1.2.1'
PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/app/xrdb/issues'
PACKAGE_URL=''
@@ -730,6 +730,7 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -811,6 +812,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1063,6 +1065,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1200,7 +1211,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1313,7 +1324,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 xrdb 1.2.0 to adapt to many kinds of systems.
\`configure' configures xrdb 1.2.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1353,6 +1364,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1383,7 +1395,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of xrdb 1.2.0:";;
short | recursive ) echo "Configuration of xrdb 1.2.1:";;
esac
cat <<\_ACEOF
@@ -1496,7 +1508,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
xrdb configure 1.2.0
xrdb configure 1.2.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1911,7 +1923,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 xrdb $as_me 1.2.0, which was
It was created by xrdb $as_me 1.2.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4051,7 +4063,7 @@ fi
# Define the identity of the package.
PACKAGE='xrdb'
VERSION='1.2.0'
VERSION='1.2.1'
cat >>confdefs.h <<_ACEOF
@@ -10783,8 +10795,8 @@ _ACEOF
# Checks for pkg-config packages
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XRDB" >&5
$as_echo_n "checking for XRDB... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmuu x11 xproto >= 7.0.25" >&5
$as_echo_n "checking for xmuu x11 xproto >= 7.0.25... " >&6; }
if test -n "$XRDB_CFLAGS"; then
pkg_cv_XRDB_CFLAGS="$XRDB_CFLAGS"
@@ -10824,7 +10836,7 @@ fi
if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -10851,7 +10863,7 @@ Alternatively, you may set the environment variables XRDB_CFLAGS
and XRDB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -11413,7 +11425,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 xrdb $as_me 1.2.0, which was
This file was extended by xrdb $as_me 1.2.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -11479,7 +11491,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="\\
xrdb config.status 1.2.0
xrdb config.status 1.2.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@@ -22,7 +22,7 @@ dnl Process this file with autoconf to create configure.
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xrdb], [1.2.0],
AC_INIT([xrdb], [1.2.1],
[https://gitlab.freedesktop.org/xorg/app/xrdb/issues], [xrdb])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])

View File

@@ -223,6 +223,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@@ -251,6 +251,10 @@ option. The
option can be used to merge the contents of properties back into the input
resource file without damaging preprocessor commands.
.TP 8
.B \-get \fIname\fP
This option indicates that the current content of the property matching
\fIname\fP should be printed onto the standard output.
.TP 8
.B \-load
This option indicates that the input should be loaded as the new value
of the specified properties, replacing whatever was there (i.e.

View File

@@ -48,6 +48,7 @@
#include <X11/Xatom.h>
#include <X11/Xos.h>
#include <X11/Xmu/SysUtil.h>
#include <X11/Xresource.h>
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
@@ -84,6 +85,7 @@
#define OPLOAD 4
#define OPMERGE 5
#define OPOVERRIDE 6
#define OPGET 7
#define BACKUP_SUFFIX ".bak" /* for editing */
@@ -126,6 +128,7 @@ static char *editFile = NULL;
static const char *cpp_program = NULL;
static const char * const cpp_locations[] = { CPP };
static const char *backup_suffix = BACKUP_SUFFIX;
static const char *resource_name = NULL;
static Bool dont_execute = False;
static Bool show_cpp = False;
static String defines;
@@ -745,6 +748,8 @@ EditFile(Entries *new, FILE *in, FILE *out)
buff[0] = '\0';
if (!fgets(buff, BUFSIZ, in))
goto cleanup;
if (buff[0] == '\0')
continue;
AppendToBuffer(&b, buff, strlen(buff));
c = &b.buff[b.used - 1];
if ((*(c--) == '\n') && (b.used == 1 || *c != '\\'))
@@ -784,6 +789,7 @@ Syntax(const char *errmsg)
" -nocpp do not use a preprocessor\n"
" -E show preprocessor command & processed input file\n"
" -query query resources\n"
" -get name get the content of a resource\n"
" -load load resources from file [default]\n"
" -override add in resources from file\n"
" -merge merge resources from file & sort\n"
@@ -982,6 +988,13 @@ main(int argc, char *argv[])
oper = OPQUERY;
continue;
}
else if (isabbreviation("-get", arg, 2)) {
oper = OPGET;
if (++i >= argc)
Syntax("-get requires an argument");
resource_name = argv[i];
continue;
}
else if (isabbreviation("-load", arg, 2)) {
oper = OPLOAD;
continue;
@@ -1055,7 +1068,7 @@ main(int argc, char *argv[])
}
else if (!strcmp("-undef", arg)) {
if (num_cmd_defines < MAX_CMD_DEFINES) {
cmd_defines[num_cmd_defines++] = "-undef";
cmd_defines[num_cmd_defines++] = (char *) "-undef";
}
else {
fatal("%s: Too many cpp arguments\n", ProgramName);
@@ -1282,7 +1295,19 @@ Process(int scrno, Bool doScreen, Bool execute)
}
else if (oper == OPQUERY) {
if (xdefs)
printf("%s", xdefs); /* fputs broken in SunOS 4.0 */
fputs(xdefs, stdout);
}
else if (oper == OPGET) {
if (xdefs && resource_name != NULL) {
char *type = NULL;
XrmValue value;
XrmDatabase xrdb = XrmGetStringDatabase(xdefs);
Bool found = XrmGetResource(xrdb, resource_name,
resource_name, &type, &value);
if (found == True && value.addr != NULL)
printf("%s\n", value.addr);
XrmDestroyDatabase(xrdb);
}
}
else if (oper == OPREMOVE) {
if (xdefs)
@@ -1454,7 +1479,7 @@ Process(int scrno, Bool doScreen, Bool execute)
}
if (execute)
FreeEntries(&newDB);
if (doScreen && xdefs)
if (doScreen)
XFree(xdefs);
}