From: Zygo Blaxell Date: Tue, 5 Feb 2013 13:55:11 +0000 (-0500) Subject: From http://www.jwz.org/xscreensaver/xscreensaver-5.21.tar.gz X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=commitdiff_plain;h=ff35d056d723c9a5ffe728dbba5f1c25e141be04 From jwz.org/xscreensaver/xscreensaver-5.21.tar.gz -rw-r--r-- 1 zblaxell zblaxell 7382128 Feb 5 01:52 xscreensaver-5.21.tar.gz cc44ddc538ad5b59ff851f70e8a48633763ff077 xscreensaver-5.21.tar.gz --- diff --git a/Makefile.in b/Makefile.in index a99184a2..c905925f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -19,8 +19,8 @@ TARFILES = README README.hacking README.VMS INSTALL \ TAR = tar -MAKE_SUBDIR = for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) $@) || exit 5; done -MAKE_SUBDIR2 = for dir in $(SUBDIRS2);do (cd $$dir; $(MAKE) $@) || exit 5; done +MAKE_SUBDIR = for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit 5; done +MAKE_SUBDIR2 = for dir in $(SUBDIRS2); do $(MAKE) -C $$dir $@ || exit 5; done default:: @$(MAKE_SUBDIR) @@ -45,7 +45,7 @@ depend:: distdepend:: @$(MAKE) update_spec_version @$(MAKE_SUBDIR2) - @cd po ; $(MAKE) update-po + @$(MAKE) -C po update-po TAGS:: tags tags:: @@ -284,7 +284,7 @@ test-tar:: chmod -R u+w . dmg:: - cd OSX ; $(MAKE) release dmg + $(MAKE) -C OSX release dmg www:: @ \ @@ -349,8 +349,7 @@ www:: cat $$TMP > download.html ; \ rm -f $$TMP ; \ \ - (cd ..; $(MAKE) xscreensaver/changelog.html \ - xscreensaver/screenshots/index.html ); \ + $(MAKE) -C ../ xscreensaver/changelog.html xscreensaver/screenshots/index.html; \ cvs diff -U0 changelog.html ; \ set +x ; \ \ diff --git a/OSX/Makefile b/OSX/Makefile index 67d19efa..b2354dfa 100644 --- a/OSX/Makefile +++ b/OSX/Makefile @@ -122,7 +122,8 @@ dmg:: distdepend check_versions perl -0 -ne \ 's/\\\\\\n//g; m/^RETIRED_GL_EXES\s*=\s*(.*)$$/m && print "$$1\n"' \ ../hacks/glx/Makefile.in ; \ - echo xscreensaver` ; \ + echo xscreensaver ; \ + echo savertester` ; \ \ for f in $$SRC/*.{saver,app} $$EXTRAS ; do \ ok=yes ; \ diff --git a/OSX/SaverRunner.plist b/OSX/SaverRunner.plist index cc673f8e..0a864dc5 100644 --- a/OSX/SaverRunner.plist +++ b/OSX/SaverRunner.plist @@ -22,11 +22,11 @@ http://www.jwz.org/xscreensaver/ CFBundlePackageType APPL CFBundleShortVersionString - 5.20 + 5.21 CFBundleSignature ???? CFBundleVersion - 5.20 + 5.21 LSMinimumSystemVersion 10.4 NSHumanReadableCopyright diff --git a/OSX/XScreenSaver.plist b/OSX/XScreenSaver.plist index dbe47b45..36c8a0ef 100644 --- a/OSX/XScreenSaver.plist +++ b/OSX/XScreenSaver.plist @@ -15,11 +15,11 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 5.20 + 5.21 CFBundleSignature ???? CFBundleVersion - 5.20 + 5.21 LSMinimumSystemVersion 10.4 NSMainNibFile diff --git a/OSX/bindist.rtf b/OSX/bindist.rtf index 718e9a54..22875fa3 100644 --- a/OSX/bindist.rtf +++ b/OSX/bindist.rtf @@ -2,9 +2,11 @@ \readonlydoc1{\fonttbl\f0\fswiss\fcharset77 Arial-BoldMT;\f1\fswiss\fcharset77 ArialMT;} {\colortbl;\red255\green255\blue255;\red0\green0\blue240;} {\info -{\title XScreenSaver Installation Instructions}}\vieww10380\viewh13000\viewkind0 +{\title XScreenSaver Installation Instructions}}\vieww10380\viewh16740\viewkind0 \deftab360 \pard\pardeftab360\qc +\deftab720 +\pard\pardeftab720\qc \ \b\fs36 XScreenSaver\ @@ -16,8 +18,8 @@ XScreenSaver\ by Jamie Zawinski\ and many others\ \ -version 5.20\ -06-Oct-2012\ +version 5.21\ +04-Feb-2013\ \ {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}} \ @@ -31,6 +33,13 @@ To install \i all \i0 of them, drag all of the .saver files to the "Screen Savers" folder in your "Library" folder. You may need to create the "Screen Savers" folder first.\ \ +If you get an error saying it \i "can't be opened because it is from an +unidentified developer", \i0 then open \i Terminal \i0 and type this:\ +\ +\pard\li720 +xattr -r -d com.apple.quarantine ~/Library/Screen\\ Savers\ +sudo xattr -r -d com.apple.quarantine /Library/Screen\\ Savers\ +\ \pard \b When upgrading:\ \b0\li360 diff --git a/OSX/iSaverRunner.plist b/OSX/iSaverRunner.plist index 4a3e6162..8a2404a0 100644 --- a/OSX/iSaverRunner.plist +++ b/OSX/iSaverRunner.plist @@ -9,7 +9,7 @@ CFBundleDevelopmentRegion English CFBundleVersion - 5.20 + 5.21 NSMainNibFile iSaverRunner CFBundlePackageType @@ -19,7 +19,7 @@ UIStatusBarHidden CFBundleShortVersionString - 5.20 + 5.21 CFBundleInfoDictionaryVersion 6.0 UIRequiredDeviceCapabilities diff --git a/OSX/update-info-plist.pl b/OSX/update-info-plist.pl index 14b1494a..ce17e1cd 100755 --- a/OSX/update-info-plist.pl +++ b/OSX/update-info-plist.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2006-2012 Jamie Zawinski +# Copyright © 2006-2013 Jamie Zawinski # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that @@ -22,11 +22,15 @@ require 5; #use diagnostics; # Fails on some MacOS 10.5 systems use strict; -my $progname = $0; $progname =~ s@.*/@@g; -my $version = q{ $Revision: 1.22 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; +my ($exec_dir, $progname) = ($0 =~ m@^(.*?)/([^/]+)$@); + +my $version = q{ $Revision: 1.23 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; $ENV{PATH} = "/usr/local/bin:$ENV{PATH}"; # for seticon +my $thumbdir = $ENV{HOME} . '/www/xscreensaver/screenshots/'; + + my $verbose = 1; @@ -228,6 +232,21 @@ sub set_icon($) { } +sub set_thumb($) { + my ($app_dir) = @_; + + return unless ($app_dir =~ m@\.saver/?$@s); + + my @cmd = ("$exec_dir/update-thumbnail.pl", $thumbdir, $app_dir); + push @cmd, "-" . ("v" x $verbose) if ($verbose); + print STDERR "$progname: exec: " . join(' ', @cmd) . "\n" + if ($verbose > 1); + system (@cmd); + my $exit = $? >> 8; + exit ($exit) if $exit; +} + + sub update($) { my ($app_dir) = @_; @@ -282,6 +301,7 @@ sub update($) { } set_icon ($app_dir); + set_thumb ($app_dir); } diff --git a/README b/README index 84c84377..0b7de8bc 100644 --- a/README +++ b/README @@ -38,6 +38,12 @@ XScreenSaver has an extensive manual -- please read it! =============================================================================== +Changes since 5.20: * Changed default text source from Twitter to Wikipedia, + since Twitter now requires a login to get any feeds. + * New version of `fireworkx'. + * Minor fixes to `distort', `fontglide', `xmatrix'. + * New MacOS crash in `bsod'. + * New mode in `lcdscrub'. Changes since 5.19: * Support for iPhone 5 screen size. * Fixed modifier key handing in Apple2.app and Phosphor.app on MacOS. @@ -166,7 +172,7 @@ Changes since 5.05: * Xinerama/RANDR fixes: this time for sure. It should have no idea how to redirect output to a file. * Added `-duration' arg to most image-loading hacks, so that they pick a new image every few minutes. - * Added an ATM crash to BSOD. + * Added an ATM crash to `bsod'. Changes since 5.04: * New hacks, `cubicgrid', `hypnowheel', and `lcdscrub' (which isn't really a screen saver). * Updates to `m6502' and `gears'. @@ -413,7 +419,7 @@ Changes since 4.10: * New hacks, `hypertorus', `cubestorm', `glknots', wimpier video cards now. * Various portability tweaks. Changes since 4.09: * New hacks, `cloudlife' and `klein'. - * Added Apple ][+, HPUX, and OS/390 sessions to BSOD. + * Added Apple ][+, HPUX, and OS/390 sessions to `bsod'. * Added some Matrix Reloaded text to `xmatrix'. * Updates to `webcollage', `eruption', `jigglypuff', `metaballs', and `endgame'. diff --git a/config.h.in b/config.h.in index c11d0e63..c85dfdc9 100644 --- a/config.h.in +++ b/config.h.in @@ -467,6 +467,12 @@ /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + /* Define to empty if `const' does not conform to ANSI C. */ #undef const diff --git a/configure b/configure index 04b03280..25217853 100755 --- a/configure +++ b/configure @@ -811,6 +811,7 @@ ac_subst_files='' ac_user_opts=' enable_option_checking with_x_app_defaults +enable_largefile with_x with_hackdir enable_subdir @@ -1482,6 +1483,7 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-largefile omit support for large files Screen locking options: --enable-locking Compile in support for locking the display. @@ -5760,6 +5762,362 @@ $as_echo "two arguments" >&6; } $as_echo "unknown" >&6; } fi +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if test "${ac_cv_sys_largefile_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -rf conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -rf conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -rf conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -rf conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_largefile_CC=' -n32'; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -rf conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + $as_echo_n "(cached) " >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -rf conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -rf conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=no; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -rf conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -rf conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=64; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if test "${ac_cv_sys_large_files+set}" = set; then + $as_echo_n "(cached) " >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -rf conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -rf conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=no; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -rf conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -rf conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=1; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi +fi + @@ -17475,7 +17833,7 @@ if test "${ac_cv_mesagl_version_string+set}" = set; then $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext < #ifndef MESA_MAJOR_VERSION diff --git a/configure.in b/configure.in index 11ba5c19..4cff8fa4 100644 --- a/configure.in +++ b/configure.in @@ -1184,6 +1184,7 @@ AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_HEADER_DIRENT AC_GETTIMEOFDAY_ARGS +AC_SYS_LARGEFILE AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk) AC_CHECK_FUNCS(sigaction syslog realpath setrlimit) AC_CHECK_FUNCS(setlocale) diff --git a/driver/Makefile.in b/driver/Makefile.in index 0d5865cb..9faa3ef7 100644 --- a/driver/Makefile.in +++ b/driver/Makefile.in @@ -732,8 +732,7 @@ $(UTILS_BIN)/yarandom.o: $(UTILS_SRC)/yarandom.c $(UTILS_BIN)/colorbars.o: $(UTILS_SRC)/colorbars.c $(SAVER_UTIL_OBJS): - cd $(UTILS_BIN) ; \ - $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" + $(MAKE) -C $(UTILS_BIN) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" # How we build object files in this directory. .c.o: @@ -877,7 +876,21 @@ xdpyinfo: xdpyinfo.o # DO NOT DELETE: updated by make distdepend demo-Gtk-conf.o: ../config.h +demo-Gtk-conf.o: $(srcdir)/demo-Gtk-conf.h +demo-Gtk-conf.o: $(UTILS_SRC)/xscreensaver-intl.h +demo-Gtk.o: XScreenSaver_ad.h demo-Gtk.o: ../config.h +demo-Gtk.o: $(srcdir)/demo-Gtk-conf.h +demo-Gtk.o: $(srcdir)/demo-Gtk-support.h +demo-Gtk.o: $(srcdir)/demo-Gtk-widgets.h +demo-Gtk.o: $(srcdir)/prefs.h +demo-Gtk.o: $(srcdir)/remote.h +demo-Gtk.o: $(srcdir)/types.h +demo-Gtk.o: $(UTILS_SRC)/resources.h +demo-Gtk.o: $(UTILS_SRC)/usleep.h +demo-Gtk.o: $(UTILS_SRC)/version.h +demo-Gtk.o: $(UTILS_SRC)/visual.h +demo-Gtk.o: $(UTILS_SRC)/xscreensaver-intl.h demo-Gtk-support.o: ../config.h demo-Gtk-support.o: $(srcdir)/demo-Gtk-support.h demo-Gtk-widgets.o: ../config.h @@ -910,6 +923,7 @@ prefs.o: ../config.h prefs.o: $(srcdir)/prefs.h prefs.o: $(srcdir)/types.h prefs.o: $(UTILS_SRC)/resources.h +prefs.o: $(UTILS_SRC)/version.h remote.o: ../config.h remote.o: $(srcdir)/remote.h screens.o: ../config.h diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in index 020b1ec0..12d49d23 100644 --- a/driver/XScreenSaver.ad.in +++ b/driver/XScreenSaver.ad.in @@ -4,8 +4,8 @@ ! a screen saver and locker for the X window system ! by Jamie Zawinski ! -! version 5.20 -! 06-Oct-2012 +! version 5.21 +! 04-Feb-2013 ! ! See "man xscreensaver" for more info. The latest version is always ! available at http://www.jwz.org/xscreensaver/ @@ -62,8 +62,7 @@ *textLiteral: XScreenSaver *textFile: @DEFAULT_TEXT_FILE@ *textProgram: fortune -*textURL: http://twitter.com/statuses/public_timeline.atom -!*textURL: http://www.livejournal.com/stats/latest-rss.bml +*textURL: http://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss *overlayTextForeground: #FFFF00 *overlayTextBackground: #000000 @@ -415,7 +414,7 @@ XScreenSaver.bourneShell: /bin/sh *passwd.uname: True *splash.heading.label: XScreenSaver %s -*splash.body.label: Copyright © 1991-2012 by +*splash.body.label: Copyright © 1991-2013 by *splash.body2.label: Jamie Zawinski *splash.demo.label: Settings *splash.help.label: Help diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h index 88edae9d..3b6b133b 100644 --- a/driver/XScreenSaver_ad.h +++ b/driver/XScreenSaver_ad.h @@ -33,7 +33,7 @@ "*textLiteral: XScreenSaver", "*textFile: ", "*textProgram: fortune", -"*textURL: http://twitter.com/statuses/public_timeline.atom", +"*textURL: http://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss", "*overlayTextForeground: #FFFF00", "*overlayTextBackground: #000000", "*overlayStderr: True", @@ -46,9 +46,9 @@ "*demoCommand: xscreensaver-demo", "*prefsCommand: xscreensaver-demo -prefs", "*helpURL: http://www.jwz.org/xscreensaver/man.html", -"*loadURL: firefox '%s' || mozilla '%s' || netscape '%s'", -"*manualCommand: xterm -sb -fg black -bg gray75 -T '%s manual' \ - -e /bin/sh -c 'man \"%s\" ; read foo'", +"*loadURL: gnome-open '%s'", +"*manualCommand: gnome-terminal --title '%s manual' \ + --command '/bin/sh -c \"man %s; read foo\"'", "*dateFormat: %d-%b-%y (%a); %I:%M %p", "*installColormap: True", "*programs: \ @@ -288,7 +288,7 @@ "*passwd.asterisks: True", "*passwd.uname: True", "*splash.heading.label: XScreenSaver %s", -"*splash.body.label: Copyright © 1991-2012 by", +"*splash.body.label: Copyright © 1991-2013 by", "*splash.body2.label: Jamie Zawinski ", "*splash.demo.label: Settings", "*splash.help.label: Help", diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c index 93e5fb3c..fdf239a7 100644 --- a/driver/demo-Gtk.c +++ b/driver/demo-Gtk.c @@ -1,5 +1,5 @@ /* demo-Gtk.c --- implements the interactive demo-mode and options dialogs. - * xscreensaver, Copyright (c) 1993-2012 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -802,23 +802,30 @@ about_menu_cb (GtkMenuItem *menuitem, gpointer user_data) { char msg [2048]; char *vers = strdup (screensaver_id + 4); - char *s; + char *s, *s2; char copy[1024]; + char year[5]; char *desc = _("For updates, check http://www.jwz.org/xscreensaver/"); s = strchr (vers, ','); *s = 0; s += 2; + s2 = vers; + s2 = strrchr (vers, '-'); + s2++; + strncpy (year, s2, 4); + year[4] = 0; + /* Ole Laursen says "don't use _() here because non-ASCII characters aren't allowed in localizable string keys." (I don't want to just use (c) instead of © because that doesn't look as good in the plain-old default Latin1 "C" locale.) */ #ifdef HAVE_GTK2 - sprintf(copy, ("Copyright \xC2\xA9 1991-2008 %s"), s); + sprintf(copy, ("Copyright \xC2\xA9 1991-%s %s"), year, s); #else /* !HAVE_GTK2 */ - sprintf(copy, ("Copyright \251 1991-2008 %s"), s); + sprintf(copy, ("Copyright \251 1991-%s %s"), year, s); #endif /* !HAVE_GTK2 */ sprintf (msg, "%s\n\n%s", copy, desc); @@ -5290,6 +5297,20 @@ main (int argc, char **argv) the_network_is_not_the_computer (s); + if (senescent_p()) + warning_dialog (s->toplevel_widget, + _("Warning:\n\n" + "This version of xscreensaver is VERY OLD!\n" + "Please upgrade!\n" + "\n" + "http://www.jwz.org/xscreensaver/\n" + "\n" + "(If this is the latest version that your distro ships, then\n" + "your distro is doing you a disservice. Build from source.)\n" + ), + D_NONE, 7); + + /* Run the Gtk event loop, and not the Xt event loop. This means that if there were Xt timers or fds registered, they would never get serviced, and if there were any Xt widgets, they would never have events delivered. diff --git a/driver/lock.c b/driver/lock.c index 296bcd02..b0c4ec70 100644 --- a/driver/lock.c +++ b/driver/lock.c @@ -1,5 +1,5 @@ /* lock.c --- handling the password dialog for locking-mode. - * xscreensaver, Copyright (c) 1993-2011 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -487,6 +487,11 @@ make_passwd_window (saver_info *si, * room for the dialog to grow without going off the edge of the screen. */ max_string_width_px *= 0.75; + if (!info_msg && senescent_p()) + info_msg = ("\n" + "This version of XScreenSaver\n" + "is very old! Please upgrade!\n"); + pw->info_label = mlstring_new(info_msg ? info_msg : pw->body_label, pw->label_font, max_string_width_px); diff --git a/driver/prefs.c b/driver/prefs.c index f01f1147..4d6c80e2 100644 --- a/driver/prefs.c +++ b/driver/prefs.c @@ -1,5 +1,5 @@ /* dotfile.c --- management of the ~/.xscreensaver file. - * xscreensaver, Copyright (c) 1998-2011 Jamie Zawinski + * xscreensaver, Copyright (c) 1998-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -64,6 +64,7 @@ #endif +#include "version.h" #include "prefs.h" #include "resources.h" @@ -1648,3 +1649,44 @@ stop_the_insanity (saver_preferences *p) if (p->pointer_hysteresis < 0) p->pointer_hysteresis = 0; if (p->pointer_hysteresis > 100) p->pointer_hysteresis = 100; } + + +/* Getting very tired of bug reports of already-fixed bugs due to + Linux distros shipping multi-year-old versions. + */ +Bool +senescent_p (void) +{ + time_t now = time ((time_t *) 0); + struct tm *tm = localtime (&now); + char *s, mon[4], year[5]; + int m, y, months; + s = strchr (screensaver_id, '-'); + s++; + strncpy (mon, s, 3); + s = strchr (s, '-'); + s++; + strncpy (year, s, 4); + mon[3] = 0; + year[4] = 0; + if (!strcmp(mon, "Jan")) m = 0; + else if (!strcmp(mon, "Feb")) m = 1; + else if (!strcmp(mon, "Mar")) m = 2; + else if (!strcmp(mon, "Apr")) m = 3; + else if (!strcmp(mon, "May")) m = 4; + else if (!strcmp(mon, "Jun")) m = 5; + else if (!strcmp(mon, "Jul")) m = 6; + else if (!strcmp(mon, "Aug")) m = 7; + else if (!strcmp(mon, "Sep")) m = 8; + else if (!strcmp(mon, "Oct")) m = 9; + else if (!strcmp(mon, "Nov")) m = 10; + else if (!strcmp(mon, "Dec")) m = 11; + else abort(); + + y = (year[0]-'0')*1000 + (year[1]-'0')*100 + (year[2]-'0')*10 +(year[3]-'0'); + + months = ((((tm->tm_year + 1900) * 12) + tm->tm_mon) - + (y * 12 + m)); + + return (months > 12); +} diff --git a/driver/prefs.h b/driver/prefs.h index eeb272ef..ecbb4907 100644 --- a/driver/prefs.h +++ b/driver/prefs.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1993-2006 Jamie Zawinski +/* xscreensaver, Copyright (c) 1993-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -20,6 +20,7 @@ extern int write_init_file (Display *, saver_preferences *, const char *version_string, Bool verbose_p); const char *init_file_name (void); +extern Bool senescent_p (void); extern screenhack *parse_screenhack (const char *line); extern void free_screenhack (screenhack *); diff --git a/driver/splash.c b/driver/splash.c index 02844b58..bc830029 100644 --- a/driver/splash.c +++ b/driver/splash.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1991-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -114,6 +114,8 @@ struct splash_dialog_data { char *heading_label; char *body_label; char *body2_label; + char *body3_label; + char *body4_label; char *demo_label; #ifdef PREFS_BUTTON char *prefs_label; @@ -156,6 +158,7 @@ struct splash_dialog_data { void make_splash_dialog (saver_info *si) { + saver_preferences *p = &si->prefs; int x, y, bw; XSetWindowAttributes attrs; unsigned long attrmask = 0; @@ -164,6 +167,20 @@ make_splash_dialog (saver_info *si) Colormap cmap; char *f; + Bool whine = senescent_p (); + + if (whine) + { + /* If locking is not enabled, make sure they see the message. */ + if (!p->lock_p) + { + si->prefs.splash_p = True; + if (si->prefs.splash_duration < 5000) + si->prefs.splash_duration = 5000; + } + si->prefs.splash_duration += 3000; + } + if (si->sp_data) return; if (!si->prefs.splash_p || @@ -201,6 +218,14 @@ make_splash_dialog (saver_info *si) "splash.help.label", "Dialog.Button.Label"); + + + if (whine) + { + sp->body3_label = strdup("WARNING: This version is very old!"); + sp->body4_label = strdup("Please upgrade!"); + } + if (!sp->heading_label) sp->heading_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY"); if (!sp->body_label) @@ -312,6 +337,20 @@ make_splash_dialog (saver_info *si) if (overall.width > sp->width) sp->width = overall.width; sp->height += ascent + descent; + /* Measure the optional body3_label. */ + if (sp->body3_label) + { + XTextExtents (sp->heading_font, + sp->body3_label, strlen(sp->body3_label), + &direction, &ascent, &descent, &overall); + if (overall.width > sp->width) sp->width = overall.width; + XTextExtents (sp->heading_font, + sp->body4_label, strlen(sp->body4_label), + &direction, &ascent, &descent, &overall); + if (overall.width > sp->width) sp->width = overall.width; + sp->height += (ascent + descent) * 5; + } + { Dimension w2 = 0, w3 = 0, w4 = 0; Dimension h2 = 0, h3 = 0, h4 = 0; @@ -510,6 +549,24 @@ draw_splash_window (saver_info *si) sp->body2_label, strlen(sp->body2_label)); y1 += sp->body_font->descent; + if (sp->body3_label) + { + XSetFont (si->dpy, gc1, sp->heading_font->fid); + y1 += sp->heading_font->ascent + sp->heading_font->descent; + y1 += sp->heading_font->ascent; + sw = string_width (sp->heading_font, sp->body3_label); + x2 = (x1 + ((x3 - x1 - sw) / 2)); + XDrawString (si->dpy, si->splash_dialog, gc1, x2, y1, + sp->body3_label, strlen(sp->body3_label)); + y1 += sp->heading_font->descent + sp->heading_font->ascent; + sw = string_width (sp->heading_font, sp->body4_label); + x2 = (x1 + ((x3 - x1 - sw) / 2)); + XDrawString (si->dpy, si->splash_dialog, gc1, x2, y1, + sp->body4_label, strlen(sp->body4_label)); + y1 += sp->heading_font->descent; + XSetFont (si->dpy, gc1, sp->body_font->fid); + } + /* The buttons */ XSetForeground (si->dpy, gc1, sp->button_foreground); @@ -674,6 +731,8 @@ destroy_splash_window (saver_info *si) if (sp->heading_label) free (sp->heading_label); if (sp->body_label) free (sp->body_label); if (sp->body2_label) free (sp->body2_label); + if (sp->body3_label) free (sp->body3_label); + if (sp->body4_label) free (sp->body4_label); if (sp->demo_label) free (sp->demo_label); #ifdef PREFS_BUTTON if (sp->prefs_label) free (sp->prefs_label); diff --git a/driver/test-passwd.c b/driver/test-passwd.c index 6563bd8d..66cd3d4e 100644 --- a/driver/test-passwd.c +++ b/driver/test-passwd.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1998-2011 Jamie Zawinski +/* xscreensaver, Copyright (c) 1998-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -64,6 +64,7 @@ void shutdown_stderr (saver_info *si) { } void resize_screensaver_window (saver_info *si) { } void describe_monitor_layout (saver_info *si) { } Bool update_screen_layout (saver_info *si) { return 0; } +Bool in_signal_handler_p = 0; const char *blurb(void) { return progname; } Atom XA_SCREENSAVER, XA_DEMO, XA_PREFS; @@ -162,6 +163,7 @@ main (int argc, char **argv) si->version = (char *) malloc (5); memcpy (si->version, screensaver_id + 17, 4); + si->version[4] = 0; progname = argv[0]; { char *s = strrchr(progname, '/'); diff --git a/driver/xscreensaver-command.c b/driver/xscreensaver-command.c index 5ec74417..f35a30d9 100644 --- a/driver/xscreensaver-command.c +++ b/driver/xscreensaver-command.c @@ -1,4 +1,4 @@ -/* xscreensaver-command, Copyright (c) 1991-2008 Jamie Zawinski +/* xscreensaver-command, Copyright (c) 1991-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -65,7 +65,7 @@ static char *usage = "\n\ usage: %s -