diff --git a/app/xcmsdb/ChangeLog b/app/xcmsdb/ChangeLog index ae0eba4eb..e5ce3d919 100644 --- a/app/xcmsdb/ChangeLog +++ b/app/xcmsdb/ChangeLog @@ -1,3 +1,375 @@ +commit 8067bc3bd82c1bd3b50e03b7f1614907509495cb +Author: Alan Coopersmith +Date: Sun Jul 10 14:54:38 2022 -0700 + + xcmsdb 1.0.6 + + Signed-off-by: Alan Coopersmith + +commit 337a55d303d76aa4f3f6d1e4d7885544436ee2be +Author: Alan Coopersmith +Date: Sat Apr 30 11:38:44 2022 -0700 + + LoadSCCData: avoid leaking memory if we give up early + + Resolves issues reported by Oracle Parfait static analyser: + + Error: Memory leak + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1615 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + Error: Memory leak + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1634 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626. + Error: Memory leak + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1656 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables != 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 3 at line 1648 + and pCurrent->pRedTbl == NULL at line 1651. + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1664 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables != 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 3 at line 1648 + and pCurrent->pGreenTbl == NULL at line 1659. + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1672 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables != 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 3 at line 1648 + and pCurrent->pBlueTbl == NULL at line 1667. + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1685 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables == 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 1 at line 1648 + and pCurrent->pRedTbl == NULL at line 1680. + + Signed-off-by: Alan Coopersmith + +commit 6ff9e623b48a8998324a75ebaadb6adc97b189ae +Author: Alan Coopersmith +Date: Sat Apr 30 11:31:33 2022 -0700 + + Remove unnecessary casts and make allocation failure checks more consistent + + Signed-off-by: Alan Coopersmith + +commit 54b7f6247be611d1f357220a59be05322d78998a +Author: Alan Coopersmith +Date: Sat Apr 30 11:02:27 2022 -0700 + + Adopt X.Org standard coding style + + Signed-off-by: Alan Coopersmith + +commit 63f48f29a8c93ead05b53823fc62fa909d527431 +Author: Alan Coopersmith +Date: Sun Apr 3 14:33:19 2022 -0700 + + Fix -Wsign-compare warnings in PrintTableType1() + + xcmsdb.c: In function ‘PrintTableType1’: + xcmsdb.c:299:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] + for (count = 0; count < max_index+1; count++) { + ^ + xcmsdb.c:307:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] + for (count = 0; count < max_index+1; count++) { + ^ + xcmsdb.c:315:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] + for (count = 0; count < max_index+1; count++) { + ^ + + Signed-off-by: Alan Coopersmith + +commit 6c5d7d7ba21b69f606b832e38efe64a4805bd94e +Author: Alan Coopersmith +Date: Sat Dec 4 11:13:16 2021 -0800 + + Build xz tarballs instead of bzip2 + + Signed-off-by: Alan Coopersmith + +commit 8e7a36cb750e2ef619885225e937224a5949928f +Author: Alan Coopersmith +Date: Sat Dec 4 11:13:13 2021 -0800 + + gitlab CI: add a basic build test + + Signed-off-by: Alan Coopersmith + +commit b8c157bf095fa8be00c9b8d0ee7550610ae79c86 +Author: Alan Coopersmith +Date: Sun Nov 28 11:38:16 2021 -0800 + + Fix spelling/wording issues + + Found by using: + codespell --builtin clear,rare,usage,informal,code,names + + Signed-off-by: Alan Coopersmith + +commit 5d9c61bbc5f5c485df099e1b8536c25ec3afd741 +Author: Alan Coopersmith +Date: Wed Nov 21 17:00:09 2018 -0800 + + Update configure.ac bug URL for gitlab migration + + Signed-off-by: Alan Coopersmith + +commit d4de6604ab692cc1a70a330efa5b15f3e88c47ed +Author: Alan Coopersmith +Date: Fri Nov 16 21:18:18 2018 -0800 + + Update README for gitlab migration + + Signed-off-by: Alan Coopersmith + +commit 97a1bb6e0b22c9ae3be1694711acf052b927766c +Author: Mihail Konev +Date: Thu Jan 26 14:00:20 2017 +1000 + + autogen: add default patch prefix + + Signed-off-by: Mihail Konev + +commit 5ef3260cbf8a6b097467a72aa6d16befe9095b78 +Author: Emil Velikov +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 + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + +commit 7c2442e5332b7edeb8f6855b8cce2001c91df04f +Author: Peter Hutterer +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 + Reviewed-by: Emil Velikov + +commit 8067bc3bd82c1bd3b50e03b7f1614907509495cb +Author: Alan Coopersmith +Date: Sun Jul 10 14:54:38 2022 -0700 + + xcmsdb 1.0.6 + + Signed-off-by: Alan Coopersmith + +commit 337a55d303d76aa4f3f6d1e4d7885544436ee2be +Author: Alan Coopersmith +Date: Sat Apr 30 11:38:44 2022 -0700 + + LoadSCCData: avoid leaking memory if we give up early + + Resolves issues reported by Oracle Parfait static analyser: + + Error: Memory leak + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1615 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + Error: Memory leak + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1634 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626. + Error: Memory leak + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1656 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables != 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 3 at line 1648 + and pCurrent->pRedTbl == NULL at line 1651. + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1664 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables != 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 3 at line 1648 + and pCurrent->pGreenTbl == NULL at line 1659. + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1672 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables != 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 3 at line 1648 + and pCurrent->pBlueTbl == NULL at line 1667. + Memory leak [memory-leak] (CWE 401): + Memory leak of pointer pCurrent allocated with calloc(1, 112) + at line 1685 of app/xcmsdb/loadData.c in function 'LoadSCCData'. + pCurrent allocated at line 1600 with calloc(1, 112) + pCurrent leaks when VisualFlag == 0 at line 1618 + and VisualFlag == 0 at line 1626 + and pCurrent->nTables != 0 at line 1628 + and pCurrent->nTables == 1 at line 1628 + and token3 == NULL at line 1642 + and pCurrent->nTables is 1 at line 1648 + and pCurrent->pRedTbl == NULL at line 1680. + + Signed-off-by: Alan Coopersmith + +commit 6ff9e623b48a8998324a75ebaadb6adc97b189ae +Author: Alan Coopersmith +Date: Sat Apr 30 11:31:33 2022 -0700 + + Remove unnecessary casts and make allocation failure checks more consistent + + Signed-off-by: Alan Coopersmith + +commit 54b7f6247be611d1f357220a59be05322d78998a +Author: Alan Coopersmith +Date: Sat Apr 30 11:02:27 2022 -0700 + + Adopt X.Org standard coding style + + Signed-off-by: Alan Coopersmith + +commit 63f48f29a8c93ead05b53823fc62fa909d527431 +Author: Alan Coopersmith +Date: Sun Apr 3 14:33:19 2022 -0700 + + Fix -Wsign-compare warnings in PrintTableType1() + + xcmsdb.c: In function ‘PrintTableType1’: + xcmsdb.c:299:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] + for (count = 0; count < max_index+1; count++) { + ^ + xcmsdb.c:307:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] + for (count = 0; count < max_index+1; count++) { + ^ + xcmsdb.c:315:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] + for (count = 0; count < max_index+1; count++) { + ^ + + Signed-off-by: Alan Coopersmith + +commit 6c5d7d7ba21b69f606b832e38efe64a4805bd94e +Author: Alan Coopersmith +Date: Sat Dec 4 11:13:16 2021 -0800 + + Build xz tarballs instead of bzip2 + + Signed-off-by: Alan Coopersmith + +commit 8e7a36cb750e2ef619885225e937224a5949928f +Author: Alan Coopersmith +Date: Sat Dec 4 11:13:13 2021 -0800 + + gitlab CI: add a basic build test + + Signed-off-by: Alan Coopersmith + +commit b8c157bf095fa8be00c9b8d0ee7550610ae79c86 +Author: Alan Coopersmith +Date: Sun Nov 28 11:38:16 2021 -0800 + + Fix spelling/wording issues + + Found by using: + codespell --builtin clear,rare,usage,informal,code,names + + Signed-off-by: Alan Coopersmith + +commit 5d9c61bbc5f5c485df099e1b8536c25ec3afd741 +Author: Alan Coopersmith +Date: Wed Nov 21 17:00:09 2018 -0800 + + Update configure.ac bug URL for gitlab migration + + Signed-off-by: Alan Coopersmith + +commit d4de6604ab692cc1a70a330efa5b15f3e88c47ed +Author: Alan Coopersmith +Date: Fri Nov 16 21:18:18 2018 -0800 + + Update README for gitlab migration + + Signed-off-by: Alan Coopersmith + +commit 97a1bb6e0b22c9ae3be1694711acf052b927766c +Author: Mihail Konev +Date: Thu Jan 26 14:00:20 2017 +1000 + + autogen: add default patch prefix + + Signed-off-by: Mihail Konev + +commit 5ef3260cbf8a6b097467a72aa6d16befe9095b78 +Author: Emil Velikov +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 + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + +commit 7c2442e5332b7edeb8f6855b8cce2001c91df04f +Author: Peter Hutterer +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 + Reviewed-by: Emil Velikov + commit 152d7f3992fc0982006f7024589c1491feb273ee Author: Alan Coopersmith Date: Thu Apr 16 22:49:23 2015 -0700 @@ -7,7 +379,7 @@ Date: Thu Apr 16 22:49:23 2015 -0700 Signed-off-by: Alan Coopersmith commit aa02eb3d4f0c5722b8f9012ec08512daa7420184 -Author: Erkki Seppälä +Author: Erkki Seppälä < Date: Sun Jan 4 12:51:10 2015 -0800 _XcmsGetProperty: don't deal with uninitialized values, fail instead @@ -470,7 +842,7 @@ Date: Wed Jul 20 19:31:52 2005 +0000 configure cache, you cache it, and the cached value is probably wrong. commit bdf7beaadb08e4599d28433a49422825949b8295 -Author: Søren Sandmann Pedersen +Author: Søren Sandmann Pedersen Date: Wed Jul 6 20:07:41 2005 +0000 Build system for xcmsdb diff --git a/app/xcmsdb/Makefile.am b/app/xcmsdb/Makefile.am index ddd531b93..27e809fd9 100644 --- a/app/xcmsdb/Makefile.am +++ b/app/xcmsdb/Makefile.am @@ -30,7 +30,7 @@ xcmsdb_SOURCES = \ SCCDFile.h \ xcmsdb.c -EXTRA_DIST = datafiles/sample1.dcc datafiles/sample2.dcc +EXTRA_DIST = datafiles/sample1.dcc datafiles/sample2.dcc README.md MAINTAINERCLEANFILES = ChangeLog INSTALL diff --git a/app/xcmsdb/Makefile.in b/app/xcmsdb/Makefile.in index f79a88216..beb4e5d77 100644 --- a/app/xcmsdb/Makefile.in +++ b/app/xcmsdb/Makefile.in @@ -73,7 +73,7 @@ build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = xcmsdb$(EXEEXT) subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ +DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure COPYING ChangeLog INSTALL compile \ config.guess config.sub depcomp install-sh missing @@ -179,9 +179,9 @@ am__relativize = \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz GZIP_ENV = --best -DIST_TARGETS = dist-bzip2 dist-gzip +DIST_TARGETS = dist-xz dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -299,6 +299,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -315,7 +316,7 @@ xcmsdb_SOURCES = \ SCCDFile.h \ xcmsdb.c -EXTRA_DIST = datafiles/sample1.dcc datafiles/sample2.dcc +EXTRA_DIST = datafiles/sample1.dcc datafiles/sample2.dcc README.md MAINTAINERCLEANFILES = ChangeLog INSTALL all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -644,6 +645,7 @@ distdir: $(DISTFILES) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) + dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) @@ -651,7 +653,6 @@ dist-bzip2: distdir dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) - dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) diff --git a/app/xcmsdb/README b/app/xcmsdb/README deleted file mode 100644 index 762fabd9d..000000000 --- a/app/xcmsdb/README +++ /dev/null @@ -1,28 +0,0 @@ -xcmsdb is used to load, query, or remove Device Color Characterization -data stored in properties on the root window of the screen as -specified in section 7, Device Color Characterization, of the -X11 Inter-Client Communication Conventions Manual (ICCCM). - -All questions regarding this software should be directed at the -Xorg mailing list: - - http://lists.freedesktop.org/mailman/listinfo/xorg - -Please submit bug reports to the Xorg bugzilla: - - https://bugs.freedesktop.org/enter_bug.cgi?product=xorg - -The master development code repository can be found at: - - git://anongit.freedesktop.org/git/xorg/app/xcmsdb - - http://cgit.freedesktop.org/xorg/app/xcmsdb - -For patch submission instructions, see: - - http://www.x.org/wiki/Development/Documentation/SubmittingPatches - -For more information on the git code manager, see: - - http://wiki.x.org/wiki/GitPage - diff --git a/app/xcmsdb/README.md b/app/xcmsdb/README.md new file mode 100644 index 000000000..4b2cee5c7 --- /dev/null +++ b/app/xcmsdb/README.md @@ -0,0 +1,20 @@ +xcmsdb is used to load, query, or remove Device Color Characterization +data stored in properties on the root window of the screen as +specified in section 7, Device Color Characterization, of the +X11 Inter-Client Communication Conventions Manual (ICCCM). + +All questions regarding this software should be directed at the +Xorg mailing list: + + https://lists.x.org/mailman/listinfo/xorg + +The primary development code repository can be found at: + + https://gitlab.freedesktop.org/xorg/app/xcmsdb + +Please submit bug reports and requests to merge patches there. + +For patch submission instructions, see: + + https://www.x.org/wiki/Development/Documentation/SubmittingPatches + diff --git a/app/xcmsdb/aclocal.m4 b/app/xcmsdb/aclocal.m4 index c0dbcfb1f..d0a818e1e 100644 --- a/app/xcmsdb/aclocal.m4 +++ b/app/xcmsdb/aclocal.m4 @@ -19,32 +19,63 @@ 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'.])]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# 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 of the License, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# 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. +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +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.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 + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) @@ -66,18 +97,19 @@ if test -n "$PKG_CONFIG"; then PKG_CONFIG="" fi fi[]dnl -])# PKG_PROG_PKG_CONFIG +])dnl PKG_PROG_PKG_CONFIG -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ @@ -87,8 +119,10 @@ m4_ifvaln([$3], [else $3])dnl fi]) -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" @@ -100,10 +134,11 @@ m4_define([_PKG_CONFIG], else pkg_failed=untried fi[]dnl -])# _PKG_CONFIG +])dnl _PKG_CONFIG -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -111,26 +146,24 @@ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then else _pkg_short_errors_supported=no fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED +])dnl _PKG_SHORT_ERRORS_SUPPORTED -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 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]) @@ -140,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 @@ -161,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 @@ -177,16 +210,40 @@ else AC_MSG_RESULT([yes]) $3 fi[]dnl -])# PKG_CHECK_MODULES +])dnl PKG_CHECK_MODULES -# PKG_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable pkgconfigdir as the location where a module -# should install pkg-config .pc files. By default the directory is -# $libdir/pkgconfig, but the default can be changed by passing -# DIRECTORY. The user can override through the --with-pkgconfigdir -# parameter. +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -197,16 +254,18 @@ AC_ARG_WITH([pkgconfigdir], AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_INSTALLDIR +])dnl PKG_INSTALLDIR -# PKG_NOARCH_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable noarch_pkgconfigdir as the location where a -# module should install arch-independent pkg-config .pc files. By -# default the directory is $datadir/pkgconfig, but the default can be -# changed by passing DIRECTORY. The user can override through the -# --with-noarch-pkgconfigdir parameter. +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -217,7 +276,24 @@ AC_ARG_WITH([noarch-pkgconfigdir], AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_NOARCH_INSTALLDIR +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR # Copyright (C) 2002-2012 Free Software Foundation, Inc. # @@ -1242,7 +1318,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 +1355,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 +1433,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 +1459,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 +1469,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 +1479,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 +1489,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 +1752,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" + +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 +3165,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 +3228,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/xcmsdb/compile b/app/xcmsdb/compile index a85b723c7..df363c8fb 100644 --- a/app/xcmsdb/compile +++ b/app/xcmsdb/compile @@ -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-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # 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 . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -53,7 +53,7 @@ func_file_conv () MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ func_file_conv () mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) @@ -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: diff --git a/app/xcmsdb/configure b/app/xcmsdb/configure index 1d0a938a8..ccecb4aea 100644 --- a/app/xcmsdb/configure +++ b/app/xcmsdb/configure @@ -1,8 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xcmsdb 1.0.5. +# Generated by GNU Autoconf 2.69 for xcmsdb 1.0.6. # -# Report bugs to . +# Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -267,7 +267,7 @@ fi $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: https://bugs.freedesktop.org/enter_bug.cgi?product=xorg +$0: https://gitlab.freedesktop.org/xorg/app/xcmsdb/issues $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do @@ -581,9 +581,9 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xcmsdb' PACKAGE_TARNAME='xcmsdb' -PACKAGE_VERSION='1.0.5' -PACKAGE_STRING='xcmsdb 1.0.5' -PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' +PACKAGE_VERSION='1.0.6' +PACKAGE_STRING='xcmsdb 1.0.6' +PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/app/xcmsdb/issues' PACKAGE_URL='' ac_unique_file="Makefile.am" @@ -729,6 +729,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -809,6 +810,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}' @@ -1061,6 +1063,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=* \ @@ -1198,7 +1209,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. @@ -1311,7 +1322,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 xcmsdb 1.0.5 to adapt to many kinds of systems. +\`configure' configures xcmsdb 1.0.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1351,6 +1362,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] @@ -1381,7 +1393,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xcmsdb 1.0.5:";; + short | recursive ) echo "Configuration of xcmsdb 1.0.6:";; esac cat <<\_ACEOF @@ -1426,7 +1438,7 @@ Some influential environment variables: Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . +Report bugs to . _ACEOF ac_status=$? fi @@ -1489,7 +1501,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xcmsdb configure 1.0.5 +xcmsdb configure 1.0.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1746,7 +1758,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 xcmsdb $as_me 1.0.5, which was +It was created by xcmsdb $as_me 1.0.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2575,7 +2587,7 @@ fi # Define the identity of the package. PACKAGE='xcmsdb' - VERSION='1.0.5' + VERSION='1.0.6' cat >>confdefs.h <<_ACEOF @@ -10219,10 +10231,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))" @@ -10230,14 +10243,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 @@ -10253,9 +10297,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 @@ -10263,9 +10307,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 @@ -10273,9 +10317,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 @@ -10283,9 +10327,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 @@ -10368,8 +10412,8 @@ AM_BACKSLASH='\' # Checks for pkg-config packages pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCMSDB" >&5 -$as_echo_n "checking for XCMSDB... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x11" >&5 +$as_echo_n "checking for x11... " >&6; } if test -n "$XCMSDB_CFLAGS"; then pkg_cv_XCMSDB_CFLAGS="$XCMSDB_CFLAGS" @@ -10409,7 +10453,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 @@ -10436,7 +10480,7 @@ Alternatively, you may set the environment variables XCMSDB_CFLAGS and XCMSDB_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;} @@ -10994,7 +11038,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 xcmsdb $as_me 1.0.5, which was +This file was extended by xcmsdb $as_me 1.0.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -11054,13 +11098,13 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xcmsdb config.status 1.0.5 +xcmsdb config.status 1.0.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/app/xcmsdb/configure.ac b/app/xcmsdb/configure.ac index 8a811fd51..8c4b820be 100644 --- a/app/xcmsdb/configure.ac +++ b/app/xcmsdb/configure.ac @@ -24,14 +24,14 @@ dnl Process this file with autoconf to create configure. # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xcmsdb], - [1.0.5], - [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], + [1.0.6], + [https://gitlab.freedesktop.org/xorg/app/xcmsdb/issues], [xcmsdb]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([Makefile.am]) # Initialize Automake -AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_INIT_AUTOMAKE([foreign dist-xz]) # Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS m4_ifndef([XORG_MACROS_VERSION], diff --git a/app/xcmsdb/loadData.c b/app/xcmsdb/loadData.c index 62553781e..119a4baef 100644 --- a/app/xcmsdb/loadData.c +++ b/app/xcmsdb/loadData.c @@ -123,8 +123,9 @@ static DefineEntry VisualOptKeyTbl[] = { { "blue_mask", KEY_BLUE_MASK }, { "colormap_size", KEY_COLORMAP_SIZE }, { "bits_per_rgb", KEY_BITS_PER_RGB }, - { "", -1 } + { "", -1 } }; + static DefineEntry VisualClassTbl[] = { { "StaticGray", StaticGray }, { "GrayScale", GrayScale }, @@ -132,7 +133,7 @@ static DefineEntry VisualClassTbl[] = { { "PseudoColor", PseudoColor }, { "TrueColor", TrueColor }, { "DirectColor", DirectColor }, - { "", -1 } + { "", -1 } }; @@ -149,9 +150,9 @@ static DefineEntry VisualClassTbl[] = { * SYNOPSIS */ static int -StrToDefine(DefineEntry pde[], /* IN: table of X string-define pairs */ - /* last entry must contain pair "", 0 */ - const char *pstring) /* IN: string to be looked up in that table */ +StrToDefine(DefineEntry pde[], /* IN: table of X string-define pairs */ + /* last entry must contain pair "", 0 */ + const char *pstring) /* IN: string to be looked up in that table */ /* * DESCRIPTION * Converts a string to an integer define. @@ -169,13 +170,13 @@ StrToDefine(DefineEntry pde[], /* IN: table of X string-define pairs */ * */ { - while( strcmp(pde->pString,"") != 0 ){ - if( strcmp(pde->pString,pstring) == 0){ - return(pde->define); - } - pde++; + while (strcmp(pde->pString, "") != 0) { + if (strcmp(pde->pString, pstring) == 0) { + return (pde->define); + } + pde++; } - return(-1); + return (-1); } /* @@ -185,9 +186,9 @@ StrToDefine(DefineEntry pde[], /* IN: table of X string-define pairs */ * SYNOPSIS */ static const char * -DefineToStr(DefineEntry pde[], /* IN: table of X string-define pairs */ - /* last entry must contain pair "", 0 */ - int id) /* IN: id to be looked up in that table */ +DefineToStr(DefineEntry pde[], /* IN: table of X string-define pairs */ + /* last entry must contain pair "", 0 */ + int id) /* IN: id to be looked up in that table */ /* * DESCRIPTION * Converts a string to an integer define. @@ -205,13 +206,13 @@ DefineToStr(DefineEntry pde[], /* IN: table of X string-define pairs */ * */ { - while(pde->define != -1) { - if (pde->define == id) { - return(pde->pString); - } - pde++; + while (pde->define != -1) { + if (pde->define == id) { + return (pde->pString); + } + pde++; } - return(NULL); + return (NULL); } /* @@ -239,9 +240,8 @@ SCKeyOf(const char *string) * */ { - return(StrToDefine(KeyTbl, string)); + return (StrToDefine(KeyTbl, string)); } - /* * NAME @@ -268,9 +268,8 @@ SCScrnClassOf(const char *string) * */ { - return(StrToDefine(ScrnClassTbl, string)); + return (StrToDefine(ScrnClassTbl, string)); } - /* * NAME @@ -289,22 +288,22 @@ SCScrnClassStringOf(int id) * */ { - return(DefineToStr(ScrnClassTbl, id)); + return (DefineToStr(ScrnClassTbl, id)); } /* close the stream and return any memory allocated. */ -/*ARGSUSED*/ static void closeS(FILE *stream, XDCCC_Correction *pCorrection) { - XDCCC_Correction* pNext; + XDCCC_Correction *pNext; + if (stream) { - fclose (stream); + fclose(stream); } while (pCorrection) { - pNext = pCorrection->next; - free(pCorrection); - pCorrection = pNext; + pNext = pCorrection->next; + free(pCorrection); + pCorrection = pNext; } } @@ -317,7 +316,6 @@ nextline(char *buf, int maxch, FILE *stream) linenum++; return (fgets(buf, maxch, stream)); } - static int ProcessColorimetric(FILE *stream, XDCCC_Matrix *pMatrix, int VisualFlag) @@ -338,175 +336,178 @@ ProcessColorimetric(FILE *stream, XDCCC_Matrix *pMatrix, int VisualFlag) XcmsFloat *pElement = NULL; while ((nextline(buf, BUFSIZ, stream)) != NULL) { - if ((ntok = sscanf(buf, "%s %s", keyword, token)) > 0) { - switch (SCKeyOf(keyword)) { - case XYZTORGBMAT_BEGIN : - if (VisualFlag != VIDEO_RGB) { - fprintf(stderr, - "Line %d: Keyword XYZTORGBMAT_BEGIN mismatch for visual %s.\n", - linenum, SCScrnClassStringOf(VisualFlag)); - return (0); - } - if (state != 0) { - fprintf(stderr, - "Line %d: Extraneous keyword %s.\n", - linenum, keyword); - return (0); - } - state = 1; - count = 0; - pElement = (XcmsFloat *) pMatrix->XYZtoRGBmatrix; - break; - case XYZTORGBMAT_END : - if (VisualFlag != VIDEO_RGB) { - fprintf(stderr, - "Line %d: Keyword XYZTORGBMAT_END mismatch for visual %s.\n", - linenum, SCScrnClassStringOf(VisualFlag)); - return (0); - } - if ((state != 1) || (count != 9)) { - fprintf(stderr, - "Line %d: Incomplete XYZtoRGB matrix -- Premature %s\n", - linenum, keyword); - return (0); - } - matrices_processed |= 0x1; - if (matrices_processed == 3) { - state = 2; - } else { - state = 0; - } - break; - case RGBTOXYZMAT_BEGIN : - if (VisualFlag != VIDEO_RGB) { - fprintf(stderr, - "Line %d: Keyword RGBTOXYZMAT_BEGIN mismatch for visual %s.\n", - linenum, SCScrnClassStringOf(VisualFlag)); - return (0); - } - if (state != 0) { - fprintf(stderr, "Line %d: Extraneous keyword %s.\n", - linenum, keyword); - return (0); - } - state = 1; - count = 0; - pElement = (XcmsFloat *) pMatrix->RGBtoXYZmatrix; - break; - case RGBTOXYZMAT_END : - if (VisualFlag != VIDEO_RGB) { - fprintf(stderr, - "Line %d: Keyword RGBTOXYZMAT_END mismatch for visual %s.\n", - linenum, SCScrnClassStringOf(VisualFlag)); - return (0); - } - if ((state != 1) || (count != 9)) { - fprintf(stderr, - "Line %d: Incomplete RGBtoXYZ matrix -- Premature %s\n", - linenum, keyword); - return (0); - } - matrices_processed |= 0x2; - if (matrices_processed == 3) { - state = 2; - } else { - state = 0; - } - break; + if ((ntok = sscanf(buf, "%s %s", keyword, token)) > 0) { + switch (SCKeyOf(keyword)) { + case XYZTORGBMAT_BEGIN: + if (VisualFlag != VIDEO_RGB) { + fprintf(stderr, + "Line %d: Keyword XYZTORGBMAT_BEGIN mismatch for visual %s.\n", + linenum, SCScrnClassStringOf(VisualFlag)); + return (0); + } + if (state != 0) { + fprintf(stderr, + "Line %d: Extraneous keyword %s.\n", + linenum, keyword); + return (0); + } + state = 1; + count = 0; + pElement = (XcmsFloat *) pMatrix->XYZtoRGBmatrix; + break; + case XYZTORGBMAT_END: + if (VisualFlag != VIDEO_RGB) { + fprintf(stderr, + "Line %d: Keyword XYZTORGBMAT_END mismatch for visual %s.\n", + linenum, SCScrnClassStringOf(VisualFlag)); + return (0); + } + if ((state != 1) || (count != 9)) { + fprintf(stderr, + "Line %d: Incomplete XYZtoRGB matrix -- Premature %s\n", + linenum, keyword); + return (0); + } + matrices_processed |= 0x1; + if (matrices_processed == 3) { + state = 2; + } + else { + state = 0; + } + break; + case RGBTOXYZMAT_BEGIN: + if (VisualFlag != VIDEO_RGB) { + fprintf(stderr, + "Line %d: Keyword RGBTOXYZMAT_BEGIN mismatch for visual %s.\n", + linenum, SCScrnClassStringOf(VisualFlag)); + return (0); + } + if (state != 0) { + fprintf(stderr, "Line %d: Extraneous keyword %s.\n", + linenum, keyword); + return (0); + } + state = 1; + count = 0; + pElement = (XcmsFloat *) pMatrix->RGBtoXYZmatrix; + break; + case RGBTOXYZMAT_END: + if (VisualFlag != VIDEO_RGB) { + fprintf(stderr, + "Line %d: Keyword RGBTOXYZMAT_END mismatch for visual %s.\n", + linenum, SCScrnClassStringOf(VisualFlag)); + return (0); + } + if ((state != 1) || (count != 9)) { + fprintf(stderr, + "Line %d: Incomplete RGBtoXYZ matrix -- Premature %s\n", + linenum, keyword); + return (0); + } + matrices_processed |= 0x2; + if (matrices_processed == 3) { + state = 2; + } + else { + state = 0; + } + break; #ifdef GRAY - case WHITEPT_XYZ_BEGIN : - if (VisualFlag != VIDEO_GRAY) { - fprintf(stderr, - "Line %d: Keyword WHITEPT_XYZ_BEGIN mismatch for visual %s.\n", - linenum, SCScrnClassStringOf(VisualFlag)); - return (0); - } - if (state != 0) { - fprintf(stderr, - "Line %d: Extraneous keyword %s.\n", - linenum, keyword); - return (0); - } - state = 1; - count = 0; - pElement = (XcmsFloat *) pMatrix->XYZtoRGBmatrix; - break; - case WHITEPT_XYZ_END : - if (VisualFlag != VIDEO_GRAY) { - fprintf(stderr, - "Line %d: Keyword WHITEPT_XYZ_END mismatch for visual %s.\n", - linenum, SCScrnClassStringOf(VisualFlag)); - return (0); - } - if ((state != 1) || (count != 3)) { - fprintf(stderr, - "Line %d: Incomplete white point -- Premature %s\n", - linenum, keyword); - return (0); - } - state = 2; - break; + case WHITEPT_XYZ_BEGIN: + if (VisualFlag != VIDEO_GRAY) { + fprintf(stderr, + "Line %d: Keyword WHITEPT_XYZ_BEGIN mismatch for visual %s.\n", + linenum, SCScrnClassStringOf(VisualFlag)); + return (0); + } + if (state != 0) { + fprintf(stderr, + "Line %d: Extraneous keyword %s.\n", + linenum, keyword); + return (0); + } + state = 1; + count = 0; + pElement = (XcmsFloat *) pMatrix->XYZtoRGBmatrix; + break; + case WHITEPT_XYZ_END: + if (VisualFlag != VIDEO_GRAY) { + fprintf(stderr, + "Line %d: Keyword WHITEPT_XYZ_END mismatch for visual %s.\n", + linenum, SCScrnClassStringOf(VisualFlag)); + return (0); + } + if ((state != 1) || (count != 3)) { + fprintf(stderr, + "Line %d: Incomplete white point -- Premature %s\n", + linenum, keyword); + return (0); + } + state = 2; + break; #endif /* GRAY */ - case DATA : - for (ptoken = strtok(buf, DATA_DELIMS); ptoken != NULL; - ptoken = strtok(NULL, DATA_DELIMS)) { - if (sscanf(ptoken, "%lf", pElement) != 1) { - if (VisualFlag == VIDEO_RGB) { - fprintf(stderr, - "Line %d: Invalid matrix value %s.", - linenum, ptoken); - } else { - fprintf(stderr, - "Line %d: Invalid CIEXYZ value %s.\n", - linenum, ptoken); - } - return (0); - } - pElement++; - if (VisualFlag == VIDEO_RGB) { - if (++count > 9) { - fprintf(stderr, - "Line %d: Extra matrix value %s\n", - linenum, ptoken); - return (0); - } - } else { - if (++count > 3) { - fprintf(stderr, - "Line %d: Extra CIEXYZ value %s.\n", - linenum, ptoken); - return (0); - } - } - } - break; - case COLORIMETRIC_BEGIN : - fprintf(stderr, - "Line %d: Extraneous keyword %s.\n", - linenum, keyword); - return (0); - case COLORIMETRIC_END : - if (state != 2) { - fprintf(stderr, - "Line %d: Incomplete Colorimetric data -- Premature %s\n", - linenum, keyword); - return (0); - } - return (1); - case COMMENT : - /* Currently, do nothing. */ - break; - default : - fprintf(stderr, - "Line %d: Unexpected keyword %s\n", - linenum, keyword); - return (0); - } - } else if (ntok < 0) { - /* mismatch */ - fprintf(stderr, "Line %d: Unrecognized keyword\n", linenum); - return (0); - } + case DATA: + for (ptoken = strtok(buf, DATA_DELIMS); ptoken != NULL; + ptoken = strtok(NULL, DATA_DELIMS)) { + if (sscanf(ptoken, "%lf", pElement) != 1) { + if (VisualFlag == VIDEO_RGB) { + fprintf(stderr, + "Line %d: Invalid matrix value %s.", + linenum, ptoken); + } + else { + fprintf(stderr, + "Line %d: Invalid CIEXYZ value %s.\n", + linenum, ptoken); + } + return (0); + } + pElement++; + if (VisualFlag == VIDEO_RGB) { + if (++count > 9) { + fprintf(stderr, + "Line %d: Extra matrix value %s\n", + linenum, ptoken); + return (0); + } + } + else { + if (++count > 3) { + fprintf(stderr, + "Line %d: Extra CIEXYZ value %s.\n", + linenum, ptoken); + return (0); + } + } + } + break; + case COLORIMETRIC_BEGIN: + fprintf(stderr, + "Line %d: Extraneous keyword %s.\n", linenum, keyword); + return (0); + case COLORIMETRIC_END: + if (state != 2) { + fprintf(stderr, + "Line %d: Incomplete Colorimetric data -- Premature %s\n", + linenum, keyword); + return (0); + } + return (1); + case COMMENT: + /* Currently, do nothing. */ + break; + default: + fprintf(stderr, + "Line %d: Unexpected keyword %s\n", linenum, keyword); + return (0); + } + } + else if (ntok < 0) { + /* mismatch */ + fprintf(stderr, "Line %d: Unrecognized keyword\n", linenum); + return (0); + } } return (0); } @@ -518,194 +519,204 @@ ProcessIProfile(FILE *stream, XDCCC_Correction *pCorrection) char *keyword; char *tableStr, *sizeStr, *ptoken; int size; - int state = 0; - /************************************************ + int state = 0; + /************************************************ * 0 -- Looking for Intensity Table(s) * * 1 -- Processing Intensity Table(s) * ************************************************/ - int nTbl = 0; - int count = 0; + int nTbl = 0; + int count = 0; IntensityRec *pIRec = NULL; while ((nextline(buf, BUFSIZ, stream)) != NULL) { - ptoken = keyword = strtok(buf, DATA_DELIMS); - if (keyword != (char*)NULL) { - switch (SCKeyOf(keyword)) { - case ITBL_BEGIN : - if (state != 0) { - fprintf(stderr,"Line %d: unexpected keyword %s\n", - linenum, keyword); - return (0); - } - tableStr = strtok((char*)NULL, DATA_DELIMS); - sizeStr = strtok((char*)NULL, DATA_DELIMS); - if ((sizeStr == (char*)NULL) || - sscanf(sizeStr, "%d", &size) != 1) { - fprintf(stderr, - "Line %d: invalid Intensity Table size, %s.\n", - linenum, sizeStr); - return (0); - } - if (size < 0) { - fprintf(stderr, - "Line %d: count %d < 0 for Intensity Table.\n", - linenum, size); - return (0); - } - if (strcmp(tableStr, "GREEN") == 0) { - if (pCorrection->nTables != 3) { - fprintf(stderr,"Line %d: incorrect number of tables\n", - linenum); - return (0); - } - if (pCorrection->pGreenTbl->pBase != NULL) { - fprintf(stderr, - "Line %d: multiple GREEN Intensity Profiles\n", - linenum); - return (0); - } - pCorrection->pGreenTbl->nEntries = size; - pCorrection->pGreenTbl->pBase = - (IntensityRec *) calloc (size, sizeof(IntensityRec)); - if (!pCorrection->pGreenTbl->pBase) { - fprintf(stderr, - "Line %d: Unable to allocate space for GREEN Intensity Profile\n", linenum); - return (0); - } - pIRec = pCorrection->pGreenTbl->pBase; - } else if (strcmp(tableStr, "BLUE") == 0) { - if (pCorrection->nTables != 3) { - fprintf(stderr, - "Line %d: incorrect number of tables\n", - linenum); - return (0); - } - if (pCorrection->pBlueTbl->pBase != NULL) { - fprintf(stderr, - "Line %d: multiple BLUE Intensity Profiles\n", - linenum); - return (0); - } - pCorrection->pBlueTbl->nEntries = size; - pCorrection->pBlueTbl->pBase = - (IntensityRec *) calloc (size, sizeof(IntensityRec)); - if (!pCorrection->pBlueTbl->pBase) { - fprintf(stderr, - "Line %d: Unable to allocate space for BLUE Intensity Profile\n", linenum); - return (0); - } - pIRec = pCorrection->pBlueTbl->pBase; - } else { - if (!strcmp(tableStr, "RGB") && pCorrection->nTables != 1) { - fprintf(stderr,"Line %d: multiple RGB Intensity Tables", - linenum); - return (0); - } - if (pCorrection->pRedTbl->pBase != NULL) { - fprintf(stderr, - "Line %d: multiple RED or GREEN or BLUE Intensity Tables\n", - linenum); - return (0); - } - pCorrection->pRedTbl->nEntries = size; - pCorrection->pRedTbl->pBase = - (IntensityRec *) calloc (size, sizeof(IntensityRec)); - if (!pCorrection->pRedTbl->pBase) { - fprintf(stderr, - "Line %d: Unable to allocate space for intensity table\n", linenum); - return (0); - } - pIRec = pCorrection->pRedTbl->pBase; - } - state = 1; - count = 0; - break; - case ITBL_END : - if ((state != 1) || (count != size)) { - fprintf(stderr, - "Line %d: incomplete Intensity Table -- Premature %s\n", - linenum, keyword); - return (0); - } - nTbl++; - state = 0; - break; - case DATA : - if(pIRec == NULL) { - fprintf(stderr, "Line %d: Invalid Intensity Profile -- Premature %s\n", - linenum, keyword); - return (0); - } - do { - /******************************************************** + ptoken = keyword = strtok(buf, DATA_DELIMS); + if (keyword != NULL) { + switch (SCKeyOf(keyword)) { + case ITBL_BEGIN: + if (state != 0) { + fprintf(stderr, "Line %d: unexpected keyword %s\n", + linenum, keyword); + return (0); + } + tableStr = strtok(NULL, DATA_DELIMS); + sizeStr = strtok(NULL, DATA_DELIMS); + if ((sizeStr == NULL) || + sscanf(sizeStr, "%d", &size) != 1) { + fprintf(stderr, + "Line %d: invalid Intensity Table size, %s.\n", + linenum, sizeStr); + return (0); + } + if (size < 0) { + fprintf(stderr, + "Line %d: count %d < 0 for Intensity Table.\n", + linenum, size); + return (0); + } + if (strcmp(tableStr, "GREEN") == 0) { + if (pCorrection->nTables != 3) { + fprintf(stderr, "Line %d: incorrect number of tables\n", + linenum); + return (0); + } + if (pCorrection->pGreenTbl->pBase != NULL) { + fprintf(stderr, + "Line %d: multiple GREEN Intensity Profiles\n", + linenum); + return (0); + } + pCorrection->pGreenTbl->nEntries = size; + pCorrection->pGreenTbl->pBase = + calloc(size, sizeof(IntensityRec)); + if (pCorrection->pGreenTbl->pBase == NULL) { + fprintf(stderr, + "Line %d: Unable to allocate space for GREEN Intensity Profile\n", + linenum); + return (0); + } + pIRec = pCorrection->pGreenTbl->pBase; + } + else if (strcmp(tableStr, "BLUE") == 0) { + if (pCorrection->nTables != 3) { + fprintf(stderr, + "Line %d: incorrect number of tables\n", + linenum); + return (0); + } + if (pCorrection->pBlueTbl->pBase != NULL) { + fprintf(stderr, + "Line %d: multiple BLUE Intensity Profiles\n", + linenum); + return (0); + } + pCorrection->pBlueTbl->nEntries = size; + pCorrection->pBlueTbl->pBase = + calloc(size, sizeof(IntensityRec)); + if (pCorrection->pBlueTbl->pBase == NULL) { + fprintf(stderr, + "Line %d: Unable to allocate space for BLUE Intensity Profile\n", + linenum); + return (0); + } + pIRec = pCorrection->pBlueTbl->pBase; + } + else { + if (!strcmp(tableStr, "RGB") && pCorrection->nTables != 1) { + fprintf(stderr, + "Line %d: multiple RGB Intensity Tables", + linenum); + return (0); + } + if (pCorrection->pRedTbl->pBase != NULL) { + fprintf(stderr, + "Line %d: multiple RED or GREEN or BLUE Intensity Tables\n", + linenum); + return (0); + } + pCorrection->pRedTbl->nEntries = size; + pCorrection->pRedTbl->pBase = + calloc(size, sizeof(IntensityRec)); + if (pCorrection->pRedTbl->pBase == NULL) { + fprintf(stderr, + "Line %d: Unable to allocate space for intensity table\n", + linenum); + return (0); + } + pIRec = pCorrection->pRedTbl->pBase; + } + state = 1; + count = 0; + break; + case ITBL_END: + if ((state != 1) || (count != size)) { + fprintf(stderr, + "Line %d: incomplete Intensity Table -- Premature %s\n", + linenum, keyword); + return (0); + } + nTbl++; + state = 0; + break; + case DATA: + if (pIRec == NULL) { + fprintf(stderr, + "Line %d: Invalid Intensity Profile -- Premature %s\n", + linenum, keyword); + return (0); + } + do { + /******************************************************** * Note: tableType should only be 0 or 1 at this point. * 0 indicates value and intensity stored. * 1 indicates only intensity stored. ********************************************************/ - if (pCorrection->tableType) { - if (sscanf(ptoken, "%lf", &pIRec->intensity) != 1) { - fprintf(stderr, - "Line %d: invalid Intensity Profile value %s\n", - linenum, ptoken); - return (0); - } - /* With tableType 1 only store the intensity. */ - pIRec++; - } else { - short tmp; - /* Note ansi C can handle 0x preceeding hex number */ - if (sscanf(ptoken, "%hi", &tmp) != 1) { - fprintf(stderr, - "Line %d: invalid Intensity Profile value %s\n", - linenum, ptoken); - return (0); - } else - pIRec->value = tmp; - if ((ptoken = strtok(NULL, DATA_DELIMS)) == NULL) { - fprintf(stderr, - "Line %d: missing Intensity Profile value\n", - linenum); - return (0); - } - if (sscanf(ptoken, "%lf", &pIRec->intensity) != 1) { - fprintf(stderr, - "Line %d: invalid Intensity Profile intensity %s\n", - linenum, ptoken); - return (0); - } - /* With tableType 0 only store both value & intensity*/ - pIRec++; - } - if (++count > size) { - fprintf(stderr, - "Line %d: extra Intensity value %s\n", - linenum, ptoken); - return (0); - } - ptoken = strtok(NULL, DATA_DELIMS); - } while(ptoken != NULL); - break; - case IPROFILE_BEGIN : - fprintf(stderr,"Line %d: extraneous keyword %s\n", - linenum, keyword); - return (0); - case IPROFILE_END : - if ((state != 0) || (nTbl != pCorrection->nTables)) { - fprintf(stderr, - "Line %d: incomplete Intensity Profile data -- Premature %s\n", - linenum, keyword); - return (0); - } - return (1); - case COMMENT : - /* ignore line */ - break; - default : - fprintf(stderr,"Line %d: unexpected keyword %s\n", - linenum, keyword); - return (0); - } - } /* else its was just a blank line */ + if (pCorrection->tableType) { + if (sscanf(ptoken, "%lf", &pIRec->intensity) != 1) { + fprintf(stderr, + "Line %d: invalid Intensity Profile value %s\n", + linenum, ptoken); + return (0); + } + /* With tableType 1 only store the intensity. */ + pIRec++; + } + else { + short tmp; + + /* Note ANSI C can handle 0x preceding hex number */ + if (sscanf(ptoken, "%hi", &tmp) != 1) { + fprintf(stderr, + "Line %d: invalid Intensity Profile value %s\n", + linenum, ptoken); + return (0); + } + else + pIRec->value = tmp; + if ((ptoken = strtok(NULL, DATA_DELIMS)) == NULL) { + fprintf(stderr, + "Line %d: missing Intensity Profile value\n", + linenum); + return (0); + } + if (sscanf(ptoken, "%lf", &pIRec->intensity) != 1) { + fprintf(stderr, + "Line %d: invalid Intensity Profile intensity %s\n", + linenum, ptoken); + return (0); + } + /* With tableType 0 only store both value & intensity */ + pIRec++; + } + if (++count > size) { + fprintf(stderr, + "Line %d: extra Intensity value %s\n", + linenum, ptoken); + return (0); + } + ptoken = strtok(NULL, DATA_DELIMS); + } while (ptoken != NULL); + break; + case IPROFILE_BEGIN: + fprintf(stderr, "Line %d: extraneous keyword %s\n", + linenum, keyword); + return (0); + case IPROFILE_END: + if ((state != 0) || (nTbl != pCorrection->nTables)) { + fprintf(stderr, + "Line %d: incomplete Intensity Profile data -- Premature %s\n", + linenum, keyword); + return (0); + } + return (1); + case COMMENT: + /* ignore line */ + break; + default: + fprintf(stderr, "Line %d: unexpected keyword %s\n", + linenum, keyword); + return (0); + } + } /* else its was just a blank line */ } return (0); } @@ -721,10 +732,10 @@ PutTableType0Card8(IntensityTbl *pTbl, unsigned char **pCard8) **pCard8 = count - 1; *pCard8 += 1; for (; count; count--, pIRec++) { - **pCard8 = pIRec->value >> 8; - *pCard8 += 1; - **pCard8 = pIRec->intensity * 255.0; - *pCard8 += 1; + **pCard8 = pIRec->value >> 8; + *pCard8 += 1; + **pCard8 = pIRec->intensity * 255.0; + *pCard8 += 1; } } @@ -739,8 +750,8 @@ PutTableType1Card8(IntensityTbl *pTbl, unsigned char **pCard8) **pCard8 = count - 1; *pCard8 += 1; for (; count; count--, pIRec++) { - **pCard8 = pIRec->intensity * 255.0; - *pCard8 += 1; + **pCard8 = pIRec->intensity * 255.0; + *pCard8 += 1; } } @@ -755,10 +766,10 @@ PutTableType0Card16(IntensityTbl *pTbl, unsigned short **pCard16) **pCard16 = count - 1; *pCard16 += 1; for (; count; count--, pIRec++) { - **pCard16 = pIRec->value; - *pCard16 += 1; - **pCard16 = pIRec->intensity * 65535.0; - *pCard16 += 1; + **pCard16 = pIRec->value; + *pCard16 += 1; + **pCard16 = pIRec->intensity * 65535.0; + *pCard16 += 1; } } @@ -773,8 +784,8 @@ PutTableType1Card16(IntensityTbl *pTbl, unsigned short **pCard16) **pCard16 = count - 1; *pCard16 += 1; for (; count; count--, pIRec++) { - **pCard16 = pIRec->intensity * 65535.0; - *pCard16 += 1; + **pCard16 = pIRec->intensity * 65535.0; + *pCard16 += 1; } } @@ -789,10 +800,10 @@ PutTableType0Card32(IntensityTbl *pTbl, unsigned long **pCard32) **pCard32 = count - 1; *pCard32 += 1; for (; count; count--, pIRec++) { - **pCard32 = pIRec->value; - *pCard32 += 1; - **pCard32 = pIRec->intensity * 4294967295.0; - *pCard32 += 1; + **pCard32 = pIRec->value; + *pCard32 += 1; + **pCard32 = pIRec->intensity * 4294967295.0; + *pCard32 += 1; } } @@ -807,18 +818,17 @@ PutTableType1Card32(IntensityTbl *pTbl, unsigned long **pCard32) **pCard32 = count - 1; *pCard32 += 1; for (; count; count--, pIRec++) { - **pCard32 = pIRec->intensity * 4294967295.0; - *pCard32 += 1; + **pCard32 = pIRec->intensity * 4294967295.0; + *pCard32 += 1; } } - static void -LoadMatrix(Display *pDpy, Window root, XDCCC_Matrix *pMatrix) +LoadMatrix(Display * pDpy, Window root, XDCCC_Matrix * pMatrix) { - int count; - unsigned long *pCard32; - unsigned long Card32Array[18]; + int count; + unsigned long *pCard32; + unsigned long Card32Array[18]; Atom MatricesAtom; XcmsFloat *pValue; @@ -826,263 +836,292 @@ LoadMatrix(Display *pDpy, Window root, XDCCC_Matrix *pMatrix) * Store the XDCCC_LINEAR_RGB_MATRICES */ pCard32 = Card32Array; - pValue = (XcmsFloat *)pMatrix->XYZtoRGBmatrix; + pValue = (XcmsFloat *) pMatrix->XYZtoRGBmatrix; for (count = 0; count < 9; count++) { - *pCard32++ = (unsigned long) (*pValue++ * (XcmsFloat) XDCCC_NUMBER); + *pCard32++ = (unsigned long) (*pValue++ * (XcmsFloat) XDCCC_NUMBER); } - pValue = (XcmsFloat *)pMatrix->RGBtoXYZmatrix; + pValue = (XcmsFloat *) pMatrix->RGBtoXYZmatrix; for (count = 0; count < 9; count++) { - *pCard32++ = (unsigned long) (*pValue++ * (XcmsFloat) XDCCC_NUMBER); + *pCard32++ = (unsigned long) (*pValue++ * (XcmsFloat) XDCCC_NUMBER); } - MatricesAtom = XInternAtom (pDpy, XDCCC_MATRIX_ATOM_NAME, False); - XChangeProperty (pDpy, root, MatricesAtom, XA_INTEGER, 32, - PropModeReplace, (unsigned char *)Card32Array, 18); + MatricesAtom = XInternAtom(pDpy, XDCCC_MATRIX_ATOM_NAME, False); + XChangeProperty(pDpy, root, MatricesAtom, XA_INTEGER, 32, + PropModeReplace, (unsigned char *) Card32Array, 18); } - static int LoadCorrections(Display *pDpy, Window root, XDCCC_Correction *pCorrection, - int targetFormat) + int targetFormat) { - unsigned char *pCard8; - unsigned char *pCard8Array = (unsigned char *)NULL; - unsigned short *pCard16; - unsigned short *pCard16Array = (unsigned short *)NULL; - unsigned long *pCard32; - unsigned long *pCard32Array = (unsigned long *)NULL; + unsigned char *pCard8; + unsigned char *pCard8Array = NULL; + unsigned short *pCard16; + unsigned short *pCard16Array = NULL; + unsigned long *pCard32; + unsigned long *pCard32Array = NULL; Atom CorrectAtom; - int total; + int total; int i; /* * Store each XDCCC_CORRECTION into XDCCC_LINEAR_RGB_CORRECTION property */ - CorrectAtom = XInternAtom (pDpy, XDCCC_CORRECT_ATOM_NAME, False); + CorrectAtom = XInternAtom(pDpy, XDCCC_CORRECT_ATOM_NAME, False); for (i = 0; pCorrection; i++, pCorrection = pCorrection->next) { - if ((pCorrection->tableType != 0) && (pCorrection->tableType != 1)) { - if (pCorrection->visual_info.visualid) { - fprintf(stderr,"RGB Correction for visualid %ld: Invalid intensity table type %d.\n", - pCorrection->visual_info.visualid, - pCorrection->tableType); - } else { - fprintf(stderr,"Global RGB Correction: Invalid intensity table type %d.\n", - pCorrection->tableType); - } - return(0); - } + if ((pCorrection->tableType != 0) && (pCorrection->tableType != 1)) { + if (pCorrection->visual_info.visualid) { + fprintf(stderr, + "RGB Correction for visualid %ld: Invalid intensity table type %d.\n", + pCorrection->visual_info.visualid, + pCorrection->tableType); + } + else { + fprintf(stderr, + "Global RGB Correction: Invalid intensity table type %d.\n", + pCorrection->tableType); + } + return (0); + } - if (pCorrection->nTables != 1 && pCorrection->nTables != 3) { - if (pCorrection->visual_info.visualid) { - fprintf(stderr,"RGB Correction for visualid %ld: %d invalid number of tables.\n", - pCorrection->visual_info.visualid, - pCorrection->nTables); - } else { - fprintf(stderr,"Global RGB Correction: %d invalid number of tables.\n", - pCorrection->nTables); - } - return(0); - } + if (pCorrection->nTables != 1 && pCorrection->nTables != 3) { + if (pCorrection->visual_info.visualid) { + fprintf(stderr, + "RGB Correction for visualid %ld: %d invalid number of tables.\n", + pCorrection->visual_info.visualid, + pCorrection->nTables); + } + else { + fprintf(stderr, + "Global RGB Correction: %d invalid number of tables.\n", + pCorrection->nTables); + } + return (0); + } - if (pCorrection->nTables == 1) { - if (pCorrection->pRedTbl->nEntries < 2) { - if (pCorrection->visual_info.visualid) { - fprintf(stderr,"RGB Correction for visualid %ld: Illegal number of entries in table\n", - pCorrection->visual_info.visualid); - } else { - fprintf(stderr,"Global RGB Correction: Illegal number of entries in table\n"); - } - return (0); - } - switch (targetFormat) { - case 8: - total = 7 + (pCorrection->pRedTbl->nEntries * - (pCorrection->tableType == 0 ? 2 : 1)); - if ((pCard8 = pCard8Array = (unsigned char *) calloc (total, - sizeof (unsigned char))) == NULL) { - fprintf(stderr,"Unable allocate array of ints\n"); - return (0); - } - *pCard8++ = (pCorrection->visual_info.visualid >> 24) & 0xFF; - *pCard8++ = (pCorrection->visual_info.visualid >> 16) & 0xFF; - *pCard8++ = (pCorrection->visual_info.visualid >> 8) & 0xFF; - *pCard8++ = (pCorrection->visual_info.visualid) & 0xFF; - *pCard8++ = pCorrection->tableType; /* type */ - *pCard8++ = 1; /* number of tables = 1 */ - if (pCorrection->tableType == 0) { - PutTableType0Card8(pCorrection->pRedTbl, &pCard8); - } else { - PutTableType1Card8(pCorrection->pRedTbl, &pCard8); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 8, - i ? PropModeAppend : PropModeReplace, - (unsigned char *)pCard8Array, total); - free(pCard8Array); - break; - case 16: - total = 5 + (pCorrection->pRedTbl->nEntries * - (pCorrection->tableType == 0 ? 2 : 1)); - if ((pCard16 = pCard16Array = (unsigned short *) calloc (total, - sizeof (unsigned short))) == NULL) { - fprintf(stderr,"Unable allocate array of ints\n"); - return (0); - } - *pCard16++ = (pCorrection->visual_info.visualid >> 16) & 0xFFFF; - *pCard16++ = (pCorrection->visual_info.visualid) & 0xFFFF; - *pCard16++ = pCorrection->tableType; /* type */ - *pCard16++ = 1; /* number of tables = 1 */ - if (pCorrection->tableType == 0) { - PutTableType0Card16(pCorrection->pRedTbl, &pCard16); - } else { - PutTableType1Card16(pCorrection->pRedTbl, &pCard16); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 16, - i ? PropModeAppend : PropModeReplace, - (unsigned char *)pCard16Array, total); - free(pCard16Array); - break; - case 32: - total = 4 + (pCorrection->pRedTbl->nEntries * - (pCorrection->tableType == 0 ? 2 : 1)); - if ((pCard32 = pCard32Array = - (unsigned long *) calloc (total, - sizeof (unsigned long))) == NULL) { - fprintf(stderr,"Unable allocate array of ints\n"); - return (0); - } - *pCard32++ = pCorrection->visual_info.visualid; - *pCard32++ = pCorrection->tableType; /* type */ - *pCard32++ = 1; /* number of tables = 1 */ - if (pCorrection->tableType == 0) { - PutTableType0Card32(pCorrection->pRedTbl, &pCard32); - } else { - PutTableType1Card32(pCorrection->pRedTbl, &pCard32); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 32, - i ? PropModeAppend : PropModeReplace, - (unsigned char *)pCard32Array, total); - free(pCard32Array); - break; - default: - if (pCorrection->visual_info.visualid) { - fprintf(stderr,"RGB Correction for visualid %ld: Invalid property format\n", - pCorrection->visual_info.visualid); - } else { - fprintf(stderr,"Global RGB Correction: Invalid property format\n"); - } - return (0); - } - } else { /* pCorrection->nTables == 3 */ - if ((pCorrection->pRedTbl->nEntries < 2) || - (pCorrection->pGreenTbl->nEntries < 2) || - (pCorrection->pBlueTbl->nEntries < 2)) { - if (pCorrection->visual_info.visualid) { - fprintf(stderr,"RGB Correction for visualid %ld: Illegal number of entries in table\n", - pCorrection->visual_info.visualid); - } else { - fprintf(stderr,"Global RGB Correction: Illegal number of entries in table\n"); - } - return (0); - } - switch (targetFormat) { - case 8: - total = 9 + /* visualID, type, and 3 lengths */ - (pCorrection->pRedTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)) + - (pCorrection->pGreenTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)) + - (pCorrection->pBlueTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)); - if ((pCard8 = pCard8Array = - (unsigned char *) calloc (total, - sizeof (unsigned char))) == NULL) { - fprintf(stderr,"Unable allocate array of ints\n"); - return (0); - } - *pCard8++ = (pCorrection->visual_info.visualid >> 24) & 0xFF; - *pCard8++ = (pCorrection->visual_info.visualid >> 16) & 0xFF; - *pCard8++ = (pCorrection->visual_info.visualid >> 8) & 0xFF; - *pCard8++ = (pCorrection->visual_info.visualid) & 0xFF; - *pCard8++ = pCorrection->tableType; /* type */ - *pCard8++ = 3; /* number of tables = 3 */ - if (pCorrection->tableType == 0) { - PutTableType0Card8(pCorrection->pRedTbl, &pCard8); - PutTableType0Card8(pCorrection->pGreenTbl, &pCard8); - PutTableType0Card8(pCorrection->pBlueTbl, &pCard8); - } else { - PutTableType1Card8(pCorrection->pRedTbl, &pCard8); - PutTableType1Card8(pCorrection->pGreenTbl, &pCard8); - PutTableType1Card8(pCorrection->pBlueTbl, &pCard8); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 8, - i ? PropModeAppend : PropModeReplace, - (unsigned char *)pCard8Array, total); - free(pCard8Array); - break; - case 16: - total = 7 + /* visualID, type, and 3 lengths */ - (pCorrection->pRedTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)) + - (pCorrection->pGreenTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)) + - (pCorrection->pBlueTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)); - if ((pCard16 = pCard16Array = - (unsigned short *) calloc (total, - sizeof (unsigned short))) == NULL) { - fprintf(stderr,"Unable allocate array of ints\n"); - return (0); - } - *pCard16++ = (pCorrection->visual_info.visualid >> 16) & 0xFFFF; - *pCard16++ = (pCorrection->visual_info.visualid) & 0xFFFF; - *pCard16++ = pCorrection->tableType; /* type = 0 */ - *pCard16++ = 3; /* number of tables = 3 */ - if (pCorrection->tableType == 0) { - PutTableType0Card16(pCorrection->pRedTbl, &pCard16); - PutTableType0Card16(pCorrection->pGreenTbl, &pCard16); - PutTableType0Card16(pCorrection->pBlueTbl, &pCard16); - } else { - PutTableType1Card16(pCorrection->pRedTbl, &pCard16); - PutTableType1Card16(pCorrection->pGreenTbl, &pCard16); - PutTableType1Card16(pCorrection->pBlueTbl, &pCard16); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 16, - i ? PropModeAppend : PropModeReplace, - (unsigned char *)pCard16Array, total); - free(pCard16Array); - break; - case 32: - total = 6 + /* visualID, type, and 3 lengths */ - (pCorrection->pRedTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)) + - (pCorrection->pGreenTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)) + - (pCorrection->pBlueTbl->nEntries * (pCorrection->tableType == 0 ? 2 : 1)); - if ((pCard32 = pCard32Array = - (unsigned long *) calloc (total, - sizeof (unsigned long))) == NULL) { - fprintf(stderr,"Unable allocate array of ints\n"); - return (0); - } - *pCard32++ = pCorrection->visual_info.visualid; - *pCard32++ = pCorrection->tableType; /* type */ - *pCard32++ = 3; /* number of tables = 3 */ - if (pCorrection->tableType == 0) { - PutTableType0Card32(pCorrection->pRedTbl, &pCard32); - PutTableType0Card32(pCorrection->pGreenTbl, &pCard32); - PutTableType0Card32(pCorrection->pBlueTbl, &pCard32); - } else { - PutTableType1Card32(pCorrection->pRedTbl, &pCard32); - PutTableType1Card32(pCorrection->pGreenTbl, &pCard32); - PutTableType1Card32(pCorrection->pBlueTbl, &pCard32); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 32, - i ? PropModeAppend : PropModeReplace, - (unsigned char *)pCard32Array, total); - free(pCard32Array); - break; - default: - if (pCorrection->visual_info.visualid) { - fprintf(stderr,"RGB Correction for visualid %ld: Invalid property format\n", - pCorrection->visual_info.visualid); - } else { - fprintf(stderr,"Global RGB Correction: Invalid property format\n"); - } - return (0); - } - } + if (pCorrection->nTables == 1) { + if (pCorrection->pRedTbl->nEntries < 2) { + if (pCorrection->visual_info.visualid) { + fprintf(stderr, + "RGB Correction for visualid %ld: Illegal number of entries in table\n", + pCorrection->visual_info.visualid); + } + else { + fprintf(stderr, + "Global RGB Correction: Illegal number of entries in table\n"); + } + return (0); + } + switch (targetFormat) { + case 8: + total = 7 + (pCorrection->pRedTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)); + pCard8 = pCard8Array = calloc(total, sizeof(unsigned char)); + if (pCard8 == NULL) { + fprintf(stderr, "Unable allocate array of ints\n"); + return (0); + } + *pCard8++ = (pCorrection->visual_info.visualid >> 24) & 0xFF; + *pCard8++ = (pCorrection->visual_info.visualid >> 16) & 0xFF; + *pCard8++ = (pCorrection->visual_info.visualid >> 8) & 0xFF; + *pCard8++ = (pCorrection->visual_info.visualid) & 0xFF; + *pCard8++ = pCorrection->tableType; /* type */ + *pCard8++ = 1; /* number of tables = 1 */ + if (pCorrection->tableType == 0) { + PutTableType0Card8(pCorrection->pRedTbl, &pCard8); + } + else { + PutTableType1Card8(pCorrection->pRedTbl, &pCard8); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 8, + i ? PropModeAppend : PropModeReplace, + (unsigned char *) pCard8Array, total); + free(pCard8Array); + break; + case 16: + total = 5 + (pCorrection->pRedTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)); + pCard16 = pCard16Array = calloc(total, sizeof (unsigned short)); + if (pCard16 == NULL) { + fprintf(stderr, "Unable allocate array of ints\n"); + return (0); + } + *pCard16++ = (pCorrection->visual_info.visualid >> 16) & 0xFFFF; + *pCard16++ = (pCorrection->visual_info.visualid) & 0xFFFF; + *pCard16++ = pCorrection->tableType; /* type */ + *pCard16++ = 1; /* number of tables = 1 */ + if (pCorrection->tableType == 0) { + PutTableType0Card16(pCorrection->pRedTbl, &pCard16); + } + else { + PutTableType1Card16(pCorrection->pRedTbl, &pCard16); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 16, + i ? PropModeAppend : PropModeReplace, + (unsigned char *) pCard16Array, total); + free(pCard16Array); + break; + case 32: + total = 4 + (pCorrection->pRedTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)); + pCard32 = pCard32Array = calloc(total, sizeof(unsigned long)); + if (pCard32 == NULL) { + fprintf(stderr, "Unable allocate array of ints\n"); + return (0); + } + *pCard32++ = pCorrection->visual_info.visualid; + *pCard32++ = pCorrection->tableType; /* type */ + *pCard32++ = 1; /* number of tables = 1 */ + if (pCorrection->tableType == 0) { + PutTableType0Card32(pCorrection->pRedTbl, &pCard32); + } + else { + PutTableType1Card32(pCorrection->pRedTbl, &pCard32); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 32, + i ? PropModeAppend : PropModeReplace, + (unsigned char *) pCard32Array, total); + free(pCard32Array); + break; + default: + if (pCorrection->visual_info.visualid) { + fprintf(stderr, + "RGB Correction for visualid %ld: Invalid property format\n", + pCorrection->visual_info.visualid); + } + else { + fprintf(stderr, + "Global RGB Correction: Invalid property format\n"); + } + return (0); + } + } + else { /* pCorrection->nTables == 3 */ + if ((pCorrection->pRedTbl->nEntries < 2) || + (pCorrection->pGreenTbl->nEntries < 2) || + (pCorrection->pBlueTbl->nEntries < 2)) { + if (pCorrection->visual_info.visualid) { + fprintf(stderr, + "RGB Correction for visualid %ld: Illegal number of entries in table\n", + pCorrection->visual_info.visualid); + } + else { + fprintf(stderr, + "Global RGB Correction: Illegal number of entries in table\n"); + } + return (0); + } + switch (targetFormat) { + case 8: + total = 9 + /* visualID, type, and 3 lengths */ + (pCorrection->pRedTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)) + + (pCorrection->pGreenTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)) + + (pCorrection->pBlueTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)); + pCard8 = pCard8Array = calloc(total, sizeof(unsigned char)); + if (pCard8 == NULL) { + fprintf(stderr, "Unable allocate array of ints\n"); + return (0); + } + *pCard8++ = (pCorrection->visual_info.visualid >> 24) & 0xFF; + *pCard8++ = (pCorrection->visual_info.visualid >> 16) & 0xFF; + *pCard8++ = (pCorrection->visual_info.visualid >> 8) & 0xFF; + *pCard8++ = (pCorrection->visual_info.visualid) & 0xFF; + *pCard8++ = pCorrection->tableType; /* type */ + *pCard8++ = 3; /* number of tables = 3 */ + if (pCorrection->tableType == 0) { + PutTableType0Card8(pCorrection->pRedTbl, &pCard8); + PutTableType0Card8(pCorrection->pGreenTbl, &pCard8); + PutTableType0Card8(pCorrection->pBlueTbl, &pCard8); + } + else { + PutTableType1Card8(pCorrection->pRedTbl, &pCard8); + PutTableType1Card8(pCorrection->pGreenTbl, &pCard8); + PutTableType1Card8(pCorrection->pBlueTbl, &pCard8); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 8, + i ? PropModeAppend : PropModeReplace, + (unsigned char *) pCard8Array, total); + free(pCard8Array); + break; + case 16: + total = 7 + /* visualID, type, and 3 lengths */ + (pCorrection->pRedTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)) + + (pCorrection->pGreenTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)) + + (pCorrection->pBlueTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)); + pCard16 = pCard16Array = calloc(total, sizeof(unsigned short)); + if (pCard16 == NULL) { + fprintf(stderr, "Unable allocate array of ints\n"); + return (0); + } + *pCard16++ = (pCorrection->visual_info.visualid >> 16) & 0xFFFF; + *pCard16++ = (pCorrection->visual_info.visualid) & 0xFFFF; + *pCard16++ = pCorrection->tableType; /* type = 0 */ + *pCard16++ = 3; /* number of tables = 3 */ + if (pCorrection->tableType == 0) { + PutTableType0Card16(pCorrection->pRedTbl, &pCard16); + PutTableType0Card16(pCorrection->pGreenTbl, &pCard16); + PutTableType0Card16(pCorrection->pBlueTbl, &pCard16); + } + else { + PutTableType1Card16(pCorrection->pRedTbl, &pCard16); + PutTableType1Card16(pCorrection->pGreenTbl, &pCard16); + PutTableType1Card16(pCorrection->pBlueTbl, &pCard16); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 16, + i ? PropModeAppend : PropModeReplace, + (unsigned char *) pCard16Array, total); + free(pCard16Array); + break; + case 32: + total = 6 + /* visualID, type, and 3 lengths */ + (pCorrection->pRedTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)) + + (pCorrection->pGreenTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)) + + (pCorrection->pBlueTbl->nEntries * + (pCorrection->tableType == 0 ? 2 : 1)); + pCard32 = pCard32Array = calloc(total, sizeof(unsigned long)); + if (pCard32 == NULL) { + fprintf(stderr, "Unable allocate array of ints\n"); + return (0); + } + *pCard32++ = pCorrection->visual_info.visualid; + *pCard32++ = pCorrection->tableType; /* type */ + *pCard32++ = 3; /* number of tables = 3 */ + if (pCorrection->tableType == 0) { + PutTableType0Card32(pCorrection->pRedTbl, &pCard32); + PutTableType0Card32(pCorrection->pGreenTbl, &pCard32); + PutTableType0Card32(pCorrection->pBlueTbl, &pCard32); + } + else { + PutTableType1Card32(pCorrection->pRedTbl, &pCard32); + PutTableType1Card32(pCorrection->pGreenTbl, &pCard32); + PutTableType1Card32(pCorrection->pBlueTbl, &pCard32); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 32, + i ? PropModeAppend : PropModeReplace, + (unsigned char *) pCard32Array, total); + free(pCard32Array); + break; + default: + if (pCorrection->visual_info.visualid) { + fprintf(stderr, + "RGB Correction for visualid %ld: Invalid property format\n", + pCorrection->visual_info.visualid); + } + else { + fprintf(stderr, + "Global RGB Correction: Invalid property format\n"); + } + return (0); + } + } } return (1); @@ -1092,19 +1131,19 @@ LoadCorrections(Display *pDpy, Window root, XDCCC_Correction *pCorrection, static int LoadDataGray(Display *pDpy, window root, int tableType, - LINEAR_RGB_SCCData *pScreenData, int targetFormat) + LINEAR_RGB_SCCData *pScreenData, int targetFormat) { unsigned char *ret_prop; - int count; - int nLevels; - unsigned char *pCard8; - unsigned char *pCard8Array = (unsigned char *)NULL; - unsigned short *pCard16; - unsigned short *pCard16Array = (unsigned short *)NULL; - unsigned long *pCard32; - unsigned long *pCard32Array = (unsigned long *)NULL; - unsigned long Card32Array[18]; - int ret_format; + int count; + int nLevels; + unsigned char *pCard8; + unsigned char *pCard8Array = NULL; + unsigned short *pCard16; + unsigned short *pCard16Array = NULL; + unsigned long *pCard32; + unsigned long *pCard32Array = NULL; + unsigned long Card32Array[18]; + int ret_format; unsigned long ret_len, ret_after; Atom MatricesAtom, CorrectAtom, ret_atom; XcmsFloat *pValue; @@ -1112,152 +1151,150 @@ LoadDataGray(Display *pDpy, window root, int tableType, /* Now store the XDCCC_SCREENWHITEPT */ pCard32 = Card32Array; - pValue = (XcmsFloat *)pScreenData->XYZtoRGBmatrix; + pValue = (XcmsFloat *) pScreenData->XYZtoRGBmatrix; for (count = 0; count < 3; count++) { - *pCard32++ = (unsigned long) (*pValue++ * (XcmsFloat) XDCCC_NUMBER); + *pCard32++ = (unsigned long) (*pValue++ * (XcmsFloat) XDCCC_NUMBER); } - MatricesAtom = XInternAtom (pDpy,XDCCC_SCREENWHITEPT_ATOM_NAME,False); - XChangeProperty (pDpy, root, MatricesAtom, XA_INTEGER, 32, - PropModeReplace, (unsigned char *)Card32Array, 3); + MatricesAtom = XInternAtom(pDpy, XDCCC_SCREENWHITEPT_ATOM_NAME, False); + XChangeProperty(pDpy, root, MatricesAtom, XA_INTEGER, 32, + PropModeReplace, (unsigned char *) Card32Array, 3); /* Now store the XDCCC_GRAY_CORRECTION */ - CorrectAtom = XInternAtom (pDpy, XDCCC_GRAY_CORRECT_ATOM_NAME, False); + CorrectAtom = XInternAtom(pDpy, XDCCC_GRAY_CORRECT_ATOM_NAME, False); if (tableType == CORR_TYPE_NONE) { - XGetWindowProperty (pDpy, root, CorrectAtom, - 0, 5, False, XA_INTEGER, - &ret_atom, &ret_format, &ret_len, &ret_after, - &ret_prop); - if (ret_format != 0) { - XDeleteProperty (pDpy, root, CorrectAtom); - XFree ((char *)ret_prop); - } - return (1); + XGetWindowProperty(pDpy, root, CorrectAtom, + 0, 5, False, XA_INTEGER, + &ret_atom, &ret_format, &ret_len, &ret_after, + &ret_prop); + if (ret_format != 0) { + XDeleteProperty(pDpy, root, CorrectAtom); + XFree(ret_prop); + } + return (1); } nLevels = pScreenData->pRedTbl->nEntries; if (nLevels < 2) { - fprintf(stderr,"Illegal number of entries in table\n"); - return (0); + fprintf(stderr, "Illegal number of entries in table\n"); + return (0); } switch (targetFormat) { - case 8: - total = 6 /* visualID, type, length */ - + (nLevels * (tableType == 0 ? 2 : 1)); - if ((pCard8 = pCard8Array = (unsigned char *) - calloc (total, sizeof (unsigned char))) == NULL) { - fprintf(stderr,"Unable allocate array of Card8\n"); - return (0); - } - *pCard8++ = 0; /* VisualID = 0 */ - *pCard8++ = 0; /* VisualID = 0 */ - *pCard8++ = 0; /* VisualID = 0 */ - *pCard8++ = 0; /* VisualID = 0 */ - *pCard8++ = tableType; /* type */ - if (tableType == 0) { - PutTableType0Card8(pScreenData->pRedTbl, &pCard8); - } else { /* tableType == 1 */ - PutTableType1Card8(pScreenData->pRedTbl, &pCard8); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 8, - PropModeReplace, (unsigned char *)pCard8Array, - total); - free (pCard8Array); - break; - case 16: - total = 4 /* visualID, type, length */ - + (nLevels * (tableType == 0 ? 2 : 1)); - if ((pCard16 = pCard16Array = (unsigned short *) - calloc (total, sizeof (unsigned short))) == NULL) { - fprintf(stderr,"Unable allocate array of Card16\n"); - return (0); - } - *pCard16++ = 0; /* VisualID = 0 */ - *pCard16++ = 0; /* VisualID = 0 */ - *pCard16++ = tableType; /* type */ - if (tableType == 0) { - PutTableType0Card16(pScreenData->pRedTbl, &pCard16); - } else { /* tableType == 1 */ - PutTableType1Card16(pScreenData->pRedTbl, &pCard16); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 16, - PropModeReplace, (unsigned char *)pCard16Array, - total); - free (pCard16Array); - break; - case 32: - total = 3 /* visualID, type, length */ - + (nLevels * (tableType == 0 ? 2 : 1)); - if ((pCard32 = pCard32Array = (unsigned long *) - calloc (total, sizeof (unsigned long))) == NULL) { - fprintf(stderr,"Unable allocate array of Card32\n"); - return (0); - } - *pCard32++ = 0; /* VisualID = 0 */ - *pCard32++ = tableType; /* type */ - if (tableType == 0) { - PutTableType0Card32(pScreenData->pRedTbl, &pCard32); - } else { /* tableType == 1 */ - PutTableType1Card32(pScreenData->pRedTbl, &pCard32); - } - XChangeProperty (pDpy, root, CorrectAtom, XA_INTEGER, 32, - PropModeReplace, (unsigned char *)pCard32Array, - total); - free (pCard32Array); - break; - default: - fprintf(stderr,"Invalid property format\n"); - return (0); + case 8: + total = 6 /* visualID, type, length */ + + (nLevels * (tableType == 0 ? 2 : 1)); + pCard8 = pCard8Array = calloc(total, sizeof(unsigned char)); + if (pCard8 == NULL) { + fprintf(stderr, "Unable allocate array of Card8\n"); + return (0); + } + *pCard8++ = 0; /* VisualID = 0 */ + *pCard8++ = 0; /* VisualID = 0 */ + *pCard8++ = 0; /* VisualID = 0 */ + *pCard8++ = 0; /* VisualID = 0 */ + *pCard8++ = tableType; /* type */ + if (tableType == 0) { + PutTableType0Card8(pScreenData->pRedTbl, &pCard8); + } + else { /* tableType == 1 */ + PutTableType1Card8(pScreenData->pRedTbl, &pCard8); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 8, + PropModeReplace, (unsigned char *) pCard8Array, total); + free(pCard8Array); + break; + case 16: + total = 4 /* visualID, type, length */ + + (nLevels * (tableType == 0 ? 2 : 1)); + pCard16 = pCard16Array = calloc(total, sizeof(unsigned short)); + if (pCard16 == NULL) { + fprintf(stderr, "Unable allocate array of Card16\n"); + return (0); + } + *pCard16++ = 0; /* VisualID = 0 */ + *pCard16++ = 0; /* VisualID = 0 */ + *pCard16++ = tableType; /* type */ + if (tableType == 0) { + PutTableType0Card16(pScreenData->pRedTbl, &pCard16); + } + else { /* tableType == 1 */ + PutTableType1Card16(pScreenData->pRedTbl, &pCard16); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 16, + PropModeReplace, (unsigned char *) pCard16Array, total); + free(pCard16Array); + break; + case 32: + total = 3 /* visualID, type, length */ + + (nLevels * (tableType == 0 ? 2 : 1)); + pCard32 = pCard32Array = calloc(total, sizeof(unsigned long)); + if ((pCard32 == NULL) { + fprintf(stderr, "Unable allocate array of Card32\n"); + return (0); + } + *pCard32++ = 0; /* VisualID = 0 */ + *pCard32++ = tableType; /* type */ + if (tableType == 0) { + PutTableType0Card32(pScreenData->pRedTbl, &pCard32); + } + else { /* tableType == 1 */ + PutTableType1Card32(pScreenData->pRedTbl, &pCard32); + } + XChangeProperty(pDpy, root, CorrectAtom, XA_INTEGER, 32, + PropModeReplace, (unsigned char *) pCard32Array, total); + free(pCard32Array); + break; + default: + fprintf(stderr, "Invalid property format\n"); + return (0); } return (1); } -#endif /* GRAY */ - +#endif /* GRAY */ static void -PrintVisualOptions(XDCCC_Correction *pCorrection) +PrintVisualOptions(XDCCC_Correction * pCorrection) { if (pCorrection->visual_info_mask & VisualIDMask) { - fprintf(stderr, "\t%s:0x%lx\n", - DefineToStr(VisualOptKeyTbl, KEY_VISUALID), - (unsigned long)pCorrection->visual_info.visualid); + fprintf(stderr, "\t%s:0x%lx\n", + DefineToStr(VisualOptKeyTbl, KEY_VISUALID), + (unsigned long) pCorrection->visual_info.visualid); } if (pCorrection->visual_info_mask & VisualDepthMask) { - fprintf(stderr, "\t%s:%d\n", - DefineToStr(VisualOptKeyTbl, KEY_DEPTH), - pCorrection->visual_info.depth); + fprintf(stderr, "\t%s:%d\n", + DefineToStr(VisualOptKeyTbl, KEY_DEPTH), + pCorrection->visual_info.depth); } if (pCorrection->visual_info_mask & VisualClassMask) { - fprintf(stderr, "\t%s:%s\n", - DefineToStr(VisualOptKeyTbl, KEY_CLASS), - DefineToStr(VisualClassTbl, pCorrection->visual_info.class)); + fprintf(stderr, "\t%s:%s\n", + DefineToStr(VisualOptKeyTbl, KEY_CLASS), + DefineToStr(VisualClassTbl, pCorrection->visual_info.class)); } if (pCorrection->visual_info_mask & VisualRedMaskMask) { - fprintf(stderr, "\t%s:0x%lx\n", - DefineToStr(VisualOptKeyTbl, KEY_RED_MASK), - pCorrection->visual_info.red_mask); + fprintf(stderr, "\t%s:0x%lx\n", + DefineToStr(VisualOptKeyTbl, KEY_RED_MASK), + pCorrection->visual_info.red_mask); } if (pCorrection->visual_info_mask & VisualGreenMaskMask) { - fprintf(stderr, "\t%s:0x%lx\n", - DefineToStr(VisualOptKeyTbl, KEY_GREEN_MASK), - pCorrection->visual_info.green_mask); + fprintf(stderr, "\t%s:0x%lx\n", + DefineToStr(VisualOptKeyTbl, KEY_GREEN_MASK), + pCorrection->visual_info.green_mask); } if (pCorrection->visual_info_mask & VisualBlueMaskMask) { - fprintf(stderr, "\t%s:0x%lx\n", - DefineToStr(VisualOptKeyTbl, KEY_BLUE_MASK), - pCorrection->visual_info.blue_mask); + fprintf(stderr, "\t%s:0x%lx\n", + DefineToStr(VisualOptKeyTbl, KEY_BLUE_MASK), + pCorrection->visual_info.blue_mask); } if (pCorrection->visual_info_mask & VisualColormapSizeMask) { - fprintf(stderr, "\t%s:0x%x\n", - DefineToStr(VisualOptKeyTbl, KEY_COLORMAP_SIZE), - pCorrection->visual_info.colormap_size); + fprintf(stderr, "\t%s:0x%x\n", + DefineToStr(VisualOptKeyTbl, KEY_COLORMAP_SIZE), + pCorrection->visual_info.colormap_size); } if (pCorrection->visual_info_mask & VisualBitsPerRGBMask) { - fprintf(stderr, "\t%s:%d\n", - DefineToStr(VisualOptKeyTbl, KEY_BITS_PER_RGB), - pCorrection->visual_info.bits_per_rgb); + fprintf(stderr, "\t%s:%d\n", + DefineToStr(VisualOptKeyTbl, KEY_BITS_PER_RGB), + pCorrection->visual_info.bits_per_rgb); } } - static int ParseVisualOptions(Display *pDpy, XDCCC_Correction *pCorrection, char *pbuf) @@ -1273,131 +1310,136 @@ ParseVisualOptions(Display *pDpy, XDCCC_Correction *pCorrection, char *pbuf) pCorrection->visual_info_mask = VisualNoMask; key = strtok(pbuf, delims); do { - long tmp; - value = strtok((char*)NULL, delims); - if ((key == (char*)NULL) || (value == (char*)NULL)) { - return (0); - } - switch (StrToDefine(VisualOptKeyTbl, key)) { - case KEY_VISUALID: - if (sscanf(value, "%li", &tmp) != 1) { - fprintf(stderr, - "Line %d: invalid VisualID specified, %s\n", - linenum, value); - return (0); - } else - pCorrection->visual_info.visualid = tmp; - pCorrection->visual_info_mask |= VisualIDMask; - break; - case KEY_DEPTH: - if (sscanf(value, "%i", &pCorrection->visual_info.depth) != 1) { - fprintf(stderr, - "Line %d: invalid depth specified, %s\n", - linenum, value); - return (0); - } - pCorrection->visual_info_mask |= VisualDepthMask; - break; - case KEY_CLASS: - switch (pCorrection->visual_info.class = - StrToDefine(VisualClassTbl, value)) { - case StaticColor: - break; - case PseudoColor: - break; - case TrueColor: - break; - case DirectColor: - break; - case StaticGray: - /* invalid, fall through */ - case GrayScale: - /* invalid, fall through */ - default: - fprintf(stderr, - "Line %d: invalid Visual Class -- %s\n", - linenum, value); - return (0); - } - pCorrection->visual_info_mask |= VisualClassMask; - break; - case KEY_RED_MASK: - if (sscanf(value, "%li", &tmp) != 1) { - fprintf(stderr, - "Line %d: invalid red_mask specified -- %s\n", - linenum, value); - return (0); - } else - pCorrection->visual_info.red_mask = tmp; - pCorrection->visual_info_mask |= VisualRedMaskMask; - break; - case KEY_GREEN_MASK: - if (sscanf(value, "%li", &tmp) != 1) { - fprintf(stderr, - "Line %d: invalid green_mask specified -- %s\n", - linenum, value); - return (0); - } else - pCorrection->visual_info.green_mask = tmp; - pCorrection->visual_info_mask |= VisualGreenMaskMask; - break; - case KEY_BLUE_MASK: - if (sscanf(value, "%li", &tmp) != 1) { - fprintf(stderr, - "Line %d: invalid blue_mask specified -- %s\n", - linenum, value); - return (0); - } else - pCorrection->visual_info.blue_mask = tmp; - pCorrection->visual_info_mask |= VisualBlueMaskMask; - break; - case KEY_COLORMAP_SIZE: - if (sscanf(value, "%i", &pCorrection->visual_info.colormap_size) != 1) { - fprintf(stderr, - "Line %d: invalid colormap_size specified -- %s\n", - linenum, value); - return (0); - } - pCorrection->visual_info_mask |= VisualColormapSizeMask; - break; - case KEY_BITS_PER_RGB: - if (sscanf(value, "%i", &pCorrection->visual_info.bits_per_rgb) != 1) { - fprintf(stderr, - "Line %d: invalid bits_per_rgb specified -- %s\n", - linenum, value); - return (0); - } - pCorrection->visual_info_mask |= VisualBitsPerRGBMask; - break; - default: - fprintf(stderr, - "Line %d: invalid keyword %s\n", linenum, key); - return (0); - } - key = strtok((char*)NULL, delims); - } while (key != (char *)NULL); + long tmp; + + value = strtok(NULL, delims); + if ((key == NULL) || (value == NULL)) { + return (0); + } + switch (StrToDefine(VisualOptKeyTbl, key)) { + case KEY_VISUALID: + if (sscanf(value, "%li", &tmp) != 1) { + fprintf(stderr, + "Line %d: invalid VisualID specified, %s\n", + linenum, value); + return (0); + } + else + pCorrection->visual_info.visualid = tmp; + pCorrection->visual_info_mask |= VisualIDMask; + break; + case KEY_DEPTH: + if (sscanf(value, "%i", &pCorrection->visual_info.depth) != 1) { + fprintf(stderr, + "Line %d: invalid depth specified, %s\n", + linenum, value); + return (0); + } + pCorrection->visual_info_mask |= VisualDepthMask; + break; + case KEY_CLASS: + switch (pCorrection->visual_info.class = + StrToDefine(VisualClassTbl, value)) { + case StaticColor: + break; + case PseudoColor: + break; + case TrueColor: + break; + case DirectColor: + break; + case StaticGray: + /* invalid, fall through */ + case GrayScale: + /* invalid, fall through */ + default: + fprintf(stderr, + "Line %d: invalid Visual Class -- %s\n", + linenum, value); + return (0); + } + pCorrection->visual_info_mask |= VisualClassMask; + break; + case KEY_RED_MASK: + if (sscanf(value, "%li", &tmp) != 1) { + fprintf(stderr, + "Line %d: invalid red_mask specified -- %s\n", + linenum, value); + return (0); + } + else + pCorrection->visual_info.red_mask = tmp; + pCorrection->visual_info_mask |= VisualRedMaskMask; + break; + case KEY_GREEN_MASK: + if (sscanf(value, "%li", &tmp) != 1) { + fprintf(stderr, + "Line %d: invalid green_mask specified -- %s\n", + linenum, value); + return (0); + } + else + pCorrection->visual_info.green_mask = tmp; + pCorrection->visual_info_mask |= VisualGreenMaskMask; + break; + case KEY_BLUE_MASK: + if (sscanf(value, "%li", &tmp) != 1) { + fprintf(stderr, + "Line %d: invalid blue_mask specified -- %s\n", + linenum, value); + return (0); + } + else + pCorrection->visual_info.blue_mask = tmp; + pCorrection->visual_info_mask |= VisualBlueMaskMask; + break; + case KEY_COLORMAP_SIZE: + if (sscanf(value, "%i", &pCorrection->visual_info.colormap_size) != + 1) { + fprintf(stderr, + "Line %d: invalid colormap_size specified -- %s\n", + linenum, value); + return (0); + } + pCorrection->visual_info_mask |= VisualColormapSizeMask; + break; + case KEY_BITS_PER_RGB: + if (sscanf(value, "%i", &pCorrection->visual_info.bits_per_rgb) != + 1) { + fprintf(stderr, + "Line %d: invalid bits_per_rgb specified -- %s\n", + linenum, value); + return (0); + } + pCorrection->visual_info_mask |= VisualBitsPerRGBMask; + break; + default: + fprintf(stderr, "Line %d: invalid keyword %s\n", linenum, key); + return (0); + } + key = strtok(NULL, delims); + } while (key != NULL); vinfo = XGetVisualInfo(pDpy, - pCorrection->visual_info_mask, - &pCorrection->visual_info, - &n_matches); + pCorrection->visual_info_mask, + &pCorrection->visual_info, &n_matches); if (!n_matches) { - fprintf(stderr, "Line %d: Cannot find visual matching ...\n", linenum); - PrintVisualOptions(pCorrection); - fprintf(stderr, "\n"); - return(0); + fprintf(stderr, "Line %d: Cannot find visual matching ...\n", linenum); + PrintVisualOptions(pCorrection); + fprintf(stderr, "\n"); + return (0); } if (n_matches > 1) { - fprintf(stderr, "Line %d: Found more than one visual matching ...\n", linenum); - PrintVisualOptions(pCorrection); - fprintf(stderr, " Using VisualId 0x%lx\n", (unsigned long)vinfo->visualid); + fprintf(stderr, "Line %d: Found more than one visual matching ...\n", + linenum); + PrintVisualOptions(pCorrection); + fprintf(stderr, " Using VisualId 0x%lx\n", + (unsigned long) vinfo->visualid); } - memcpy((char*)&pCorrection->visual_info, (char*)vinfo, - sizeof(XVisualInfo)); + memcpy(&pCorrection->visual_info, vinfo, sizeof(XVisualInfo)); return (1); } - /************************************************************************ * * @@ -1430,34 +1472,35 @@ LoadSCCData(Display *pDpy, int screenNumber, const char *filename, char *pStr; char buf[BUFSIZ]; char *keyword, *token1, *token2, *token3; - int state = 0; + int state = 0; int VisualFlag = -2; Window root; XDCCC_Matrix matrix; - XDCCC_Correction* CorrectionTail = (XDCCC_Correction*)NULL; - XDCCC_Correction* CorrectionHead = (XDCCC_Correction*)NULL; - XDCCC_Correction* pCurrent; + XDCCC_Correction *CorrectionTail = NULL; + XDCCC_Correction *CorrectionHead = NULL; + XDCCC_Correction *pCurrent; if (screenNumber < 0) { - fprintf(stderr,"Invalid Screen Number %d\n", screenNumber); - return(0); + fprintf(stderr, "Invalid Screen Number %d\n", screenNumber); + return (0); } root = RootWindow(pDpy, screenNumber); if (!root) { - /* if no root window is available then return an error */ - fprintf(stderr,"Could not open root window supplied.\n "); - return (0); + /* if no root window is available then return an error */ + fprintf(stderr, "Could not open root window supplied.\n "); + return (0); } /* * Open the file, determine its size, then read it into memory. */ if (filename == NULL) { - stream = stdin; - filename = "stdin"; - } else if ((stream = fopen(filename, "r")) == NULL) { - fprintf(stderr,"Could not open file %s.\n", filename); - return (0); + stream = stdin; + filename = "stdin"; + } + else if ((stream = fopen(filename, "r")) == NULL) { + fprintf(stderr, "Could not open file %s.\n", filename); + return (0); } /* @@ -1465,267 +1508,281 @@ LoadSCCData(Display *pDpy, int screenNumber, const char *filename, * Anything before this keyword is just treated as comments. */ - while((pStr = nextline(buf, BUFSIZ, stream)) != NULL) { - keyword = strtok(buf, DATA_DELIMS); - if (keyword != (char *)NULL && - (strcmp(keyword, SC_BEGIN_KEYWORD) == 0)) { - break; - } /* else ignore the line */ + while ((pStr = nextline(buf, BUFSIZ, stream)) != NULL) { + keyword = strtok(buf, DATA_DELIMS); + if (keyword != NULL && + (strcmp(keyword, SC_BEGIN_KEYWORD) == 0)) { + break; + } /* else ignore the line */ } if (pStr == NULL) { - fprintf(stderr,"File %s is missing %s\n", filename, SC_BEGIN_KEYWORD); - closeS (stream, CorrectionHead); - return (0); + fprintf(stderr, "File %s is missing %s\n", filename, SC_BEGIN_KEYWORD); + closeS(stream, CorrectionHead); + return (0); } - token1 = strtok((char*)NULL, DATA_DELIMS); - if ( token1 && (strcmp(token1, TXT_FORMAT_VERSION) != 0) && - (strcmp(token1, "0.3") != 0)) { - fprintf(stderr, - "Screen data format version mismatch in file %s-- expected %s, found %s\n", - filename, TXT_FORMAT_VERSION, token1); - closeS (stream, CorrectionHead); - return (0); + token1 = strtok(NULL, DATA_DELIMS); + if (token1 && (strcmp(token1, TXT_FORMAT_VERSION) != 0) && + (strcmp(token1, "0.3") != 0)) { + fprintf(stderr, + "Screen data format version mismatch in file %s-- expected %s, found %s\n", + filename, TXT_FORMAT_VERSION, token1); + closeS(stream, CorrectionHead); + return (0); } while ((pStr = nextline(buf, BUFSIZ, stream)) != NULL) { - keyword = strtok(buf, DATA_DELIMS); - if (keyword != (char*)NULL) { - switch (SCKeyOf(keyword)) { - case COMMENT : - case NAME : - case PART_NUMBER : - case MODEL : - case SERIAL_NUMBER : - case REVISION : - /* Do nothing */ - break; - case SCREEN_CLASS : - token1 = strtok((char*)NULL, DATA_DELIMS); - token2 = strtok((char*)NULL, DATA_DELIMS); - if ((token1 == (char*)NULL) - || ((VisualFlag = SCScrnClassOf(token1)) == -1)) { - closeS (stream, CorrectionHead); - return (0); - } - /*include code to handle screen number input*/ - if (token2 != (char*)NULL) { - screenNumber = atoi(token2); + keyword = strtok(buf, DATA_DELIMS); + if (keyword != NULL) { + switch (SCKeyOf(keyword)) { + case COMMENT: + case NAME: + case PART_NUMBER: + case MODEL: + case SERIAL_NUMBER: + case REVISION: + /* Do nothing */ + break; + case SCREEN_CLASS: + token1 = strtok(NULL, DATA_DELIMS); + token2 = strtok(NULL, DATA_DELIMS); + if ((token1 == NULL) + || ((VisualFlag = SCScrnClassOf(token1)) == -1)) { + closeS(stream, CorrectionHead); + return (0); + } + /*include code to handle screen number input */ + if (token2 != NULL) { + screenNumber = atoi(token2); - if (screenNumber < 0) { - fprintf(stderr,"Invalid Screen Number %d\n", - screenNumber); - } - else { - root = RootWindow(pDpy, screenNumber); - if (!root) { - /* if no root window is available then return an error */ - fprintf(stderr, - "Could not open root window supplied.\n "); - return (0); - } - } - } - break; - case COLORIMETRIC_BEGIN : - if (VisualFlag == -2) { - closeS (stream, CorrectionHead); - return (0); - } - if (!ProcessColorimetric(stream, - &matrix, VisualFlag)) { - closeS (stream, CorrectionHead); - return (0); - } - state |= 0x02; - break; - case IPROFILE_BEGIN : - if (VisualFlag == -2) { - closeS (stream, CorrectionHead); - return (0); - } - token1 = strtok((char*)NULL, DATA_DELIMS); - token2 = strtok((char*)NULL, DATA_DELIMS); - if ((token1 == (char*)NULL) || (token2 == (char*)NULL)) { - fprintf(stderr, - "Line %d: Intensity profile missing TableType and/or nTables.", - linenum); - closeS (stream, CorrectionHead); - return (0); - } + if (screenNumber < 0) { + fprintf(stderr, "Invalid Screen Number %d\n", + screenNumber); + } + else { + root = RootWindow(pDpy, screenNumber); + if (!root) { + /* if no root window is available then return an error */ + fprintf(stderr, + "Could not open root window supplied.\n "); + return (0); + } + } + } + break; + case COLORIMETRIC_BEGIN: + if (VisualFlag == -2) { + closeS(stream, CorrectionHead); + return (0); + } + if (!ProcessColorimetric(stream, &matrix, VisualFlag)) { + closeS(stream, CorrectionHead); + return (0); + } + state |= 0x02; + break; + case IPROFILE_BEGIN: + if (VisualFlag == -2) { + closeS(stream, CorrectionHead); + return (0); + } + token1 = strtok(NULL, DATA_DELIMS); + token2 = strtok(NULL, DATA_DELIMS); + if ((token1 == NULL) || (token2 == NULL)) { + fprintf(stderr, + "Line %d: Intensity profile missing TableType and/or nTables.", + linenum); + closeS(stream, CorrectionHead); + return (0); + } - if ((pCurrent = (XDCCC_Correction *) - calloc(1, sizeof(XDCCC_Correction))) ==NULL) { - fprintf(stderr, - "Line %d: Could not allocate memory for intensity profile.", - linenum); - closeS (stream, CorrectionHead); - return (0); - } + pCurrent = calloc(1, sizeof(XDCCC_Correction)); + if (pCurrent == NULL) { + fprintf(stderr, + "Line %d: Could not allocate memory for intensity profile.", + linenum); + closeS(stream, CorrectionHead); + return (0); + } - if (sscanf(token1, "%d", &pCurrent->tableType) != 1 || - (pCurrent->tableType < 0 || pCurrent->tableType > 1)) { - fprintf(stderr, - "Line %d: invalid table type specified -- %s\n", - linenum, buf); - closeS (stream, CorrectionHead); - return (0); - } + if (sscanf(token1, "%d", &pCurrent->tableType) != 1 || + (pCurrent->tableType < 0 || pCurrent->tableType > 1)) { + fprintf(stderr, + "Line %d: invalid table type specified -- %s\n", + linenum, buf); + closeS(stream, CorrectionHead); + free(pCurrent); + return (0); + } - if ((VisualFlag == VIDEO_RGB) && (token2 == (char *)NULL)) { - fprintf(stderr, - "Line %d: invalid number of tables specified -- %s\n", - linenum, buf); - closeS (stream, CorrectionHead); - return (0); - } + if ((VisualFlag == VIDEO_RGB) && (token2 == NULL)) { + fprintf(stderr, + "Line %d: invalid number of tables specified -- %s\n", + linenum, buf); + closeS(stream, CorrectionHead); + free(pCurrent); + return (0); + } - if (VisualFlag == VIDEO_RGB) { - if (sscanf(token2, "%d", &pCurrent->nTables) != 1 || - (pCurrent->nTables != 0 && pCurrent->nTables != 1 - && pCurrent->nTables != 3)) { - fprintf(stderr, - "Line %d: invalid number of tables (must be 0, 1, or 3)\n", - linenum); - closeS (stream, CorrectionHead); - return (0); - } - } else { - pCurrent->nTables = 0; - } + if (VisualFlag == VIDEO_RGB) { + if (sscanf(token2, "%d", &pCurrent->nTables) != 1 || + (pCurrent->nTables != 0 && pCurrent->nTables != 1 + && pCurrent->nTables != 3)) { + fprintf(stderr, + "Line %d: invalid number of tables (must be 0, 1, or 3)\n", + linenum); + closeS(stream, CorrectionHead); + free(pCurrent); + return (0); + } + } + else { + pCurrent->nTables = 0; + } - token3 = strtok((char*)NULL, "\n"); - if (token3 != (char*)NULL) { - if (!ParseVisualOptions(pDpy, pCurrent, token3)) { - goto ByPassThisIProfile; - } - } + token3 = strtok(NULL, "\n"); + if (token3 != NULL) { + if (!ParseVisualOptions(pDpy, pCurrent, token3)) { + goto ByPassThisIProfile; + } + } - switch (pCurrent->nTables) { - case 3 : - if (!(pCurrent->pRedTbl = (IntensityTbl *) - calloc (1, sizeof (IntensityTbl)))) { - fprintf(stderr, - "Line %d: Could not allocate Red Intensity Table\n", - linenum); - closeS (stream, CorrectionHead); - return (0); - } - if (!(pCurrent->pGreenTbl = (IntensityTbl *) - calloc (1, sizeof (IntensityTbl)))) { - fprintf(stderr, - "Line %d: Could not allocate Green Intensity Table\n", - linenum); - closeS (stream, CorrectionHead); - return (0); - } - if (!(pCurrent->pBlueTbl = (IntensityTbl *) - calloc (1, sizeof (IntensityTbl)))) { - fprintf(stderr, - "Line %d: Could not allocate Blue Intensity Table", - linenum); - closeS (stream, CorrectionHead); - return (0); - } - if (!ProcessIProfile(stream, pCurrent)) { - goto ByPassThisIProfile; - } - break; - case 1 : - if (!(pCurrent->pRedTbl = (IntensityTbl *) - calloc (1, sizeof (IntensityTbl)))) { - fprintf(stderr, - "Line %d: Could not allocate Red Intensity Table", - linenum); - closeS (stream, CorrectionHead); - return (0); - } - pCurrent->pGreenTbl = pCurrent->pRedTbl; - pCurrent->pBlueTbl = pCurrent->pRedTbl; - if (!ProcessIProfile(stream, pCurrent)) { - goto ByPassThisIProfile; - } - break; - default : - /* do nothing */ - break; - } + switch (pCurrent->nTables) { + case 3: + pCurrent->pRedTbl = calloc(1, sizeof(IntensityTbl)); + if (pCurrent->pRedTbl == NULL) { + fprintf(stderr, + "Line %d: Could not allocate Red Intensity Table\n", + linenum); + closeS(stream, CorrectionHead); + free(pCurrent); + return (0); + } + pCurrent->pGreenTbl = calloc(1, sizeof(IntensityTbl)); + if (pCurrent->pGreenTbl == NULL) { + fprintf(stderr, + "Line %d: Could not allocate Green Intensity Table\n", + linenum); + closeS(stream, CorrectionHead); + free(pCurrent->pRedTbl); + free(pCurrent); + return (0); + } + pCurrent->pBlueTbl = calloc(1, sizeof(IntensityTbl)); + if (pCurrent->pBlueTbl == NULL) { + fprintf(stderr, + "Line %d: Could not allocate Blue Intensity Table", + linenum); + closeS(stream, CorrectionHead); + free(pCurrent->pRedTbl); + free(pCurrent->pGreenTbl); + free(pCurrent); + return (0); + } + if (!ProcessIProfile(stream, pCurrent)) { + goto ByPassThisIProfile; + } + break; + case 1: + pCurrent->pRedTbl = calloc(1, sizeof(IntensityTbl)); + if (pCurrent->pRedTbl == NULL) { + fprintf(stderr, + "Line %d: Could not allocate Red Intensity Table", + linenum); + closeS(stream, CorrectionHead); + free(pCurrent); + return (0); + } + pCurrent->pGreenTbl = pCurrent->pRedTbl; + pCurrent->pBlueTbl = pCurrent->pRedTbl; + if (!ProcessIProfile(stream, pCurrent)) { + goto ByPassThisIProfile; + } + break; + default: + /* do nothing */ + break; + } - if (CorrectionHead == NULL) { - CorrectionHead = CorrectionTail = pCurrent; - } else { - CorrectionTail->next = pCurrent; - CorrectionTail = pCurrent; - } - state |= 0x04; - break; -ByPassThisIProfile: - /* read till INTENSITY_PROFILE_END */ - while ((pStr = nextline(buf, BUFSIZ, stream)) != NULL) { - keyword = strtok(buf, DATA_DELIMS); - if (keyword != (char*)NULL) { - switch (SCKeyOf(keyword)) { - case ITBL_BEGIN: - case ITBL_END: - case COMMENT: - case DATA: - break; - case IPROFILE_END: - goto IProfileProcessed; - default: - closeS (stream, CorrectionHead); - return (0); - } - } - } - free(pCurrent); -IProfileProcessed: - state |= 0x04; - break; - case SC_END : - if (!(state & 0x02)) { - fprintf(stderr, - "File %s is missing Colorimetric data.\n", - filename); - closeS (stream, CorrectionHead); - return (0); - } - if (!(state & 0x04)) { - fprintf(stderr, - "File %s is missing Intensity Profile Data.\n", - filename); - } - if (VisualFlag == VIDEO_RGB) { - LoadMatrix(pDpy, root, &matrix); - if (!LoadCorrections(pDpy, root, CorrectionHead, - targetFormat)) { - closeS (stream, CorrectionHead); - return (0); - } + if (CorrectionHead == NULL) { + CorrectionHead = CorrectionTail = pCurrent; + } + else { + CorrectionTail->next = pCurrent; + CorrectionTail = pCurrent; + } + state |= 0x04; + break; + ByPassThisIProfile: + /* read till INTENSITY_PROFILE_END */ + while ((pStr = nextline(buf, BUFSIZ, stream)) != NULL) { + keyword = strtok(buf, DATA_DELIMS); + if (keyword != NULL) { + switch (SCKeyOf(keyword)) { + case ITBL_BEGIN: + case ITBL_END: + case COMMENT: + case DATA: + break; + case IPROFILE_END: + goto IProfileProcessed; + default: + closeS(stream, CorrectionHead); + return (0); + } + } + } + free(pCurrent); + IProfileProcessed: + state |= 0x04; + break; + case SC_END: + if (!(state & 0x02)) { + fprintf(stderr, + "File %s is missing Colorimetric data.\n", + filename); + closeS(stream, CorrectionHead); + return (0); + } + if (!(state & 0x04)) { + fprintf(stderr, + "File %s is missing Intensity Profile Data.\n", + filename); + } + if (VisualFlag == VIDEO_RGB) { + LoadMatrix(pDpy, root, &matrix); + if (!LoadCorrections(pDpy, root, CorrectionHead, + targetFormat)) { + closeS(stream, CorrectionHead); + return (0); + } #ifdef GRAY - } else if (VisualFlag == VIDEO_GRAY) { - if (!LoadDataGray(pDpy, root, - pCurrent->tableType, pScreenData, targetFormat)) { - closeS (stream, CorrectionHead); - return (0); - } -#endif /* GRAY */ - } else { - fprintf(stderr,"File %s Visual missing.", filename); - } - closeS (stream, CorrectionHead); - return (1); + } + else if (VisualFlag == VIDEO_GRAY) { + if (!LoadDataGray(pDpy, root, + pCurrent->tableType, pScreenData, + targetFormat)) { + closeS(stream, CorrectionHead); + return (0); + } +#endif /* GRAY */ + } + else { + fprintf(stderr, "File %s Visual missing.", filename); + } + closeS(stream, CorrectionHead); + return (1); - default : - fprintf(stderr,"Line %d: extraneous keyword %s\n", - linenum, keyword); - closeS (stream, CorrectionHead); - return (0); + default: + fprintf(stderr, "Line %d: extraneous keyword %s\n", + linenum, keyword); + closeS(stream, CorrectionHead); + return (0); - } - } /* else it was just a blank line */ + } + } /* else it was just a blank line */ } - closeS (stream, CorrectionHead); + closeS(stream, CorrectionHead); return (1); } diff --git a/app/xcmsdb/man/Makefile.in b/app/xcmsdb/man/Makefile.in index fd0378969..04551ae6d 100644 --- a/app/xcmsdb/man/Makefile.in +++ b/app/xcmsdb/man/Makefile.in @@ -222,6 +222,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/app/xcmsdb/xcmsdb.c b/app/xcmsdb/xcmsdb.c index b0b52c497..45f852f0c 100644 --- a/app/xcmsdb/xcmsdb.c +++ b/app/xcmsdb/xcmsdb.c @@ -36,7 +36,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -51,39 +51,37 @@ static void QuerySCCDataRGB(Display *dpy, Window root); static void RemoveSCCData(Display *dpy, Window root, int colorFlag); static unsigned long _XcmsGetElement(int format, char **pValue, - unsigned long *pCount); + unsigned long *pCount); static int _XcmsGetProperty(Display *pDpy, Window w, Atom property, - int *pFormat, unsigned long *pNItems, - unsigned long *pNBytes, char **pValue); - + int *pFormat, unsigned long *pNItems, + unsigned long *pNBytes, char **pValue); static char *ProgramName; static void -Syntax (int exitcode) +Syntax(int exitcode) { - fprintf (stderr, - "usage: %s [-options ...] [filename]\n\n%s", - ProgramName, - "where options include:\n" - " -display host:dpy[.scrn] display to use\n" - " -format [ 32 | 16 | 8 ] property format\n" - " -query query Screen Color Characterization Data\n" - " -remove remove Screen Color Characterization Data\n" + fprintf(stderr, + "usage: %s [-options ...] [filename]\n\n%s", + ProgramName, + "where options include:\n" + " -display host:dpy[.scrn] display to use\n" + " -format [ 32 | 16 | 8 ] property format\n" + " -query query Screen Color Characterization Data\n" + " -remove remove Screen Color Characterization Data\n" #ifdef GRAY - " -color use color as default\n"); - " -gray use gray-scale as default\n"); -#endif /* GRAY */ - " -version print program version\n" - "\n"); - exit (exitcode); + " -color use color as default\n" + " -gray use gray-scale as default\n" +#endif /* GRAY */ + " -version print program version\n" "\n"); + exit(exitcode); } static void -MissingArg (const char *option) +MissingArg(const char *option) { - fprintf (stderr, "%s: %s requires an argument\n", ProgramName, option); - Syntax (1); + fprintf(stderr, "%s: %s requires an argument\n", ProgramName, option); + Syntax(1); } static Bool @@ -92,18 +90,18 @@ optionmatch(const char *opt, const char *arg, int minlen) int arglen; if (strcmp(opt, arg) == 0) { - return(True); + return (True); } - if ((arglen = strlen(arg)) >= (int)strlen(opt) || arglen < minlen) { - return(False); + if ((arglen = strlen(arg)) >= (int) strlen(opt) || arglen < minlen) { + return (False); } - if (strncmp (opt, arg, arglen) == 0) { - return(True); + if (strncmp(opt, arg, arglen) == 0) { + return (True); } - return(False); + return (False); } int @@ -122,96 +120,104 @@ main(int argc, char *argv[]) ProgramName = argv[0]; for (i = 1; i < argc; i++) { - char *arg = argv[i]; + char *arg = argv[i]; - if (arg[0] == '-') { - if (arg[1] == '\0') { - filename = NULL; - continue; - } else if (optionmatch ("-help", arg, 1)) { - Syntax (0); - /* doesn't return */ - } else if (optionmatch ("-display", arg, 1)) { - if (++i >= argc) MissingArg ("-display"); - displayname = argv[i]; - continue; - } else if (optionmatch ("-format", arg, 1)) { - if (++i >= argc) MissingArg ("-format"); - targetFormat = atoi(argv[i]); - if (targetFormat != 32 && targetFormat != 16 && - targetFormat != 8) { - fprintf (stderr, "%s: invalid value for -format: %d\n", - ProgramName, targetFormat); - Syntax (1); - } - continue; - } else if (optionmatch ("-query", arg, 1)) { - query = 1; - continue; - } else if (optionmatch ("-remove", arg, 1)) { - remove = 1; - continue; + if (arg[0] == '-') { + if (arg[1] == '\0') { + filename = NULL; + continue; + } + else if (optionmatch("-help", arg, 1)) { + Syntax(0); + /* doesn't return */ + } + else if (optionmatch("-display", arg, 1)) { + if (++i >= argc) + MissingArg("-display"); + displayname = argv[i]; + continue; + } + else if (optionmatch("-format", arg, 1)) { + if (++i >= argc) + MissingArg("-format"); + targetFormat = atoi(argv[i]); + if (targetFormat != 32 && targetFormat != 16 && + targetFormat != 8) { + fprintf(stderr, "%s: invalid value for -format: %d\n", + ProgramName, targetFormat); + Syntax(1); + } + continue; + } + else if (optionmatch("-query", arg, 1)) { + query = 1; + continue; + } + else if (optionmatch("-remove", arg, 1)) { + remove = 1; + continue; #ifdef GRAY - } else if (optionmatch ("-color", arg, 1)) { - color = 1; - continue; - } else if (optionmatch ("-gray", arg, 1)) { - color = 0; - continue; -#endif /* GRAY */ - } else if (optionmatch ("-version", arg, 1)) { - puts (PACKAGE_STRING); - exit (0); - } - fprintf (stderr, "%s: unrecognized option '%s'\n", - ProgramName, arg); - Syntax (1); - } else { - load = 1; - filename = arg; - } + } + else if (optionmatch("-color", arg, 1)) { + color = 1; + continue; + } + else if (optionmatch("-gray", arg, 1)) { + color = 0; + continue; +#endif /* GRAY */ + } + else if (optionmatch("-version", arg, 1)) { + puts(PACKAGE_STRING); + exit(0); + } + fprintf(stderr, "%s: unrecognized option '%s'\n", ProgramName, arg); + Syntax(1); + } + else { + load = 1; + filename = arg; + } } /* Open display */ - if (!(dpy = XOpenDisplay (displayname))) { - fprintf (stderr, "%s: Can't open display '%s'\n", - ProgramName, XDisplayName(displayname)); - exit (1); + if (!(dpy = XOpenDisplay(displayname))) { + fprintf(stderr, "%s: Can't open display '%s'\n", + ProgramName, XDisplayName(displayname)); + exit(1); } if (query || remove) { - load = 0; + load = 0; } if (load) { - LoadSCCData(dpy, DefaultScreen(dpy), filename, targetFormat); + LoadSCCData(dpy, DefaultScreen(dpy), filename, targetFormat); } if (query) { - if (color != 0) - QuerySCCDataRGB(dpy, RootWindow(dpy, DefaultScreen(dpy))); + if (color != 0) + QuerySCCDataRGB(dpy, RootWindow(dpy, DefaultScreen(dpy))); #ifdef GRAY - if (color != 1) - QuerySCCDataGray(dpy, RootWindow(dpy, DefaultScreen(dpy))); + if (color != 1) + QuerySCCDataGray(dpy, RootWindow(dpy, DefaultScreen(dpy))); #endif /* GRAY */ } if (remove) { - RemoveSCCData(dpy, RootWindow(dpy, DefaultScreen(dpy)), color); + RemoveSCCData(dpy, RootWindow(dpy, DefaultScreen(dpy)), color); } XCloseDisplay(dpy); - exit (0); + exit(0); /*NOTREACHED*/ } - static Atom ParseAtom(Display *dpy, const char *name, int only_flag) { - return(XInternAtom(dpy, name, only_flag)); + return (XInternAtom(dpy, name, only_flag)); } - /* * NAME @@ -235,39 +241,38 @@ PrintTableType0(int format, char **pChar, unsigned long *pCount) XcmsFloat fValue; nElements = _XcmsGetElement(format, pChar, pCount) + 1; - printf ("\t length:%d\n", nElements); + printf("\t length:%d\n", nElements); switch (format) { - case 8: - while (nElements--) { - /* 0xFFFF/0xFF = 0x101 */ - hValue = _XcmsGetElement (format, pChar, pCount) * 0x101; - fValue = _XcmsGetElement (format, pChar, pCount) - / (XcmsFloat)255.0; - printf ("\t\t0x%x\t%8.5f\n", hValue, fValue); - } - break; - case 16: - while (nElements--) { - hValue = _XcmsGetElement (format, pChar, pCount); - fValue = _XcmsGetElement (format, pChar, pCount) - / (XcmsFloat)65535.0; - printf ("\t\t0x%x\t%8.5f\n", hValue, fValue); - } - break; - case 32: - while (nElements--) { - hValue = _XcmsGetElement (format, pChar, pCount); - fValue = _XcmsGetElement (format, pChar, pCount) - / (XcmsFloat)4294967295.0; - printf ("\t\t0x%x\t%8.5f\n", hValue, fValue); - } - break; - default: - return; + case 8: + while (nElements--) { + /* 0xFFFF/0xFF = 0x101 */ + hValue = _XcmsGetElement(format, pChar, pCount) * 0x101; + fValue = _XcmsGetElement(format, pChar, pCount) + / (XcmsFloat) 255.0; + printf("\t\t0x%x\t%8.5f\n", hValue, fValue); + } + break; + case 16: + while (nElements--) { + hValue = _XcmsGetElement(format, pChar, pCount); + fValue = _XcmsGetElement(format, pChar, pCount) + / (XcmsFloat) 65535.0; + printf("\t\t0x%x\t%8.5f\n", hValue, fValue); + } + break; + case 32: + while (nElements--) { + hValue = _XcmsGetElement(format, pChar, pCount); + fValue = _XcmsGetElement(format, pChar, pCount) + / (XcmsFloat) 4294967295.0; + printf("\t\t0x%x\t%8.5f\n", hValue, fValue); + } + break; + default: + return; } } - /* * NAME @@ -286,44 +291,43 @@ PrintTableType1(int format, char **pChar, unsigned long *pCount) * */ { - int count; + unsigned int count; unsigned int max_index; unsigned short hValue; XcmsFloat fValue; max_index = _XcmsGetElement(format, pChar, pCount); - printf ("\t length:%d\n", max_index + 1); + printf("\t length:%d\n", max_index + 1); switch (format) { - case 8: - for (count = 0; count < max_index+1; count++) { - hValue = (count * 65535) / max_index; - fValue = _XcmsGetElement (format, pChar, pCount) - / (XcmsFloat)255.0; - printf ("\t\t0x%x\t%8.5f\n", hValue, fValue); - } - break; - case 16: - for (count = 0; count < max_index+1; count++) { - hValue = (count * 65535) / max_index; - fValue = _XcmsGetElement (format, pChar, pCount) - / (XcmsFloat)65535.0; - printf ("\t\t0x%x\t%8.5f\n", hValue, fValue); - } - break; - case 32: - for (count = 0; count < max_index+1; count++) { - hValue = (count * 65535) / max_index; - fValue = _XcmsGetElement (format, pChar, pCount) - / (XcmsFloat)4294967295.0; - printf ("\t\t0x%x\t%8.5f\n", hValue, fValue); - } - break; - default: - return; + case 8: + for (count = 0; count < max_index + 1; count++) { + hValue = (count * 65535) / max_index; + fValue = _XcmsGetElement(format, pChar, pCount) + / (XcmsFloat) 255.0; + printf("\t\t0x%x\t%8.5f\n", hValue, fValue); + } + break; + case 16: + for (count = 0; count < max_index + 1; count++) { + hValue = (count * 65535) / max_index; + fValue = _XcmsGetElement(format, pChar, pCount) + / (XcmsFloat) 65535.0; + printf("\t\t0x%x\t%8.5f\n", hValue, fValue); + } + break; + case 32: + for (count = 0; count < max_index + 1; count++) { + hValue = (count * 65535) / max_index; + fValue = _XcmsGetElement(format, pChar, pCount) + / (XcmsFloat) 4294967295.0; + printf("\t\t0x%x\t%8.5f\n", hValue, fValue); + } + break; + default: + return; } } - /* * NAME @@ -332,7 +336,7 @@ PrintTableType1(int format, char **pChar, unsigned long *pCount) * SYNOPSIS */ static void -QuerySCCDataRGB(Display *dpy, Window root) +QuerySCCDataRGB(Display * dpy, Window root) /* * DESCRIPTION * @@ -341,214 +345,218 @@ QuerySCCDataRGB(Display *dpy, Window root) */ { char *property_return, *pChar; - int i, j; - int count, format, cType, nTables; + int i, j; + int count, format, cType, nTables; unsigned long nitems, nbytes_return; Atom MatricesAtom, CorrectAtom; VisualID visualID; XVisualInfo vinfo_template, *vinfo_ret; int nvis; + static const char *visual_strings[] = { - "StaticGray", - "GrayScale", - "StaticColor", - "PseudoColor", - "TrueColor", - "DirectColor" - }; + "StaticGray", + "GrayScale", + "StaticColor", + "PseudoColor", + "TrueColor", + "DirectColor" + }; /* * Get Matrices */ - MatricesAtom = ParseAtom (dpy, XDCCC_MATRIX_ATOM_NAME, True); + MatricesAtom = ParseAtom(dpy, XDCCC_MATRIX_ATOM_NAME, True); if (MatricesAtom != None) { - if (_XcmsGetProperty (dpy, root, MatricesAtom, &format, &nitems, - &nbytes_return, &property_return) == XcmsFailure) { - format = 0; - } else if (nitems != 18) { - printf ("Property %s had invalid length of %ld\n", - XDCCC_MATRIX_ATOM_NAME, nitems); - if (property_return) { - XFree (property_return); - } - return; - } + if (_XcmsGetProperty(dpy, root, MatricesAtom, &format, &nitems, + &nbytes_return, &property_return) == XcmsFailure) { + format = 0; + } + else if (nitems != 18) { + printf("Property %s had invalid length of %ld\n", + XDCCC_MATRIX_ATOM_NAME, nitems); + if (property_return) { + XFree(property_return); + } + return; + } } if (MatricesAtom == None || !format) { - printf ("Could not find property %s\n", XDCCC_MATRIX_ATOM_NAME); - } else if (format != 32) { - printf ("Data in property %s not in 32 bit format\n", - XDCCC_MATRIX_ATOM_NAME); - } else { - pChar = property_return; - printf ("Screen: %d\n", DefaultScreen(dpy)); - printf ("Querying property %s\n", XDCCC_MATRIX_ATOM_NAME); - printf ("\tXYZtoRGB matrix :\n"); - for (i = 0; i < 3; i++) { - printf ("\t"); - for (j = 0; j < 3; j++) { - printf ("\t%8.5f", - (long)_XcmsGetElement(format, &pChar, &nitems) - / (XcmsFloat) XDCCC_NUMBER); - } - printf ("\n"); - } - printf ("\tRGBtoXYZ matrix :\n"); - for (i = 0; i < 3; i++) { - printf ("\t"); - for (j = 0; j < 3; j++) { - printf ("\t%8.5f", - (long) _XcmsGetElement(format, &pChar, &nitems) - / (XcmsFloat) XDCCC_NUMBER); - } - printf ("\n"); - } - XFree (property_return); + printf("Could not find property %s\n", XDCCC_MATRIX_ATOM_NAME); + } + else if (format != 32) { + printf("Data in property %s not in 32 bit format\n", + XDCCC_MATRIX_ATOM_NAME); + } + else { + pChar = property_return; + printf("Screen: %d\n", DefaultScreen(dpy)); + printf("Querying property %s\n", XDCCC_MATRIX_ATOM_NAME); + printf("\tXYZtoRGB matrix :\n"); + for (i = 0; i < 3; i++) { + printf("\t"); + for (j = 0; j < 3; j++) { + printf("\t%8.5f", + (long) _XcmsGetElement(format, &pChar, &nitems) + / (XcmsFloat) XDCCC_NUMBER); + } + printf("\n"); + } + printf("\tRGBtoXYZ matrix :\n"); + for (i = 0; i < 3; i++) { + printf("\t"); + for (j = 0; j < 3; j++) { + printf("\t%8.5f", + (long) _XcmsGetElement(format, &pChar, &nitems) + / (XcmsFloat) XDCCC_NUMBER); + } + printf("\n"); + } + XFree(property_return); } - /* * Get Intensity Tables */ - CorrectAtom = XInternAtom (dpy, XDCCC_CORRECT_ATOM_NAME, True); + CorrectAtom = XInternAtom(dpy, XDCCC_CORRECT_ATOM_NAME, True); if (CorrectAtom != None) { - if (_XcmsGetProperty (dpy, root, CorrectAtom, &format, &nitems, - &nbytes_return, &property_return) == XcmsFailure) { - format = 0; - } else if (nitems <= 0) { - printf ("Property %s had invalid length of %ld\n", - XDCCC_CORRECT_ATOM_NAME, nitems); - if (property_return) { - XFree (property_return); - } - return; - } + if (_XcmsGetProperty(dpy, root, CorrectAtom, &format, &nitems, + &nbytes_return, &property_return) == XcmsFailure) { + format = 0; + } + else if (nitems <= 0) { + printf("Property %s had invalid length of %ld\n", + XDCCC_CORRECT_ATOM_NAME, nitems); + if (property_return) { + XFree(property_return); + } + return; + } } if (CorrectAtom == None || !format) { - printf ("Could not find property %s\n", XDCCC_CORRECT_ATOM_NAME); - } else { - printf ("\nQuerying property %s\n", XDCCC_CORRECT_ATOM_NAME); - pChar = property_return; + printf("Could not find property %s\n", XDCCC_CORRECT_ATOM_NAME); + } + else { + printf("\nQuerying property %s\n", XDCCC_CORRECT_ATOM_NAME); + pChar = property_return; - while (nitems) { - switch (format) { - case 8: - /* - * Must have at least: - * VisualID0 - * VisualID1 - * VisualID2 - * VisualID3 - * type - * count - * length - * intensity1 - * intensity2 - */ - if (nitems < 9) { - goto IntensityTblError; - } - count = 3; - break; - case 16: - /* - * Must have at least: - * VisualID0 - * VisualID3 - * type - * count - * length - * intensity1 - * intensity2 - */ - if (nitems < 7) { - goto IntensityTblError; - } - count = 1; - break; - case 32: - /* - * Must have at least: - * VisualID0 - * type - * count - * length - * intensity1 - * intensity2 - */ - if (nitems < 6) { - goto IntensityTblError; - } - count = 0; - break; - default: - goto IntensityTblError; - } + while (nitems) { + switch (format) { + case 8: + /* + * Must have at least: + * VisualID0 + * VisualID1 + * VisualID2 + * VisualID3 + * type + * count + * length + * intensity1 + * intensity2 + */ + if (nitems < 9) { + goto IntensityTblError; + } + count = 3; + break; + case 16: + /* + * Must have at least: + * VisualID0 + * VisualID3 + * type + * count + * length + * intensity1 + * intensity2 + */ + if (nitems < 7) { + goto IntensityTblError; + } + count = 1; + break; + case 32: + /* + * Must have at least: + * VisualID0 + * type + * count + * length + * intensity1 + * intensity2 + */ + if (nitems < 6) { + goto IntensityTblError; + } + count = 0; + break; + default: + goto IntensityTblError; + } - /* - * Get VisualID - */ - visualID = _XcmsGetElement(format, &pChar, &nitems); - /* add the depth, class, and bits info in output */ - vinfo_template.visualid = visualID; - vinfo_ret = XGetVisualInfo(dpy, VisualIDMask, &vinfo_template, - &nvis); - while (count--) { - visualID = visualID << format; - visualID |= _XcmsGetElement(format, &pChar, &nitems); - } + /* + * Get VisualID + */ + visualID = _XcmsGetElement(format, &pChar, &nitems); + /* add the depth, class, and bits info in output */ + vinfo_template.visualid = visualID; + vinfo_ret = XGetVisualInfo(dpy, VisualIDMask, &vinfo_template, + &nvis); + while (count--) { + visualID = visualID << format; + visualID |= _XcmsGetElement(format, &pChar, &nitems); + } - if (vinfo_ret != NULL) { - printf - ("\n\tVisualID: 0x%lx class: %s depth: %d bits_per_rgb: %d\n", - visualID, visual_strings[vinfo_ret->class], - vinfo_ret->depth, vinfo_ret->bits_per_rgb); - } - else - printf ("\n\tVisualID: 0x%lx\n", visualID); - XFree(vinfo_ret); - cType = _XcmsGetElement(format, &pChar, &nitems); - printf ("\ttype: %d\n", cType); - nTables = _XcmsGetElement(format, &pChar, &nitems); - printf ("\tcount: %d\n", nTables); + if (vinfo_ret != NULL) { + printf + ("\n\tVisualID: 0x%lx class: %s depth: %d bits_per_rgb: %d\n", + visualID, visual_strings[vinfo_ret->class], + vinfo_ret->depth, vinfo_ret->bits_per_rgb); + } + else + printf("\n\tVisualID: 0x%lx\n", visualID); + XFree(vinfo_ret); + cType = _XcmsGetElement(format, &pChar, &nitems); + printf("\ttype: %d\n", cType); + nTables = _XcmsGetElement(format, &pChar, &nitems); + printf("\tcount: %d\n", nTables); - switch (cType) { - case 0: - /* Red Table should always exist */ - printf ("\tRed Conversion Table:\n"); - PrintTableType0(format, &pChar, &nitems); - if (nTables > 1) { - printf ("\tGreen Conversion Table:\n"); - PrintTableType0(format, &pChar, &nitems); - printf ("\tBlue Conversion Table:\n"); - PrintTableType0(format, &pChar, &nitems); - } - break; - case 1: - /* Red Table should always exist */ - printf ("\tRed Conversion Table:\n"); - PrintTableType1(format, &pChar, &nitems); - if (nTables > 1) { - printf ("\tGreen Conversion Table:\n"); - PrintTableType1(format, &pChar, &nitems); - printf ("\tBlue Conversion Table:\n"); - PrintTableType1(format, &pChar, &nitems); - } - break; - default: - goto IntensityTblError; - } - } - XFree (property_return); + switch (cType) { + case 0: + /* Red Table should always exist */ + printf("\tRed Conversion Table:\n"); + PrintTableType0(format, &pChar, &nitems); + if (nTables > 1) { + printf("\tGreen Conversion Table:\n"); + PrintTableType0(format, &pChar, &nitems); + printf("\tBlue Conversion Table:\n"); + PrintTableType0(format, &pChar, &nitems); + } + break; + case 1: + /* Red Table should always exist */ + printf("\tRed Conversion Table:\n"); + PrintTableType1(format, &pChar, &nitems); + if (nTables > 1) { + printf("\tGreen Conversion Table:\n"); + PrintTableType1(format, &pChar, &nitems); + printf("\tBlue Conversion Table:\n"); + PrintTableType1(format, &pChar, &nitems); + } + break; + default: + goto IntensityTblError; + } + } + XFree(property_return); } return; -IntensityTblError: - XFree (property_return); + IntensityTblError: + XFree(property_return); printf("Fatal error in %s property\n", XDCCC_CORRECT_ATOM_NAME); } - #ifdef GRAY /* @@ -558,7 +566,7 @@ IntensityTblError: * SYNOPSIS */ int -QuerySCCDataGray(Display *dpy, Window root) +QuerySCCDataGray(Display * dpy, Window root) /* * DESCRIPTION * @@ -567,151 +575,154 @@ QuerySCCDataGray(Display *dpy, Window root) */ { char *property_return, *pChar; - int j; - int count, format, cType; - unsigned long nitems, nbytes_return; + int j; + int count, format, cType; + unsigned long nitems, nbytes_return; Atom MatricesAtom, CorrectAtom; VisualID visualID; - MatricesAtom = ParseAtom (dpy, XDCCC_SCREENWHITEPT_ATOM_NAME, True); + MatricesAtom = ParseAtom(dpy, XDCCC_SCREENWHITEPT_ATOM_NAME, True); if (MatricesAtom != None) { - if (_XcmsGetProperty (dpy, root, MatricesAtom, &format, &nitems, - &nbytes_return, &property_return) == XcmsFailure) { - format = 0; - } else if (nitems != 3) { - printf ("Property %s had invalid length of %d\n", - XDCCC_SCREENWHITEPT_ATOM_NAME, nitems); - if (property_return) { - XFree (property_return); - } - return; - } + if (_XcmsGetProperty(dpy, root, MatricesAtom, &format, &nitems, + &nbytes_return, &property_return) == XcmsFailure) { + format = 0; + } + else if (nitems != 3) { + printf("Property %s had invalid length of %d\n", + XDCCC_SCREENWHITEPT_ATOM_NAME, nitems); + if (property_return) { + XFree(property_return); + } + return; + } } if (MatricesAtom == None || !format) { - printf ("Could not find property %s\n", XDCCC_SCREENWHITEPT_ATOM_NAME); - } else { - pChar = property_return; - printf ("\nQuerying property %s\n", XDCCC_SCREENWHITEPT_ATOM_NAME); - printf ("\tWhite Point XYZ :\n"); - printf ("\t"); - for (j = 0; j < 3; j++) { - printf ("\t%8.5lf", - (long) _XcmsGetElement(format, &pChar, &nitems) / - (XcmsFloat) XDCCC_NUMBER); - } - printf ("\n"); - XFree (property_return); + printf("Could not find property %s\n", XDCCC_SCREENWHITEPT_ATOM_NAME); + } + else { + pChar = property_return; + printf("\nQuerying property %s\n", XDCCC_SCREENWHITEPT_ATOM_NAME); + printf("\tWhite Point XYZ :\n"); + printf("\t"); + for (j = 0; j < 3; j++) { + printf("\t%8.5lf", + (long) _XcmsGetElement(format, &pChar, &nitems) / + (XcmsFloat) XDCCC_NUMBER); + } + printf("\n"); + XFree(property_return); } - CorrectAtom = XInternAtom (dpy, XDCCC_GRAY_CORRECT_ATOM_NAME, True); + CorrectAtom = XInternAtom(dpy, XDCCC_GRAY_CORRECT_ATOM_NAME, True); if (CorrectAtom != None) { - if (_XcmsGetProperty (dpy, root, CorrectAtom, &format, &nitems, - &nbytes_return, &property_return) == XcmsFailure) { - format = 0; - } else if (nitems <= 0) { - printf ("Property %s had invalid length of %d\n", - XDCCC_GRAY_CORRECT_ATOM_NAME, nitems); - if (property_return) { - XFree (property_return); - } - return; - } + if (_XcmsGetProperty(dpy, root, CorrectAtom, &format, &nitems, + &nbytes_return, &property_return) == XcmsFailure) { + format = 0; + } + else if (nitems <= 0) { + printf("Property %s had invalid length of %d\n", + XDCCC_GRAY_CORRECT_ATOM_NAME, nitems); + if (property_return) { + XFree(property_return); + } + return; + } } if (CorrectAtom == None || !format) { - printf ("Could not find property %s\n", XDCCC_GRAY_CORRECT_ATOM_NAME); - } else { - printf ("\nQuerying property %s\n\n", XDCCC_GRAY_CORRECT_ATOM_NAME); - pChar = property_return; + printf("Could not find property %s\n", XDCCC_GRAY_CORRECT_ATOM_NAME); + } + else { + printf("\nQuerying property %s\n\n", XDCCC_GRAY_CORRECT_ATOM_NAME); + pChar = property_return; - while (nitems) { - switch (format) { - case 8: - /* - * Must have at least: - * VisualID0 - * VisualID1 - * VisualID2 - * VisualID3 - * type - * count - * length - * intensity1 - * intensity2 - */ - if (nitems < 9) { - goto IntensityTblError; - } - count = 3; - break; - case 16: - /* - * Must have at least: - * VisualID0 - * VisualID3 - * type - * count - * length - * intensity1 - * intensity2 - */ - if (nitems < 7) { - goto IntensityTblError; - } - count = 1; - break; - case 32: - /* - * Must have at least: - * VisualID0 - * type - * count - * length - * intensity1 - * intensity2 - */ - if (nitems < 6) { - goto IntensityTblError; - } - count = 0; - break; - default: - goto IntensityTblError; - break; - } + while (nitems) { + switch (format) { + case 8: + /* + * Must have at least: + * VisualID0 + * VisualID1 + * VisualID2 + * VisualID3 + * type + * count + * length + * intensity1 + * intensity2 + */ + if (nitems < 9) { + goto IntensityTblError; + } + count = 3; + break; + case 16: + /* + * Must have at least: + * VisualID0 + * VisualID3 + * type + * count + * length + * intensity1 + * intensity2 + */ + if (nitems < 7) { + goto IntensityTblError; + } + count = 1; + break; + case 32: + /* + * Must have at least: + * VisualID0 + * type + * count + * length + * intensity1 + * intensity2 + */ + if (nitems < 6) { + goto IntensityTblError; + } + count = 0; + break; + default: + goto IntensityTblError; + break; + } - /* - * Get VisualID - */ - visualID = _XcmsGetElement(format, &pChar, &nitems); - while (count--) { - visualID = visualID << format; - visualID |= _XcmsGetElement(format, &pChar, &nitems); - } + /* + * Get VisualID + */ + visualID = _XcmsGetElement(format, &pChar, &nitems); + while (count--) { + visualID = visualID << format; + visualID |= _XcmsGetElement(format, &pChar, &nitems); + } - printf ("\n\tVisualID: 0x%lx\n", visualID); - cType = _XcmsGetElement(format, &pChar, &nitems); - printf ("\ttype: %d\n", cType); - printf ("\tGray Conversion Table:\n"); - switch (cType) { - case 0: - PrintTableType0(format, &pChar, &nitems); - break; - case 1: - PrintTableType1(format, &pChar, &nitems); - break; - default: - goto IntensityTblError; - } - } - XFree (property_return); + printf("\n\tVisualID: 0x%lx\n", visualID); + cType = _XcmsGetElement(format, &pChar, &nitems); + printf("\ttype: %d\n", cType); + printf("\tGray Conversion Table:\n"); + switch (cType) { + case 0: + PrintTableType0(format, &pChar, &nitems); + break; + case 1: + PrintTableType1(format, &pChar, &nitems); + break; + default: + goto IntensityTblError; + } + } + XFree(property_return); } return; -IntensityTblError: - XFree (property_return); + IntensityTblError: + XFree(property_return); printf("Fatal error in %s property\n", XDCCC_CORRECT_ATOM_NAME); } -#endif /* GRAY */ - +#endif /* GRAY */ /* * NAME @@ -730,69 +741,79 @@ RemoveSCCData(Display *dpy, Window root, int colorFlag) { unsigned char *ret_prop; unsigned long ret_len, ret_after; - int ret_format, status = -1; + int ret_format, status = -1; Atom MatricesAtom, CorrectAtom, ret_atom; if (colorFlag != 0) { - MatricesAtom = ParseAtom (dpy, XDCCC_MATRIX_ATOM_NAME, True); - if (MatricesAtom != None) { - status = XGetWindowProperty (dpy, root, MatricesAtom, 0, 8192, - False, XA_INTEGER, &ret_atom, &ret_format, &ret_len, - &ret_after, &ret_prop); - } - if (MatricesAtom == None || status != Success || !ret_format) { - printf ("Could not find property %s\n", XDCCC_MATRIX_ATOM_NAME); - } else { - printf ("Deleting property %s\n", XDCCC_MATRIX_ATOM_NAME); - XDeleteProperty (dpy, root, MatricesAtom); - XFree ((char *)ret_prop); - } + MatricesAtom = ParseAtom(dpy, XDCCC_MATRIX_ATOM_NAME, True); + if (MatricesAtom != None) { + status = XGetWindowProperty(dpy, root, MatricesAtom, 0, 8192, + False, XA_INTEGER, &ret_atom, + &ret_format, &ret_len, &ret_after, + &ret_prop); + } + if (MatricesAtom == None || status != Success || !ret_format) { + printf("Could not find property %s\n", XDCCC_MATRIX_ATOM_NAME); + } + else { + printf("Deleting property %s\n", XDCCC_MATRIX_ATOM_NAME); + XDeleteProperty(dpy, root, MatricesAtom); + XFree(ret_prop); + } - CorrectAtom = XInternAtom (dpy, XDCCC_CORRECT_ATOM_NAME, True); - if (CorrectAtom != None) { - status = XGetWindowProperty (dpy, root, CorrectAtom, 0, 8192, - False, XA_INTEGER, &ret_atom, &ret_format, &ret_len, - &ret_after, &ret_prop); - } - if (CorrectAtom == None || status != Success || !ret_format) { - printf ("Could not find property %s\n", XDCCC_CORRECT_ATOM_NAME); - } else { - printf ("Deleting property %s\n", XDCCC_CORRECT_ATOM_NAME); - XDeleteProperty (dpy, root, CorrectAtom); - XFree ((char *)ret_prop); - } + CorrectAtom = XInternAtom(dpy, XDCCC_CORRECT_ATOM_NAME, True); + if (CorrectAtom != None) { + status = XGetWindowProperty(dpy, root, CorrectAtom, 0, 8192, + False, XA_INTEGER, &ret_atom, + &ret_format, &ret_len, &ret_after, + &ret_prop); + } + if (CorrectAtom == None || status != Success || !ret_format) { + printf("Could not find property %s\n", XDCCC_CORRECT_ATOM_NAME); + } + else { + printf("Deleting property %s\n", XDCCC_CORRECT_ATOM_NAME); + XDeleteProperty(dpy, root, CorrectAtom); + XFree(ret_prop); + } } #ifdef GRAY if (colorFlag != 1) { - MatricesAtom = ParseAtom (dpy, XDCCC_SCREENWHITEPT_ATOM_NAME, True); - if (MatricesAtom != None) { - status = XGetWindowProperty (dpy, root, MatricesAtom, 0, 8192, - False, XA_INTEGER, &ret_atom, &ret_format, &ret_len, - &ret_after, &ret_prop); - } - if (MatricesAtom == None || status != Success || !ret_format) { - printf ("Could not find property %s\n", XDCCC_SCREENWHITEPT_ATOM_NAME); - } else { - printf ("Deleting property %s\n", XDCCC_SCREENWHITEPT_ATOM_NAME); - XDeleteProperty (dpy, root, MatricesAtom); - XFree ((char *)ret_prop); - } + MatricesAtom = ParseAtom(dpy, XDCCC_SCREENWHITEPT_ATOM_NAME, True); + if (MatricesAtom != None) { + status = XGetWindowProperty(dpy, root, MatricesAtom, 0, 8192, + False, XA_INTEGER, &ret_atom, + &ret_format, &ret_len, &ret_after, + &ret_prop); + } + if (MatricesAtom == None || status != Success || !ret_format) { + printf("Could not find property %s\n", + XDCCC_SCREENWHITEPT_ATOM_NAME); + } + else { + printf("Deleting property %s\n", XDCCC_SCREENWHITEPT_ATOM_NAME); + XDeleteProperty(dpy, root, MatricesAtom); + XFree(ret_prop); + } - CorrectAtom = XInternAtom (dpy, XDCCC_GRAY_CORRECT_ATOM_NAME, True); - if (CorrectAtom != None) { - status = XGetWindowProperty (dpy, root, CorrectAtom, 0, 8192, - False, XA_INTEGER, &ret_atom, &ret_format, &ret_len, - &ret_after, &ret_prop); - } - if (CorrectAtom == None || status != Success || !ret_format) { - printf ("Could not find property %s\n", XDCCC_GRAY_CORRECT_ATOM_NAME); - } else { - printf ("Deleting property %s\n", XDCCC_GRAY_CORRECT_ATOM_NAME); - XDeleteProperty (dpy, root, CorrectAtom); - XFree ((char *)ret_prop); - } + CorrectAtom = XInternAtom(dpy, XDCCC_GRAY_CORRECT_ATOM_NAME, True); + if (CorrectAtom != None) { + status = XGetWindowProperty(dpy, root, CorrectAtom, 0, 8192, + False, XA_INTEGER, &ret_atom, + &ret_format, &ret_len, &ret_after, + &ret_prop); + } + if (CorrectAtom == None || status != Success || !ret_format) { + printf("Could not find property %s\n", + XDCCC_GRAY_CORRECT_ATOM_NAME); + } + else { + printf("Deleting property %s\n", XDCCC_GRAY_CORRECT_ATOM_NAME); + XDeleteProperty(dpy, root, CorrectAtom); + XFree(ret_prop); + } } -#endif /* GRAY */ +#endif /* GRAY */ } static unsigned long @@ -809,39 +830,37 @@ _XcmsGetElement(int format, char **pValue, unsigned long *pCount) unsigned long value; switch (format) { - case 32: - value = *((unsigned long *)(*pValue)) & 0xFFFFFFFF; - *pValue += sizeof(unsigned long); - *pCount -= 1; - break; - case 16: - value = *((unsigned short *)(*pValue)); - *pValue += sizeof(unsigned short); - *pCount -= 1; - break; - case 8: - value = *((unsigned char *) (*pValue)); - *pValue += 1; - *pCount -= 1; - break; - default: - value = 0; - break; + case 32: + value = *((unsigned long *) (*pValue)) & 0xFFFFFFFF; + *pValue += sizeof(unsigned long); + *pCount -= 1; + break; + case 16: + value = *((unsigned short *) (*pValue)); + *pValue += sizeof(unsigned short); + *pCount -= 1; + break; + case 8: + value = *((unsigned char *) (*pValue)); + *pValue += 1; + *pCount -= 1; + break; + default: + value = 0; + break; } - return(value); + return (value); } - /* * NAME - * _XcmsGetProperty -- Determine the existance of a property + * _XcmsGetProperty -- Determine the existence of a property * * SYNOPSIS */ static int _XcmsGetProperty(Display *pDpy, Window w, Atom property, int *pFormat, - unsigned long *pNItems, unsigned long *pNBytes, - char **pValue) + unsigned long *pNItems, unsigned long *pNBytes, char **pValue) /* * DESCRIPTION * @@ -858,26 +877,27 @@ _XcmsGetProperty(Display *pDpy, Window w, Atom property, int *pFormat, int xgwp_ret; while (True) { - xgwp_ret = XGetWindowProperty (pDpy, w, property, 0, len, False, - XA_INTEGER, &atom_ret, &format_ret, - &nitems_ret, &after_ret, - (unsigned char **)&prop_ret); - if (xgwp_ret == Success && after_ret > 0) { - len += nitems_ret * (format_ret >> 3); - XFree (prop_ret); - } else { - break; - } + xgwp_ret = XGetWindowProperty(pDpy, w, property, 0, len, False, + XA_INTEGER, &atom_ret, &format_ret, + &nitems_ret, &after_ret, + (unsigned char **) &prop_ret); + if (xgwp_ret == Success && after_ret > 0) { + len += nitems_ret * (format_ret >> 3); + XFree(prop_ret); + } + else { + break; + } } if (xgwp_ret != Success || format_ret == 0 || nitems_ret == 0) { - /* the property does not exist or is of an unexpected type or + /* the property does not exist or is of an unexpected type or getting window property failed */ - return(XcmsFailure); + return (XcmsFailure); } *pFormat = format_ret; *pNItems = nitems_ret; *pNBytes = nitems_ret * (format_ret >> 3); *pValue = prop_ret; - return(XcmsSuccess); + return (XcmsSuccess); }