|
- #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);
- }
|