# HG changeset patch # User Stanislas Leduc # Date 1703013820 -3600 # Node ID 4ae824d5869cd2ba2099fe8982f3ba5c7c1d4dfe # Parent c228e4370f9de352286aed5dfbadd8540fb30ffb Fix xscreensaver and up to 5.45 (thanks Pat) diff -r c228e4370f9d -r 4ae824d5869c xscreensaver/receipt --- a/xscreensaver/receipt Sun Dec 17 20:37:36 2023 +0000 +++ b/xscreensaver/receipt Tue Dec 19 20:23:40 2023 +0100 @@ -1,7 +1,7 @@ # SliTaz package receipt. PACKAGE="xscreensaver" -VERSION="5.44" +VERSION="5.45" CATEGORY="x-window" SHORT_DESC="A collection of free screen savers." MAINTAINER="al.bobylev@gmail.com" @@ -11,12 +11,11 @@ TARBALL="$PACKAGE-$VERSION.tar.gz" WGET_URL="http://sources.buildroot.net/$PACKAGE/$TARBALL" -DEPENDS="" -BUILD_DEPENDS="bc gdk-pixbuf-dev gtk+-dev jpeg-dev libglade-dev - libxml2-dev mesa-dev xorg-libX11-dev xorg-libXext-dev - xorg-libXi-dev xorg-libXinerama-dev xorg-libXmu-dev - xorg-libXpm-dev xorg-libXrandr-dev xorg-libXt-dev - xorg-libXxf86vm-dev" +BUILD_DEPENDS="bc gdk-pixbuf-dev gtk+-dev jpeg-dev + libglade-dev libxml2-dev mesa-dev xorg-libX11-dev + xorg-libXext-dev xorg-libXi-dev xorg-libXinerama-dev + xorg-libXmu-dev xorg-libXpm-dev xorg-libXrandr-dev + xorg-libXt-dev xorg-libXxf86vm-dev" # What is the latest version available today? current_version() @@ -28,11 +27,24 @@ # Rules to configure and make the package. compile_rules() { - export LDFLAGS="$LDFLAGS $(pkg-config --libs gtk+-2.0 gdk-pixbuf-xlib-2.0 gl)" + # Thanks Slackware for patch and have work xscreensaver + export CFLAGS="$CFLAGS -std=gnu89" - ./configure $CONFIGURE_ARGS && - make && - make install_prefix=$DESTDIR install + # Drop popup about version is old + patch -p1 < $stuff/xscreensaver.no.expiration.date.diff + # Patch for shadow + patch -p1 < $stuff/xscreensaver.setuid.diff + + ./configure \ + --with-shadow \ + --with-jpeg \ + --with-gl \ + $CONFIGURE_ARGS && + make && + make install_prefix=$DESTDIR install + + # Need for password unlock + chmod 2751 $install/usr/bin/xscreensaver } # Rules to gen a SliTaz package suitable for Tazpkg. diff -r c228e4370f9d -r 4ae824d5869c xscreensaver/stuff/xscreensaver.no.expiration.date.diff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xscreensaver/stuff/xscreensaver.no.expiration.date.diff Tue Dec 19 20:23:40 2023 +0100 @@ -0,0 +1,30 @@ +--- ./driver/prefs.c.orig 2018-04-09 20:21:20.000000000 -0500 ++++ ./driver/prefs.c 2018-04-13 13:38:47.859002138 -0500 +@@ -1734,6 +1734,17 @@ + shipping the last version with the old license and then never + upgrading it again -- which would be the worst possible outcome for + everyone involved, most especially the users. ++ ++ --- ++ ++ NOTE: This feature is disabled by Slackware... we do not ship multi-year ++ old versions, nor do we think it is a good idea to include nag screens ++ that activate when an expiration date is reached. In this case, the ++ nag screen was activated after only one year, which practically insures ++ that this will be seen before the next stable Slackware release. ++ If there's a problem that needs fixing, we'll issue a fix. ++ No nag screens please. Thanks for possibly reconsidering this! ++ + */ + + time_t now = time ((time_t *) 0); /* d */ +@@ -1766,5 +1777,8 @@ + mrnths = ((((tm->tm_year + 1900) * 12) + tm->tm_mon) - /* h */ + (y * 12 + m)); /* h */ + /* p */ +- return (mrnths >= 17); /* . */ ++ /* Disable date checking for Slackware: */ /* \■/ */ ++ /* return (mrnths >= 17); */ /* . */ ++ return ( 0 ); ++ + } diff -r c228e4370f9d -r 4ae824d5869c xscreensaver/stuff/xscreensaver.setuid.diff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xscreensaver/stuff/xscreensaver.setuid.diff Tue Dec 19 20:23:40 2023 +0100 @@ -0,0 +1,179 @@ +--- ./driver/setuid.c.orig 2006-02-08 20:28:38.000000000 -0600 ++++ ./driver/setuid.c 2006-04-04 16:48:08.000000000 -0500 +@@ -1,5 +1,5 @@ + /* setuid.c --- management of runtime privileges. +- * xscreensaver, Copyright (c) 1993-1998, 2005 Jamie Zawinski ++ * xscreensaver, Copyright (c) 1993-1998 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 +@@ -41,7 +41,7 @@ + struct group *g = 0; + p = getpwuid (uid); + g = getgrgid (gid); +- sprintf (buf, "%.100s/%.100s (%ld/%ld)", ++ sprintf (buf, "%s/%s (%ld/%ld)", + (p && p->pw_name ? p->pw_name : "???"), + (g && g->gr_name ? g->gr_name : "???"), + (long) uid, (long) gid); +@@ -74,50 +74,11 @@ + } + + +-/* Returns true if we need to call setgroups(). +- +- Without calling setgroups(), the process will retain any supplementary +- gids associated with the uid, e.g.: +- +- % groups root +- root : root bin daemon sys adm disk wheel +- +- However, setgroups() can only be called by root, and returns EPERM +- for other users even if the call would be a no-op (e.g., setting the +- group list to the current list.) So, to avoid that spurious error, +- before calling setgroups() we first check whether the current list +- of groups contains only one element, our target group. If so, we +- don't need to call setgroups(). +- */ +-static int +-setgroups_needed_p (uid_t target_group) +-{ +- gid_t groups[1024]; +- int n, size; +- size = sizeof(groups) / sizeof(gid_t); +- n = getgroups (size - 1, groups); +- if (n < 0) +- { +- char buf [1024]; +- sprintf (buf, "%s: getgroups(%ld, ...)", blurb(), (long int)(size - 1)); +- perror (buf); +- return 1; +- } +- else if (n == 0) /* an empty list means only egid is in effect. */ +- return 0; +- else if (n == 1 && groups[0] == target_group) /* one element, the target */ +- return 0; +- else /* more than one, or the wrong one. */ +- return 1; +-} +- +- + static int + set_ids_by_number (uid_t uid, gid_t gid, char **message_ret) + { + int uid_errno = 0; + int gid_errno = 0; +- int sgs_errno = 0; + struct passwd *p = getpwuid (uid); + struct group *g = getgrgid (gid); + +@@ -136,11 +97,6 @@ + if (uid == (uid_t) -1) uid = (uid_t) -2; + + errno = 0; +- if (setgroups_needed_p (gid) && +- setgroups (1, &gid) < 0) +- sgs_errno = errno ? errno : -1; +- +- errno = 0; + if (setgid (gid) != 0) + gid_errno = errno ? errno : -1; + +@@ -148,10 +104,10 @@ + if (setuid (uid) != 0) + uid_errno = errno ? errno : -1; + +- if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0) ++ if (uid_errno == 0 && gid_errno == 0) + { + static char buf [1024]; +- sprintf (buf, "changed uid/gid to %.100s/%.100s (%ld/%ld).", ++ sprintf (buf, "changed uid/gid to %s/%s (%ld/%ld).", + (p && p->pw_name ? p->pw_name : "???"), + (g && g->gr_name ? g->gr_name : "???"), + (long) uid, (long) gid); +@@ -162,71 +118,28 @@ + else + { + char buf [1024]; +- gid_t groups[1024]; +- int n, size; +- +- if (sgs_errno) +- { +- sprintf (buf, "%s: couldn't setgroups to %.100s (%ld)", +- blurb(), +- (g && g->gr_name ? g->gr_name : "???"), +- (long) gid); +- if (sgs_errno == -1) +- fprintf(stderr, "%s: unknown error\n", buf); +- else +- { +- errno = sgs_errno; +- perror(buf); +- } +- +- fprintf (stderr, "%s: effective group list: ", blurb()); +- size = sizeof(groups) / sizeof(gid_t); +- n = getgroups (size - 1, groups); +- if (n < 0) +- fprintf (stderr, "unknown!\n"); +- else +- { +- int i; +- fprintf (stderr, "["); +- for (i = 0; i < n; i++) +- { +- g = getgrgid (groups[i]); +- if (i > 0) fprintf (stderr, ", "); +- if (g && g->gr_name) fprintf (stderr, "%s", g->gr_name); +- else fprintf (stderr, "%ld", (long) groups[i]); +- } +- fprintf (stderr, "]\n"); +- } +- } +- + if (gid_errno) + { +- sprintf (buf, "%s: couldn't set gid to %.100s (%ld)", ++ sprintf (buf, "%s: couldn't set gid to %s (%ld)", + blurb(), + (g && g->gr_name ? g->gr_name : "???"), + (long) gid); + if (gid_errno == -1) + fprintf(stderr, "%s: unknown error\n", buf); + else +- { +- errno = gid_errno; +- perror(buf); +- } ++ perror(buf); + } + + if (uid_errno) + { +- sprintf (buf, "%s: couldn't set uid to %.100s (%ld)", ++ sprintf (buf, "%s: couldn't set uid to %s (%ld)", + blurb(), + (p && p->pw_name ? p->pw_name : "???"), + (long) uid); + if (uid_errno == -1) + fprintf(stderr, "%s: unknown error\n", buf); + else +- { +- errno = uid_errno; +- perror(buf); +- } ++ perror(buf); + } + + return -1; +@@ -350,7 +263,7 @@ + !strcmp (p->pw_name, "games")) + { + static char buf [1024]; +- sprintf (buf, "running as %.100s", ++ sprintf (buf, "running as %s", + (p && p->pw_name && *p->pw_name + ? p->pw_name : "")); + si->nolock_reason = buf;