#include #include #include #include #include "tofromstring.h" #include "disparm.h" const std::string programname = "disparm"; void usage() { disparm d=disparm(); std::cerr << "Usage:" << std::endl; std::cerr << programname << " -h,--help : this message" << std::endl; std::cerr << programname << " -c,--create [-p,--pool POOL] [-i,--input INPUTFILE]" << std::endl; std::cerr << programname << " -n,--next [-p,--pool POOL] [-d --lockdir LOCKDIR ] [-k,--key KEY] [-m,--max MAX]" << std::endl; std::cerr << programname << " -r,--ready [-p,--pool POOL] [-d --lockdir LOCKDIR ] [-k,--key KEY]" << std::endl; std::cerr << programname << " -s,--stats [-p,--pool POOL] [-d --lockdir LOCKDIR ]" << std::endl; std::cerr << programname << " -u,--unhandled [-p,--pool POOL] [-d --lockdir LOCKDIR ]" << std::endl; std::cerr << "Defaults:" << std::endl; std::cerr << " POOL : " << d.defpath_pool << std::endl; std::cerr << " LOCKDIR : " << d.defpath_lockdir << std::endl; std::cerr << " MAX : " << "1" << std::endl; std::cerr << " INPUTFILE: " << d.definputfilename; if (d.definputfilename == "-") std::cerr << " (standard input)"; std::cerr << std::endl; } int main(int argc, char*argv[]) { disparm disparmthing=disparm(); bool nextflag = 0; bool createflag = 0; bool readyflag = 0; bool REMOVEFLAG = 0; bool statsflag = 0; bool unhandledflag = 0; bool lockdirset = 0; while(1) { static struct option long_options[] = { {"help", 0, 0, 'h'}, {"pool", 1, 0, 'p'}, {"create", 0, 0, 'c'}, {"input", 1, 0, 'i'}, {"next", 0, 0, 'n'}, {"max", 1, 0, 'm'}, {"ready", 0, 0, 'r'}, {"stats", 0, 0, 's'}, {"lockdir", 1, 0, 'd'}, {"key", 1, 0, 'k'}, {"REMOVE", 0, 0, 'R'}, {"unhandled",0, 0, 'u'}, {"debug", 0, 0, 'D'}, {0, 0, 0, 0} }; int c = getopt_long(argc,argv,"hp:ci:nm:rsuDd:k:R",long_options,0); if (c == -1) { if (optind < argc) // unexpected extra argument { std::cerr << "Unexpected argument:" << argv[optind] << std::endl; return 1; } break; } if ( c == '?' || c == ':' ) { std::cerr << "Invalid parameter, try "<< argv[0]<<" --help " <(optarg)); break; case 'i': disparmthing.setinputfilename(std::string(optarg)); break; case 'n': nextflag = 1; break; case 'm': disparmthing.setmaxiter(atoi(optarg)); break; case 'r': readyflag = 1; break; case 'R': REMOVEFLAG = 1; break; case 's': statsflag = 1; break; case 'd': { int rc = disparmthing.setpath_lockdir(std::string(optarg)); if (rc != 0) { std::cerr << "Cannot create directory '"<