diff --git a/gnome-screensaver-2.18.0-user-dirs.patch b/gnome-screensaver-2.18.0-user-dirs.patch new file mode 100644 index 0000000..babf9cb --- /dev/null +++ b/gnome-screensaver-2.18.0-user-dirs.patch @@ -0,0 +1,204 @@ +--- gnome-screensaver-2.18.0/savers/personal-slideshow.desktop.in.user-dirs 2007-03-30 22:35:28.000000000 -0400 ++++ gnome-screensaver-2.18.0/savers/personal-slideshow.desktop.in 2007-03-30 22:37:33.000000000 -0400 +@@ -2,7 +2,7 @@ + Encoding=UTF-8 + _Name=Pictures folder + _Comment=Display a slideshow from your Pictures folder +-Exec=slideshow --location=Pictures ++Exec=slideshow + TryExec=slideshow + StartupNotify=false + Terminal=false +--- gnome-screensaver-2.18.0/savers/slideshow.c.user-dirs 2007-02-22 23:39:09.000000000 -0500 ++++ gnome-screensaver-2.18.0/savers/slideshow.c 2007-03-30 22:13:17.000000000 -0400 +@@ -34,6 +34,8 @@ + #include "gs-theme-engine.h" + #include "gste-slideshow.h" + ++#include "xdg-user-dir-lookup.c" ++ + int + main (int argc, char **argv) + { +@@ -79,6 +81,11 @@ + G_CALLBACK (gtk_main_quit), NULL); + + engine = g_object_new (GSTE_TYPE_SLIDESHOW, NULL); ++ ++ if (location == NULL) { ++ location = xdg_user_dir_lookup ("PICTURES"); ++ } ++ + if (location != NULL) { + g_object_set (engine, "images-location", location, NULL); + } +--- /dev/null 2007-03-30 22:25:08.845418234 -0400 ++++ gnome-screensaver-2.18.0/savers/xdg-user-dir-lookup.c 2007-03-30 22:13:17.000000000 -0400 +@@ -0,0 +1,167 @@ ++/* ++ This file is not licenced under the GPL like the rest of the code. ++ Its is under the MIT license, to encourage reuse by cut-and-paste. ++ ++ Copyright (c) 2007 Red Hat, inc ++ ++ Permission is hereby granted, free of charge, to any person ++ obtaining a copy of this software and associated documentation files ++ (the "Software"), to deal in the Software without restriction, ++ including without limitation the rights to use, copy, modify, merge, ++ publish, distribute, sublicense, and/or sell copies of the Software, ++ and to permit persons to whom the Software is furnished to do so, ++ subject to the following conditions: ++ ++ The above copyright notice and this permission notice shall be ++ included in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS ++ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ++ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++ SOFTWARE. ++*/ ++ ++#include ++#include ++#include ++ ++ ++static char * ++xdg_user_dir_lookup (const char *type) ++{ ++ FILE *file; ++ char *home_dir, *config_home, *config_file; ++ char buffer[512]; ++ char *user_dir; ++ char *p, *d; ++ int len; ++ int relative; ++ ++ home_dir = getenv ("HOME"); ++ ++ if (home_dir == NULL) ++ return strdup ("/tmp"); ++ ++ config_home = getenv ("XDG_CONFIG_HOME"); ++ if (config_home == NULL || config_home[0] == 0) ++ { ++ config_file = malloc (strlen (home_dir) + strlen ("/.config/user-dirs.dirs") + 1); ++ strcpy (config_file, home_dir); ++ strcat (config_file, "/.config/user-dirs.dirs"); ++ } ++ else ++ { ++ config_file = malloc (strlen (config_home) + strlen ("/user-dirs.dirs") + 1); ++ strcpy (config_file, config_home); ++ strcat (config_file, "/user-dirs.dirs"); ++ } ++ ++ file = fopen (config_file, "r"); ++ free (config_file); ++ if (file == NULL) ++ goto error; ++ ++ user_dir = NULL; ++ while (fgets (buffer, sizeof (buffer), file)) ++ { ++ /* Remove newline at end */ ++ len = strlen (buffer); ++ if (len > 0 && buffer[len-1] == '\n') ++ buffer[len-1] = 0; ++ ++ p = buffer; ++ while (*p == ' ' || *p == '\t') ++ p++; ++ ++ if (strncmp (p, "XDG_", 4) != 0) ++ continue; ++ p += 4; ++ if (strncmp (p, type, strlen (type)) != 0) ++ continue; ++ p += strlen (type); ++ if (strncmp (p, "_DIR", 4) != 0) ++ continue; ++ p += 4; ++ ++ while (*p == ' ' || *p == '\t') ++ p++; ++ ++ if (*p != '=') ++ continue; ++ p++; ++ ++ while (*p == ' ' || *p == '\t') ++ p++; ++ ++ if (*p != '"') ++ continue; ++ p++; ++ ++ relative = 0; ++ if (strncmp (p, "$HOME/", 6) == 0) ++ { ++ p += 6; ++ relative = 1; ++ } ++ else if (*p != '/') ++ continue; ++ ++ if (relative) ++ { ++ user_dir = malloc (strlen (home_dir) + 1 + strlen (p) + 1); ++ strcpy (user_dir, home_dir); ++ strcat (user_dir, "/"); ++ } ++ else ++ { ++ user_dir = malloc (strlen (p) + 1); ++ *user_dir = 0; ++ } ++ ++ d = user_dir + strlen (user_dir); ++ while (*p && *p != '"') ++ { ++ if ((*p == '\\') && (*(p+1) != 0)) ++ p++; ++ *d++ = *p++; ++ } ++ *d = 0; ++ } ++ fclose (file); ++ ++ if (user_dir) ++ return user_dir; ++ ++ error: ++ /* Special case desktop for historical compatibility */ ++ if (strcmp (type, "DESKTOP") == 0) ++ { ++ user_dir = malloc (strlen (home_dir) + strlen ("/Desktop") + 1); ++ strcpy (user_dir, home_dir); ++ strcat (user_dir, "/Desktop"); ++ return user_dir; ++ } ++ else ++ return strdup (home_dir); ++} ++ ++#ifdef STANDALONE ++ ++int ++main (int argc, char *argv[]) ++{ ++ if (argc != 2) ++ { ++ fprintf (stderr, "Usage %s \n", argv[0]); ++ exit (1); ++ } ++ ++ printf ("%s\n", xdg_user_dir_lookup (argv[1])); ++ return 0; ++} ++ ++#endif diff --git a/gnome-screensaver.spec b/gnome-screensaver.spec index 129ee1b..2430d96 100644 --- a/gnome-screensaver.spec +++ b/gnome-screensaver.spec @@ -13,7 +13,7 @@ Summary: GNOME Screensaver Name: gnome-screensaver Version: 2.18.0 -Release: 1%{?dist} +Release: 2%{?dist} License: GPL Group: Amusements/Graphics Source0: http://ftp.gnome.org/pub/gnome/sources/gnome-screensaver/2.18/%{name}-%{version}.tar.bz2 @@ -21,6 +21,7 @@ Source1: gnome-screensaver-hide-xscreensaver.menu Patch1: gnome-screensaver-2.15.4-default-theme.patch Patch2: gnome-screensaver-2.18.0-securitytoken.patch +Patch3: gnome-screensaver-2.18.0-user-dirs.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) URL: http://www.gnome.org @@ -64,6 +65,7 @@ simple, sane, secure defaults and be well integrated with the desktop. %setup -q %patch1 -p1 -b .use-floaters-by-default %patch2 -p1 -b .securitytoken +%patch3 -p1 -b .user-dirs %build autoreconf @@ -123,6 +125,9 @@ fi %{_sysconfdir}/skel/Pictures %changelog +* Fri Mar 30 2007 Matthias Clasen - 2.18.0-2 +- Use the PICTURES user dir in the Pictures screensaver + * Wed Mar 14 2007 Ray Strode - 2.18.0-1 - Update to 2.18.0 (Matthias) - rework smart card patch