diff options
author | Gary E. Miller <gem@rellim.com> | 2005-08-25 05:46:02 +0000 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2005-08-25 05:46:02 +0000 |
commit | 4363470a1a85033eda1deeb8f35798e70842f068 (patch) | |
tree | be94bcf1f36a67f175c67981db7c73154286007a /cgps.c | |
parent | 691f1b49254dcf7cf3d2ed76a4a896c6b21dd3b0 (diff) | |
download | gpsd-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.c | 43 |
1 files changed, 38 insertions, 5 deletions
@@ -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; + } } } |