bool CmdLineParser::parse(int argc, char * argv[]) { int opt = 1; while (opt < argc) { vector<docstring> args; if (helper[argv[opt]]) { isset[argv[opt]] = true; int arg = opt + 1; while ((arg < argc) && (!helper[argv[arg]])) { args.push_back(from_local8bit(argv[arg])); ++arg; } int taken = helper[argv[opt]](args); if (taken == -1) return false; opt += 1 + taken; } else { if (argv[opt][0] == '-') { if ((argv[opt][1] == '-') && (argv[opt][2]== '\0')) { ++opt; while (opt < argc) { nonopt.push_back(argv[opt]); ++opt; } return true; } else { cerr << "lyxclient: unknown option " << argv[opt] << endl; return false; } } nonopt.push_back(argv[opt]); ++opt; } } return true; }
string const getEnv(string const & name) { // f.ex. what about error checking? char const * const ch = getenv(name.c_str()); return ch ? to_utf8(from_local8bit(ch)) : string(); }