1
0
Fork 0

Update command line processing conventions

longopt
Jeff Moe 2022-08-20 08:50:52 -06:00
parent 66ed1830e8
commit 5f2df8bb4e
1 changed files with 52 additions and 16 deletions

View File

@ -294,19 +294,20 @@ void nfd_now(char *s)
void usage() void usage()
{ {
printf("satpredict t:l:c:R:D:r:L:B:H:o:\n\n"); printf("Usage: satpredict [OPTION]\n");
printf("t date/time (yyyy-mm-ddThh:mm:ss.sss) [default: now]\n"); printf("Compute satellite predictions.\n\n");
printf("l length (s) [default: 10s]\n"); printf("-t, --time date/time (yyyy-mm-ddThh:mm:ss.sss) [default: now]\n");
printf("n number of points [default: 10]\n"); printf("-l, --length length (s) [default: 10s]\n");
printf("c TLE catalog file [default: classfd.tle]\n"); printf("-n, --num number of points [default: 10]\n");
printf("R R.A. (deg) [default: 0.0 deg]\n"); printf("-c, --catalog TLE catalog file [default: classfd.tle]\n");
printf("D Decl. (deg) [default: 0.0 deg]\n"); printf("-R, --ra R.A. (deg) [default: 0.0 deg]\n");
printf("r radius (deg) [default: 10.0 deg]\n"); printf("-D, --decl Decl. (deg) [default: 0.0 deg]\n");
printf("L manual site longitude (deg) [default: 0.0 deg]\n"); printf("-r, --radius radius (deg) [default: 10.0 deg]\n");
printf("B manual site latitude (deg) [default: 0.0 deg]\n"); printf("-L, --longitude manual site longitude (deg) [default: 0.0 deg]\n");
printf("H manual site elevation (m) [default: 0.0 m]\n"); printf("-B, --latitude manual site latitude (deg) [default: 0.0 deg]\n");
printf("o output csv file [default: results.csv]\n"); printf("-H, --height manual site elevation (m) [default: 0.0 m]\n");
printf("h this help\n"); printf("-o, --output output csv file [default: results.csv]\n");
printf("-h, --help this help\n");
return; return;
} }
@ -331,9 +332,44 @@ int main(int argc,char *argv[])
// Decode options // Decode options
if (argc>1) { if (argc>1) {
while ((arg=getopt(argc,argv,"t:l:n:c:R:D:r:L:B:H:o:"))!=-1) { int c;
switch (arg) { while (1)
{
static struct option long_options[] = {
{"time", required_argument, 0, 't'},
{"length", required_argument, 0, 'l'},
{"num", required_argument, 0, 'n'},
{"catalog", required_argument, 0, 'c'},
{"ra", required_argument, 0, 'R'},
{"decl", required_argument, 0, 'D'},
{"radius", required_argument, 0, 'r'},
{"longitude", required_argument, 0, 'L'},
{"latitude", required_argument, 0, 'B'},
{"height", required_argument, 0, 'H'},
{"output", no_argument, 0, 'o'},
{"help", no_argument, 0, 'h'},
{0, 0, 0, 0}
};
int option_index = 0;
c =
getopt_long (argc, argv,
"t:l:n:c:R:D:r:L:B:H:o:",
long_options, &option_index);
if (c == -1)
break;
switch (c)
{
case 0:
if (long_options[option_index].flag != 0)
break;
printf ("option %s", long_options[option_index].name);
if (optarg)
printf (" with arg %s", optarg);
printf ("\n");
break;
case 't': case 't':
strcpy(nfd,optarg); strcpy(nfd,optarg);
mjd0=nfd2mjd(nfd); mjd0=nfd2mjd(nfd);