#include "IZ_net_server.h" void IZ_NetLoadConfig(IZ_NetServerState* state, const char* config_path) { char buffer[128]; ini_gets("Network", "Name", IZ_NET_SERVER_DEFAULT_STATE.config.name, buffer, 128, config_path); memcpy_s(state->config.name, 64, buffer, 64); ini_gets("Network", "Motd", IZ_NET_SERVER_DEFAULT_STATE.config.motd, buffer, 128, config_path); memcpy_s(state->config.motd, 128, buffer, 128); state->config.port = ini_getl("Network", "Port", IZ_NET_SERVER_DEFAULT_STATE.config.port, config_path); } IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetServerState* state, const char* config_path) { if (!ini_puts("Network", "Name", state->config.name, config_path)) { return -1; } if (!ini_puts("Network", "Motd", state->config.motd, config_path)) { return -1; } if (!ini_putl("Network", "Port", state->config.port, config_path)) { return -1; } return 0; } void IZ_NetOverrideConfig(IZ_NetServerState* state, u8 argc, const char* argv[]) { const char* cmdline_buffer; char* rest_of_string; u16 port; if ((cmdline_buffer = IZ_ConfigGetCommandlineOption(argc, argv, "-p"))) { port = strtol(cmdline_buffer, &rest_of_string, 10); if (strcmp(cmdline_buffer, rest_of_string) != 0) { state->config.port = port; } } if ((cmdline_buffer = IZ_ConfigGetCommandlineOption(argc, argv, "-n"))) { memcpy_s(state->config.name, 64, cmdline_buffer, 64); } if ((cmdline_buffer = IZ_ConfigGetCommandlineOption(argc, argv, "-m"))) { memcpy_s(state->config.motd, 128, cmdline_buffer, 128); } } IZ_ProcedureResult IZ_NetInitialize( IZ_NetServerState* state, void* user_data, const char* config_path, u8 argc, const char* argv[] ) { if (!user_data) { return -1; } memcpy_s(state, sizeof(IZ_NetServerState), &IZ_NET_SERVER_DEFAULT_STATE, sizeof(IZ_NetServerState)); IZ_NetLoadConfig(state, config_path); if (IZ_NetSaveConfig(state, config_path) < 0) { return -2; } IZ_NetOverrideConfig(state, argc, argv); state->ws.user_data = user_data; return 0; } void IZ_NetServerCancelService(IZ_NetServerState* state) { IZ_WSServerCancelService(&state->ws); }