rpms/transmission/devel transmission-1.51-xdg-download-dir.patch, NONE, 1.1 transmission.spec, 1.34, 1.35

Lubomir Rintel lkundrak at fedoraproject.org
Sat Mar 28 11:53:18 UTC 2009


Author: lkundrak

Update of /cvs/pkgs/rpms/transmission/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv14883

Modified Files:
	transmission.spec 
Added Files:
	transmission-1.51-xdg-download-dir.patch 
Log Message:
* Sat Mar 28 2009 Lubomir Rintel <lkundrak at v3.sk> - 1.51-2
- Use XDG Download directory (#490950)


transmission-1.51-xdg-download-dir.patch:

--- NEW FILE transmission-1.51-xdg-download-dir.patch ---
Use the XDG download directory for downloads instead of
made-up unusally nonesixtent ~/Downloads (fall back to it
in case there's no XDG user dir configuration).

Lubomir Rintel <lkundrak at v3.sk>

diff -up transmission-1.51/libtransmission/platform.c.xdg-download-dir transmission-1.51/libtransmission/platform.c
--- transmission-1.51/libtransmission/platform.c.xdg-download-dir	2009-03-28 12:30:43.817212449 +0100
+++ transmission-1.51/libtransmission/platform.c	2009-03-28 12:31:39.752214378 +0100
@@ -443,15 +443,124 @@ tr_getDefaultConfigDir( const char * app
     return s;
 }
 
+/* This was stolen from gthumb, though it probably originates from
+ * xdg-user-dirs's xdg-user-dir-lookup.c. See:
+ * http://www.redhat.com/archives/fedora-devel-list/2007-March/msg00677.html
+ */
 const char*
 tr_getDefaultDownloadDir( void )
 {
-    static char * s = NULL;
+    static char * user_dir = NULL;
+    char type[] = "DOWNLOAD";
+    FILE * file;
+    char * home_dir, * config_home, * config_file;
+    char buffer[512];
+    char * p, * d;
+    int len;
+    int relative;
+
+    if( user_dir != NULL )
+        return user_dir;
+
+    home_dir = getenv( "HOME" );
+    if( home_dir == NULL )
+        return strdup("/tmp" );
 
-    if( s == NULL )
-        s = tr_buildPath( getHomeDir( ), "Downloads", NULL );
+    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" );
+    }
 
-    return s;
+    file = fopen( config_file, "r" );
+    free( config_file );
+    if( file == NULL )
+        goto error;
+
+    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 );
+
+error:
+    if( !user_dir )
+            user_dir = tr_buildPath(  getHomeDir(  ), "Downloads", NULL );
+
+    return user_dir;
 }
 
 /***


Index: transmission.spec
===================================================================
RCS file: /cvs/pkgs/rpms/transmission/devel/transmission.spec,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- transmission.spec	28 Feb 2009 08:46:31 -0000	1.34
+++ transmission.spec	28 Mar 2009 11:52:48 -0000	1.35
@@ -1,7 +1,7 @@
 
 Name:           transmission
 Version:        1.51
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        A lightweight GTK+ BitTorrent client
 
 Group:          Applications/Internet
@@ -9,6 +9,7 @@
 License:        MIT and GPLv2
 URL:            http://www.transmissionbt.com/
 Source0:        http://download.m0k.org/transmission/files/transmission-%{version}.tar.bz2
+Patch0:         transmission-1.51-xdg-download-dir.patch
 Patch2:         transmission-1.51-copt.patch
 Patch3:         transmission-1.51-libevent.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -32,6 +33,7 @@
 
 %prep
 %setup -q
+%patch0 -p1 -b .xdg-download-dir
 %patch2 -p1 -b .copt
 %patch3 -p1 -b .libevent
 
@@ -80,6 +82,9 @@
 
 
 %changelog
+* Sat Mar 28 2009 Lubomir Rintel <lkundrak at v3.sk> - 1.51-2
+- Use XDG Download directory (#490950)
+
 * Sat Feb 28 2009 Denis Leroy <denis at poolshark.org> - 1.51-1
 - Update to upstream 1.51
 - Added icon cache scriplets (#487824)




More information about the fedora-extras-commits mailing list