diff options
Diffstat (limited to 'src/location-gnome-clock.c')
-rw-r--r-- | src/location-gnome-clock.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/src/location-gnome-clock.c b/src/location-gnome-clock.c index 4944583..2dd029d 100644 --- a/src/location-gnome-clock.c +++ b/src/location-gnome-clock.c @@ -51,10 +51,11 @@ location_gnome_clock_init(location_gnome_clock_state_t *state) } char *cities_key = NULL; + char *current_city = NULL; for (GSList *applet = applets; applet != NULL; applet = g_slist_next(applet)) { char *path = applet->data; - if (cities_key == NULL) { + if (current_city == NULL) { char *key = g_strdup_printf("/apps/panel/applets/%s" "/bonobo_iid", path); char *bonobo_iid = gconf_client_get_string(client, key, @@ -66,6 +67,29 @@ location_gnome_clock_init(location_gnome_clock_state_t *state) cities_key = g_strdup_printf( "/apps/panel/applets/%s" "/prefs/cities", path); + + GSList *cities = gconf_client_get_list(client, cities_key, + GCONF_VALUE_STRING, &error); + + if (error) { + fprintf(stderr, _("Error reading city list: `%s'.\n"), + cities_key); + g_free(cities_key); + g_object_unref(client); + return -1; + } + + g_free(cities_key); + + for (GSList *city = cities; city != NULL; + city = g_slist_next(city)) { + char *city_spec = city->data; + char *c = strstr(city_spec, "current=\"true\""); + if (c) current_city = g_strdup(city_spec); + g_free(city->data); + } + g_slist_free(cities); + } g_free(bonobo_iid); } @@ -83,28 +107,6 @@ location_gnome_clock_init(location_gnome_clock_state_t *state) return -1; } - GSList *cities = gconf_client_get_list(client, cities_key, - GCONF_VALUE_STRING, &error); - if (error) { - fprintf(stderr, _("Error reading city list: `%s'.\n"), - cities_key); - g_free(cities_key); - g_object_unref(client); - return -1; - } - - g_free(cities_key); - - char *current_city = NULL; - for (GSList *city = cities; city != NULL; - city = g_slist_next(city)) { - char *city_spec = city->data; - char *c = strstr(city_spec, "current=\"true\""); - if (c) current_city = g_strdup(city_spec); - g_free(city->data); - } - g_slist_free(cities); - if (current_city == NULL) { fputs(_("No city selected as current city.\n"), stderr); return -1; |