Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xprintidle for openSUSE:Factory 
checked in at 2023-05-23 14:55:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xprintidle (Old)
 and      /work/SRC/openSUSE:Factory/.xprintidle.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xprintidle"

Tue May 23 14:55:04 2023 rev:2 rq:1088603 version:0.2.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/xprintidle/xprintidle.changes    2016-07-14 
09:45:50.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xprintidle.new.1533/xprintidle.changes  
2023-05-23 14:55:37.066864532 +0200
@@ -1,0 +2,42 @@
+Tue May 23 00:24:20 UTC 2023 - Avindra Goolcharan <avin...@opensuse.org>
+
+- update to 0.2.5:
+  * README: adapt build & install section
+  * xprintidle: introduce get_x_idletime() function
+  * xprintidle: add missing close and free on error
+  * xprintidle: use EXIT_{SUCCESS,FAILURE} in main()
+- includes 0.2.4:
+  * xprintidle: adapt usage text
+  * xprintidle: add option to print program version
+  * clang-format: Only merge empty functions on one line
+  * man: add initial manpage
+- includes 0.2.3:
+  * change buildsystem to meson
+  * README: rewrite in markdown
+  * AUTHORS: standardize entries and sort alphabetically
+  * xprintidle: harmonize comments
+  * clang-format: add initial version
+  * xprintidle: reformat source
+  * xprintidle: fix typos in comments
+  * xprintidle: remove unneeded "_" from function parameter name
+  * xprintidle: make workaroundCreepyXServer() version dependent
+  * COPYING: remove "How to Apply" section
+  * README: add "Contributing" section
+- includes 0.2.2:
+  * Applying 0.2-10 version of full-linking.patch from debian
+  * Apply x11-autoconf.patch from debian version 0.2-10
+  * Merge tag '0.2-10.debian'
+  * ChangeLog: mention patches from debian
+  * Makefile.am: remove not needed LDADD
+  * autoreconf to get changes into configure and Makefile.in
+- includes 0.2.1:
+  * Applying full-linking.patch from debian
+  * Applying allocinfo.patch from debian
+  * Applying configure.patch from debian
+  * Fix library checking and remove not needed ones
+  * Add gitignore for C and Automake/conf stuff
+  * Autoreconf with v2.69
+- ran spec-cleaner
+- update home URL
+
+-------------------------------------------------------------------
@@ -4 +46 @@
-- Initial package.
+- Initial package @ v0.2

Old:
----
  xprintidle_0.2.orig.tar.gz

New:
----
  xprintidle_0.2.5.orig.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xprintidle.spec ++++++
--- /var/tmp/diff_new_pack.XDBjNo/_old  2023-05-23 14:55:37.882869360 +0200
+++ /var/tmp/diff_new_pack.XDBjNo/_new  2023-05-23 14:55:37.886869383 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package xprintidle
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,20 +12,19 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           xprintidle
-Version:        0.2
+Version:        0.2.5
 Release:        0
 Summary:        Utility to print user's idle time in X
-License:        GPL-2.0
+License:        GPL-2.0-only
 Group:          System/X11/Utilities
-Url:            http://freecode.com/projects/xprintidle
+URL:            https://github.com/g0hl1n/xprintidle
 Source:         
http://httpredir.debian.org/debian/pool/main/x/%{name}/%{name}_%{version}.orig.tar.gz
-BuildRequires:  autoconf
-BuildRequires:  automake
+BuildRequires:  meson
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(x11)
 BuildRequires:  pkgconfig(xext)
@@ -37,22 +36,18 @@
 
 %prep
 %setup -q
-sed -i 's/dist-lzma //' configure.ac
 
 %build
-export LIBS="-lXext"
-autoreconf -fi
-%configure \
-  --x-includes=%{_includedir} \
-  --x-libraries=%{_libdir}
-make %{?_smp_mflags}
+%meson
+%meson_build
 
 %install
-%make_install
+%meson_install
 
 %files
-%defattr(-,root,root)
-%doc COPYING NEWS README
+%license COPYING
+%doc README.md
 %{_bindir}/%{name}
+%{_mandir}/man1/%{name}.1%{?ext_man}
 
 %changelog

