mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-01-31 21:20:33 +00:00
[ruamoko] Make RUA_Sprintf more generally useful
It now takes the function name to print in error message (passed on to PR_Sprintf) and the argument number of the format string. The variable arguments (in ...) are assumed to be immediately after the format argument.
This commit is contained in:
parent
f4b81d30b0
commit
c10b09d41b
4 changed files with 12 additions and 10 deletions
|
@ -52,7 +52,9 @@ void RUA_String_Init (struct progs_s *pr, int secure);
|
||||||
void RUA_QFile_Init (struct progs_s *pr, int secure);
|
void RUA_QFile_Init (struct progs_s *pr, int secure);
|
||||||
void RUA_QFS_Init (struct progs_s *pr, int secure);
|
void RUA_QFS_Init (struct progs_s *pr, int secure);
|
||||||
|
|
||||||
void RUA_Sprintf (struct progs_s *pr, struct dstring_s *dstr);
|
// the variable args are assumed to come immediately after fmt_arg
|
||||||
|
void RUA_Sprintf (struct progs_s *pr, struct dstring_s *dstr, const char *func,
|
||||||
|
int fmt_arg);
|
||||||
|
|
||||||
int QFile_AllocHandle (struct progs_s *pr, QFile *file);
|
int QFile_AllocHandle (struct progs_s *pr, QFile *file);
|
||||||
QFile *QFile_GetFile (struct progs_s *pr, int handle);
|
QFile *QFile_GetFile (struct progs_s *pr, int handle);
|
||||||
|
|
|
@ -61,14 +61,14 @@ bi_strlen (progs_t *pr)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
RUA_Sprintf (progs_t *pr, dstring_t *dstr)
|
RUA_Sprintf (progs_t *pr, dstring_t *dstr, const char *func, int fmt_arg)
|
||||||
{
|
{
|
||||||
const char *fmt = P_GSTRING (pr, 0);
|
const char *fmt = P_GSTRING (pr, fmt_arg);
|
||||||
int count = pr->pr_argc - 1;
|
int count = pr->pr_argc - (fmt_arg + 1);
|
||||||
pr_type_t **args = pr->pr_params + 1;
|
pr_type_t **args = pr->pr_params + (fmt_arg + 1);
|
||||||
|
|
||||||
if (pr->progs->version == PROG_VERSION) {
|
if (pr->progs->version == PROG_VERSION) {
|
||||||
__auto_type va_list = &P_PACKED (pr, pr_va_list_t, 1);
|
__auto_type va_list = &P_PACKED (pr, pr_va_list_t, (fmt_arg + 1));
|
||||||
count = va_list->count;
|
count = va_list->count;
|
||||||
if (count) {
|
if (count) {
|
||||||
args = alloca (count * sizeof (pr_type_t *));
|
args = alloca (count * sizeof (pr_type_t *));
|
||||||
|
@ -80,7 +80,7 @@ RUA_Sprintf (progs_t *pr, dstring_t *dstr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PR_Sprintf (pr, dstr, "bi_sprintf", fmt, count, args);
|
PR_Sprintf (pr, dstr, func, fmt, count, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -89,7 +89,7 @@ bi_sprintf (progs_t *pr)
|
||||||
dstring_t *dstr;
|
dstring_t *dstr;
|
||||||
|
|
||||||
dstr = dstring_newstr ();
|
dstr = dstring_newstr ();
|
||||||
RUA_Sprintf (pr, dstr);
|
RUA_Sprintf (pr, dstr, "sprintf", 0);
|
||||||
RETURN_STRING (pr, dstr->str);
|
RETURN_STRING (pr, dstr->str);
|
||||||
dstring_delete (dstr);
|
dstring_delete (dstr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,7 +150,7 @@ bi_printf (progs_t *pr)
|
||||||
{
|
{
|
||||||
dstring_t *dstr = dstring_new ();
|
dstring_t *dstr = dstring_new ();
|
||||||
|
|
||||||
RUA_Sprintf (pr, dstr);
|
RUA_Sprintf (pr, dstr, "printf", 0);
|
||||||
if (dstr->str) {
|
if (dstr->str) {
|
||||||
Sys_Printf ("%s", dstr->str);
|
Sys_Printf ("%s", dstr->str);
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ bi_printf (progs_t *pr)
|
||||||
dstring_clear (dstr);
|
dstring_clear (dstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
RUA_Sprintf (pr, dstr);
|
RUA_Sprintf (pr, dstr, "printf", 0);
|
||||||
|
|
||||||
if (dstr->str) {
|
if (dstr->str) {
|
||||||
fputs (dstr->str, stdout);
|
fputs (dstr->str, stdout);
|
||||||
|
|
Loading…
Reference in a new issue