Changeset 30369


Ignore:
Timestamp:
2016-01-11T11:51:13+13:00 (8 years ago)
Author:
jmt12
Message:

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

File:
1 edited

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
Note: See TracChangeset for help on using the changeset viewer.