From 586aa8e4a407bf11df9504a78904aa401edd239a Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Mon, 2 Jan 2012 00:13:49 +0000 Subject: [PATCH] Add guards around initial date/time On Mac OS, the null string for a time is no parsed as 0 but some random ugly number. This always reset the time to sometime far in the future. --- src/main.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/main.c b/src/main.c index a8bc426..7ae60d8 100644 --- a/src/main.c +++ b/src/main.c @@ -68,19 +68,23 @@ static void set_location_time(AWeatherGui *gui, char *site, char *time) /* Set time * Do this before setting setting location * so that it doesn't refresh twice */ - int year, mon, day, hour, min; - sscanf(time, "%d-%d-%d %d:%d", &year, &mon, &day, &hour, &min); - time_t sec = mktime(&(struct tm){0, year-1900, mon-1, day, hour, min}); - if (sec > 0) - grits_viewer_set_time(gui->viewer, sec); - g_debug("date = [%s] == %lu\n", time, sec); + if (time) { + int year, mon, day, hour, min; + sscanf(time, "%d-%d-%d %d:%d", &year, &mon, &day, &hour, &min); + time_t sec = mktime(&(struct tm){0, year-1900, mon-1, day, hour, min}); + if (sec > 0) + grits_viewer_set_time(gui->viewer, sec); + g_debug("date = [%s] == %lu\n", time, sec); + } /* Set location */ - for (city_t *city = cities; city->type; city++) { - if (city->type == LOCATION_CITY && g_str_equal(city->code, site)) { - grits_viewer_set_location(gui->viewer, - city->pos.lat, city->pos.lon, EARTH_R/35); - break; + if (site) { + for (city_t *city = cities; city->type; city++) { + if (city->type == LOCATION_CITY && g_str_equal(city->code, site)) { + grits_viewer_set_location(gui->viewer, + city->pos.lat, city->pos.lon, EARTH_R/35); + break; + } } } } @@ -111,8 +115,8 @@ int main(int argc, char *argv[]) { /* Defaults */ gint debug = 2; // G_LOG_LEVEL_WARNING - gchar *site = ""; - gchar *time = ""; + gchar *site = NULL; + gchar *time = NULL; gboolean autoupdate = FALSE; gboolean offline = FALSE; gboolean fullscreen = FALSE; -- 2.43.2