summaryrefslogtreecommitdiff
path: root/app/xsetroot
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2018-05-21 18:29:46 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2018-05-21 18:29:46 +0000
commit9bb7198e6ef96a6cef3efb5ed075557fbc3987e7 (patch)
treebbec92a0c24cb2560afc9b44092ca4da6ad346df /app/xsetroot
parentce383627119579f4b9c3cbb7603f236c7931dee0 (diff)
Update to xsetroot 1.1.2
Diffstat (limited to 'app/xsetroot')
-rw-r--r--app/xsetroot/ChangeLog108
-rw-r--r--app/xsetroot/Makefile.in4
-rw-r--r--app/xsetroot/aclocal.m464
-rw-r--r--app/xsetroot/compile347
-rw-r--r--app/xsetroot/configure104
-rw-r--r--app/xsetroot/configure.ac4
-rw-r--r--app/xsetroot/man/xsetroot.man44
-rw-r--r--app/xsetroot/xsetroot.c89
8 files changed, 647 insertions, 117 deletions
diff --git a/app/xsetroot/ChangeLog b/app/xsetroot/ChangeLog
index abb9cecbb..470b07405 100644
--- a/app/xsetroot/ChangeLog
+++ b/app/xsetroot/ChangeLog
@@ -1,3 +1,111 @@
+commit 04dbb108170ada979cce80e92053236c4b702e94
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Mar 9 20:20:44 2018 -0800
+
+ xsetroot 1.1.2
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 8c926a2a2d3f1ed06e24259657e27800f2e0ff8c
+Author: Mihail Konev <k.mvc@ya.ru>
+Date: Thu Jan 26 14:00:21 2017 +1000
+
+ autogen: add default patch prefix
+
+ Signed-off-by: Mihail Konev <k.mvc@ya.ru>
+
+commit c91cec09e0da17ccb7d1a7d2a120f9969e516622
+Author: Emil Velikov <emil.l.velikov@gmail.com>
+Date: Mon Mar 9 12:00:52 2015 +0000
+
+ autogen.sh: use quoted string variables
+
+ Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
+ fall-outs, when they contain space.
+
+ Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit beb935ffaa34fcc7e72ee53d471473533647e9fb
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue Jan 24 10:32:07 2017 +1000
+
+ autogen.sh: use exec instead of waiting for configure to finish
+
+ Syncs the invocation of configure with the one from the server.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
+
+commit ff223d5595c292f0ccee9f4690f11b29157ef3ab
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed Dec 31 11:35:47 2014 -0800
+
+ Only use results from GetWindowProperty if it returned success
+
+ Since Xlib prior to 1.6 didn't always clear values on failure, don't
+ assume they're safe to use unless we succeeded.
+
+ Reported by Oracle Parfait 1.5.1:
+ Error: Uninitialised memory (CWE 456)
+ Possible access to uninitialised memory '&after'
+ at line 328 of xsetroot.c in function 'FixupState'.
+ &after allocated at line 317.
+ Possible access to uninitialised memory '&data'
+ at line 330 of xsetroot.c in function 'FixupState'.
+ &data allocated at line 318.
+ Possible access to uninitialised memory '&format'
+ at line 328 of xsetroot.c in function 'FixupState'.
+ &format allocated at line 316.
+ Possible access to uninitialised memory '&length'
+ at line 328 of xsetroot.c in function 'FixupState'.
+ &length allocated at line 317.
+ Possible access to uninitialised memory '&type'
+ at line 328 of xsetroot.c in function 'FixupState'.
+ &type allocated at line 315.
+ at line 331 of xsetroot.c in function 'FixupState'.
+ &type allocated at line 315.
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+
+commit cd298a5f8e345791c1889bdd781fddc01c94fc1d
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Jun 3 23:22:14 2014 -0700
+
+ Print which option was in error along with usage message
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit e7d7181b7e7eafc3019f4eb806a0aeb8e38806fa
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Jun 3 23:04:08 2014 -0700
+
+ autogen.sh: Honor NOCONFIGURE=1
+
+ See http://people.gnome.org/~walters/docs/build-api.txt
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit ed899cfe8675cca8875156ce35b9d2b4553f9cca
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Jun 3 23:04:08 2014 -0700
+
+ configure: Drop AM_MAINTAINER_MODE
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 6ce1479493af8ade3ce7e41276e0e64c878461e2
+Author: Stéphane Aulery <lkppo@free.fr>
+Date: Sun Jul 7 23:23:52 2013 +0200
+
+ Improve manpage and -help option.
+
+ Signed-off-by: Stéphane Aulery <lkppo@free.fr>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
commit a33c612c5ff84ba2d6004d99e96ec6919bb8e859
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Tue Jan 22 23:02:52 2013 -0800
diff --git a/app/xsetroot/Makefile.in b/app/xsetroot/Makefile.in
index bc596f1a6..1fdfcb6c3 100644
--- a/app/xsetroot/Makefile.in
+++ b/app/xsetroot/Makefile.in
@@ -75,8 +75,8 @@ bin_PROGRAMS = xsetroot$(EXEEXT)
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(top_srcdir)/configure COPYING ChangeLog INSTALL config.guess \
- config.sub depcomp install-sh missing
+ $(top_srcdir)/configure COPYING ChangeLog INSTALL compile \
+ config.guess config.sub depcomp install-sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
diff --git a/app/xsetroot/aclocal.m4 b/app/xsetroot/aclocal.m4
index c0dbcfb1f..8bef9a948 100644
--- a/app/xsetroot/aclocal.m4
+++ b/app/xsetroot/aclocal.m4
@@ -1242,7 +1242,7 @@ AC_SUBST([am__untar])
dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure.
dnl
-dnl Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+dnl Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
dnl
dnl Permission is hereby granted, free of charge, to any person obtaining a
dnl copy of this software and associated documentation files (the "Software"),
@@ -1279,7 +1279,7 @@ dnl DEALINGS IN THE SOFTWARE.
# See the "minimum version" comment for each macro you use to see what
# version you require.
m4_defun([XORG_MACROS_VERSION],[
-m4_define([vers_have], [1.19.0])
+m4_define([vers_have], [1.19.2])
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
m4_if(m4_cmp(maj_have, maj_needed), 0,,
@@ -1357,6 +1357,17 @@ AC_DEFUN([XORG_MANPAGE_SECTIONS],[
AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_SED])
+case $host_os in
+ solaris*)
+ # Solaris 2.0 - 11.3 use SysV man page section numbers, so we
+ # check for a man page file found in later versions that use
+ # traditional section numbers instead
+ AC_CHECK_FILE([/usr/share/man/man7/attributes.7],
+ [SYSV_MAN_SECTIONS=false], [SYSV_MAN_SECTIONS=true])
+ ;;
+ *) SYSV_MAN_SECTIONS=false ;;
+esac
+
if test x$APP_MAN_SUFFIX = x ; then
APP_MAN_SUFFIX=1
fi
@@ -1372,9 +1383,9 @@ if test x$LIB_MAN_DIR = x ; then
fi
if test x$FILE_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) FILE_MAN_SUFFIX=4 ;;
- *) FILE_MAN_SUFFIX=5 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) FILE_MAN_SUFFIX=4 ;;
+ *) FILE_MAN_SUFFIX=5 ;;
esac
fi
if test x$FILE_MAN_DIR = x ; then
@@ -1382,9 +1393,9 @@ if test x$FILE_MAN_DIR = x ; then
fi
if test x$MISC_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) MISC_MAN_SUFFIX=5 ;;
- *) MISC_MAN_SUFFIX=7 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) MISC_MAN_SUFFIX=5 ;;
+ *) MISC_MAN_SUFFIX=7 ;;
esac
fi
if test x$MISC_MAN_DIR = x ; then
@@ -1392,9 +1403,9 @@ if test x$MISC_MAN_DIR = x ; then
fi
if test x$DRIVER_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) DRIVER_MAN_SUFFIX=7 ;;
- *) DRIVER_MAN_SUFFIX=4 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) DRIVER_MAN_SUFFIX=7 ;;
+ *) DRIVER_MAN_SUFFIX=4 ;;
esac
fi
if test x$DRIVER_MAN_DIR = x ; then
@@ -1402,9 +1413,9 @@ if test x$DRIVER_MAN_DIR = x ; then
fi
if test x$ADMIN_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) ADMIN_MAN_SUFFIX=1m ;;
- *) ADMIN_MAN_SUFFIX=8 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) ADMIN_MAN_SUFFIX=1m ;;
+ *) ADMIN_MAN_SUFFIX=8 ;;
esac
fi
if test x$ADMIN_MAN_DIR = x ; then
@@ -1665,13 +1676,24 @@ m4_ifval([$1],
fi])
# Test for the ability of xmlto to generate a text target
+#
+# NOTE: xmlto 0.0.27 or higher return a non-zero return code in the
+# following test for empty XML docbook files.
+# For compatibility reasons use the following empty XML docbook file and if
+# it fails try it again with a non-empty XML file.
have_xmlto_text=no
cat > conftest.xml << "EOF"
EOF
AS_IF([test "$have_xmlto" = yes],
[AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
[have_xmlto_text=yes],
- [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])
+ [# Try it again with a non-empty XML file.
+ cat > conftest.xml << "EOF"
+<x></x>
+EOF
+ AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
+ [have_xmlto_text=yes],
+ [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])])
rm -f conftest.xml
AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes])
AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
@@ -3067,8 +3089,9 @@ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
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)"
+|| (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
+touch \$(top_srcdir)/INSTALL; \
+echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
AC_SUBST([INSTALL_CMD])
]) # XORG_INSTALL
dnl Copyright 2005 Red Hat, Inc
@@ -3129,10 +3152,11 @@ AC_DEFUN([XORG_RELEASE_VERSION],[
#
#
AC_DEFUN([XORG_CHANGELOG], [
-CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
+CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
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)"
+|| (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
+touch \$(top_srcdir)/ChangeLog; \
+echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
AC_SUBST([CHANGELOG_CMD])
]) # XORG_CHANGELOG
diff --git a/app/xsetroot/compile b/app/xsetroot/compile
new file mode 100644
index 000000000..a85b723c7
--- /dev/null
+++ b/app/xsetroot/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/app/xsetroot/configure b/app/xsetroot/configure
index 95757c777..a00dd04cb 100644
--- a/app/xsetroot/configure
+++ b/app/xsetroot/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xsetroot 1.1.1.
+# Generated by GNU Autoconf 2.69 for xsetroot 1.1.2.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='xsetroot'
PACKAGE_TARNAME='xsetroot'
-PACKAGE_VERSION='1.1.1'
-PACKAGE_STRING='xsetroot 1.1.1'
+PACKAGE_VERSION='1.1.2'
+PACKAGE_STRING='xsetroot 1.1.2'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL=''
@@ -1318,7 +1318,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 xsetroot 1.1.1 to adapt to many kinds of systems.
+\`configure' configures xsetroot 1.1.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1388,7 +1388,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xsetroot 1.1.1:";;
+ short | recursive ) echo "Configuration of xsetroot 1.1.2:";;
esac
cat <<\_ACEOF
@@ -1505,7 +1505,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xsetroot configure 1.1.1
+xsetroot configure 1.1.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1762,7 +1762,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 xsetroot $as_me 1.1.1, which was
+It was created by xsetroot $as_me 1.1.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2591,7 +2591,7 @@ fi
# Define the identity of the package.
PACKAGE='xsetroot'
- VERSION='1.1.1'
+ VERSION='1.1.2'
cat >>confdefs.h <<_ACEOF
@@ -10258,10 +10258,11 @@ _ACEOF
-CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
+CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
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)"
+|| (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
+touch \$(top_srcdir)/ChangeLog; \
+echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
@@ -10269,14 +10270,45 @@ echo 'git directory not found: installing possibly empty changelog.' >&2)"
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)"
+|| (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
+touch \$(top_srcdir)/INSTALL; \
+echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
+case $host_os in
+ solaris*)
+ # Solaris 2.0 - 11.3 use SysV man page section numbers, so we
+ # check for a man page file found in later versions that use
+ # traditional section numbers instead
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/share/man/man7/attributes.7" >&5
+$as_echo_n "checking for /usr/share/man/man7/attributes.7... " >&6; }
+if ${ac_cv_file__usr_share_man_man7_attributes_7+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/usr/share/man/man7/attributes.7"; then
+ ac_cv_file__usr_share_man_man7_attributes_7=yes
+else
+ ac_cv_file__usr_share_man_man7_attributes_7=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_share_man_man7_attributes_7" >&5
+$as_echo "$ac_cv_file__usr_share_man_man7_attributes_7" >&6; }
+if test "x$ac_cv_file__usr_share_man_man7_attributes_7" = xyes; then :
+ SYSV_MAN_SECTIONS=false
+else
+ SYSV_MAN_SECTIONS=true
+fi
+
+ ;;
+ *) SYSV_MAN_SECTIONS=false ;;
+esac
+
if test x$APP_MAN_SUFFIX = x ; then
APP_MAN_SUFFIX=1
fi
@@ -10292,9 +10324,9 @@ if test x$LIB_MAN_DIR = x ; then
fi
if test x$FILE_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) FILE_MAN_SUFFIX=4 ;;
- *) FILE_MAN_SUFFIX=5 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) FILE_MAN_SUFFIX=4 ;;
+ *) FILE_MAN_SUFFIX=5 ;;
esac
fi
if test x$FILE_MAN_DIR = x ; then
@@ -10302,9 +10334,9 @@ if test x$FILE_MAN_DIR = x ; then
fi
if test x$MISC_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) MISC_MAN_SUFFIX=5 ;;
- *) MISC_MAN_SUFFIX=7 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) MISC_MAN_SUFFIX=5 ;;
+ *) MISC_MAN_SUFFIX=7 ;;
esac
fi
if test x$MISC_MAN_DIR = x ; then
@@ -10312,9 +10344,9 @@ if test x$MISC_MAN_DIR = x ; then
fi
if test x$DRIVER_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) DRIVER_MAN_SUFFIX=7 ;;
- *) DRIVER_MAN_SUFFIX=4 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) DRIVER_MAN_SUFFIX=7 ;;
+ *) DRIVER_MAN_SUFFIX=4 ;;
esac
fi
if test x$DRIVER_MAN_DIR = x ; then
@@ -10322,9 +10354,9 @@ if test x$DRIVER_MAN_DIR = x ; then
fi
if test x$ADMIN_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) ADMIN_MAN_SUFFIX=1m ;;
- *) ADMIN_MAN_SUFFIX=8 ;;
+ case $SYSV_MAN_SECTIONS in
+ true) ADMIN_MAN_SUFFIX=1m ;;
+ *) ADMIN_MAN_SUFFIX=8 ;;
esac
fi
if test x$ADMIN_MAN_DIR = x ; then
@@ -10414,12 +10446,12 @@ if test -n "$XSETROOT_CFLAGS"; then
pkg_cv_XSETROOT_CFLAGS="$XSETROOT_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xmuu x11 xbitmaps xcursor xproto >= 7.0.17\""; } >&5
- ($PKG_CONFIG --exists --print-errors "xmuu x11 xbitmaps xcursor xproto >= 7.0.17") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xmuu x11 xbitmaps xcursor xproto >= 7.0.25\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "xmuu x11 xbitmaps xcursor xproto >= 7.0.25") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_XSETROOT_CFLAGS=`$PKG_CONFIG --cflags "xmuu x11 xbitmaps xcursor xproto >= 7.0.17" 2>/dev/null`
+ pkg_cv_XSETROOT_CFLAGS=`$PKG_CONFIG --cflags "xmuu x11 xbitmaps xcursor xproto >= 7.0.25" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -10431,12 +10463,12 @@ if test -n "$XSETROOT_LIBS"; then
pkg_cv_XSETROOT_LIBS="$XSETROOT_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xmuu x11 xbitmaps xcursor xproto >= 7.0.17\""; } >&5
- ($PKG_CONFIG --exists --print-errors "xmuu x11 xbitmaps xcursor xproto >= 7.0.17") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xmuu x11 xbitmaps xcursor xproto >= 7.0.25\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "xmuu x11 xbitmaps xcursor xproto >= 7.0.25") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_XSETROOT_LIBS=`$PKG_CONFIG --libs "xmuu x11 xbitmaps xcursor xproto >= 7.0.17" 2>/dev/null`
+ pkg_cv_XSETROOT_LIBS=`$PKG_CONFIG --libs "xmuu x11 xbitmaps xcursor xproto >= 7.0.25" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -10457,14 +10489,14 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- XSETROOT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xmuu x11 xbitmaps xcursor xproto >= 7.0.17" 2>&1`
+ XSETROOT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xmuu x11 xbitmaps xcursor xproto >= 7.0.25" 2>&1`
else
- XSETROOT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xmuu x11 xbitmaps xcursor xproto >= 7.0.17" 2>&1`
+ XSETROOT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xmuu x11 xbitmaps xcursor xproto >= 7.0.25" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$XSETROOT_PKG_ERRORS" >&5
- as_fn_error $? "Package requirements (xmuu x11 xbitmaps xcursor xproto >= 7.0.17) were not met:
+ as_fn_error $? "Package requirements (xmuu x11 xbitmaps xcursor xproto >= 7.0.25) were not met:
$XSETROOT_PKG_ERRORS
@@ -11143,7 +11175,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 xsetroot $as_me 1.1.1, which was
+This file was extended by xsetroot $as_me 1.1.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -11209,7 +11241,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="\\
-xsetroot config.status 1.1.1
+xsetroot config.status 1.1.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/app/xsetroot/configure.ac b/app/xsetroot/configure.ac
index d7bfd46dd..91657672c 100644
--- a/app/xsetroot/configure.ac
+++ b/app/xsetroot/configure.ac
@@ -23,7 +23,7 @@ dnl Process this file with autoconf to create configure.
# Initialize Autoconf
AC_PREREQ([2.60])
-AC_INIT([xsetroot], [1.1.1],
+AC_INIT([xsetroot], [1.1.2],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xsetroot])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
@@ -39,7 +39,7 @@ XORG_MACROS_VERSION(1.8)
XORG_DEFAULT_OPTIONS
# Checks for pkg-config packages
-PKG_CHECK_MODULES(XSETROOT, [xmuu x11 xbitmaps xcursor xproto >= 7.0.17])
+PKG_CHECK_MODULES(XSETROOT, [xmuu x11 xbitmaps xcursor xproto >= 7.0.25])
XORG_WITH_LINT
diff --git a/app/xsetroot/man/xsetroot.man b/app/xsetroot/man/xsetroot.man
index b58b39dd6..dda6a9c98 100644
--- a/app/xsetroot/man/xsetroot.man
+++ b/app/xsetroot/man/xsetroot.man
@@ -27,13 +27,23 @@
xsetroot \- root window parameter setting utility for X
.SH SYNOPSIS
.B xsetroot
-[-help] [-version] [-def] [-display \fIdisplay\fP]
+[-help]
+[-version]
+[-def]
+[-display \fIdisplay\fP]
[-cursor \fIcursorfile maskfile\fP]
-[-cursor_name \fIcursorname\fP]
+[-cursor_name \fIcursorfontname\fP]
[-xcf \fIcursorfile\fP \fIcursorsize\fP]
-[-bitmap \fIfilename\fP]
-[-mod \fIx y\fP] [-gray] [-grey] [-fg \fIcolor\fP] [-bg \fIcolor\fP] [-rv]
-[-solid \fIcolor\fP] [-name \fIstring\fP]
+[-bitmap \fIfilename\fP
+| -mod \fIx y\fP
+| -gray
+| -grey
+| -solid \fIcolor\fP]
+[-bg \fIcolor\fP]
+[-fg \fIcolor\fP]
+[-rv]
+[-name \fIstring\fP]
+[-d \fIdisplay\fP]
.SH DESCRIPTION
The
.I xsetroot
@@ -56,11 +66,11 @@ Only one of the background color/tiling changing options
.SH OPTIONS
.PP
The various options are as follows:
-.IP \fB-help\fP
+.IP "\fB-help\fP"
Print a usage message and exit.
-.IP \fB-verson\fP
+.IP "\fB-version\fP"
Print a version message and exit.
-.IP \fB-def\fP
+.IP "\fB-def, -default\fP"
Reset unspecified attributes to the default values. (Restores the background
to the familiar gray mesh and the cursor to the hollow x shape.)
.IP "\fB-cursor\fP \fIcursorfile\fP \fImaskfile\fP"
@@ -70,7 +80,7 @@ Cursor and mask files are bitmaps (little pictures), and can be made with the
.I bitmap(__appmansuffix__)
program. You probably want the mask file to be all black until you
get used to the way masks work.
-.IP "\fB-cursor_name\fP \fIcursorname\fP
+.IP "\fB-cursor_name\fP \fIcursorfontname\fP"
This lets you change the pointer cursor to one of the standard
cursors from the cursor font. Refer to appendix B of the X protocol for
the names (except that the XC_ prefix is elided for this option).
@@ -87,16 +97,14 @@ the bitmap.
This is used if you want a plaid-like grid pattern on your screen.
x and y are integers ranging from 1 to 16. Try the different combinations.
Zero and negative numbers are taken as 1.
-.IP \fB-gray\fP
-Make the entire background gray. (Easier on the eyes.)
-.IP \fB-grey\fP
-Make the entire background grey.
-.IP "\fB-fg\fP \fIcolor\fP"
+.IP "\fB-gray, -grey\fP"
+Make the entire background gray (Easier on the eyes).
+.IP "\fB-bg, -background\fP \fIcolor\fP"
+Use ``color'' as the background color.
+.IP "\fB-fg, -foreground\fP \fIcolor\fP"
Use ``color'' as the foreground color. Foreground and background colors
are meaningful only in combination with -cursor, -bitmap, or -mod.
-.IP "\fB-bg\fP \fIcolor\fP"
-Use ``color'' as the background color.
-.IP \fB-rv\fP
+.IP "\fB-rv, -reverse\fP"
This exchanges the foreground and background colors. Normally the foreground
color is black and the background color is white.
.IP "\fB-solid\fP \fIcolor\fP"
@@ -107,7 +115,7 @@ Set the name of the root window to ``string''. There is no default value.
Usually a name is assigned to a window so that the
window manager can use a text representation when the window is iconified.
This option is unused since you can't iconify the background.
-.IP "\fB-display\fP \fIdisplay\fP"
+.IP "\fB-d, -display\fP \fIdisplay\fP"
Specifies the server to connect to; see \fIX(__miscmansuffix__)\fP.
.SH "SEE ALSO"
X(__miscmansuffix__), xset(__appmansuffix__), xrdb(__appmansuffix__), Xcursor(__libmansuffix__)
diff --git a/app/xsetroot/xsetroot.c b/app/xsetroot/xsetroot.c
index 3bf27d809..5f142e172 100644
--- a/app/xsetroot/xsetroot.c
+++ b/app/xsetroot/xsetroot.c
@@ -59,7 +59,6 @@ static int save_colors = 0;
static int unsave_past = 0;
static Pixmap save_pixmap = (Pixmap)None;
-static void usage(void) _X_NORETURN;
static void FixupState(void);
static void SetBackgroundToBitmap(Pixmap bitmap,
unsigned int width, unsigned int height);
@@ -70,26 +69,29 @@ static XColor NameToXColor(char *name, unsigned long pixel);
static unsigned long NameToPixel(char *name, unsigned long pixel);
static Pixmap ReadBitmapFile(char *filename, unsigned int *width, unsigned int *height, int *x_hot, int *y_hot);
-static void
-usage(void)
+static void _X_NORETURN _X_COLD
+usage(const char *errmsg)
{
- fprintf(stderr, "usage: %s [options]\n%s\n", program_name,
+ if (errmsg != NULL)
+ fprintf (stderr, "%s: %s\n\n", program_name, errmsg);
+
+ fprintf(stderr, "Usage: %s [options]\n%s\n", program_name,
" where options are:\n"
- " -display <display> or -d <display>\n"
- " -fg <color> or -foreground <color>\n"
- " -bg <color> or -background <color>\n"
- " -rv or -reverse\n"
- " -def or -default\n"
- " -name <string>\n"
- " -cursor <cursor file> <mask file>\n"
- " -cursor_name <cursor-font name>\n"
- " -xcf <ARGB cursor file> <cursor size>\n"
- " -solid <color>\n"
- " -gray or -grey\n"
- " -bitmap <filename>\n"
- " -mod <x> <y>\n"
- " -help\n"
- " -version\n"
+ " -help Print this help\n"
+ " -version Print a version message\n"
+ " -def, -default Reset unspecified attributes\n"
+ " -cursor <cursorfile> <maskfile> Pointer cursor used when outside of any windows\n"
+ " -cursor_name <cursorfontname> Use a pointer cursor from the cursor font\n"
+ " -xcf <cursorfile> <cursorsize> Load a pointer cursor from an Xcursor file\n"
+ " -bitmap <filename> Use the bitmap specified in the file\n"
+ " -mod <x> <y> Use a plaid-like grid pattern on screen\n"
+ " -gray, -grey Make the entire background grey\n"
+ " -bg, -background <color> Set background color\n"
+ " -fg, -foreground <color> Set foreground color\n"
+ " -rv, -reverse Swap foreground and background colors\n"
+ " -solid <color> Set the background of the root window\n"
+ " -name <string> Set the name of the root window\n"
+ " -d, -display <display> Specifies the server to connect to\n"
);
exit(1);
/*NOTREACHED*/
@@ -123,12 +125,12 @@ main(int argc, char *argv[])
for (i = 1; i < argc; i++) {
if (!strcmp ("-display", argv[i]) || !strcmp ("-d", argv[i])) {
- if (++i>=argc) usage ();
+ if (++i>=argc) usage ("-display requires an argument");
display_name = argv[i];
continue;
}
if (!strcmp("-help", argv[i])) {
- usage();
+ usage(NULL);
}
if (!strcmp("-version", argv[i])) {
printf("%s\n", PACKAGE_STRING);
@@ -139,29 +141,33 @@ main(int argc, char *argv[])
continue;
}
if (!strcmp("-name", argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc) usage("-name requires an argument");
name = argv[i];
nonexcl++;
continue;
}
if (!strcmp("-cursor", argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc)
+ usage("missing cursorfile & maskfile arguments for -cursor");
cursor_file = argv[i];
- if (++i>=argc) usage();
+ if (++i>=argc)
+ usage("missing maskfile argument for -cursor");
cursor_mask = argv[i];
nonexcl++;
continue;
}
if (!strcmp("-cursor_name", argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc) usage("-cursor_name requires an argument");
cursor_name = argv[i];
nonexcl++;
continue;
}
if (!strcmp("-xcf", argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc)
+ usage("missing cursorfile & cursorsize arguments for -xcf");
xcf = argv[i];
- if (++i>=argc) usage();
+ if (++i>=argc)
+ usage("missing cursorsize argument for -xcf");
xcf_size = atoi(argv[i]);
if (xcf_size <= 0)
xcf_size = 32;
@@ -169,17 +175,17 @@ main(int argc, char *argv[])
continue;
}
if (!strcmp("-fg",argv[i]) || !strcmp("-foreground",argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc) usage("-foreground requires an argument");
fore_color = argv[i];
continue;
}
if (!strcmp("-bg",argv[i]) || !strcmp("-background",argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc) usage("-background requires an argument");
back_color = argv[i];
continue;
}
if (!strcmp("-solid", argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc) usage("-solid requires an argument");
solid_color = argv[i];
excl++;
continue;
@@ -190,16 +196,16 @@ main(int argc, char *argv[])
continue;
}
if (!strcmp("-bitmap", argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc) usage("-bitmap requires an argument");
bitmap_file = argv[i];
excl++;
continue;
}
if (!strcmp("-mod", argv[i])) {
- if (++i>=argc) usage();
+ if (++i>=argc) usage("missing x & y arguments for -mod");
mod_x = atoi(argv[i]);
if (mod_x <= 0) mod_x = 1;
- if (++i>=argc) usage();
+ if (++i>=argc) usage("missing y argument for -mod");
mod_y = atoi(argv[i]);
if (mod_y <= 0) mod_y = 1;
excl++;
@@ -209,14 +215,16 @@ main(int argc, char *argv[])
reverse = 1;
continue;
}
- usage();
+ fprintf(stderr, "%s: unrecognized argument '%s'\n",
+ program_name, argv[i]);
+ usage(NULL);
}
/* Check for multiple use of exclusive options */
if (excl > 1) {
fprintf(stderr, "%s: choose only one of {solid, gray, bitmap, mod}\n",
program_name);
- usage();
+ usage(NULL);
}
dpy = XOpenDisplay(display_name);
@@ -323,10 +331,13 @@ FixupState(void)
return;
prop = XInternAtom(dpy, "_XSETROOT_ID", False);
if (unsave_past) {
- (void)XGetWindowProperty(dpy, root, prop, 0L, 1L, True, AnyPropertyType,
- &type, &format, &length, &after, &data);
- if ((type == XA_PIXMAP) && (format == 32) &&
- (length == 1) && (after == 0))
+ if (XGetWindowProperty(dpy, root, prop, 0L, 1L, True, AnyPropertyType,
+ &type, &format, &length, &after, &data) != Success)
+ fprintf(stderr,
+ "%s: warning: cannot get _XSETROOT_ID property from root window\n",
+ program_name);
+ else if ((type == XA_PIXMAP) && (format == 32) &&
+ (length == 1) && (after == 0))
XKillClient(dpy, *((Pixmap *)data));
else if (type != None)
fprintf(stderr, "%s: warning: _XSETROOT_ID property is garbage\n",