++++++ xprintidle_0.2.orig.tar.gz -> xprintidle_0.2.5.orig.tar.gz ++++++
++++ 8926 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/.clang-format new/xprintidle-0.2.5/.clang-format
--- old/xprintidle-0.2/.clang-format    1970-01-01 01:00:00.000000000 +0100
+++ new/xprintidle-0.2.5/.clang-format  2022-06-07 14:13:30.000000000 +0200
@@ -0,0 +1,2 @@
+BasedOnStyle: LLVM
+AllowShortFunctionsOnASingleLine: Empty
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/.github/workflows/main.yml 
new/xprintidle-0.2.5/.github/workflows/main.yml
--- old/xprintidle-0.2/.github/workflows/main.yml       1970-01-01 
01:00:00.000000000 +0100
+++ new/xprintidle-0.2.5/.github/workflows/main.yml     2022-06-07 
14:13:30.000000000 +0200
@@ -0,0 +1,19 @@
+name: CI
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Install deps
+        run: sudo apt-get install libxss-dev
+      - uses: actions/checkout@v2
+      - uses: actions/setup-python@v1
+      - uses: BSFishy/meson-build@v1.0.1
+        with:
+          action: build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/.gitignore new/xprintidle-0.2.5/.gitignore
--- old/xprintidle-0.2/.gitignore       1970-01-01 01:00:00.000000000 +0100
+++ new/xprintidle-0.2.5/.gitignore     2022-06-07 14:13:30.000000000 +0200
@@ -0,0 +1,2 @@
+# meson
+build/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/AUTHORS new/xprintidle-0.2.5/AUTHORS
--- old/xprintidle-0.2/AUTHORS  2008-10-14 18:09:20.000000000 +0200
+++ new/xprintidle-0.2.5/AUTHORS        2022-06-07 14:13:30.000000000 +0200
@@ -1,2 +1,4 @@
-Initial version: Magnus Henoch
-Contributors: Danny Kukawka, Eivind Magnus Hvidevold
+Danny Kukawka <dkuka...@suse.de>, <danny.kuka...@web.de>
+Eivind Magnus Hvidevold <hvidev...@gmail.com>
+Magnus Henoch <hen...@dtek.chalmers.se> (initial author)
+Richard Leitner <d...@g0hl1n.net>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/COPYING new/xprintidle-0.2.5/COPYING
--- old/xprintidle-0.2/COPYING  2007-09-17 19:39:56.000000000 +0200
+++ new/xprintidle-0.2.5/COPYING        2022-06-07 14:13:30.000000000 +0200
@@ -278,63 +278,3 @@
 POSSIBILITY OF SUCH DAMAGES.
 
                     END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/ChangeLog new/xprintidle-0.2.5/ChangeLog
