diff --git a/examplar.cpp b/examplar.cpp index 5d868b7..654eb01 100644 --- a/examplar.cpp +++ b/examplar.cpp @@ -22,6 +22,7 @@ #include "src/json/json.h" #include "src/loaders/loaders.h" #include +#include #include @@ -31,8 +32,7 @@ void print_usage() { - printf("examplar [ -h ] [ -v ] [ -c CONFIG_PATH ]"); - exit(0); + printf("examplar [ -h | --help ] [ -v | --verbose ] [ -c | --config CONFIG_PATH ]\n\n"); } int main( int argc, char * argv[] ) @@ -47,10 +47,28 @@ int main( int argc, char * argv[] ) // -v verbose // -c CONFIG_FILE_PATH -- defaults to '/etc/Examplar/config.json' - while ( ( opt = getopt( argc, argv, "hvc:" ) ) != -1 ) + while (1) { - switch(opt) + static struct option long_options[] = { + {"verbose", no_argument, 0, 'v'}, + {"help", no_argument, 0, 'h'}, + {"config", required_argument, 0, 'c'}, + {0, 0} + }; + int option_index = 0; + + opt = getopt_long (argc, argv, "vhc:", + long_options, &option_index); + + if (opt == -1) + break; + + switch (opt) + { + case 0: + if (long_options[option_index].flag !=0) + break; case 'h': show_help = true; case 'v': @@ -59,6 +77,9 @@ int main( int argc, char * argv[] ) case 'c': config_path = std::string(optarg); break; + case '?': + print_usage(); + exit(1); default: break; } @@ -67,6 +88,7 @@ int main( int argc, char * argv[] ) if ( show_help == true ) { print_usage(); + exit(0); } setlogmask( LOG_UPTO( LOG_INFO ) ); @@ -106,4 +128,4 @@ int main( int argc, char * argv[] ) closelog(); return 0; -} \ No newline at end of file +}