added amb1348 - SetFailState() formatting

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401839
This commit is contained in:
David Anderson 2008-01-04 16:20:25 +00:00
parent 4e07200cfb
commit 1ffd1db733
2 changed files with 38 additions and 5 deletions

View File

@ -371,12 +371,35 @@ static cell_t GetPluginInfo(IPluginContext *pContext, const cell_t *params)
static cell_t SetFailState(IPluginContext *pContext, const cell_t *params)
{
char *str;
pContext->LocalToString(params[1], &str);
CPlugin *pPlugin;
CPlugin *pPlugin = g_PluginSys.GetPluginByCtx(pContext->GetContext());
pContext->LocalToString(params[1], &str);
pPlugin = g_PluginSys.GetPluginByCtx(pContext->GetContext());
if (params[0] == 1)
{
pPlugin->SetErrorState(Plugin_Error, "%s", str);
return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "%s", str);
}
else
{
char buffer[2048];
g_SourceMod.FormatString(buffer, sizeof(buffer), pContext, params, 1);
if (pContext->GetContext()->n_err != SP_ERROR_NONE)
{
pPlugin->SetErrorState(Plugin_Error, "%s", str);
return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "Formatting error (%s)", str);
}
else
{
pPlugin->SetErrorState(Plugin_Error, "%s", buffer);
return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "%s", buffer);
}
}
return 0;
}
static cell_t GetSysTickCount(IPluginContext *pContext, const cell_t *params)

View File

@ -282,11 +282,21 @@ native Handle:FindPluginByNumber(order_num);
* Causes the plugin to enter a failed state. An error will be thrown and
* the plugin will be paused until it is unloaded or reloaded.
*
* @param string Message to print.
* For backwards compatibility, if no extra arguments are passed, no
* formatting is applied. If one or more additional arguments is passed,
* the string is formatted using Format(). If any errors are encountered
* during formatting, both the format specifier string and an additional
* error message are written.
*
* This function does not return, and no further code in the plugin is
* executed.
*
* @param string Format specifier string.
* @param ... Formatting arguments.
* @noreturn
* @error Always throws SP_ERROR_ABORT.
*/
native SetFailState(const String:string[]);
native SetFailState(const String:string[], any:...);
/**
* Aborts the current callback and throws an error. This function