mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-02-18 11:54:14 +01:00
Reformatted output of meta list command
--HG-- extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40420
This commit is contained in:
parent
e00aa3cbd4
commit
afbd6cc123
@ -302,6 +302,37 @@ CPluginManager::CPlugin *CPluginManager::FindByAPI(ISmmPlugin *api)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int CPluginManager::GetPluginCount()
|
||||
{
|
||||
return (int)m_Plugins.size();
|
||||
}
|
||||
|
||||
const char *CPluginManager::GetStatusText(CPlugin *pl)
|
||||
{
|
||||
switch (pl->m_Status)
|
||||
{
|
||||
case Pl_NotFound:
|
||||
return "NOFILE";
|
||||
case Pl_Error:
|
||||
return "ERROR";
|
||||
case Pl_Refused:
|
||||
return "FAILED";
|
||||
case Pl_Paused:
|
||||
return "PAUSED";
|
||||
case Pl_Running:
|
||||
{
|
||||
if (pl->m_API && pl->m_API->QueryRunning(NULL, 0))
|
||||
{
|
||||
return "STOPPED";
|
||||
} else {
|
||||
return "RUNNING";
|
||||
}
|
||||
}
|
||||
default:
|
||||
return "-";
|
||||
}
|
||||
}
|
||||
|
||||
CPluginManager::CPlugin *CPluginManager::_Load(const char *file, PluginId source, char *error, size_t maxlen)
|
||||
{
|
||||
FILE *fp;
|
||||
|
@ -116,6 +116,9 @@ namespace SourceMM
|
||||
*/
|
||||
bool Retry(PluginId id, char *error, size_t len);
|
||||
|
||||
int GetPluginCount();
|
||||
const char *GetStatusText(CPlugin *pl);
|
||||
|
||||
//get alias info
|
||||
const char *LookupAlias(const char *alias);
|
||||
SourceHook::List<SourceMM::CNameAlias *>::iterator _alias_begin();
|
||||
|
@ -10,6 +10,8 @@
|
||||
version.
|
||||
- Added OnUnlinkConCommandBase to IMetamodListner to notify when Metamod:Source
|
||||
is about to remove a concommand or convar.
|
||||
- The output of the "meta list" command has been reformatted in order to allow
|
||||
more space for plugins' name, version, and author fields.
|
||||
|
||||
2007/06/26 1.4.2:
|
||||
- Fixed a bug where unloading all plugins could crash if one plugin had child
|
||||
|
@ -15,6 +15,9 @@
|
||||
#include "sh_string.h"
|
||||
#include "sh_list.h"
|
||||
|
||||
using namespace SourceMM;
|
||||
using namespace SourceHook;
|
||||
|
||||
/**
|
||||
* @brief Console Command Implementations
|
||||
* @file concommands.cpp
|
||||
@ -50,7 +53,7 @@ bool SMConVarAccessor::Register(ConCommandBase *pCommand)
|
||||
|
||||
void SMConVarAccessor::MarkCommandsAsGameDLL()
|
||||
{
|
||||
for (SourceHook::List<ConCommandBase*>::iterator iter = m_RegisteredCommands.begin();
|
||||
for (List<ConCommandBase*>::iterator iter = m_RegisteredCommands.begin();
|
||||
iter != m_RegisteredCommands.end(); ++iter)
|
||||
{
|
||||
(*iter)->AddFlags(FCVAR_GAMEDLL);
|
||||
@ -61,8 +64,8 @@ void SMConVarAccessor::Unregister(PluginId id, ConCommandBase *pCommand)
|
||||
{
|
||||
/* Notify via IMetamodListener */
|
||||
PluginIter iter;
|
||||
SourceMM::CPluginManager::CPlugin *pPlugin;
|
||||
SourceHook::List<IMetamodListener *>::iterator event;
|
||||
CPluginManager::CPlugin *pPlugin;
|
||||
List<IMetamodListener *>::iterator event;
|
||||
IMetamodListener *pML;
|
||||
for (iter=g_PluginMngr._begin(); iter!=g_PluginMngr._end(); iter++)
|
||||
{
|
||||
@ -217,65 +220,63 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
|
||||
return;
|
||||
} else if (strcmp(command, "list") == 0) {
|
||||
SourceMM::CPluginManager::CPlugin *pl;
|
||||
CPluginManager::CPlugin *pl;
|
||||
ISmmPlugin *plapi;
|
||||
const char *plname;
|
||||
PluginIter i;
|
||||
const char *status="";
|
||||
const char *version=NULL;
|
||||
const char *name=NULL;
|
||||
const char *author=NULL;
|
||||
char buffer[256];
|
||||
int len;
|
||||
int plnum = g_PluginMngr.GetPluginCount();
|
||||
|
||||
CONMSG("-Id- %-20.19s %-10.9s %-20.19s %-8.7s\n", "Name", "Version", "Author", "Status");
|
||||
for (i=g_PluginMngr._begin(); i!=g_PluginMngr._end(); i++)
|
||||
if (!plnum)
|
||||
{
|
||||
CONMSG("No plugins loaded.\n");
|
||||
return;
|
||||
} else {
|
||||
CONMSG("Listing %d plugin%s:\n", plnum, (plnum > 1) ? "s" : "");
|
||||
}
|
||||
|
||||
for (i = g_PluginMngr._begin(); i != g_PluginMngr._end(); i++)
|
||||
{
|
||||
pl = (*i);
|
||||
if (!pl)
|
||||
{
|
||||
break;
|
||||
if (pl->m_Status == Pl_Paused)
|
||||
{
|
||||
status = "PAUSE";
|
||||
} else if (pl->m_Status == Pl_Running) {
|
||||
if (pl->m_API && pl->m_API->QueryRunning(NULL, 0))
|
||||
status = "RUN";
|
||||
else
|
||||
status = "STOPPED";
|
||||
} else if (pl->m_Status == Pl_Refused) {
|
||||
status = "FAIL";
|
||||
} else if (pl->m_Status == Pl_Error) {
|
||||
status = "ERROR";
|
||||
} else if (pl->m_Status == Pl_NotFound) {
|
||||
status = "NOFILE";
|
||||
}
|
||||
|
||||
if (pl->m_API)
|
||||
len = 0;
|
||||
|
||||
if (pl->m_Status != Pl_Running)
|
||||
{
|
||||
version = pl->m_API->GetVersion();
|
||||
author = pl->m_API->GetAuthor();
|
||||
name = pl->m_API->GetName();
|
||||
len += UTIL_Format(buffer, sizeof(buffer), " [%02d] <%s>", pl->m_Id, g_PluginMngr.GetStatusText(pl));
|
||||
} else {
|
||||
version = "-";
|
||||
author = "-";
|
||||
name = "-";
|
||||
len += UTIL_Format(buffer, sizeof(buffer), " [%02d]", pl->m_Id);
|
||||
}
|
||||
|
||||
if (!version)
|
||||
version = "-";
|
||||
if (!author)
|
||||
author = "-";
|
||||
if (!name)
|
||||
name = pl->m_File.c_str();
|
||||
if ((plapi = pl->m_API))
|
||||
{
|
||||
plname = IS_STR_FILLED(plapi->GetName()) ? plapi->GetName() : pl->m_File.c_str();
|
||||
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " %s", plname);
|
||||
|
||||
if (IS_STR_FILLED(plapi->GetVersion()))
|
||||
{
|
||||
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " (%s)", plapi->GetVersion());
|
||||
}
|
||||
if (IS_STR_FILLED(plapi->GetAuthor()))
|
||||
{
|
||||
UTIL_Format(&buffer[len], sizeof(buffer)-len, " by %s", plapi->GetAuthor());
|
||||
}
|
||||
}
|
||||
|
||||
CONMSG("[%02d] %-20.19s %-10.9s %-20.19s %-8.7s\n", pl->m_Id, name, version, author, status);
|
||||
CONMSG("%s\n", buffer);
|
||||
}
|
||||
|
||||
//CONMSG("\n");
|
||||
|
||||
return;
|
||||
} else if (strcmp(command, "cmds") == 0) {
|
||||
if (args >= 3)
|
||||
{
|
||||
int id = atoi(e->Cmd_Argv(2));
|
||||
SourceMM::CPluginManager::CPlugin *pl = g_PluginMngr.FindById(id);
|
||||
CPluginManager::CPlugin *pl = g_PluginMngr.FindById(id);
|
||||
|
||||
if (!pl)
|
||||
{
|
||||
@ -288,7 +289,7 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
CONMSG("Plugin %d is not loaded.\n", id);
|
||||
} else {
|
||||
CONMSG("Console commands for %s:\n", pl->m_API->GetName());
|
||||
SourceHook::List<ConCommandBase *>::iterator ci;
|
||||
List<ConCommandBase *>::iterator ci;
|
||||
size_t count = 0;
|
||||
|
||||
for (ci=pl->m_Cmds.begin(); ci!=pl->m_Cmds.end(); ci++)
|
||||
@ -306,7 +307,7 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
if (args >= 3)
|
||||
{
|
||||
int id = atoi(e->Cmd_Argv(2));
|
||||
SourceMM::CPluginManager::CPlugin *pl = g_PluginMngr.FindById(id);
|
||||
CPluginManager::CPlugin *pl = g_PluginMngr.FindById(id);
|
||||
|
||||
if (!pl)
|
||||
{
|
||||
@ -319,7 +320,7 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
CONMSG("Plugin %d is not loaded.\n", id);
|
||||
} else {
|
||||
CONMSG("Registered cvars for %s:\n", pl->m_API->GetName());
|
||||
SourceHook::List<ConCommandBase *>::iterator ci;
|
||||
List<ConCommandBase *>::iterator ci;
|
||||
size_t count = 0;
|
||||
|
||||
for (ci=pl->m_Cvars.begin(); ci!=pl->m_Cvars.end(); ci++)
|
||||
@ -337,7 +338,7 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
if (args >= 3)
|
||||
{
|
||||
int id = atoi(e->Cmd_Argv(2));
|
||||
SourceMM::CPluginManager::CPlugin *pl = g_PluginMngr.FindById(id);
|
||||
CPluginManager::CPlugin *pl = g_PluginMngr.FindById(id);
|
||||
if (!pl)
|
||||
{
|
||||
CONMSG("Plugin %d not found.\n", id);
|
||||
@ -446,7 +447,7 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
|
||||
char error[255]={0};
|
||||
bool already;
|
||||
SourceMM::CPluginManager::CPlugin *pl;
|
||||
CPluginManager::CPlugin *pl;
|
||||
|
||||
PluginId id = g_PluginMngr.Load(full_path, Pl_Console, already, error, sizeof(error));
|
||||
pl = g_PluginMngr.FindById(id);
|
||||
@ -493,8 +494,8 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
CONMSG("Alias \"%s\" was not found.\n", alias);
|
||||
}
|
||||
} else {
|
||||
SourceHook::List<SourceMM::CNameAlias *>::iterator iter, end;
|
||||
SourceMM::CNameAlias *p;
|
||||
List<CNameAlias *>::iterator iter, end;
|
||||
CNameAlias *p;
|
||||
|
||||
iter = g_PluginMngr._alias_begin();
|
||||
end = g_PluginMngr._alias_end();
|
||||
@ -547,8 +548,8 @@ CON_COMMAND(meta, "Metamod:Source Menu")
|
||||
g_SmmAPI.PathFormat(full_path, sizeof(full_path), "%s/%s%s", g_ModPath.c_str(), file, ext);
|
||||
}
|
||||
|
||||
SourceHook::List<SourceMM::CPluginManager::CPlugin *>::iterator iter, end;
|
||||
SourceMM::CPluginManager::CPlugin *pl;
|
||||
List<CPluginManager::CPlugin *>::iterator iter, end;
|
||||
CPluginManager::CPlugin *pl;
|
||||
iter = g_PluginMngr._begin();
|
||||
end = g_PluginMngr._end();
|
||||
for (; iter!=end; iter++)
|
||||
@ -729,45 +730,49 @@ void ClientCommand_handler(edict_t *client)
|
||||
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
} else if(strcmp(subcmd, "list") == 0) {
|
||||
SourceMM::CPluginManager::CPlugin *pl;
|
||||
Pl_Status st;
|
||||
CPluginManager::CPlugin *pl;
|
||||
ISmmPlugin *plapi;
|
||||
const char *plname;
|
||||
PluginIter i;
|
||||
const char *version = NULL;
|
||||
const char *name = NULL;
|
||||
const char *author = NULL;
|
||||
const char *status = NULL;
|
||||
char buffer[256];
|
||||
int len = 0;
|
||||
int plnum = 0;
|
||||
|
||||
CLIENT_CONMSG(client, "-Id- %-20.19s %-10.9s %-20.19s %6s\n", "Name", "Version", "Author", "Status");
|
||||
|
||||
for (i=g_PluginMngr._begin(); i!=g_PluginMngr._end(); i++)
|
||||
for (i = g_PluginMngr._begin(); i != g_PluginMngr._end(); i++, len=0)
|
||||
{
|
||||
pl = (*i);
|
||||
if (!pl)
|
||||
break;
|
||||
|
||||
st = pl->m_Status;
|
||||
|
||||
/* Only show plugins that are running or paused */
|
||||
if (pl->m_API && (st == Pl_Running || st == Pl_Paused))
|
||||
if (pl && pl->m_Status == Pl_Running)
|
||||
{
|
||||
version = pl->m_API->GetVersion();
|
||||
author = pl->m_API->GetAuthor();
|
||||
name = pl->m_API->GetName();
|
||||
|
||||
if (st == Pl_Running && pl->m_API->QueryRunning(NULL, 0))
|
||||
plapi = pl->m_API;
|
||||
if (!plapi || !plapi->QueryRunning(NULL, 0))
|
||||
{
|
||||
status = "RUN";
|
||||
} else {
|
||||
status = "PAUSE";
|
||||
continue;
|
||||
}
|
||||
plnum++;
|
||||
|
||||
len += UTIL_Format(buffer, sizeof(buffer), " [%02d]", plnum);
|
||||
|
||||
plname = IS_STR_FILLED(plapi->GetName()) ? plapi->GetName() : pl->m_File.c_str();
|
||||
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " %s", plname);
|
||||
|
||||
if (IS_STR_FILLED(plapi->GetVersion()))
|
||||
{
|
||||
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " (%s)", plapi->GetVersion());
|
||||
}
|
||||
if (IS_STR_FILLED(plapi->GetAuthor()))
|
||||
{
|
||||
UTIL_Format(&buffer[len], sizeof(buffer)-len, " by %s", plapi->GetAuthor());
|
||||
}
|
||||
|
||||
if (!version || !author || !name)
|
||||
break;
|
||||
|
||||
CLIENT_CONMSG(client, "[%02d] %-20.19s %-10.9s %-20.19s %6s\n", pl->m_Id, name, version, author, status);
|
||||
CLIENT_CONMSG(client, "%s\n", buffer);
|
||||
}
|
||||
}
|
||||
|
||||
if (!plnum)
|
||||
{
|
||||
CLIENT_CONMSG(client, "No active plugins loaded.\n");
|
||||
}
|
||||
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,11 @@
|
||||
* @file util.h
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Returns true is string is not blank, false otherwise.
|
||||
*/
|
||||
#define IS_STR_FILLED(var) (var != NULL && var[0] != '\0')
|
||||
|
||||
/**
|
||||
* @brief Returns a pointer to the extension in a file name.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user