Ejemplo n.º 1
0
/**
 * 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;
}
Ejemplo n.º 2
0
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;
}