rpms/gthumb/devel gthumb-2.10.0-user-dirs.patch, NONE, 1.1 gthumb.spec, 1.66, 1.67

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon Apr 2 05:16:10 UTC 2007


Author: mclasen

Update of /cvs/dist/rpms/gthumb/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv5201

Modified Files:
	gthumb.spec 
Added Files:
	gthumb-2.10.0-user-dirs.patch 
Log Message:
xdg-user-dirs support for gthumb


gthumb-2.10.0-user-dirs.patch:
 dlg-photo-importer.c  |    3 
 xdg-user-dir-lookup.c |  165 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 167 insertions(+), 1 deletion(-)

--- NEW FILE gthumb-2.10.0-user-dirs.patch ---
--- gthumb-2.10.0/src/dlg-photo-importer.c.user-dirs	2007-04-02 01:03:49.000000000 -0400
+++ gthumb-2.10.0/src/dlg-photo-importer.c	2007-04-02 01:05:57.000000000 -0400
@@ -68,6 +68,7 @@
 #define THUMB_BORDER 14
 #define REFRESH_RATE 10
 
+#include "xdg-user-dir-lookup.c"
 
 typedef enum {
 	GTH_IMPORTER_OP_LIST_ABILITIES,
@@ -1890,7 +1891,7 @@
 
 	default_path = eel_gconf_get_path (PREF_PHOTO_IMPORT_DESTINATION, NULL);
 	if ((default_path == NULL) || (*default_path == 0))
-		default_path = g_strdup (g_get_home_dir());
+		default_path = xdg_user_dir_lookup ("PICTURES");
 	gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (data->destination_filechooserbutton), default_path);
 	g_free (default_path);
 
--- gthumb-2.10.0/src/xdg-user-dir-lookup.c.user-dirs	2007-04-02 01:06:25.000000000 -0400
+++ gthumb-2.10.0/src/xdg-user-dir-lookup.c	2007-04-02 01:06:20.000000000 -0400
@@ -0,0 +1,165 @@
+/*
+  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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+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 <dir-type>\n", argv[0]);
+      exit (1);
+    }
+  
+  printf ("%s\n", xdg_user_dir_lookup (argv[1]));
+  return 0;
+}
+#endif


Index: gthumb.spec
===================================================================
RCS file: /cvs/dist/rpms/gthumb/devel/gthumb.spec,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -r1.66 -r1.67
--- gthumb.spec	24 Mar 2007 03:47:44 -0000	1.66
+++ gthumb.spec	2 Apr 2007 05:16:08 -0000	1.67
@@ -11,7 +11,7 @@
 Summary: Image viewer, editor, organizer
 Name: gthumb
 Version: 2.10.0
-Release: 2%{?dist}
+Release: 3%{?dist}
 URL: http://gthumb.sourceforge.net
 Source0: ftp://ftp.gnome.org/pub/GNOME/sources/gthumb/2.10/%{name}-%{version}.tar.bz2
 License: GPL
@@ -51,6 +51,8 @@
 Requires(postun): desktop-file-utils >= %{desktop_file_utils_version}
 
 Patch0: gthumb-libdir.patch
+# http://bugzilla.gnome.org/show_bug.cgi?id=425365
+Patch1: gthumb-2.10.0-user-dirs.patch
 
 
 %description
@@ -60,6 +62,7 @@
 %prep
 %setup -q
 %patch0 -p1 -b .libdir
+%patch1 -p1 -b .user-dirs
 
 %build
 
@@ -132,6 +135,9 @@
 %{_datadir}/icons/hicolor/*
 
 %changelog
+* Mon Apr  2 2007 Matthias Clasen <mclasen at redhat.com> - 2.10.0-3
+- Use the PICTURES user dir as default location for photo import
+
 * Fri Mar 23 2007 Matthias Clasen <mclasen at redhat.com> - 2.10.0-2
 - Remove a no-longer needed patch (#233350)
 




More information about the fedora-cvs-commits mailing list