--- old/xprintidle-0.2/ChangeLog        2008-10-14 16:44:19.000000000 +0200
+++ new/xprintidle-0.2.5/ChangeLog      1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-2008-10-14  Magnus Henoch  <ma...@freemail.hu>
-
-       * xprintidle.c: Update copyright notice.
-       (workaroundCreepyXServer): New function, written for kpowersave by
-       Danny Kukawka, adapted for xprintidle by Eivind Magnus Hvidevold.
-       (main): Use it.
-       * COPYING: Now GNU GPL 2 instead of 3-clause BSD.
-
-       * configure.ac: New file.
-
-       * Makefile.am: New file.
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/INSTALL new/xprintidle-0.2.5/INSTALL
--- old/xprintidle-0.2/INSTALL  2008-10-14 16:01:34.000000000 +0200
+++ new/xprintidle-0.2.5/INSTALL        1970-01-01 01:00:00.000000000 +0100
@@ -1,237 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007 Free Software Foundation, Inc.
-
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package.  The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.
-
-     Running `configure' might take a while.  While running, it prints
-     some messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.
-
-  5. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-  6. Often, you can also type `make uninstall' to remove the installed
-     files again.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about.  Run `./configure --help' for
-details on some of the pertinent environment variables.
-
-   You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment.  Here
-is an example:
-
-     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
-   *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you can use GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory.  After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc.  You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
-     CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
-     OS KERNEL-OS
-
-   See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
-   If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
-   If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'.  However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost.  In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'.  For example:
-
-     ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug.  Until the bug is fixed you can use this workaround:
-
-     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--help'
-`-h'
-     Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`--cache-file=FILE'
-     Enable the cache: use and save the results of the tests in FILE,
-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
-     disable caching.
-
-`--config-cache'
-`-C'
-     Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
-     messages will still be shown).
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options.  Run
-`configure --help' for more details.
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/Makefile.am new/xprintidle-0.2.5/Makefile.am
--- old/xprintidle-0.2/Makefile.am      2008-10-14 15:20:16.000000000 +0200
+++ new/xprintidle-0.2.5/Makefile.am    1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-bin_PROGRAMS = xprintidle
-xprintidle_SOURCES = xprintidle.c
-
-AM_CPPFLAGS = -I@x_includes@
-LDADD = -L@x_libraries@ -lX11 -lXss
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/NEWS new/xprintidle-0.2.5/NEWS
--- old/xprintidle-0.2/NEWS     2008-10-14 16:47:20.000000000 +0200
+++ new/xprintidle-0.2.5/NEWS   1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-xprintidle 0.2:
-  Now licensed under GNU GPL 2 (only).
-  Workaround for incorrect idle times when changing DPMS state.
-
-xprintidle 0.1:
-  Initial version.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/README new/xprintidle-0.2.5/README
--- old/xprintidle-0.2/README   2008-10-14 15:27:20.000000000 +0200
+++ new/xprintidle-0.2.5/README 1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-xprintidle is a utility that queries the X server for the user's idle
-time and prints it to stdout (in milliseconds).
-
-Basically, type "./configure && make && sudo make install" to compile
-and install the program.  See the INSTALL file for more detailed
-instructions.
-
-You need the development files for the Xss library.  In Debian, they
-are in the package 'libxss-dev' or 'xlibs-static-dev', depending on
-your version.
-
-Web page: http://www.dtek.chalmers.se/~henoch/text/xprintidle.html
-E-mail: Magnus Henoch <hen...@dtek.chalmers.se>
-Jabber/XMPP: legos...@jabber.cd.chalmers.se
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/README.md new/xprintidle-0.2.5/README.md
--- old/xprintidle-0.2/README.md        1970-01-01 01:00:00.000000000 +0100
+++ new/xprintidle-0.2.5/README.md      2022-06-07 14:13:30.000000000 +0200
@@ -0,0 +1,25 @@
+# xprintidle #
+
+xprintidle is a utility that queries the X server for the user's idle
+time and prints it to stdout (in milliseconds).
+
+## Building and Installing ##
+
+Basically, use meson to compile and install the program:
+
+```
+meson build
+meson install -C build
+```
+
+### Dependencies ###
+
+You need the development files for the X11, Xext and Xss library.
+
+## Contributing ##
+
+To contribute source code to xprintidle please use GitHubs Pull-Request 
feature.
+Furthermore please make sure that you've run clang-format before commiting
+changes.
+
+To report a problem or request a feature please use GitHubs Issue-Tracker.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/configure.ac new/xprintidle-0.2.5/configure.ac
--- old/xprintidle-0.2/configure.ac     2008-10-14 16:46:24.000000000 +0200
+++ new/xprintidle-0.2.5/configure.ac   1970-01-01 01:00:00.000000000 +0100
@@ -1,29 +0,0 @@
-#                                               -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-
-AC_PREREQ(2.62)
-AC_INIT([xprintidle], [0.2], [hen...@dtek.chalmers.se])
-AM_INIT_AUTOMAKE([dist-bzip2 dist-lzma -Wall])
-AC_CONFIG_SRCDIR([xprintidle.c])
-
-# Checks for programs.
-AC_PROG_CC
-AC_PROG_INSTALL
-
-# Checks for header files.
-AC_PATH_X
-if test "$no_x" = yes; then
-  AC_MSG_ERROR([X not found])
-fi
-AC_SUBST([x_includes])
-AC_SUBST([x_libraries])
-
-# Checks for libraries.
-user_LIBS=$LIBS
-LIBS="$LIBS -L$x_libraries"
-AC_CHECK_LIB([X11], [XOpenDisplay], , [AC_MSG_ERROR([libX11 not found])])
-AC_CHECK_LIB([Xss], [XScreenSaverQueryExtension], , [AC_MSG_ERROR([libXss not 
found])])
-LIBS=$user_LIBS
-
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/meson.build new/xprintidle-0.2.5/meson.build
--- old/xprintidle-0.2/meson.build      1970-01-01 01:00:00.000000000 +0100
+++ new/xprintidle-0.2.5/meson.build    2022-06-07 14:13:30.000000000 +0200
@@ -0,0 +1,29 @@
+project('xprintidle',
+  'c',
+  version : '0.2.5',
+  license : 'GPL-2.0',
+  default_options : [
+    'c_std=c89',
+    'warning_level=3',
+    'optimization=3',
+  ]
+)
+add_project_arguments('-DXPRINTIDLE_VERSION="@0@"'.format(meson.project_version()),
 language : 'c')
