proc-api/src/opt/parseopt.cpp

59 lines
1.7 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Tyler Perkins
// 28-4-22
// parseopt implementation
//
#include "parseopt.hpp"
void help(char* progName){
std::cout << "Usage: " << progName << " [FLAGS]\n";
std::cout << "Options:\n";
std::cout << " [-p PORT] Port to listen on (Default 5000)\n";
std::cout << " [-n NAME] Server name (Default \"proc-api\")\n";
std::cout << " [-a PATH] Path to file containing authorization tokens\n";
std::cout << " If the -a flag is not passed, no authorization is used\n";
std::cout << " [-t THREADS] Number of threads to use. By default, uses 2 threads\n";
std::cout << " [-h] Display this help message\n\n";
exit(1);
}
option_flags* parse_options(int argc, char** argv){
char c;
option_flags* ret = new option_flags;
ret->port = 5000;
ret->threads = 2;
ret->name = "proc-api";
ret->auth_path = "";
while((c = getopt(argc, argv, optarg_string)) != -1){
switch(c){
case 'p':
ret->port = atoi(optarg);
break;
case 'n':
ret->name = std::string(optarg);
break;
case 'a':
ret->auth_path = std::string(optarg);
break;
case 't':
ret->threads = atoi(optarg);
if(ret->threads == 0)
ret->threads = 1;
break;
case '?':
std::cerr << "Unkown option: " << (char)optopt << "\n";
case 'h':
help(argv[0]);
break;
default:
abort();
}
}
return ret;
}