/** * Read the option specified in command line * and assign the confs used by the different server. * @param argc: * @param argv: * @return true or Exit on failure. */ int logcnslif_get_options(int argc, char ** argv) { int i = 0; for (i = 1; i < argc; i++) { const char* arg = argv[i]; if (arg[0] != '-' && (arg[0] != '/' || arg[1] == '-')) {// -, -- and / ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } else if ((++arg)[0] == '-') {// long option arg++; if (strcmp(arg, "help") == 0) { display_helpscreen(true); } else if (strcmp(arg, "version") == 0) { display_versionscreen(true); } else if (strcmp(arg, "run-once") == 0){ // close the map-server as soon as its done.. for testing [Celest] runflag = CORE_ST_STOP; } else if (SERVER_TYPE & (ATHENA_SERVER_LOGIN)) { //login if (strcmp(arg, "lan-config") == 0) { if (opt_has_next_value(arg, i, argc)) safestrncpy(login_config.lanconf_name, argv[++i], sizeof(login_config.lanconf_name)); } if (strcmp(arg, "login-config") == 0) { if (opt_has_next_value(arg, i, argc)) safestrncpy(login_config.loginconf_name, argv[++i], sizeof(login_config.loginconf_name)); } if (strcmp(arg, "msg-config") == 0) { if (opt_has_next_value(arg, i, argc)) safestrncpy(login_config.msgconf_name, argv[++i], sizeof(login_config.msgconf_name)); } else { ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } } } else switch (arg[0]) {// short option case '?': case 'h': display_helpscreen(true); break; case 'v': display_versionscreen(true); break; default: ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } } return 1; }
int cli_get_options(int argc, char ** argv) { int i = 0; for (i = 1; i < argc; i++) { const char* arg = argv[i]; if (arg[0] != '-' && (arg[0] != '/' || arg[1] == '-')) {// -, -- and / ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } else if ((++arg)[0] == '-') {// long option arg++; if (strcmp(arg, "help") == 0) { display_helpscreen(true); } else if (strcmp(arg, "version") == 0) { display_versionscreen(true); } else if (strcmp(arg, "msg-config") == 0) { if (opt_has_next_value(arg, i, argc)) MSG_CONF_NAME = argv[++i]; } else if (strcmp(arg, "run-once") == 0) // close the map-server as soon as its done.. for testing [Celest] { runflag = CORE_ST_STOP; } else if (SERVER_TYPE & (ATHENA_SERVER_LOGIN | ATHENA_SERVER_CHAR)) { //login or char if (strcmp(arg, "lan-config") == 0) { if (opt_has_next_value(arg, i, argc)) LAN_CONF_NAME = argv[++i]; } else if (SERVER_TYPE == ATHENA_SERVER_LOGIN) { //login if (strcmp(arg, "login-config") == 0) { if (opt_has_next_value(arg, i, argc)) LOGIN_CONF_NAME = argv[++i]; } else { ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } } else if (SERVER_TYPE == ATHENA_SERVER_CHAR) { //char if (strcmp(arg, "char-config") == 0) { if (opt_has_next_value(arg, i, argc)) CHAR_CONF_NAME = argv[++i]; } else if (strcmp(arg, "inter-config") == 0) { if (opt_has_next_value(arg, i, argc)) INTER_CONF_NAME = argv[++i]; } else { ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } } } else if (SERVER_TYPE == ATHENA_SERVER_MAP) { //map if (strcmp(arg, "map-config") == 0) { if (opt_has_next_value(arg, i, argc)) MAP_CONF_NAME = argv[++i]; } else if (strcmp(arg, "battle-config") == 0) { if (opt_has_next_value(arg, i, argc)) BATTLE_CONF_FILENAME = argv[++i]; } else if (strcmp(arg, "atcommand-config") == 0) { if (opt_has_next_value(arg, i, argc)) ATCOMMAND_CONF_FILENAME = argv[++i]; } else if (strcmp(arg, "script-config") == 0) { if (opt_has_next_value(arg, i, argc)) SCRIPT_CONF_NAME = argv[++i]; } else if (strcmp(arg, "grf-path-file") == 0) { if (opt_has_next_value(arg, i, argc)) GRF_PATH_FILENAME = argv[++i]; } else if (strcmp(arg, "inter-config") == 0) { if (opt_has_next_value(arg, i, argc)) INTER_CONF_NAME = argv[++i]; } else if (strcmp(arg, "log-config") == 0) { if (opt_has_next_value(arg, i, argc)) LOG_CONF_NAME = argv[++i]; } else { ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } } } else switch (arg[0]) {// short option case '?': case 'h': display_helpscreen(true); break; case 'v': display_versionscreen(true); break; default: ShowError("Unknown option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } } return 1; }