#include <iostream>
#include <getopt.h>
using namespace std;
int fake_main(int argc, char *argv[])
{
int flagA = 0;
int flagB = 0;
while (1) {
char c;
c = getopt (argc, argv, "a:b:c:");
if (c == -1) {
break;
}
switch (c) {
case 'a':
flagA = 1;
cout<<optarg<<endl;
break;
case 'b':
flagB = 1;
cout<<optarg<<endl;
break;
case 'c':
cout<<optarg<<endl;
break;
case '?':
default:
cout<<"Usage: " << argv[0] << " [-a] [-b <something>].\n";
}
if(flagA > 0){
//do something using the values of flagA and flagC
}
else if(flagB > 0){
//do something using the values of flagB and flagC
}
}
return 0;
}
int main (int argc, char *argv[])
{
int ac = 5;
char *av[] = {
argv[0], "-a", "5", "-c", "some thing", 0
};
return fake_main(ac, av);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Z2V0b3B0Lmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZmFrZV9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICAgaW50IGZsYWdBID0gMDsKICAgaW50IGZsYWdCID0gMDsKCiAgIHdoaWxlICgxKSB7CiAgICBjaGFyIGM7CgogICAgYyA9IGdldG9wdCAoYXJnYywgYXJndiwgImE6YjpjOiIpOwogICAgaWYgKGMgPT0gLTEpIHsKICAgICAgICBicmVhazsKICAgIH0KICAgIHN3aXRjaCAoYykgewogICAgY2FzZSAnYSc6CiAgICAgICAgZmxhZ0EgPSAxOwogICAgICAgIGNvdXQ8PG9wdGFyZzw8ZW5kbDsKICAgICAgICBicmVhazsKICAgIGNhc2UgJ2InOgogICAgICAgIGZsYWdCID0gMTsKICAgICAgICBjb3V0PDxvcHRhcmc8PGVuZGw7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICdjJzoKICAgICAgICBjb3V0PDxvcHRhcmc8PGVuZGw7CiAgICAgICAgYnJlYWs7CiAgIGNhc2UgJz8nOgogICAgZGVmYXVsdDoKICAgICAgIGNvdXQ8PCJVc2FnZTogIiA8PCBhcmd2WzBdIDw8ICIgWy1hXSBbLWIgPHNvbWV0aGluZz5dLlxuIjsKICAgIH0KICAgaWYoZmxhZ0EgPiAwKXsKICAgIC8vZG8gc29tZXRoaW5nIHVzaW5nIHRoZSB2YWx1ZXMgb2YgZmxhZ0EgYW5kIGZsYWdDIAogICB9CiAgIGVsc2UgaWYoZmxhZ0IgPiAwKXsKICAgICAgLy9kbyBzb21ldGhpbmcgdXNpbmcgdGhlIHZhbHVlcyBvZiBmbGFnQiBhbmQgZmxhZ0MKCiAgIH0KIH0KIHJldHVybiAwOwogfQogCmludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CglpbnQgYWMgPSA1OwoJY2hhciAqYXZbXSA9IHsKCQlhcmd2WzBdLCAiLWEiLCAiNSIsICItYyIsICJzb21lIHRoaW5nIiwgMAoJfTsKICAgIHJldHVybiBmYWtlX21haW4oYWMsIGF2KTsKfQ==