Changeset 4026


Ignore:
Timestamp:
Dec 1, 2007, 1:41:10 AM (14 years ago)
Author:
charles
Message:

added backwards compatability for 0.8x configuration files. modified from a patch originally written by poolshark.

Location:
trunk/gtk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/conf.c

    r3499 r4026  
    3939
    4040#include <libtransmission/transmission.h>
     41#include <libtransmission/bencode.h>
    4142
    4243#include "conf.h"
     
    250251    g_free( filename );
    251252}
     253
     254/***
     255****
     256***/
     257
     258static char*
     259getCompat08PrefsFilename( void )
     260{
     261    assert( gl_confdir != NULL );
     262    return g_build_filename( gl_confdir, "prefs", NULL );
     263}
     264
     265static void
     266translate_08_to_09( const char* oldfile, const char* newfile )
     267{
     268    static struct pref_entry {
     269        const char* oldkey;
     270        const char* newkey;
     271    } pref_table[] = {
     272        { "add-behavior-ipc",       "add-behavior-ipc"},
     273        { "add-behavior-standard",  "add-behavior-standard"},
     274        { "download-directory",     "default-download-directory"},
     275        { "download-limit",         "download-limit"},
     276        { "use-download-limit",     "download-limit-enabled" },
     277        { "listening-port",         "listening-port"},
     278        { "use-nat-traversal",      "nat-traversal-enabled"},
     279        { "use-peer-exchange",      "pex-enabled"},
     280        { "ask-quit",               "prompt-before-exit"},
     281        { "ask-download-directory", "prompt-for-download-directory"},
     282        { "use-tray-icon",          "system-tray-icon-enabled"},
     283        { "upload-limit",           "upload-limit"},
     284        { "use-upload-limit",       "upload-limit-enabled"}
     285    };
     286
     287    GString * out = g_string_new( NULL );
     288    gchar * contents = NULL;
     289    gsize contents_len = 0;
     290    benc_val_t top;
     291
     292    memset( &top, 0, sizeof(benc_val_t) );
     293
     294    if( g_file_get_contents( oldfile, &contents, &contents_len, NULL )
     295        && !tr_bencLoad( contents, contents_len, &top, NULL )
     296        && top.type==TYPE_DICT )
     297    {
     298        unsigned int i;
     299        g_string_append( out, "\n[general]\n" );
     300        for ( i=0; i<G_N_ELEMENTS(pref_table); ++i ) {
     301            const benc_val_t * val = tr_bencDictFind( &top, pref_table[i].oldkey );
     302            if( val != NULL ) {
     303                const char * valstr = val->val.s.s;
     304                if( !strcmp( valstr, "yes" ) ) valstr = "true";
     305                if( !strcmp( valstr, "no" ) ) valstr = "false";
     306                g_string_append_printf( out, "%s=%s\n", pref_table[i].newkey, valstr );
     307            }
     308        }
     309    }
     310
     311    g_file_set_contents( newfile, out->str, out->len, NULL );
     312    g_string_free( out, TRUE );
     313    g_free( contents );
     314}
     315
     316void
     317cf_check_older_configs( void )
     318{
     319    char * cfn = getPrefsFilename( );
     320    char * cfn08 = getCompat08PrefsFilename( );
     321
     322    if( !g_file_test( cfn,   G_FILE_TEST_IS_REGULAR )
     323      && g_file_test( cfn08, G_FILE_TEST_IS_REGULAR ) )
     324        translate_08_to_09( cfn08, cfn );
     325
     326    g_free( cfn08 );
     327    g_free( cfn );
     328}
  • trunk/gtk/conf.h

    r3381 r4026  
    5656char *
    5757cf_sockname(void);
     58void
     59cf_check_older_configs(void);
    5860
    5961#endif /* TG_CONF_H */
  • trunk/gtk/tr_prefs.c

    r3549 r4026  
    2727tr_prefs_init_global( void )
    2828{
     29    cf_check_older_configs( );
     30
    2931    pref_flag_set_default   ( PREF_KEY_DL_LIMIT_ENABLED, FALSE );
    3032    pref_int_set_default    ( PREF_KEY_DL_LIMIT, 100 );
Note: See TracChangeset for help on using the changeset viewer.