+
+src = [
+  'xprintidle.c',
+]
+
+dep = [
+  dependency('xscrnsaver'),
+  dependency('x11'),
+  dependency('xext'),
+]
+
+executable('xprintidle',
+  sources: src,
+  dependencies: dep,
+  install : true,
+)
+
+install_man('xprintidle.1')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/missing new/xprintidle-0.2.5/missing
--- old/xprintidle-0.2/missing  2008-10-14 16:01:34.000000000 +0200
+++ new/xprintidle-0.2.5/missing        1970-01-01 01:00:00.000000000 +0100
@@ -1,367 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2006-05-10.23
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
-#   Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, 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.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Send bug reports to <bug-autom...@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).
-case $1 in
-  lex|yacc)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $1 in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' 
${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  autom4te)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo "#! /bin/sh"
-       echo "# Created by GNU Automake missing as a replacement of"
-       echo "#  $ $@"
-       echo "exit 0"
-       chmod +x $file
-       exit 1
-    fi
-    ;;
-
-  bison|yacc)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-       case $LASTARG in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f y.tab.h; then
-       echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex|flex)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-       case $LASTARG in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f lex.yy.c; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        \`Help2man' package in order for those modifications to take
-        effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit 1
-    fi
-    ;;
-
-  makeinfo)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-       /^@setfilename/{
-         s/.* \([^ ]*\) *$/\1/
-         p
-         q
-       }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-       case $firstarg in
-       *o*)
-           firstarg=`echo "$firstarg" | sed s/o//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-       case $firstarg in
-       *h*)
-           firstarg=`echo "$firstarg" | sed s/h//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/xprintidle.1 new/xprintidle-0.2.5/xprintidle.1
--- old/xprintidle-0.2/xprintidle.1     1970-01-01 01:00:00.000000000 +0100
+++ new/xprintidle-0.2.5/xprintidle.1   2022-06-07 14:13:30.000000000 +0200
@@ -0,0 +1,56 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH XPRINTIDLE 1 "2020-11-23"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+xprintidle \- utility printing user's idle time in X
+.
+.SH SYNOPSIS
+.B xprintidle
+.RI [ OPTION .\|.\|.]
+.
+.SH DESCRIPTION
+.B xprintidle
+is a utility that queries the X server for the user's idle time and prints
+it to stdout (in milliseconds).
+.
+.SH OPTIONS
+.SS "Generic Program Information"
+.TP
+.B \-h ", " \-\^\-help
+Output a usage message and exit.
+.TP
+.B \-v ", " \-\^\-version
+Output the version number and exit.
+.
+.SH BUGS
+Please use
+.UR https://github.com/g0hl1n/xprintidle/issues
+the GitHub bugtracker
+.UE
+to report bugs.
+.
+.SH AUTHOR
+xprintidle was initially written by Magnus Henoch <hen...@dtek.chalmers.se>.
+For a full list of authors see
+.UR https://github.com/g0hl1n/xprintidle/blob/master/AUTHORS
+the AUTHORS file
+.UE
+.
+.PP
+This manual page was written by Milan Zamazal <p...@debian.org>,
+for the Debian project (but may be used by others) and adapted by
+Richard Leitner <d...@bubus.at> for https://github.com/g0hl1n/xprintidle.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xprintidle-0.2/xprintidle.c new/xprintidle-0.2.5/xprintidle.c
--- old/xprintidle-0.2/xprintidle.c     2008-10-14 16:07:54.000000000 +0200
+++ new/xprintidle-0.2.5/xprintidle.c   2022-06-07 14:13:30.000000000 +0200
@@ -1,104 +1,157 @@
-/*
-
-This program prints the "idle time" of the user to stdout.  The "idle
-time" is the number of milliseconds since input was received on any
-input device.  If unsuccessful, the program prints a message to stderr
-and exits with a non-zero exit code.
-
-Copyright (c) 2005, 2008 Magnus Henoch <hen...@dtek.chalmers.se>
-Copyright (c) 2006, 2007 by Danny Kukawka
-                         <dkuka...@suse.de>, <danny.kuka...@web.de>
-Copyright (c) 2008 Eivind Magnus Hvidevold <hvidev...@gmail.com>
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of version 2 of the GNU General Public License
-as published by the Free Software Foundation.
-
-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.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-The function workaroundCreepyXServer was adapted from kpowersave-0.7.3 by
-Eivind Magnus Hvidevold <hvidev...@gmail.com>. kpowersave is licensed under
-the GNU GPL, version 2 _only_.
-
-*/
+/* SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This program prints the "idle time" of the user to stdout.  The "idle time"
+ * is the number of milliseconds since input was received on any input device.
+ * If unsuccessful, the program prints a message to stderr and exits with a
+ * non-zero exit code.
+ *
+ * Copyright (c) 2005, 2008 Magnus Henoch <hen...@dtek.chalmers.se>
+ * Copyright (c) 2006, 2007 by Danny Kukawka <dkuka...@suse.de>,
+ *                                           <danny.kuka...@web.de>
+ * Copyright (c) 2008 Eivind Magnus Hvidevold <hvidev...@gmail.com>
+ * Copyright (c) 2014-2022 Richard Leitner <d...@g0hl1n.net>
+ *
+ * This file is part of xprintidle.
+ *
+ * xprintidle is free software; you can redistribute it and/or modify it under
+ * the terms of version 2 of the GNU General Public License as published by the
+ * Free Software Foundation.
+ *
+ * xprintidle 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
+ * xprintidle. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The function workaroundCreepyXServer was adapted from kpowersave-0.7.3 by
+ * Eivind Magnus Hvidevold <hvidev...@gmail.com>. kpowersave is licensed under
+ * the GNU GPL, version 2 _only_.
+ */
 
 #include <X11/Xlib.h>
 #include <X11/extensions/dpms.h>
 #include <X11/extensions/scrnsaver.h>
+#include <stdint.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 
-void usage(char *name);
-unsigned long workaroundCreepyXServer(Display *dpy, unsigned long _idleTime );
+#ifndef XPRINTIDLE_VERSION
+#define XPRINTIDLE_VERSION "n/a"
+#endif
+
+unsigned long workaroundCreepyXServer(Display *dpy, unsigned long idleTime);
+
+void print_usage(char *name) {
+  fprintf(stdout,
+          "usage: %s [OPTION]\n"
+          "Query the X server for the user's idle time\n"
+          "\n"
+          "Options:\n"
+          "  -h, --help        Show this text\n"
+          "  -v, --version     Print the program version\n"
+          "\n"
+          "Report bugs at: https://github.com/g0hl1n/xprintidle/issues\n";
+          "Written by Magnus Henoch and others; see\n"
+          "https://github.com/g0hl1n/xprintidle/blob/master/AUTHORS\n";,
+          name);
+}
+
+void print_version() {
+  fprintf(stdout, "xprintidle %s\n", XPRINTIDLE_VERSION);
+}
 
-int main(int argc, char *argv[])
+/*
+ * This function gets the X idle time in milliseconds and writes it to the
+ * "idle" argument.
+ * On success 0 is returned.
+ * On error -1 is returned.
+ */
+int get_x_idletime(uint64_t *idle)
 {
-  XScreenSaverInfo ssi;
+  XScreenSaverInfo *ssi;
   Display *dpy;
-  int event_basep, error_basep;
+  int event_basep, error_basep, vendrel;
 
-  if (argc != 1) {
-    usage(argv[0]);
-    return 1;
-  }
-  
   dpy = XOpenDisplay(NULL);
   if (dpy == NULL) {
     fprintf(stderr, "couldn't open display\n");
-    return 1;
+    return -1;
   }
-  
+
   if (!XScreenSaverQueryExtension(dpy, &event_basep, &error_basep)) {
     fprintf(stderr, "screen saver extension not supported\n");
-    return 1;
+    XCloseDisplay(dpy);
+    return -1;
+  }
+
+  ssi = XScreenSaverAllocInfo();
+  if (ssi == NULL) {
+    fprintf(stderr, "couldn't allocate screen saver info\n");
+    XCloseDisplay(dpy);
+    return -1;
   }
-  
-  if (!XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), &ssi)) {
+
+  if (!XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), ssi)) {
     fprintf(stderr, "couldn't query screen saver info\n");
-    return 1;
+    XFree(ssi);
+    XCloseDisplay(dpy);
+    return -1;
   }
-  
-  printf("%lu\n", workaroundCreepyXServer(dpy, ssi.idle));
-  
+
+  /* xorg fixed the reset of the idle time in some (unknown) release. We now it
+   * is fixed in v1.20.00, therefore don't do the workaround for this version.
+   * If anybody finds the commit and therefore xorg release which fixes this
+   * issue please send a patch or raise an issue ;-) */
+  vendrel = VendorRelease(dpy);
+  if (vendrel < 12000000) {
+    *idle = workaroundCreepyXServer(dpy, ssi->idle);
+  } else {
+    *idle = ssi->idle;
+  }
+
+  XFree(ssi);
   XCloseDisplay(dpy);
+
   return 0;
 }
 
-void usage(char *name)
-{
-  fprintf(stderr,
-         "Usage:\n"
-         "%s\n"
-         "That is, no command line arguments.  The user's idle time\n"
-         "in milliseconds is printed on stdout.\n",
-         name);
+int main(int argc, char *argv[]) {
+  uint64_t idle;
+
+  /* TODO change this to getopts as soon as we have more options */
+  if (argc != 1) {
+    if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) {
+      print_version();
+      return EXIT_SUCCESS;
+    }
+    print_usage(argv[0]);
+    return EXIT_FAILURE;
+  }
+
+  if (get_x_idletime(&idle) < 0) {
+    return EXIT_FAILURE;
+  }
+
+  printf("%lu\n", idle);
+  return EXIT_SUCCESS;
 }
 
-/*!
+/*
  * This function works around an XServer idleTime bug in the
  * XScreenSaverExtension if dpms is running. In this case the current
  * dpms-state time is always subtracted from the current idletime.
  * This means: XScreenSaverInfo->idle is not the time since the last
- * user activity, as descriped in the header file of the extension.
+ * user activity, as described in the header file of the extension.
  * This result in SUSE bug # and sf.net bug #. The bug in the XServer itself
  * is reported at https://bugs.freedesktop.org/buglist.cgi?quicksearch=6439.
  *
- * Workaround: Check if if XServer is in a dpms state, check the 
- *             current timeout for this state and add this value to 
+ * Workaround: Check if if XServer is in a dpms state, check the
+ *             current timeout for this state and add this value to
  *             the current idle time and return.
- *
- * \param _idleTime a unsigned long value with the current idletime from
- *                  XScreenSaverInfo->idle
- * \return a unsigned long with the corrected idletime
  */
-unsigned long workaroundCreepyXServer(Display *dpy, unsigned long _idleTime ){
+unsigned long workaroundCreepyXServer(Display *dpy, unsigned long idleTime) {
   int dummy;
   CARD16 standby, suspend, off;
   CARD16 state;
@@ -111,26 +164,26 @@
 
       if (onoff) {
         switch (state) {
-          case DPMSModeStandby:
-            /* this check is a littlebit paranoid, but be sure */
-            if (_idleTime < (unsigned) (standby * 1000))
-              _idleTime += (standby * 1000);
-            break;
-          case DPMSModeSuspend:
-            if (_idleTime < (unsigned) ((suspend + standby) * 1000))
-              _idleTime += ((suspend + standby) * 1000);
-            break;
-          case DPMSModeOff:
-            if (_idleTime < (unsigned) ((off + suspend + standby) * 1000))
-              _idleTime += ((off + suspend + standby) * 1000);
-            break;
-          case DPMSModeOn:
-          default:
-            break;
+        case DPMSModeStandby:
+          /* this check is a little bit paranoid, but be sure */
+          if (idleTime < (unsigned)(standby * 1000))
+            idleTime += (standby * 1000);
+          break;
+        case DPMSModeSuspend:
+          if (idleTime < (unsigned)((suspend + standby) * 1000))
+            idleTime += ((suspend + standby) * 1000);
+          break;
+        case DPMSModeOff:
+          if (idleTime < (unsigned)((off + suspend + standby) * 1000))
+            idleTime += ((off + suspend + standby) * 1000);
+          break;
+        case DPMSModeOn:
+        default:
+          break;
         }
       }
-    } 
+    }
   }
 
-  return _idleTime;
+  return idleTime;
 }

Reply via email to