X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=dump.c;h=a52cafddf0d414cb06ddd8464c9795949b91e2d9;hb=0ed91de68e9149be640b996c21c8121296ded298;hp=be5139c6045a5eb2620242d9b2ca4212243e724d;hpb=68a20800ccdf1d5263e1a500f1acdaa982789419;p=pspp diff --git a/dump.c b/dump.c index be5139c604..a52cafddf0 100644 --- a/dump.c +++ b/dump.c @@ -265,22 +265,25 @@ hex_dump(int ofs, int n) } static void -dump_style(void) +dump_style(FILE *stream) { match_byte(1); match_byte(0); match_byte(0); match_byte(0); match_byte_assert(1); - get_string(); /* foreground */ - get_string(); /* background */ - get_string(); /* font */ + char *fg = get_string(); /* foreground */ + char *bg = get_string(); /* background */ + char *font = get_string(); /* font */ + int size = data[pos]; if (!match_byte(14)) match_byte_assert(12); /* size? */ + fprintf(stream, " fgcolor=\"%s\" bgcolor=\"%s\" font=\"%s\" size=\"%d\"", + fg, bg, font, size); } static char * -dump_nested_string(void) +dump_nested_string(FILE *stream) { char *s = NULL; @@ -288,8 +291,10 @@ dump_nested_string(void) match_byte_assert (0); int outer_end = get_end(); s = dump_counted_string(); + if (s) + fprintf(stream, " \"%s\"", s); if (match_byte(0x31)) - dump_style(); + dump_style(stream); else match_byte_assert(0x58); match_byte_assert(0x58); @@ -303,20 +308,23 @@ dump_nested_string(void) } static void -dump_optional_value(FILE *stream) +dump_value_modifier(FILE *stream) { if (match_byte (0x31)) { if (match_u32 (0)) { + fprintf(stream, "\n"); return; } @@ -341,10 +350,12 @@ dump_optional_value(FILE *stream) /* This counted-string appears to be a template string, e.g. "Design\: [:^1:]1 Within Subjects Design\: [:^1:]2". */ - dump_counted_string(); + char *template = dump_counted_string(); + if (template) + fprintf(stream, " template=\"%s\"", template); if (match_byte(0x31)) - dump_style(); + dump_style(stream); else match_byte_assert(0x58); if (match_byte(0x31)) @@ -372,32 +383,36 @@ dump_optional_value(FILE *stream) fprintf(stderr, "outer end discrepancy\n"); exit(1); } + fprintf(stream, "/>\n"); } else if (match_u32 (1)) { - fprintf(stream, "(footnote %d) ", get_u32()); - dump_nested_string(); + fprintf(stream, "\n"); } else if (match_u32 (2)) { - fprintf(stream, "(special 2)"); + fprintf(stream, "\n"); } else { + fprintf(stream, "\n"); } } else @@ -468,7 +483,7 @@ dump_value(FILE *stream, int level) unsigned int format; double value; - dump_optional_value(stream); + dump_value_modifier(stream); format = get_u32 (); value = get_double (); fprintf (stream, "\n", @@ -480,7 +495,7 @@ dump_value(FILE *stream, int level) char *var, *vallab; double value; - dump_optional_value (stream); + dump_value_modifier (stream); format = get_u32 (); value = get_double (); var = get_string (); @@ -490,7 +505,7 @@ dump_value(FILE *stream, int level) if (var[0]) fprintf (stream, " variable=\"%s\"", var); if (vallab[0]) - fprintf (stream, " label=\"%s\"/>\n", vallab); + fprintf (stream, " label=\"%s\"", vallab); fprintf (stream, "/>\n"); if (!match_byte (1) && !match_byte(2)) match_byte_assert (3); @@ -498,7 +513,7 @@ dump_value(FILE *stream, int level) else if (match_byte (3)) { char *text = get_string(); - dump_optional_value(stream); + dump_value_modifier(stream); char *identifier = get_string(); char *text_eng = get_string(); fprintf (stream, "