summaryrefslogtreecommitdiff
path: root/cgps.c
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2005-08-25 05:46:02 +0000
committerGary E. Miller <gem@rellim.com>2005-08-25 05:46:02 +0000
commit4363470a1a85033eda1deeb8f35798e70842f068 (patch)
treebe94bcf1f36a67f175c67981db7c73154286007a /cgps.c
parent691f1b49254dcf7cf3d2ed76a4a896c6b21dd3b0 (diff)
downloadgpsd-4363470a1a85033eda1deeb8f35798e70842f068.tar.gz
Add -l option to cgps. -l d is DD.dddddd, -l m is DD MM.mmmm' and -l s is DD MM' SS.sss". Also tweak deg_to_str().
Diffstat (limited to 'cgps.c')
-rw-r--r--cgps.c43
1 files changed, 38 insertions, 5 deletions
diff --git a/cgps.c b/cgps.c
index ae81e691..2b9d8fa0 100644
--- a/cgps.c
+++ b/cgps.c
@@ -78,6 +78,8 @@ static void die(int sig UNUSED)
}
+static enum deg_str_type deg_type = deg_dd;
+
/* This gets called once for each new sentence. */
static void update_panel(struct gps_data_t *gpsdata,
char *message,
@@ -87,8 +89,6 @@ static void update_panel(struct gps_data_t *gpsdata,
int i;
int newstate;
char *s;
- enum deg_str_type deg_type = deg_ddmmss;
- //enum deg_str_type deg_type = deg_dd;
/* This is for the satellite status display. Lifted almost verbatim
from xgps.c. */
@@ -210,6 +210,22 @@ static void update_panel(struct gps_data_t *gpsdata,
(void)wrefresh(command);
}
+static void usage( char *prog)
+{
+ (void)fprintf(stderr,
+"Usage: %s [-h] [-v] [-V] [-l {d|m|s}] [server[:port:[device]]]\n\n"
+" -h Show this help, then exit\n"
+" -v Show version, then exit\n"
+" -V Show version, then exit\n"
+" -l {d|m|s} Select lat/lon format\n"
+" d = DD.dddddd\n"
+" m = DD MM.mmmm'\n"
+" s = DD MM' SS.sss\"\n"
+ , prog);
+
+ exit(1);
+}
+
int main(int argc, char *argv[])
{
int option;
@@ -222,14 +238,31 @@ int main(int argc, char *argv[])
int data;
/* Process the options. Print help if requested. */
- while ((option = getopt(argc, argv, "hv")) != -1) {
+ while ((option = getopt(argc, argv, "hvl:")) != -1) {
switch (option) {
case 'v':
+ case 'V':
(void)fprintf(stderr, "SVN ID: $Id$ \n");
exit(0);
case 'h': default:
- (void)fprintf(stderr, "Usage: %s [-h] [-v] [server[:port:[device]]]\n", argv[0]);
- exit(1);
+ usage( argv[0] );
+ break;
+ case 'l':
+ switch ( optarg[0] ) {
+ case 'd':
+ deg_type = deg_dd;
+ break;
+ case 'm':
+ deg_type = deg_ddmm;
+ break;
+ case 's':
+ deg_type = deg_ddmmss;
+ break;
+ default:
+ (void)fprintf(stderr, "Unknown -l argument: %c\n", optarg);
+ usage( argv[0] );
+ break;
+ }
}
}