Package: obdgpslogger
Version: 0.16-1.1
Followup-For: Bug #648495

Dear Maintainer,
I am submitting a patch which proposes to allow obdgpslogger to build against
libgps with the protocol as it is in Testing



-- System Information:
Debian Release: wheezy/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages obdgpslogger depends on:
ii  libc6         2.13-33
ii  libfltk1.1    1.1.10-13
ii  libgcc1       1:4.7.0-8
pn  libgps19      <none>
ii  libice6       2:1.0.8-2
ii  libsm6        2:1.2.1-2
ii  libsqlite3-0  3.7.12.1-1
ii  libstdc++6    4.7.0-8
ii  libx11-6      2:1.4.99.901-2
ii  libxext6      2:1.3.1-2
ii  zlib1g        1:1.2.7.dfsg-11

Versions of packages obdgpslogger recommends:
ii  gpsd  3.6-3

obdgpslogger suggests no packages.
diff -Naur obdgpslogger-0.16/src/gui/convertwindow.fl obdgpslogger-0.16_gpsv3/src/gui/convertwindow.fl
--- obdgpslogger-0.16/src/gui/convertwindow.fl	2010-05-01 19:24:44.000000000 -0400
+++ obdgpslogger-0.16_gpsv3/src/gui/convertwindow.fl	2012-06-22 19:53:00.208000024 -0400
@@ -102,8 +102,6 @@
     }
     code {mMainui = obdui;} {}
   }
-  Function {~obdconvertwindow()} {open
-  } {}
   decl {OBDUI *mMainui;} {}
   decl {enum obd_convert_type mConvertType;} {}
   Function {show()} {open
diff -Naur obdgpslogger-0.16/src/logger/gpscomm.c obdgpslogger-0.16_gpsv3/src/logger/gpscomm.c
--- obdgpslogger-0.16/src/logger/gpscomm.c	2011-04-28 23:31:09.000000000 -0400
+++ obdgpslogger-0.16_gpsv3/src/logger/gpscomm.c	2012-06-22 20:20:08.472000027 -0400
@@ -23,16 +23,21 @@
 
 #ifdef HAVE_GPSD
 
+#include <stdlib.h>
 #include <gps.h>
 
 struct gps_data_t *opengps(char *server, char *port) {
+#ifdef HAVE_GPSD_V3
+	int ret = 0;
+	struct gps_data_t *g = malloc(sizeof(struct gps_data_t));
+	if (ret = gps_open(server, port, g) == -1)
+		return NULL;
+	gps_stream(g, WATCH_ENABLE|WATCH_NEWSTYLE, NULL);
+#else
 	struct gps_data_t *g = gps_open(server,port);
 	if(NULL == g)
 		return NULL;
 
-#ifdef HAVE_GPSD_V3
-	gps_stream(g, WATCH_ENABLE|WATCH_NEWSTYLE, NULL);
-#else
 	gps_query(g, "o");
 #endif //HAVE_GPSD_V3
 
@@ -40,6 +45,11 @@
 }
 
 void closegps(struct gps_data_t *g) {
+#ifdef HAVE_GPSD_V3
+	gps_stream(g, WATCH_DISABLE, NULL);
+	free(g);
+	g = NULL;
+#endif //HAVE_GPSD_V3
 	gps_close(g);
 }
 
@@ -58,7 +68,7 @@
 		count = select(g->gps_fd + 1, &fds, NULL, NULL, &timeout);
 		if(count > 0) {
 #ifdef HAVE_GPSD_V3
-			gps_poll(g);
+			gps_read(g);
 #else
 			gps_query(g, "o");
 #endif //HAVE_GPSD_V3

Reply via email to