From: Kaj-Michael Lang Date: Tue, 4 Mar 2008 15:37:01 +0000 (+0200) Subject: Hopefully fix gpsbt and gpsd startup X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a009441519fef3b0243562ff6f83b8cc8ba3d010;p=mapper Hopefully fix gpsbt and gpsd startup --- diff --git a/src/gps.c b/src/gps.c index 0af07a1..1962f5d 100644 --- a/src/gps.c +++ b/src/gps.c @@ -55,7 +55,7 @@ #ifdef WITH_GPSBT #include -static gpsbt_t ctx = {0}; +static gpsbt_t ctx; #endif static gboolean gps_channel_cb_error(GIOChannel *src, GIOCondition condition, gpointer data); @@ -277,7 +277,7 @@ switch (gps->io.type) { return FALSE; } e=errno; -g_debug("GPS: Error %d", e); +g_debug("GPS: Error %d (%s)", e, strerror(e)); /* The socket is non blocking so handle it */ if (r != 0) { @@ -510,14 +510,22 @@ switch (gps->io.type) { } #ifdef WITH_GPSBT if (gps->io.type==GPS_IO_GPSD) { - gint r; - gchar ebuf[128]; - r=gpsbt_start(NULL, 0, 0, 0, ebuf, 128, 0, &ctx); - if (r!=0) { - g_warning("Failed to start gpsd"); + gchar errbuf[255]; + + /* Force correct gpsd binary */ + setenv ("GPSD_PROG", "/usr/sbin/gpsd", 1); + + memset(&ctx, 0, sizeof(ctx)) + memset(&errbuf, 0, sizeof(errbuf)) + errno=0; + + if (gpsbt_start(NULL, 0, 0, 0, errbuf, sizeof(errbuf), 0, &ctx)!=0) + g_warning("Failed to start gpsd: %d (%s) %s\n", errno, strerror(errno), errbuff); return FALSE; } else { - /* */ + g_debug("Waiting for gpsd"); + sleep(2); + g_debug("Done wating"); } } #endif