- Use XDG Download directory (#490950)

epel9
Lubomir Rintel 16 years ago
parent 421cb2a539
commit f6b91e5129

@ -0,0 +1,138 @@
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@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;
}
/***

@ -1,7 +1,7 @@
Name: transmission Name: transmission
Version: 1.51 Version: 1.51
Release: 1%{?dist} Release: 2%{?dist}
Summary: A lightweight GTK+ BitTorrent client Summary: A lightweight GTK+ BitTorrent client
Group: Applications/Internet Group: Applications/Internet
@ -9,6 +9,7 @@ Group: Applications/Internet
License: MIT and GPLv2 License: MIT and GPLv2
URL: http://www.transmissionbt.com/ URL: http://www.transmissionbt.com/
Source0: http://download.m0k.org/transmission/files/transmission-%{version}.tar.bz2 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 Patch2: transmission-1.51-copt.patch
Patch3: transmission-1.51-libevent.patch Patch3: transmission-1.51-libevent.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -32,6 +33,7 @@ back-end.
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .xdg-download-dir
%patch2 -p1 -b .copt %patch2 -p1 -b .copt
%patch3 -p1 -b .libevent %patch3 -p1 -b .libevent
@ -80,6 +82,9 @@ update-desktop-database > /dev/null 2>&1 || :
%changelog %changelog
* Sat Mar 28 2009 Lubomir Rintel <lkundrak@v3.sk> - 1.51-2
- Use XDG Download directory (#490950)
* Sat Feb 28 2009 Denis Leroy <denis@poolshark.org> - 1.51-1 * Sat Feb 28 2009 Denis Leroy <denis@poolshark.org> - 1.51-1
- Update to upstream 1.51 - Update to upstream 1.51
- Added icon cache scriplets (#487824) - Added icon cache scriplets (#487824)

Loading…
Cancel
Save