Changeset 30369 for gs2-extensions/tdb

Show
Ignore:
Timestamp:
11.01.2016 11:51:13 (4 years ago)
Author:
jmt12
Message:

Rewrite of argument parsing code to be a little more forgiving in terms of argument order

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • gs2-extensions/tdb/trunk/src/txt2tdb-src/txt2tdb.cpp

    r24696 r30369  
    5656printUsage (char *program_name) 
    5757{ 
    58   cerr << "usage: " << program_name << " [-append] database-name [-debug]" << endl << endl; 
     58  cerr << "usage: " << program_name << " database-name [-append] [-debug]" << endl << endl; 
    5959  cerr << "options:" << endl; 
    6060  cerr << " -append        append to existing database" << endl; 
     
    9797  if (2 > argc || argc > 4) 
    9898  { 
     99    if (2 > argc) 
     100    { 
     101      cerr << "Not enough arguments." << endl << endl; 
     102    } 
     103    else 
     104    { 
     105    cerr << "Too many arguments." << endl << endl; 
     106    } 
    99107    printUsage (argv[0]); 
    100108    exit (0); 
     
    102110 
    103111  char *dbname; 
     112  bool found_dbname = false; 
    104113  int append = 0; 
    105114  int delkey = 0; 
    106115  int debug = 0; 
    107   if (argc == 3) 
    108   { 
    109     if (strcmp (argv[1], "-append") == 0) 
     116  for (int i = 1; i < argc; i++) 
     117  { 
     118    if (strcmp(argv[i], "-append") == 0) 
    110119    { 
    111120      append = 1; 
    112       dbname = argv[2]; 
    113     } 
    114     else if (strcmp(argv[2], "-debug") == 0) 
    115     { 
    116       dbname = argv[1]; 
     121    } 
     122    else if (strcmp(argv[i], "-debug") == 0) 
     123    { 
    117124      debug = 1; 
    118125    } 
    119126    else 
    120127    { 
    121       cerr << argv[1] << " is not a valid option." << endl << endl; 
    122       printUsage(argv[0]); 
    123       exit (0); 
    124     } 
    125   } 
    126   else if (argc == 4) 
    127   { 
    128     if (strcmp (argv[1], "-append") == 0 && strcmp (argv[3], "-debug") == 0) 
    129     { 
    130       append = 1; 
    131       dbname = argv[2]; 
    132       debug = 1; 
    133     } 
    134     else 
    135     { 
    136       cerr << argv[1] << " is not a valid option." << endl << endl; 
    137       printUsage(argv[0]); 
    138       exit (0); 
    139     } 
    140   } 
    141   else 
    142   { 
    143     dbname = argv[1]; 
     128      dbname = argv[i]; 
     129      found_dbname = true; 
     130    } 
     131  } 
     132 
     133  if (!found_dbname) 
     134  { 
     135    cerr << "Database path not specified." << endl << endl; 
     136    printUsage(argv[0]); 
     137    exit(0); 
    144138  } 
    145139