diff options
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/client/ec_client.c | 30 | ||||
| -rw-r--r-- | src/engine/client/ec_font.c | 6 | ||||
| -rw-r--r-- | src/engine/client/ec_inp.c | 2 | ||||
| -rw-r--r-- | src/engine/client/ec_srvbrowse.c | 4 | ||||
| -rw-r--r-- | src/engine/e_config.c | 10 | ||||
| -rw-r--r-- | src/engine/e_config.h | 2 | ||||
| -rw-r--r-- | src/engine/e_console.c | 8 | ||||
| -rw-r--r-- | src/engine/e_engine.c | 12 | ||||
| -rw-r--r-- | src/engine/e_if_msg.h | 2 | ||||
| -rw-r--r-- | src/engine/e_map.c | 2 | ||||
| -rw-r--r-- | src/engine/e_network.c | 4 | ||||
| -rw-r--r-- | src/engine/e_system.c | 62 | ||||
| -rw-r--r-- | src/engine/e_system.h | 7 | ||||
| -rw-r--r-- | src/engine/server/es_server.c | 30 |
14 files changed, 111 insertions, 70 deletions
diff --git a/src/engine/client/ec_client.c b/src/engine/client/ec_client.c index f93cb5e5..4d83354b 100644 --- a/src/engine/client/ec_client.c +++ b/src/engine/client/ec_client.c @@ -430,7 +430,7 @@ void client_connect(const char *server_address_str) dbg_msg("client", "connecting to '%s'", server_address_str); - strncpy(buf, server_address_str, 512); + str_copy(buf, server_address_str, sizeof(buf)); for(k = 0; buf[k]; k++) { @@ -500,7 +500,7 @@ static void client_debug_render() } frametime_avg = frametime_avg*0.9f + frametime*0.1f; - sprintf(buffer, "ticks: %8d %8d send: %6d recv: %6d snaploss: %d mem %dk gfxmem: %dk fps: %3d", + str_format(buffer, sizeof(buffer), "ticks: %8d %8d send: %6d recv: %6d snaploss: %d mem %dk gfxmem: %dk fps: %3d", current_tick, current_predtick, (current.send_bytes-prev.send_bytes)*10, (current.recv_bytes-prev.recv_bytes)*10, @@ -517,7 +517,7 @@ static void client_debug_render() { if(snapshot_data_rate[i]) { - sprintf(buffer, "%4d : %8d %8d %8d", i, snapshot_data_rate[i]/8, snapshot_data_updates[i], + str_format(buffer, sizeof(buffer), "%4d : %8d %8d %8d", i, snapshot_data_rate[i]/8, snapshot_data_updates[i], (snapshot_data_rate[i]/snapshot_data_updates[i])/8); gfx_quads_text(2, 100+i*8, 16, buffer); } @@ -564,7 +564,7 @@ static const char *client_load_map(const char *filename, int wanted_crc) df = datafile_load(filename); if(!df) { - sprintf(errormsg, "map '%s' not found", filename); + str_format(errormsg, sizeof(errormsg), "map '%s' not found", filename); return errormsg; } @@ -573,7 +573,7 @@ static const char *client_load_map(const char *filename, int wanted_crc) if(crc != wanted_crc) { datafile_unload(df); - sprintf(errormsg, "map differs from the server. %08x != %08x", crc, wanted_crc); + str_format(errormsg, sizeof(errormsg), "map differs from the server. %08x != %08x", crc, wanted_crc); return errormsg; } @@ -592,13 +592,13 @@ static const char *client_load_map_search(const char *mapname, int wanted_crc) client_set_state(CLIENTSTATE_LOADING); /* try the normal maps folder */ - sprintf(buf, "data/maps/%s.map", mapname); + str_format(buf, sizeof(buf), "data/maps/%s.map", mapname); error = client_load_map(buf, wanted_crc); if(!error) return error; /* try the downloaded maps */ - sprintf(buf2, "%s_%8x.map", mapname, wanted_crc); + str_format(buf2, sizeof(buf2), "%s_%8x.map", mapname, wanted_crc); engine_savepath(buf2, buf, sizeof(buf)); error = client_load_map(buf, wanted_crc); return error; @@ -628,10 +628,10 @@ static void client_process_packet(NETPACKET *packet) #endif info.latency = 999; - sprintf(info.address, "%d.%d.%d.%d:%d", + str_format(info.address, sizeof(info.address), "%d.%d.%d.%d:%d", addr.ip[0], addr.ip[1], addr.ip[2], addr.ip[3], addr.port); - sprintf(info.name, "\255%d.%d.%d.%d:%d", /* the \255 is to make sure that it's sorted last */ + str_format(info.name, sizeof(info.name), "\255%d.%d.%d.%d:%d", /* the \255 is to make sure that it's sorted last */ addr.ip[0], addr.ip[1], addr.ip[2], addr.ip[3], addr.port); @@ -668,21 +668,21 @@ static void client_process_packet(NETPACKET *packet) unpacker_reset(&up, (unsigned char*)packet->data+sizeof(SERVERBROWSE_INFO), packet->data_size-sizeof(SERVERBROWSE_INFO)); - strncpy(info.version, unpacker_get_string(&up), 32); - strncpy(info.name, unpacker_get_string(&up), 64); - strncpy(info.map, unpacker_get_string(&up), 32); + str_copy(info.version, unpacker_get_string(&up), sizeof(info.version)); + str_copy(info.name, unpacker_get_string(&up), sizeof(info.name)); + str_copy(info.map, unpacker_get_string(&up), sizeof(info.map)); info.game_type = atol(unpacker_get_string(&up)); info.flags = atol(unpacker_get_string(&up)); info.progression = atol(unpacker_get_string(&up)); info.num_players = atol(unpacker_get_string(&up)); info.max_players = atol(unpacker_get_string(&up)); - sprintf(info.address, "%d.%d.%d.%d:%d", + str_format(info.address, sizeof(info.address), "%d.%d.%d.%d:%d", packet->address.ip[0], packet->address.ip[1], packet->address.ip[2], packet->address.ip[3], packet->address.port); for(i = 0; i < info.num_players; i++) { - strncpy(info.player_names[i], unpacker_get_string(&up), 48); + str_copy(info.player_names[i], unpacker_get_string(&up), sizeof(info.player_names[i])); info.player_scores[i] = atol(unpacker_get_string(&up)); } @@ -727,7 +727,7 @@ static void client_process_packet(NETPACKET *packet) else { char buf[512]; - sprintf(buf, "%s_%8x.map", map, map_crc); + str_format(buf, sizeof(buf), "%s_%8x.map", map, map_crc); engine_savepath(buf, mapdownload_filename, sizeof(mapdownload_filename)); dbg_msg("client/network", "starting to download map to '%s'", mapdownload_filename); diff --git a/src/engine/client/ec_font.c b/src/engine/client/ec_font.c index 04f8b954..707c481f 100644 --- a/src/engine/client/ec_font.c +++ b/src/engine/client/ec_font.c @@ -107,9 +107,9 @@ int font_set_load(FONT_SET *font_set, const char *font_filename, const char *tex FONT *font = &font_set->fonts[i]; size = va_arg(va, int); - sprintf(composed_font_filename, font_filename, size); - sprintf(composed_text_texture_filename, text_texture_filename, size); - sprintf(composed_outline_texture_filename, outline_texture_filename, size); + str_format(composed_font_filename, sizeof(composed_font_filename), font_filename, size); + str_format(composed_text_texture_filename, sizeof(composed_text_texture_filename), text_texture_filename, size); + str_format(composed_outline_texture_filename, sizeof(composed_outline_texture_filename), outline_texture_filename, size); if (font_load(font, composed_font_filename)) { diff --git a/src/engine/client/ec_inp.c b/src/engine/client/ec_inp.c index 41689d8a..3e0bfef7 100644 --- a/src/engine/client/ec_inp.c +++ b/src/engine/client/ec_inp.c @@ -209,7 +209,7 @@ void inp_update() /* clear and begin count on the other one */ mem_zero(&input_count[input_current], sizeof(input_count[input_current])); - memcpy(input_state[input_current], input_state[input_current^1], sizeof(input_state[input_current])); + mem_copy(input_state[input_current], input_state[input_current^1], sizeof(input_state[input_current])); input_current^=1; if(keyboard_first) diff --git a/src/engine/client/ec_srvbrowse.c b/src/engine/client/ec_srvbrowse.c index 0a6ebbf8..e7d42cc1 100644 --- a/src/engine/client/ec_srvbrowse.c +++ b/src/engine/client/ec_srvbrowse.c @@ -214,7 +214,7 @@ static void client_serverbrowse_sort() for(i = 0; i < num_sorted_servers; i++) serverlist[sorted_serverlist[i]]->info.sorted_index = i; - strncpy(filterstring, config.b_filter_string, sizeof(filterstring)-1); + str_copy(filterstring, config.b_filter_string, sizeof(filterstring)); sorthash = client_serverbrowse_sorthash(); } @@ -278,7 +278,7 @@ void client_serverbrowse_set(NETADDR4 *addr, int request, SERVER_INFO *info) SERVERENTRY **newlist; num_server_capacity += 100; newlist = mem_alloc(num_server_capacity*sizeof(SERVERENTRY*), 1); - memcpy(newlist, serverlist, num_servers*sizeof(SERVERENTRY*)); + mem_copy(newlist, serverlist, num_servers*sizeof(SERVERENTRY*)); mem_free(serverlist); serverlist = newlist; } diff --git a/src/engine/e_config.c b/src/engine/e_config.c index ddb6c742..e71d2ad3 100644 --- a/src/engine/e_config.c +++ b/src/engine/e_config.c @@ -13,7 +13,7 @@ CONFIGURATION config; void config_reset() { #define MACRO_CONFIG_INT(name,def,min,max) config.name = def; - #define MACRO_CONFIG_STR(name,len,def) strncpy(config.name, def, len); + #define MACRO_CONFIG_STR(name,len,def) str_copy(config.name, def, len); #include "e_config_variables.h" @@ -44,12 +44,10 @@ void config_set(const char *line) char *var_str = var; char *val_str = val; - strcpy(val, c+1); - + str_copy(val, c+1, sizeof(val)); mem_copy(var, line, c - line); var[c - line] = 0; - strip_spaces(&var_str); strip_spaces(&val_str); @@ -98,7 +96,7 @@ void config_save(const char *filename) #endif const int newline_len = sizeof(newline)-1; - #define MACRO_CONFIG_INT(name,def,min,max) { char str[256]; sprintf(str, "%s=%i%s", #name, config.name, newline); io_write(file, str, strlen(str)); } + #define MACRO_CONFIG_INT(name,def,min,max) { char str[256]; str_format(str, sizeof(str), "%s=%i%s", #name, config.name, newline); io_write(file, str, strlen(str)); } #define MACRO_CONFIG_STR(name,len,def) { io_write(file, #name, strlen(#name)); io_write(file, "=", 1); io_write(file, config.name, strlen(config.name)); io_write(file, newline, newline_len); } #include "e_config_variables.h" @@ -119,7 +117,7 @@ void config_save(const char *filename) #undef MACRO_CONFIG_STR #define MACRO_CONFIG_INT(name,def,min,max) void config_set_ ## name (CONFIGURATION *c, int val) { if(min != max) { if (val < min) val = min; if (max != 0 && val > max) val = max; } c->name = val; } -#define MACRO_CONFIG_STR(name,len,def) void config_set_ ## name (CONFIGURATION *c, const char *str) { strncpy(c->name, str, len-1); c->name[sizeof(c->name)-1] = 0; } +#define MACRO_CONFIG_STR(name,len,def) void config_set_ ## name (CONFIGURATION *c, const char *str) { str_copy(c->name, str, len-1); c->name[sizeof(c->name)-1] = 0; } #include "e_config_variables.h" #undef MACRO_CONFIG_INT #undef MACRO_CONFIG_STR diff --git a/src/engine/e_config.h b/src/engine/e_config.h index f1145f6a..78ffdd02 100644 --- a/src/engine/e_config.h +++ b/src/engine/e_config.h @@ -9,7 +9,7 @@ extern "C"{ typedef struct { #define MACRO_CONFIG_INT(name,def,min,max) int name; - #define MACRO_CONFIG_STR(name,len,def) char name[len]; + #define MACRO_CONFIG_STR(name,len,def) char name[len]; /* Flawfinder: ignore */ #include "e_config_variables.h" #undef MACRO_CONFIG_INT #undef MACRO_CONFIG_STR diff --git a/src/engine/e_console.c b/src/engine/e_console.c index 2c6a6bc8..db0398b4 100644 --- a/src/engine/e_console.c +++ b/src/engine/e_console.c @@ -359,7 +359,7 @@ void console_execute(const char *str) if (console_validate(command, &result)) { char buf[256]; - sprintf(buf, "Invalid arguments... Usage: %s %s", command->name, command->params); + str_format(buf, sizeof(buf), "Invalid arguments... Usage: %s %s", command->name, command->params); console_print(buf); } else @@ -368,7 +368,7 @@ void console_execute(const char *str) else { char buf[256]; - sprintf(buf, "No such command: %s.", name); + str_format(buf, sizeof(buf), "No such command: %s.", name); console_print(buf); } } @@ -402,7 +402,7 @@ static void int_variable_command(void *result, void *user_data) if (console_result_int(result, 1, &new_val)) { char buf[256]; - sprintf(buf, "Value: %d", data->getter(&config)); + str_format(buf, sizeof(buf), "Value: %d", data->getter(&config)); console_print(buf); } else @@ -419,7 +419,7 @@ static void str_variable_command(void *result, void *user_data) if (console_result_string(result, 1, &new_val)) { char buf[256]; - sprintf(buf, "Value: %s", data->getter(&config)); + str_format(buf, sizeof(buf), "Value: %s", data->getter(&config)); console_print(buf); } else diff --git a/src/engine/e_engine.c b/src/engine/e_engine.c index b85f1eb3..c5cb3616 100644 --- a/src/engine/e_engine.c +++ b/src/engine/e_engine.c @@ -20,7 +20,7 @@ static char application_save_path[512] = {0}; const char *engine_savepath(const char *filename, char *buffer, int max) { - sprintf(buffer, "%s/%s", application_save_path, filename); + str_format(buffer, max, "%s/%s", application_save_path, filename); return buffer; } @@ -45,12 +45,10 @@ void engine_init(const char *appname) fs_storage_path(appname, application_save_path, sizeof(application_save_path)); if(fs_makedir(application_save_path) == 0) { - strcpy(path, application_save_path); - strcat(path, "/screenshots"); + str_format(path, sizeof(path), "%s/screenshots", application_save_path); fs_makedir(path); - strcpy(path, application_save_path); - strcat(path, "/maps"); + str_format(path, sizeof(path), "%s/maps", application_save_path); fs_makedir(path); } } @@ -165,7 +163,7 @@ static void perf_dump_imp(PERFORMACE_INFO *info, int indent) for(i = 0; i < indent; i++) buf[i] = ' '; - sprintf(&buf[indent], "%-20s %8.2f %8.2f", info->name, info->total*1000/(float)freq, info->biggest*1000/(float)freq); + str_format(&buf[indent], sizeof(buf)-indent, "%-20s %8.2f %8.2f", info->name, info->total*1000/(float)freq, info->biggest*1000/(float)freq); dbg_msg("perf", "%s", buf); info = info->first_child; @@ -374,7 +372,7 @@ int mastersrv_save() for(i = 0; i < MAX_MASTERSERVERS; i++) { char buf[1024]; - sprintf(buf, "%s %d.%d.%d.%d\n", master_servers[i].hostname, + str_format(buf, sizeof(buf), "%s %d.%d.%d.%d\n", master_servers[i].hostname, master_servers[i].addr.ip[0], master_servers[i].addr.ip[1], master_servers[i].addr.ip[2], master_servers[i].addr.ip[3]); diff --git a/src/engine/e_if_msg.h b/src/engine/e_if_msg.h index 7355f8ce..11360b43 100644 --- a/src/engine/e_if_msg.h +++ b/src/engine/e_if_msg.h @@ -89,7 +89,7 @@ typedef struct const MSG_INFO *msg_get_info(); /* message unpacking */ -int msg_unpack_start(const void *data, int data_size, int *system); +int msg_unpack_start(const void *data, int data_size, int *is_system); /* Function: msg_unpack_int diff --git a/src/engine/e_map.c b/src/engine/e_map.c index 9f7a910e..c689be45 100644 --- a/src/engine/e_map.c +++ b/src/engine/e_map.c @@ -53,7 +53,7 @@ int map_is_loaded() int map_load(const char *mapname) { char buf[512]; - sprintf(buf, "data/maps/%s.map", mapname); + str_format(buf, sizeof(buf), "data/maps/%s.map", mapname); map = datafile_load(buf); return map != 0; } diff --git a/src/engine/e_network.c b/src/engine/e_network.c index 3e242618..acf723ba 100644 --- a/src/engine/e_network.c +++ b/src/engine/e_network.c @@ -221,7 +221,7 @@ static const char *conn_error(NETCONNECTION *conn) static void conn_set_error(NETCONNECTION *conn, const char *str) { - strcpy(conn->error_string, str); + str_copy(conn->error_string, str, sizeof(conn->error_string)); } /* @@ -337,7 +337,7 @@ static void conn_disconnect(NETCONNECTION *conn, const char *reason) conn->error_string[0] = 0; if(reason) - strcpy(conn->error_string, reason); + str_copy(conn->error_string, reason, sizeof(conn->error_string)); } conn_reset(conn); diff --git a/src/engine/e_system.c b/src/engine/e_system.c index 9a8b2a94..d2fb4eeb 100644 --- a/src/engine/e_system.c +++ b/src/engine/e_system.c @@ -77,7 +77,7 @@ void dbg_msg(const char *sys, const char *fmt, ...) #if defined(CONF_FAMILY_WINDOWS) char str[1024]; va_start(args, fmt); - vsprintf(str, fmt, args); + _vnsprintf(str, sizeof(str), fmt, args); va_end(args); OutputDebugString(str); OutputDebugString("\n"); @@ -92,11 +92,17 @@ void dbg_msg(const char *sys, const char *fmt, ...) { char str[2048]; + int len; - sprintf(str, "[%s]: ", sys); + str_format(str, sizeof(str), "[%s]: ", sys); va_start(args, fmt); - vsprintf(str+strlen(str), fmt, args); + len = strlen(str); +#if defined(CONF_FAMILY_WINDOWS) + _vsnprintf(str+len, sizeof(str)-len, fmt, args); +#else + vsnprintf(str+len, sizeof(str)-len, fmt, args); +#endif va_end(args); console_print(str); @@ -180,7 +186,7 @@ void mem_debug_dump() while(header) { - sprintf(buf, "%s(%d): %d\n", header->filename, header->line, header->size); + str_format(buf, sizeof(buf), "%s(%d): %d\n", header->filename, header->line, header->size); io_write(f, buf, strlen(buf)); header = header->next; } @@ -675,8 +681,7 @@ int fs_listdir(const char *dir, fs_listdir_callback cb, void *user) WIN32_FIND_DATA finddata; HANDLE handle; char buffer[1024*2]; - strcpy(buffer, dir); - strcat(buffer, "/*"); + str_format(buffer, sizeof(buffer), "%s/*", dir); handle = FindFirstFileA(buffer, &finddata); @@ -777,10 +782,6 @@ void swap_endian(void *data, unsigned elem_size, unsigned num) int net_socket_read_wait(NETSOCKET sock, int time) { - /* -#if defined(CONF_FAMILY_WINDOWS) - #error Not implemented -#else*/ struct timeval tv; fd_set readfds; @@ -795,8 +796,6 @@ int net_socket_read_wait(NETSOCKET sock, int time) if(FD_ISSET(sock, &readfds)) return 1; return 0; - /* -#endif*/ } unsigned time_timestamp() @@ -804,6 +803,45 @@ unsigned time_timestamp() return time(0); } +void str_append(char *dst, const char *src, int dst_size) +{ + int s = strlen(dst); + int i = 0; + while(s < dst_size) + { + dst[s] = src[i]; + if(!src[i]) /* check for null termination */ + break; + s++; + i++; + } + + dst[dst_size-1] = 0; /* assure null termination */ +} + +void str_copy(char *dst, const char *src, int dst_size) +{ + strncpy(dst, src, dst_size); + dst[dst_size-1] = 0; /* assure null termination */ +} + +void str_format(char *buffer, int buffer_size, const char *format, ...) +{ +#if defined(CONF_FAMILY_WINDOWS) + va_list ap; + va_start(ap, format); + _vsnprintf(buffer, buffer_size, format, ap); + va_end(ap); +#else + va_list ap; + va_start(ap, format); + vsnprintf(buffer, buffer_size, format, ap); + va_end(ap); +#endif + + buffer[buffer_size-1] = 0; /* assure null termination */ +} + #if defined(__cplusplus) } #endif diff --git a/src/engine/e_system.h b/src/engine/e_system.h index bfd8cd8c..1fd929e8 100644 --- a/src/engine/e_system.h +++ b/src/engine/e_system.h @@ -520,6 +520,13 @@ void swap_endian(void *data, unsigned elem_size, unsigned num); /* #define cache_prefetch(addr) __builtin_prefetch(addr) */ +/*typedef unsigned char [256] pstr; +void pstr_format(pstr *str, )*/ + +void str_append(char *dst, const char *src, int dst_size); +void str_copy(char *dst, const char *src, int dst_size); +void str_format(char *buffer, int buffer_size, const char *format, ...); + #ifdef __cplusplus } #endif diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c index 415b67fe..7bfb7a20 100644 --- a/src/engine/server/es_server.c +++ b/src/engine/server/es_server.c @@ -205,7 +205,7 @@ void server_setclientname(int client_id, const char *name) { if(client_id < 0 || client_id > MAX_CLIENTS || clients[client_id].state < SRVCLIENT_STATE_READY) return; - strncpy(clients[client_id].name, name, MAX_NAME_LENGTH); + str_copy(clients[client_id].name, name, MAX_NAME_LENGTH); } void server_setclientscore(int client_id, int score) @@ -548,18 +548,18 @@ static void server_process_client_packet(NETPACKET *packet) { char version[64]; const char *password; - strncpy(version, msg_unpack_string(), 64); + str_copy(version, msg_unpack_string(), 64); if(strcmp(version, mods_net_version()) != 0) { /* OH FUCK! wrong version, drop him */ char reason[256]; - sprintf(reason, "wrong version. server is running %s.", mods_net_version()); + str_format(reason, sizeof(reason), "wrong version. server is running %s.", mods_net_version()); netserver_drop(net, cid, reason); return; } - strncpy(clients[cid].name, msg_unpack_string(), MAX_NAME_LENGTH); - strncpy(clients[cid].clan, msg_unpack_string(), MAX_CLANNAME_LENGTH); + str_copy(clients[cid].name, msg_unpack_string(), MAX_NAME_LENGTH); + str_copy(clients[cid].clan, msg_unpack_string(), MAX_CLANNAME_LENGTH); password = msg_unpack_string(); if(config.password[0] != 0 && strcmp(config.password, password) != 0) @@ -704,29 +704,29 @@ static void server_send_serverinfo(NETADDR4 *addr, int lan) packer_add_string(&p, config.sv_map, 32); /* gametype */ - sprintf(buf, "%d", browseinfo_gametype); + str_format(buf, sizeof(buf), "%d", browseinfo_gametype); packer_add_string(&p, buf, 2); /* flags */ i = 0; - if(strlen(config.password)) + if(config.password[0]) i |= 1; - sprintf(buf, "%d", i); + str_format(buf, sizeof(buf), "%d", i); packer_add_string(&p, buf, 2); /* progression */ - sprintf(buf, "%d", browseinfo_progression); + str_format(buf, sizeof(buf), "%d", browseinfo_progression); packer_add_string(&p, buf, 4); - sprintf(buf, "%d", c); packer_add_string(&p, buf, 3); /* num players */ - sprintf(buf, "%d", netserver_max_clients(net)); packer_add_string(&p, buf, 3); /* max players */ + str_format(buf, sizeof(buf), "%d", c); packer_add_string(&p, buf, 3); /* num players */ + str_format(buf, sizeof(buf), "%d", netserver_max_clients(net)); packer_add_string(&p, buf, 3); /* max players */ for(i = 0; i < MAX_CLIENTS; i++) { if(clients[i].state != SRVCLIENT_STATE_EMPTY) { packer_add_string(&p, clients[i].name, 48); /* player name */ - sprintf(buf, "%d", clients[i].score); packer_add_string(&p, buf, 6); /* player score */ + str_format(buf, sizeof(buf), "%d", clients[i].score); packer_add_string(&p, buf, 6); /* player score */ } } @@ -798,7 +798,7 @@ static int server_load_map(const char *mapname) { DATAFILE *df; char buf[512]; - sprintf(buf, "data/maps/%s.map", mapname); + str_format(buf, sizeof(buf), "data/maps/%s.map", mapname); df = datafile_load(buf); if(!df) return 0; @@ -810,7 +810,7 @@ static int server_load_map(const char *mapname) current_map_crc = datafile_crc(buf); dbg_msg("server", "%s crc is %08x", buf, current_map_crc); - strcpy(current_map, mapname); + str_copy(current_map, mapname, sizeof(current_map)); map_set(df); /* load compelate map into memory for download */ @@ -842,7 +842,7 @@ static int server_run() } /* start server */ - if(strlen(config.sv_bindaddr) && net_host_lookup(config.sv_bindaddr, config.sv_port, &bindaddr) != 0) + if(config.sv_bindaddr[0] && net_host_lookup(config.sv_bindaddr, config.sv_port, &bindaddr) != 0) { /* sweet! */ } |