ref: 5b8b0cbeb3461b0a710584ee77f1cb6c501a5406
dir: /gps.c/
#include <u.h> #include <libc.h> #include "dat.h" #include "fns.h" GPos getlocation() { int fd; GPos ret; char buf[256]; char *fields[9]; int n, quality; char *nop; ret.lon = 0.; ret.lat = 0.; fd = open("/mnt/gps/position", OREAD); if (fd < 0) return ret; if ((n = read(fd, buf, 256)) <= 0) { fprint(2, "read error: %r\n"); close(fd); return ret; } close(fd); buf[n] = 0; quality = atoi(buf); if (!quality) return ret; if (getfields(buf, fields, 9, 1, " ") != 9) { fprint(2, "read error: invalid fields\n"); return ret; } ret.lon = strtod(fields[3], &nop); ret.lat = strtod(fields[4], &nop); return ret; }