diff -u transmission-1.51/debian/changelog transmission-1.51/debian/changelog --- transmission-1.51/debian/changelog +++ transmission-1.51/debian/changelog @@ -1,3 +1,13 @@ +transmission (1.51-0ubuntu2) jaunty; urgency=low + + * 30_first-run-pref-error-fix.patch: + - Don't show an error when the preferences dialog is opened + for the first time (LP: #338046). + * 31_honor-xdg_download_dir.patch: + - Honor the users XDG_DOWNLOAD_DIR when running for the first time. + + -- Chris Coulson Tue, 10 Mar 2009 23:35:43 +0000 + transmission (1.51-0ubuntu1) jaunty; urgency=low * New upstream bug fix release (LP: #335404) diff -u transmission-1.51/debian/patches/series transmission-1.51/debian/patches/series --- transmission-1.51/debian/patches/series +++ transmission-1.51/debian/patches/series @@ -1,0 +2,2 @@ +30_first-run-pref-error-fix.patch +31_honor-xdg_download_dir.patch only in patch2: unchanged: --- transmission-1.51.orig/debian/patches/31_honor-xdg_download_dir.patch +++ transmission-1.51/debian/patches/31_honor-xdg_download_dir.patch @@ -0,0 +1,345 @@ +# Honor the users XDG_DOWNLOAD_DIR when running for the first time, +# instead of just defaulting to ~/Downloads +# Upstream ticket: http://trac.transmissionbt.com/ticket/1913 +Index: transmission-1.51/gtk/conf.c +=================================================================== +--- transmission-1.51.orig/gtk/conf.c 2009-02-27 01:00:34.000000000 +0000 ++++ transmission-1.51/gtk/conf.c 2009-03-11 18:25:10.000000000 +0000 +@@ -39,6 +39,7 @@ + #include + + #include "conf.h" ++#include "tr-prefs.h" + #include "util.h" + + #define MY_NAME "transmission" +@@ -143,6 +144,71 @@ + **** + ***/ + ++static void cf_check_older_configs( void ); ++ ++/** ++ * This is where we initialize the preferences file with the default values. ++ * If you add a new preferences key, you /must/ add a default value here. ++ */ ++static void ++tr_prefs_init_defaults( tr_benc * d ) ++{ ++ const char * str; ++ ++ cf_check_older_configs( ); ++ ++#ifdef HAVE_GIO ++ str = NULL; ++ if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD ); ++ if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DESKTOP ); ++ if( !str ) str = tr_getDefaultDownloadDir( ); ++ tr_bencDictAddStr( d, PREF_KEY_DIR_WATCH, str ); ++ tr_bencDictAddInt( d, PREF_KEY_DIR_WATCH_ENABLED, FALSE ); ++#endif ++ ++ tr_bencDictAddInt( d, PREF_KEY_INHIBIT_HIBERNATION, FALSE ); ++ tr_bencDictAddInt( d, PREF_KEY_BLOCKLIST_UPDATES_ENABLED, TRUE ); ++ ++ tr_bencDictAddStr( d, PREF_KEY_OPEN_DIALOG_FOLDER, g_get_home_dir( ) ); ++ ++ tr_bencDictAddInt( d, PREF_KEY_TOOLBAR, TRUE ); ++ tr_bencDictAddInt( d, PREF_KEY_FILTERBAR, TRUE ); ++ tr_bencDictAddInt( d, PREF_KEY_STATUSBAR, TRUE ); ++ tr_bencDictAddInt( d, PREF_KEY_SHOW_TRAY_ICON, FALSE ); ++ tr_bencDictAddInt( d, PREF_KEY_SHOW_DESKTOP_NOTIFICATION, TRUE ); ++ tr_bencDictAddStr( d, PREF_KEY_STATUSBAR_STATS, "total-ratio" ); ++ ++ tr_bencDictAddInt( d, PREF_KEY_SCHED_LIMIT_ENABLED, FALSE ); ++ tr_bencDictAddInt( d, PREF_KEY_SCHED_BEGIN, 60 * 23 ); /* 11pm */ ++ tr_bencDictAddInt( d, PREF_KEY_SCHED_END, 60 * 7 ); /* 7am */ ++ tr_bencDictAddInt( d, PREF_KEY_SCHED_DL_LIMIT, 200 ); /* 2x the other limit */ ++ tr_bencDictAddInt( d, PREF_KEY_SCHED_UL_LIMIT, 100 ); /* 2x the other limit */ ++ ++ tr_bencDictAddInt( d, PREF_KEY_OPTIONS_PROMPT, TRUE ); ++ ++ tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_HEIGHT, 500 ); ++ tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_WIDTH, 300 ); ++ tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_X, 50 ); ++ tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_Y, 50 ); ++ tr_bencDictAddStr( d, PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER, "menu,toolbar,filter,list,statusbar" ); ++ ++ str = NULL; ++#if GLIB_CHECK_VERSION( 2, 14, 0 ) ++ if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD ); ++#endif ++ if( !str ) str = tr_getDefaultDownloadDir( ); ++ tr_bencDictAddStr( d, TR_PREFS_KEY_DOWNLOAD_DIR, str ); ++ ++ tr_bencDictAddInt( d, PREF_KEY_ASKQUIT, TRUE ); ++ ++ tr_bencDictAddStr( d, PREF_KEY_SORT_MODE, "sort-by-name" ); ++ tr_bencDictAddInt( d, PREF_KEY_SORT_REVERSED, FALSE ); ++ tr_bencDictAddInt( d, PREF_KEY_MINIMAL_VIEW, FALSE ); ++ ++ tr_bencDictAddInt( d, PREF_KEY_START, TRUE ); ++ tr_bencDictAddInt( d, PREF_KEY_TRASH_ORIGINAL, FALSE ); ++} ++ + static char* + getPrefsFilename( void ) + { +@@ -159,6 +225,7 @@ + if( !loaded ) + { + tr_bencInitDict( &settings, 0 ); ++ tr_prefs_init_defaults( &settings ); + tr_sessionLoadSettings( &settings, gl_confdir, MY_NAME ); + loaded = TRUE; + } +@@ -192,14 +259,6 @@ + tr_bencDictAddInt( getPrefs( ), key, value ); + } + +-void +-pref_int_set_default( const char * key, +- int64_t value ) +-{ +- if( !tr_bencDictFind( getPrefs( ), key ) ) +- pref_int_set( key, value ); +-} +- + /*** + **** + ***/ +@@ -237,13 +296,6 @@ + pref_int_set( key, value != 0 ); + } + +-void +-pref_flag_set_default( const char * key, +- gboolean value ) +-{ +- pref_int_set_default( key, value != 0 ); +-} +- + /*** + **** + ***/ +@@ -252,26 +304,16 @@ + pref_string_get( const char * key ) + { + const char * str = NULL; +- + tr_bencDictFindStr( getPrefs( ), key, &str ); + return str; + } + + void +-pref_string_set( const char * key, +- const char * value ) ++pref_string_set( const char * key, const char * value ) + { + tr_bencDictAddStr( getPrefs( ), key, value ); + } + +-void +-pref_string_set_default( const char * key, +- const char * value ) +-{ +- if( !tr_bencDictFind( getPrefs( ), key ) ) +- pref_string_set( key, value ); +-} +- + /*** + **** + ***/ +@@ -446,7 +488,7 @@ + tr_bencFree( &dict ); + } + +-void ++static void + cf_check_older_configs( void ) + { + char * filename = getPrefsFilename( ); +@@ -459,18 +501,19 @@ + + if( g_file_test( key1, G_FILE_TEST_IS_REGULAR ) ) + { ++ g_message( _( "Importing \"%s\"" ), key1 ); + translate_keyfile_to_json( key1, filename ); + } + else if( g_file_test( key2, G_FILE_TEST_IS_REGULAR ) ) + { ++ g_message( _( "Importing \"%s\"" ), key2 ); + translate_keyfile_to_json( key2, filename ); + } + else if( g_file_test( benc, G_FILE_TEST_IS_REGULAR ) ) + { + char * tmpfile; +- int fd = +- g_file_open_tmp( "transmission-prefs-XXXXXX", &tmpfile, +- NULL ); ++ int fd = g_file_open_tmp( "transmission-prefs-XXXXXX", &tmpfile, NULL ); ++ g_message( _( "Importing \"%s\"" ), benc ); + if( fd != -1 ) close( fd ); + translate_08_to_09( benc, tmpfile ); + translate_keyfile_to_json( tmpfile, filename ); +@@ -484,4 +527,3 @@ + + g_free( filename ); + } +- +Index: transmission-1.51/gtk/conf.h +=================================================================== +--- transmission-1.51.orig/gtk/conf.h 2009-02-27 01:00:34.000000000 +0000 ++++ transmission-1.51/gtk/conf.h 2009-03-11 18:25:10.000000000 +0000 +@@ -30,15 +30,12 @@ + + int64_t pref_int_get ( const char * key ); + void pref_int_set ( const char * key, int64_t value ); +-void pref_int_set_default ( const char * key, int64_t value ); + + gboolean pref_flag_get ( const char * key ); + void pref_flag_set ( const char * key, gboolean value ); +-void pref_flag_set_default ( const char * key, gboolean value ); + + const char* pref_string_get ( const char * key ); + void pref_string_set ( const char * key, const char * value ); +-void pref_string_set_default( const char * key, const char * value ); + + void pref_save ( tr_session * ); + struct tr_benc* pref_get_all ( void ); +@@ -70,6 +67,4 @@ + gboolean cf_lock( tr_lockfile_state_t *tr_state, + char ** errstr ); + +-void cf_check_older_configs( void ); +- + #endif /* TG_CONF_H */ +Index: transmission-1.51/gtk/main.c +=================================================================== +--- transmission-1.51.orig/gtk/main.c 2009-03-11 18:25:10.000000000 +0000 ++++ transmission-1.51/gtk/main.c 2009-03-11 18:25:10.000000000 +0000 +@@ -406,7 +406,6 @@ + + tr_notify_init( ); + didinit = cf_init( configDir, NULL ); /* must come before actions_init */ +- tr_prefs_init_defaults( ); + + myUIManager = gtk_ui_manager_new ( ); + actions_init ( myUIManager, cbdata ); +Index: transmission-1.51/gtk/tr-prefs.c +=================================================================== +--- transmission-1.51.orig/gtk/tr-prefs.c 2009-03-11 18:25:10.000000000 +0000 ++++ transmission-1.51/gtk/tr-prefs.c 2009-03-11 18:25:10.000000000 +0000 +@@ -29,69 +29,6 @@ + #include "util.h" + + /** +- * This is where we initialize the preferences file with the default values. +- * If you add a new preferences key, you /must/ add a default value here. +- */ +-void +-tr_prefs_init_defaults( void ) +-{ +- const char * str; +- +- cf_check_older_configs( ); +- +-#ifdef HAVE_GIO +- str = NULL; +- if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD ); +- if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DESKTOP ); +- if( !str ) str = tr_getDefaultDownloadDir( ); +- pref_string_set_default ( PREF_KEY_DIR_WATCH, str ); +- pref_flag_set_default ( PREF_KEY_DIR_WATCH_ENABLED, FALSE ); +-#endif +- +- pref_flag_set_default ( PREF_KEY_INHIBIT_HIBERNATION, FALSE ); +- pref_flag_set_default ( PREF_KEY_BLOCKLIST_UPDATES_ENABLED, TRUE ); +- +- pref_string_set_default ( PREF_KEY_OPEN_DIALOG_FOLDER, g_get_home_dir( ) ); +- +- pref_flag_set_default ( PREF_KEY_TOOLBAR, TRUE ); +- pref_flag_set_default ( PREF_KEY_FILTERBAR, TRUE ); +- pref_flag_set_default ( PREF_KEY_STATUSBAR, TRUE ); +- pref_flag_set_default ( PREF_KEY_SHOW_TRAY_ICON, FALSE ); +- pref_flag_set_default ( PREF_KEY_SHOW_DESKTOP_NOTIFICATION, TRUE ); +- pref_string_set_default ( PREF_KEY_STATUSBAR_STATS, "total-ratio" ); +- +- pref_flag_set_default ( PREF_KEY_SCHED_LIMIT_ENABLED, FALSE ); +- pref_int_set_default ( PREF_KEY_SCHED_BEGIN, 60 * 23 ); /* 11pm */ +- pref_int_set_default ( PREF_KEY_SCHED_END, 60 * 7 ); /* 7am */ +- pref_int_set_default ( PREF_KEY_SCHED_DL_LIMIT, 200 ); /* 2x the other limit */ +- pref_int_set_default ( PREF_KEY_SCHED_UL_LIMIT, 100 ); /* 2x the other limit */ +- +- pref_flag_set_default ( PREF_KEY_OPTIONS_PROMPT, TRUE ); +- +- pref_int_set_default ( PREF_KEY_MAIN_WINDOW_HEIGHT, 500 ); +- pref_int_set_default ( PREF_KEY_MAIN_WINDOW_WIDTH, 300 ); +- pref_int_set_default ( PREF_KEY_MAIN_WINDOW_X, 50 ); +- pref_int_set_default ( PREF_KEY_MAIN_WINDOW_Y, 50 ); +- pref_string_set_default ( PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER, "menu,toolbar,filter,list,statusbar" ); +- +- str = NULL; +-#if GLIB_CHECK_VERSION( 2, 14, 0 ) +- if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD ); +-#endif +- if( !str ) str = tr_getDefaultDownloadDir( ); +- pref_string_set_default ( TR_PREFS_KEY_DOWNLOAD_DIR, str ); +- +- pref_flag_set_default ( PREF_KEY_ASKQUIT, TRUE ); +- +- pref_string_set_default ( PREF_KEY_SORT_MODE, "sort-by-name" ); +- pref_flag_set_default ( PREF_KEY_SORT_REVERSED, FALSE ); +- pref_flag_set_default ( PREF_KEY_MINIMAL_VIEW, FALSE ); +- +- pref_flag_set_default ( PREF_KEY_START, TRUE ); +- pref_flag_set_default ( PREF_KEY_TRASH_ORIGINAL, FALSE ); +-} +- +-/** + *** + **/ + +Index: transmission-1.51/gtk/tr-prefs.h +=================================================================== +--- transmission-1.51.orig/gtk/tr-prefs.h 2009-03-11 18:25:10.000000000 +0000 ++++ transmission-1.51/gtk/tr-prefs.h 2009-03-11 18:25:10.000000000 +0000 +@@ -50,6 +50,4 @@ + #define PREF_KEY_MAIN_WINDOW_X "main-window-x" + #define PREF_KEY_MAIN_WINDOW_Y "main-window-y" + +-void tr_prefs_init_defaults( void ); +- + #endif +Index: transmission-1.51/libtransmission/session.c +=================================================================== +--- transmission-1.51.orig/libtransmission/session.c 2009-03-11 18:26:01.000000000 +0000 ++++ transmission-1.51/libtransmission/session.c 2009-03-11 18:26:24.000000000 +0000 +@@ -311,11 +311,17 @@ + { + char * filename; + tr_benc fileSettings; ++ tr_benc sessionDefaults; ++ tr_benc tmp; + + assert( tr_bencIsDict( d ) ); + +- /* get the defaults */ +- tr_sessionGetDefaultSettings( d ); ++ /* initializing the defaults: caller may have passed in some app-level defaults. ++ * preserve those and use the session defaults to fill in any missing gaps. */ ++ tr_bencInitDict( &sessionDefaults, 0 ); ++ tr_sessionGetDefaultSettings( &sessionDefaults ); ++ tr_bencMergeDicts( &sessionDefaults, d ); ++ tmp = *d; *d = sessionDefaults; sessionDefaults = tmp; + + /* if caller didn't specify a config dir, use the default */ + if( !configDir || !*configDir ) +@@ -329,6 +335,7 @@ + } + + /* cleanup */ ++ tr_bencFree( &sessionDefaults ); + tr_free( filename ); + } + only in patch2: unchanged: --- transmission-1.51.orig/debian/patches/30_first-run-pref-error-fix.patch +++ transmission-1.51/debian/patches/30_first-run-pref-error-fix.patch @@ -0,0 +1,86 @@ +# Don't show an error when the preferences dialog is opened for the first time +# Lanuchpad bug: https://bugs.launchpad.net/ubuntu/+source/transmission/+bug/338046 +# Upstream ticket: http://trac.transmissionbt.com/ticket/1773 +Index: transmission-1.51/gtk/main.c +=================================================================== +--- transmission-1.51.orig/gtk/main.c 2009-03-10 18:36:55.000000000 +0000 ++++ transmission-1.51/gtk/main.c 2009-03-10 18:37:41.000000000 +0000 +@@ -406,7 +406,7 @@ + + tr_notify_init( ); + didinit = cf_init( configDir, NULL ); /* must come before actions_init */ +- tr_prefs_init_global( ); ++ tr_prefs_init_defaults( ); + + myUIManager = gtk_ui_manager_new ( ); + actions_init ( myUIManager, cbdata ); +@@ -438,9 +438,16 @@ + + if( didlock && ( didinit || cf_init( configDir, &err ) ) ) + { ++ const char * str; + GtkWindow * win; + tr_session * session; + ++ /* ensure the directories are created */ ++ if(( str = pref_string_get( PREF_KEY_DIR_WATCH ))) ++ mkdir_p( str, 0777 ); ++ if(( str = pref_string_get( TR_PREFS_KEY_DOWNLOAD_DIR ))) ++ mkdir_p( str, 0777 ); ++ + /* initialize the libtransmission session */ + session = tr_sessionInit( "gtk", configDir, TRUE, pref_get_all( ) ); + cbdata->core = tr_core_new( session ); +Index: transmission-1.51/gtk/tr-prefs.c +=================================================================== +--- transmission-1.51.orig/gtk/tr-prefs.c 2009-03-10 18:36:55.000000000 +0000 ++++ transmission-1.51/gtk/tr-prefs.c 2009-03-10 18:37:41.000000000 +0000 +@@ -33,7 +33,7 @@ + * If you add a new preferences key, you /must/ add a default value here. + */ + void +-tr_prefs_init_global( void ) ++tr_prefs_init_defaults( void ) + { + const char * str; + +@@ -41,9 +41,9 @@ + + #ifdef HAVE_GIO + str = NULL; ++ if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD ); + if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DESKTOP ); + if( !str ) str = tr_getDefaultDownloadDir( ); +- mkdir_p( str, 0777 ); + pref_string_set_default ( PREF_KEY_DIR_WATCH, str ); + pref_flag_set_default ( PREF_KEY_DIR_WATCH_ENABLED, FALSE ); + #endif +@@ -79,7 +79,6 @@ + if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD ); + #endif + if( !str ) str = tr_getDefaultDownloadDir( ); +- mkdir_p( str, 0777 ); + pref_string_set_default ( TR_PREFS_KEY_DOWNLOAD_DIR, str ); + + pref_flag_set_default ( PREF_KEY_ASKQUIT, TRUE ); +Index: transmission-1.51/gtk/tr-prefs.h +=================================================================== +--- transmission-1.51.orig/gtk/tr-prefs.h 2009-03-10 18:36:55.000000000 +0000 ++++ transmission-1.51/gtk/tr-prefs.h 2009-03-10 18:37:41.000000000 +0000 +@@ -19,7 +19,7 @@ + GtkWindow * parent ); + + /* if you add a key here, you /must/ add its +- * default in tr_prefs_init_global( void ) */ ++ * default in tr_prefs_init_defaults( void ) */ + + #define PREF_KEY_SCHED_LIMIT_ENABLED "sched-limit-enabled" + #define PREF_KEY_SCHED_BEGIN "sched-begin" +@@ -50,6 +50,6 @@ + #define PREF_KEY_MAIN_WINDOW_X "main-window-x" + #define PREF_KEY_MAIN_WINDOW_Y "main-window-y" + +-void tr_prefs_init_global( void ); ++void tr_prefs_init_defaults( void ); + + #endif