mirror of
https://github.com/rehlds/metamod-r.git
synced 2025-03-03 17:15:26 +03:00
Final refactoring
This commit is contained in:
parent
333918455c
commit
f392c42e7e
@ -115,7 +115,7 @@ bool MConfig::load(const char* fn)
|
||||
}
|
||||
|
||||
META_DEBUG(2, "Loading from config file: %s", loadfile);
|
||||
for (ln = 1; !feof(fp) && fgets(line, sizeof(line), fp); ln++)
|
||||
for (ln = 1; !feof(fp) && fgets(line, sizeof line, fp); ln++)
|
||||
{
|
||||
if (line[0] == '#' || line[0] == ';' || !Q_strncmp(line, "//", 2))
|
||||
continue;
|
||||
|
@ -109,12 +109,12 @@ bool setup_gamedll(gamedll_t *gamedll)
|
||||
#endif
|
||||
|
||||
META_DEBUG(4, "Checking for old version game DLL name '%s'.\n", knownfn);
|
||||
Q_snprintf(gamedll->pathname, sizeof(gamedll->pathname), "dlls/%s", knownfn);
|
||||
Q_snprintf(gamedll->pathname, sizeof gamedll->pathname, "dlls/%s", knownfn);
|
||||
|
||||
// Check if the gamedll file exists. If not, try to install it from the cache.
|
||||
if (!valid_gamedir_file(gamedll->pathname))
|
||||
{
|
||||
Q_snprintf(gamedll->real_pathname, sizeof(gamedll->real_pathname), "%s/dlls/%s", gamedll->gamedir, knownfn);
|
||||
Q_snprintf(gamedll->real_pathname, sizeof gamedll->real_pathname, "%s/dlls/%s", gamedll->gamedir, knownfn);
|
||||
install_gamedll(gamedll->pathname, gamedll->real_pathname);
|
||||
}
|
||||
}
|
||||
@ -124,7 +124,7 @@ bool setup_gamedll(gamedll_t *gamedll)
|
||||
return false;
|
||||
}
|
||||
|
||||
Q_snprintf(gamedll->pathname, sizeof(gamedll->pathname), "%s/dlls/%s", gamedll->gamedir, knownfn);
|
||||
Q_snprintf(gamedll->pathname, sizeof gamedll->pathname, "%s/dlls/%s", gamedll->gamedir, knownfn);
|
||||
|
||||
// get filename from pathname
|
||||
char *cp = Q_strrchr(gamedll->pathname, '/');
|
||||
@ -135,8 +135,8 @@ bool setup_gamedll(gamedll_t *gamedll)
|
||||
|
||||
gamedll->file = cp;
|
||||
|
||||
Q_strncpy(gamedll->real_pathname, gamedll->pathname, sizeof(gamedll->real_pathname) - 1);
|
||||
gamedll->real_pathname[sizeof(gamedll->real_pathname) - 1] = '\0';
|
||||
Q_strncpy(gamedll->real_pathname, gamedll->pathname, sizeof gamedll->real_pathname - 1);
|
||||
gamedll->real_pathname[sizeof gamedll->real_pathname - 1] = '\0';
|
||||
|
||||
gamedll->desc = known->desc;
|
||||
META_LOG("Recognized game '%s'; using dllfile '%s'", gamedll->name, gamedll->file);
|
||||
|
@ -219,7 +219,7 @@ bool meta_init_gamedll(void)
|
||||
char gamedir[PATH_MAX];
|
||||
char *cp;
|
||||
|
||||
Q_memset(&g_GameDLL, 0, sizeof(g_GameDLL));
|
||||
Q_memset(&g_GameDLL, 0, sizeof g_GameDLL);
|
||||
|
||||
GET_GAME_DIR(gamedir);
|
||||
normalize_pathname(gamedir);
|
||||
@ -260,7 +260,7 @@ bool meta_init_gamedll(void)
|
||||
|
||||
Q_snprintf(g_GameDLL.gamedir, sizeof g_GameDLL.gamedir, "%s/%s", buf, gamedir);
|
||||
Q_strncpy(g_GameDLL.name, gamedir, sizeof g_GameDLL.name - 1);
|
||||
g_GameDLL.name[sizeof(g_GameDLL.name) - 1] = '\0';
|
||||
g_GameDLL.name[sizeof g_GameDLL.name - 1] = '\0';
|
||||
}
|
||||
|
||||
META_DEBUG(3, "Game: %s", g_GameDLL.name);
|
||||
|
@ -188,10 +188,10 @@ MPlugin* MPluginList::plugin_addload(plid_t plid, const char* fname, PLUG_LOADTI
|
||||
}
|
||||
|
||||
auto pl_found = find(pl_temp.m_pathname);
|
||||
if (!pl_found)
|
||||
if (pl_found)
|
||||
{
|
||||
META_DEBUG(1, "Plugin '%s' already in current list; file=%s desc='%s'", pl_temp.m_file, pl_found->m_file, pl_found->m_desc);
|
||||
return nullptr;
|
||||
return pl_found;
|
||||
}
|
||||
|
||||
auto pl_added = add(&pl_temp);
|
||||
@ -224,7 +224,7 @@ MPlugin* MPluginList::find_empty_slot()
|
||||
{
|
||||
for (int i = 0; i < MAX_PLUGINS; i++) {
|
||||
if (m_plist[i].m_status == PL_EMPTY) {
|
||||
if (i > m_max_loaded_count)
|
||||
if (i >= m_max_loaded_count)
|
||||
m_max_loaded_count = i + 1;
|
||||
|
||||
return &m_plist[i];
|
||||
@ -295,7 +295,7 @@ bool MPluginList::ini_startup()
|
||||
}
|
||||
|
||||
META_LOG("ini: Begin reading plugins list: %s", m_inifile);
|
||||
for (n = 0 , ln = 1; !feof(fp) && fgets(line, sizeof(line), fp) && n < MAX_PLUGINS; ln++)
|
||||
for (n = 0, ln = 1; !feof(fp) && fgets(line, sizeof line, fp) && n < MAX_PLUGINS; ln++)
|
||||
{
|
||||
// Remove line terminations.
|
||||
char* cp;
|
||||
@ -308,9 +308,9 @@ bool MPluginList::ini_startup()
|
||||
// Parse directly into next entry in array
|
||||
if (!m_plist[n].ini_parseline(line))
|
||||
{
|
||||
META_ERROR("ini: Skipping malformed line %d of %s", ln, m_inifile);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check for a duplicate - an existing entry with this pathname.
|
||||
if (find(m_plist[n].m_pathname))
|
||||
{
|
||||
@ -367,7 +367,7 @@ bool MPluginList::ini_refresh()
|
||||
}
|
||||
|
||||
META_LOG("ini: Begin re-reading plugins list: %s", m_inifile);
|
||||
for (n = 0 , ln = 1; !feof(fp) && fgets(line, sizeof(line), fp) && n < MAX_PLUGINS; ln++)
|
||||
for (n = 0 , ln = 1; !feof(fp) && fgets(line, sizeof line, fp) && n < MAX_PLUGINS; ln++)
|
||||
{
|
||||
// Remove line terminations.
|
||||
char *cp;
|
||||
@ -378,7 +378,7 @@ bool MPluginList::ini_refresh()
|
||||
*cp = '\0';
|
||||
|
||||
// Parse into a temp plugin
|
||||
Q_memset(&pl_temp, 0, sizeof(pl_temp));
|
||||
Q_memset(&pl_temp, 0, sizeof pl_temp);
|
||||
if (!pl_temp.ini_parseline(line))
|
||||
{
|
||||
META_ERROR("ini: Skipping malformed line %d of %s",ln, m_inifile);
|
||||
@ -676,8 +676,8 @@ void MPluginList::show(int source_index)
|
||||
else
|
||||
META_CONS("Child plugins:");
|
||||
|
||||
META_CONS(" %*s %-*s %-4s %-4s %-*s v%-*s %-*s %-5s %-5s", WIDTH_MAX_PLUGINS, "", sizeof(desc) - 1, "description", "stat", "pend",
|
||||
sizeof(file) - 1, "file", sizeof(vers) - 1, "ers", 2 + WIDTH_MAX_PLUGINS, "src", "load ", "unlod");
|
||||
META_CONS(" %*s %-*s %-4s %-4s %-*s v%-*s %-*s %-5s %-5s", WIDTH_MAX_PLUGINS, "", sizeof desc - 1, "description", "stat", "pend",
|
||||
sizeof file - 1, "file", sizeof vers - 1, "ers", 2 + WIDTH_MAX_PLUGINS, "src", "load ", "unlod");
|
||||
|
||||
for (int i = 0; i < m_max_loaded_count; i++)
|
||||
{
|
||||
@ -688,25 +688,25 @@ void MPluginList::show(int source_index)
|
||||
if (source_index > 0 && pl->m_source_plugin_index != source_index)
|
||||
continue;
|
||||
|
||||
Q_strncpy(desc, pl->m_desc, sizeof(desc) - 1);
|
||||
desc[sizeof(desc) - 1] = '\0';
|
||||
Q_strncpy(desc, pl->m_desc, sizeof desc - 1);
|
||||
desc[sizeof desc - 1] = '\0';
|
||||
|
||||
Q_strncpy(file, pl->m_file, sizeof(file) - 1);
|
||||
file[sizeof(file) - 1] = '\0';
|
||||
Q_strncpy(file, pl->m_file, sizeof file - 1);
|
||||
file[sizeof file - 1] = '\0';
|
||||
|
||||
if (pl->m_info && pl->m_info->version)
|
||||
{
|
||||
Q_strncpy(vers, pl->m_info->version, sizeof(vers) - 1);
|
||||
vers[sizeof(vers) - 1] = '\0';
|
||||
Q_strncpy(vers, pl->m_info->version, sizeof vers - 1);
|
||||
vers[sizeof vers - 1] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
Q_strncpy(vers, " -", sizeof(vers) - 1);
|
||||
vers[sizeof(vers) - 1] = '\0';
|
||||
Q_strncpy(vers, " -", sizeof vers - 1);
|
||||
vers[sizeof vers - 1] = '\0';
|
||||
}
|
||||
|
||||
META_CONS(" [%*d] %-*s %-4s %-4s %-*s v%-*s %-*s %-5s %-5s", WIDTH_MAX_PLUGINS, pl->m_index,
|
||||
sizeof(desc) - 1, desc, pl->str_status(ST_SHOW), pl->str_action(SA_SHOW), sizeof(file) - 1, file, sizeof(vers) - 1, vers,
|
||||
sizeof desc - 1, desc, pl->str_status(ST_SHOW), pl->str_action(SA_SHOW), sizeof file - 1, file, sizeof vers - 1, vers,
|
||||
2 + WIDTH_MAX_PLUGINS, pl->str_source(SO_SHOW), pl->str_loadable(SL_SHOW), pl->str_unloadable(SL_SHOW));
|
||||
|
||||
if (pl->m_status == PL_RUNNING)
|
||||
|
@ -1,5 +1,12 @@
|
||||
#include "precompiled.h"
|
||||
|
||||
const char* g_platform_postfixes[] = {
|
||||
"_i386.so",
|
||||
"_i486.so",
|
||||
"_i586.so",
|
||||
"_i686.so",
|
||||
};
|
||||
|
||||
// Parse a line from plugins.ini into a plugin.
|
||||
bool MPlugin::ini_parseline(char *_line)
|
||||
{
|
||||
@ -15,7 +22,7 @@ bool MPlugin::ini_parseline(char *_line)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (line[0] == '#' || line[0] == ';' || Q_strncmp(line, "//", 2) ) {
|
||||
if (line[0] == '#' || line[0] == ';' || !Q_strncmp(line, "//", 2)) {
|
||||
META_DEBUG(7, "ini: Ignoring commented line: %s", line);
|
||||
return false;
|
||||
}
|
||||
@ -57,7 +64,7 @@ bool MPlugin::ini_parseline(char *_line)
|
||||
|
||||
// Grab description.
|
||||
// Just get the the rest of the line, minus line-termination.
|
||||
token = strtok_r(NULL, "\n\r", &ptr_token);
|
||||
token = strtok_r(nullptr, "\n\r", &ptr_token);
|
||||
if (token)
|
||||
{
|
||||
token = token + strspn(token, " \t"); // skip whitespace
|
||||
@ -140,7 +147,7 @@ bool MPlugin::plugin_parseline(const char *fname, int loader_index)
|
||||
|
||||
//grab description
|
||||
//temporarily use plugin file until plugin can be queried
|
||||
Q_snprintf(m_desc, sizeof(m_desc), "<%s>", m_file);
|
||||
Q_snprintf(m_desc, sizeof m_desc, "<%s>", m_file);
|
||||
|
||||
//make full pathname
|
||||
full_gamedir_path(m_filename, m_pathname);
|
||||
@ -196,7 +203,7 @@ bool MPlugin::cmd_parseline(const char *line)
|
||||
{
|
||||
// if no description is specified, temporarily use plugin file,
|
||||
// until plugin can be queried, and desc replaced with info->name.
|
||||
Q_snprintf(m_desc, sizeof(m_desc), "<%s>", m_file);
|
||||
Q_snprintf(m_desc, sizeof m_desc, "<%s>", m_file);
|
||||
}
|
||||
|
||||
// Make full pathname (from gamedir if relative, remove "..",
|
||||
@ -336,8 +343,8 @@ char *MPlugin::resolve_prefix(char *path) const
|
||||
{
|
||||
struct stat st;
|
||||
char *cp, *fname;
|
||||
char dname[PATH_MAX ];
|
||||
static char buf[PATH_MAX ];
|
||||
char dname[PATH_MAX];
|
||||
static char buf[PATH_MAX];
|
||||
char *found;
|
||||
|
||||
// try "mm_" prefix FIRST.
|
||||
@ -382,62 +389,45 @@ char *MPlugin::resolve_prefix(char *path) const
|
||||
// path_i386.so, path_i486.so, etc (if linux)
|
||||
char *MPlugin::resolve_suffix(char *path) const
|
||||
{
|
||||
struct stat st;
|
||||
static char buf[PATH_MAX ];
|
||||
char *found;
|
||||
char *found = nullptr;
|
||||
|
||||
auto check = [](const char* path) -> char*
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if (stat(path, &st) == 0 && S_ISREG(st.st_mode)) {
|
||||
static char buf[PATH_MAX];
|
||||
strncpy(buf, path, sizeof buf - 1);
|
||||
buf[sizeof buf - 1];
|
||||
return buf;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
if (Q_strstr(path, PLATFORM_DLEXT)) {
|
||||
return check(path);
|
||||
}
|
||||
|
||||
char tmpbuf[PATH_MAX];
|
||||
Q_snprintf(tmpbuf, sizeof tmpbuf, "%s%s", path, PLATFORM_DLEXT);
|
||||
if ((found = check(tmpbuf))) return found;
|
||||
|
||||
// Hmm, recursion.
|
||||
if (!Q_strstr(path, "_mm"))
|
||||
{
|
||||
char *tmpbuf;
|
||||
Q_snprintf(buf, sizeof buf, "%s_mm", path);
|
||||
tmpbuf = Q_strdup(buf);
|
||||
found = resolve_suffix(tmpbuf);
|
||||
Q_free(tmpbuf);
|
||||
if (found) return found;
|
||||
Q_snprintf(tmpbuf, sizeof tmpbuf, "%s_mm", path);
|
||||
if ((found = resolve_suffix(tmpbuf))) return found;
|
||||
}
|
||||
else if (!Q_strstr(path, "_MM"))
|
||||
{
|
||||
char *tmpbuf;
|
||||
Q_snprintf(buf, sizeof buf, "%s_MM", path);
|
||||
tmpbuf = Q_strdup(buf);
|
||||
found = resolve_suffix(tmpbuf);
|
||||
Q_free(tmpbuf);
|
||||
if (found) return found;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
Q_snprintf(buf, sizeof buf, "%s.dll", path);
|
||||
#else
|
||||
Q_snprintf(buf, sizeof buf, "%s.so", path);
|
||||
#endif
|
||||
|
||||
if (stat(buf, &st) == 0 && S_ISREG(st.st_mode))
|
||||
return buf;
|
||||
|
||||
#ifndef _WIN32
|
||||
Q_snprintf(buf, sizeof buf, "%s_i386.so", path);
|
||||
if (stat(buf, &st) == 0 && S_ISREG(st.st_mode))
|
||||
return buf;
|
||||
|
||||
Q_snprintf(buf, sizeof buf, "%s_i486.so", path);
|
||||
if (stat(buf, &st) == 0 && S_ISREG(st.st_mode))
|
||||
return buf;
|
||||
|
||||
Q_snprintf(buf, sizeof buf, "%s_i586.so", path);
|
||||
if (stat(buf, &st) == 0 && S_ISREG(st.st_mode))
|
||||
return buf;
|
||||
|
||||
Q_snprintf(buf, sizeof buf, "%s_i686.so", path);
|
||||
if (stat(buf, &st) == 0 && S_ISREG(st.st_mode))
|
||||
return buf;
|
||||
|
||||
Q_snprintf(buf, sizeof buf, "%s_amd64.so", path);
|
||||
if (stat(buf, &st) == 0 && S_ISREG(st.st_mode))
|
||||
return buf;
|
||||
for (size_t i = 0; i < arraysize(g_platform_suffixes); i++) {
|
||||
Q_snprintf(tmpbuf, sizeof tmpbuf, "%s%s", path, g_platform_suffixes[i]);
|
||||
if ((found = check(tmpbuf))) return found;
|
||||
}
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Check if a passed string starts with a known platform postfix.
|
||||
@ -445,11 +435,11 @@ char *MPlugin::resolve_suffix(char *path) const
|
||||
// Linux and Win32.
|
||||
static bool is_platform_postfix(char *pf)
|
||||
{
|
||||
if (!pf) {
|
||||
if (!Q_strncmp(pf, "_i386.", 6)) return true;
|
||||
if (!Q_strncmp(pf, "_i486.", 6)) return true;
|
||||
if (!Q_strncmp(pf, "_i586.", 6)) return true;
|
||||
if (!Q_strncmp(pf, "_i686.", 6)) return true;
|
||||
if (pf) {
|
||||
for (size_t i = 0; i < arraysize(g_platform_postfixes); i++) {
|
||||
if (!Q_strcmp(pf, g_platform_postfixes[i]))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -473,36 +463,35 @@ bool MPlugin::platform_match(MPlugin *other) const
|
||||
if (m_status == PL_EMPTY || other->m_status == PL_EMPTY)
|
||||
return false;
|
||||
|
||||
if (Q_strcmp(m_file, other->m_file) == 0)
|
||||
if (!Q_strcmp(m_file, other->m_file))
|
||||
return true;
|
||||
|
||||
if (m_status >= PL_OPENED && other->m_status >= PL_OPENED && Q_strcmp(m_info->logtag, other->m_info->logtag) == 0)
|
||||
if (m_status >= PL_OPENED && other->m_status >= PL_OPENED && !Q_strcmp(m_info->logtag, other->m_info->logtag))
|
||||
return true;
|
||||
|
||||
if (*m_desc != '\0' && Q_stricmp(m_desc, other->m_desc) == 0)
|
||||
if (*m_desc != '\0' && !Q_stricmp(m_desc, other->m_desc))
|
||||
return true;
|
||||
|
||||
end = Q_strrchr(m_file, '_');
|
||||
if (end == NULL || !is_platform_postfix(end)) end = Q_strrchr(m_file, '.');
|
||||
if (!end || !is_platform_postfix(end)) end = Q_strrchr(m_file, '.');
|
||||
other_end = Q_strrchr(other->m_file, '_');
|
||||
|
||||
if (other_end == NULL || !is_platform_postfix(other_end))
|
||||
if (!other_end || !is_platform_postfix(other_end))
|
||||
other_end = Q_strrchr(other->m_file, '.');
|
||||
|
||||
if (end == NULL || other_end == NULL)
|
||||
if (!end || !other_end)
|
||||
return false;
|
||||
|
||||
prefixlen = end - m_file;
|
||||
if ((other_end - other->m_file) != prefixlen)
|
||||
if (other_end - other->m_file != prefixlen)
|
||||
return false;
|
||||
|
||||
if (Q_strncmp(m_file, other->m_file, prefixlen) == 0)
|
||||
if (!Q_strncmp(m_file, other->m_file, prefixlen))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Load a plugin; query, check allowed time, attach.
|
||||
bool MPlugin::load(PLUG_LOADTIME now)
|
||||
{
|
||||
@ -983,7 +972,7 @@ bool MPlugin::detach(PLUG_LOADTIME now, PL_UNLOAD_REASON reason)
|
||||
META_DETACH_FN pfn_detach;
|
||||
|
||||
// If we have no handle, i.e. no dll loaded, we return true because the
|
||||
// dll is obviously detached. We shouldn't call DLSYM() with a NULL
|
||||
// dll is obviously detached. We shouldn't call DLSYM() with a nullptr
|
||||
// handle since this will DLSYM() ourself.
|
||||
if (!m_sys_module.gethandle())
|
||||
return true;
|
||||
@ -1167,7 +1156,7 @@ void show_table(const char* table_name, table_t* table, info_t* info_begin, bool
|
||||
|
||||
for (auto n = info_begin; n->name[0] != '\0'; n++) {
|
||||
if (*(size_t *)(size_t(table) + n->offset)) {
|
||||
META_CONS(" %s%s", n->name, post ? "_Post" : "");
|
||||
META_CONS(" %s%s", Q_strstr(n->name, "::") + 2, post ? "_Post" : "");
|
||||
count++;
|
||||
}
|
||||
}
|
||||
@ -1290,8 +1279,8 @@ const char *MPlugin::str_action(STR_ACTION fmt) const
|
||||
switch (m_action)
|
||||
{
|
||||
case PA_NULL:
|
||||
if (fmt == SA_SHOW) return "NULL";
|
||||
else return "null";
|
||||
if (fmt == SA_SHOW) return "nullptr";
|
||||
else return "nullptr";
|
||||
case PA_NONE:
|
||||
if (fmt == SA_SHOW) return " - ";
|
||||
else return "none";
|
||||
@ -1404,7 +1393,7 @@ const char *MPlugin::str_source(STR_SOURCE fmt) const
|
||||
else
|
||||
{
|
||||
if (fmt == SO_SHOW) return UTIL_VarArgs("pl%d", m_source_plugin_index);
|
||||
else return UTIL_VarArgs("plugin [%d]", m_source_plugin_index);
|
||||
else return UTIL_VarArgs("plugin [%s]", g_plugins.find(m_source_plugin_index)->m_desc);
|
||||
}
|
||||
default:
|
||||
if (fmt == SO_SHOW) return UTIL_VarArgs("UNK%d", m_source);
|
||||
|
@ -255,7 +255,7 @@ void MRegCvarList::show(int plugin_id) const
|
||||
int total_count = 0;
|
||||
char bname[30 + 1], bval[15 + 1]; // +1 for term null
|
||||
|
||||
META_CONS("%-*s %*s %s", sizeof(bname) - 1, "Registered cvars:", sizeof bval - 1, "float value", "string value");
|
||||
META_CONS("%-*s %*s %s", sizeof bname - 1, "Registered cvars:", sizeof bval - 1, "float value", "string value");
|
||||
|
||||
for (auto reg : m_list)
|
||||
{
|
||||
@ -264,8 +264,8 @@ void MRegCvarList::show(int plugin_id) const
|
||||
|
||||
Q_strncpy(bname, reg->m_cvar->name, sizeof bname - 1);
|
||||
bname[sizeof bname - 1] = '\0';
|
||||
Q_snprintf(bval, sizeof(bval), "%f", reg->m_cvar->value);
|
||||
META_CONS(" %-*s %*s %s", sizeof(bname) - 1, bname, sizeof(bval) - 1, bval, reg->m_cvar->string);
|
||||
Q_snprintf(bval, sizeof bval, "%f", reg->m_cvar->value);
|
||||
META_CONS(" %-*s %*s %s", sizeof bname - 1, bname, sizeof bval - 1, bval, reg->m_cvar->string);
|
||||
total_count++;
|
||||
}
|
||||
|
||||
@ -340,12 +340,12 @@ void MRegMsgList::show()
|
||||
int total_count = 0;
|
||||
char bname[25 + 1]; // +1 for term null
|
||||
|
||||
META_CONS("%-*s %5s %5s", sizeof(bname) - 1, "Game registered user msgs:", "msgid", "size");
|
||||
META_CONS("%-*s %5s %5s", sizeof bname - 1, "Game registered user msgs:", "msgid", "size");
|
||||
|
||||
for (auto msg : m_list) {
|
||||
Q_strncpy(bname, msg->m_name, sizeof bname - 1);
|
||||
bname[sizeof bname - 1] = '\0';
|
||||
META_CONS(" %-*s %3d %3d", sizeof(bname) - 1, bname, msg->m_msgid, msg->m_size);
|
||||
META_CONS(" %-*s %3d %3d", sizeof bname - 1, bname, msg->m_msgid, msg->m_size);
|
||||
total_count++;
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ module_handle_t CSysModule::load(const char* filepath)
|
||||
m_handle = LoadLibrary(filepath);
|
||||
|
||||
MODULEINFO module_info;
|
||||
if (GetModuleInformation(GetCurrentProcess(), m_handle, &module_info, sizeof(module_info))) {
|
||||
if (GetModuleInformation(GetCurrentProcess(), m_handle, &module_info, sizeof module_info)) {
|
||||
m_base = (uintptr_t)module_info.lpBaseOfDll;
|
||||
m_size = module_info.SizeOfImage;
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ char *UTIL_VarArgs(char *format, ...)
|
||||
static char string[1024];
|
||||
|
||||
va_start(argptr, format);
|
||||
Q_vsnprintf(string, sizeof(string), format, argptr);
|
||||
Q_vsnprintf(string, sizeof string, format, argptr);
|
||||
va_end(argptr);
|
||||
|
||||
return string;
|
||||
|
@ -81,8 +81,8 @@ char* full_gamedir_path(const char* path, char* fullpath)
|
||||
if (!realpath(buf, fullpath))
|
||||
{
|
||||
META_DEBUG(4, "Unable to get realpath for '%s': %s", buf, str_os_error());
|
||||
Q_strncpy(fullpath, path, sizeof(fullpath) - 1);
|
||||
fullpath[sizeof(fullpath) - 1] = '\0';
|
||||
Q_strncpy(fullpath, path, sizeof fullpath - 1);
|
||||
fullpath[sizeof fullpath - 1] = '\0';
|
||||
}
|
||||
|
||||
// Replace backslashes, etc.
|
||||
|
Loading…
x
Reference in New Issue
Block a user