mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-17 01:11:45 +00:00
Fix qfo strings dumping
This commit is contained in:
parent
b0157e5095
commit
6009d1d023
3 changed files with 34 additions and 11 deletions
|
@ -59,6 +59,7 @@ void qfo_fields (struct qfo_s *qfo);
|
|||
void qfo_functions (struct qfo_s *qfo);
|
||||
void qfo_lines (struct qfo_s *qfo);
|
||||
void qfo_relocs (struct qfo_s *qfo);
|
||||
void qfo_strings (struct qfo_s *qfo);
|
||||
void qfo_types (struct qfo_s *qfo);
|
||||
|
||||
#endif//__qfprogs_h
|
||||
|
|
|
@ -36,21 +36,22 @@
|
|||
#include "QF/progs.h"
|
||||
#include "QF/sys.h"
|
||||
|
||||
#include "obj_file.h"
|
||||
#include "qfprogs.h"
|
||||
|
||||
void
|
||||
dump_strings (progs_t *pr)
|
||||
static void
|
||||
dump_string_block (const char *strblock, unsigned size)
|
||||
{
|
||||
int i = 0;
|
||||
char *s = pr->pr_strings;
|
||||
const char *s = strblock;
|
||||
|
||||
printf ("%d ", 0);
|
||||
while (i++ < pr->progs->numstrings) {
|
||||
switch (*s) {
|
||||
while (s - strblock < size) {
|
||||
char c = *s++;
|
||||
switch (c) {
|
||||
case 0:
|
||||
fputs ("\n", stdout);
|
||||
if (i < pr->progs->numstrings)
|
||||
printf ("%d ", i);
|
||||
if (s - strblock < size)
|
||||
printf ("%ld ", s - strblock);
|
||||
break;
|
||||
case 9:
|
||||
fputs ("\\t", stdout);
|
||||
|
@ -62,9 +63,30 @@ dump_strings (progs_t *pr)
|
|||
fputs ("\\r", stdout);
|
||||
break;
|
||||
default:
|
||||
fputc (sys_char_map[(unsigned char)*s], stdout);
|
||||
fputc (sys_char_map[(unsigned char)c], stdout);
|
||||
break;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dump_strings (progs_t *pr)
|
||||
{
|
||||
dump_string_block (pr->pr_strings, pr->progs->numstrings);
|
||||
}
|
||||
|
||||
void
|
||||
qfo_strings (qfo_t *qfo)
|
||||
{
|
||||
qfo_mspace_t *space = &qfo->spaces[qfo_strings_space];
|
||||
|
||||
if (qfo_strings_space >= qfo->num_spaces) {
|
||||
printf ("no strings space\n");
|
||||
return;
|
||||
}
|
||||
if (!space->data_size) {
|
||||
printf ("no strings\n");
|
||||
return;
|
||||
}
|
||||
dump_string_block (space->d.strings, space->data_size);
|
||||
}
|
||||
|
|
|
@ -306,7 +306,7 @@ typedef struct {
|
|||
operation_t operations[] = {
|
||||
{disassemble_progs, 0}, // disassemble
|
||||
{dump_globals, qfo_globals}, // globals
|
||||
{dump_strings, 0}, // strings
|
||||
{dump_strings, qfo_strings}, // strings
|
||||
{dump_fields, qfo_fields}, // fields
|
||||
{dump_functions, qfo_functions}, // functions
|
||||
{dump_lines, qfo_lines}, // lines
|
||||
|
|
Loading…
Reference in a new issue