#include "slc.hh" #include "options.hh" #include #include Options::Options() { port = 18136; history_size = 100; history_file = (string) getenv("HOME") + "/.slc_history"; log_size = 500; } void Options::usage(const char *name, ostream &out) const { out << "usage: " << name << " [-h|--help] [-l|--login name] [-v|--verbose] server [port]" << std::endl; out << "-h | --help : Print this help." << std::endl; out << "-l | --login name : Define login to name." << std::endl; } Options &Options::load(int argc, char *argv[]) { struct option lopt[] = { {"help", 0, 0, 'h'}, {"login", 0, 0, 'l'}, {0, 0, 0, 0}, }; int option; while ((option = getopt_long(argc, argv, "hl:", lopt, 0)) != -1) { switch (option) { case 'h': usage(*argv, std::cout); break; case 'l': printf("login %s\n", optarg); login = optarg; break; case '?': usage(*argv, std::cerr); exit(ERR_USAGE); } } if (argv[optind] == 0) { usage(*argv, std::cerr); exit(ERR_USAGE); } server = argv[optind++]; if (argv[optind] != 0) { port = atoi(argv[optind++]); } if (argv[optind] != 0) { usage(*argv, std::cerr); exit(ERR_USAGE); } return *this; } Options &Options::loadenv() { const char *senv; // Get history path if ((senv = getenv("SLC_HISTORY_FILE")) != 0 && *senv != 0) history_file = senv; // Get history size if ((senv = getenv("SLC_HISTORY_SIZE")) != 0 && *senv != 0) history_size = atoi(senv); // Get log size if ((senv = getenv("SLC_LOG_SIZE")) != 0 && *senv != 0) log_size = atoi(senv); return *this; }