* Loads options from a set of command line arguments, * in the format "-option value". * @param argc Number of arguments. * @param argv Array of argument strings. */
| 294 | * @param argv Array of argument strings. |
| 295 | */ |
| 296 | void loadArgs(int argc, char *argv[]) |
| 297 | { |
| 298 | for (int i = 1; i < argc; ++i) |
| 299 | { |
| 300 | std::string arg = argv[i]; |
| 301 | if ((arg[0] == '-' || arg[0] == '/') && arg.length() > 1) |
| 302 | { |
| 303 | std::string argname; |
| 304 | if (arg[1] == '-' && arg.length() > 2) |
| 305 | argname = arg.substr(2, arg.length()-1); |
| 306 | else |
| 307 | argname = arg.substr(1, arg.length()-1); |
| 308 | std::transform(argname.begin(), argname.end(), argname.begin(), ::tolower); |
| 309 | if (argc > i + 1) |
| 310 | { |
| 311 | if (argname == "data") |
| 312 | { |
| 313 | _dataFolder = CrossPlatform::endPath(argv[i+1]); |
| 314 | } |
| 315 | else if (argname == "user") |
| 316 | { |
| 317 | _userFolder = CrossPlatform::endPath(argv[i+1]); |
| 318 | } |
| 319 | else if (argname == "cfg") |
| 320 | { |
| 321 | _configFolder = CrossPlatform::endPath(argv[i+1]); |
| 322 | } |
| 323 | else |
| 324 | { |
| 325 | //save this command line option for now, we will apply it later |
| 326 | _commandLine[argname] = argv[i+1]; |
| 327 | } |
| 328 | } |
| 329 | else |
| 330 | { |
| 331 | Log(LOG_WARNING) << "Unknown option: " << argname; |
| 332 | } |
| 333 | } |
| 334 | } |
| 335 | } |
| 336 | |
| 337 | /* |
| 338 | * Displays command-line help when appropriate. |