sim_debug: Fixed to produce output when the format string is a bare newline character.

Fixed bitfield output to properly present the prefix when appropriate.

This closes issue #62
This commit is contained in:
Mark Pizzolato 2013-08-21 15:00:01 -07:00
parent 1a48d85d73
commit 18461f510b

7
scp.c
View file

@ -6976,6 +6976,7 @@ void sim_debug_bits(uint32 dbits, DEVICE* dptr, BITFIELD* bitdefs,
uint32 before, uint32 after, int terminate)
{
if (sim_deb && (dptr->dctrl & dbits)) {
if (!debug_unterm)
fprintf(sim_deb, "%s", sim_debug_prefix(dbits, dptr)); /* print prefix if required */
fprint_fields (sim_deb, (t_value)before, (t_value)after, bitdefs); /* print xlation, transition */
if (terminate)
@ -7051,11 +7052,13 @@ if (sim_deb && (dptr->dctrl & dbits)) {
for (i = j = 0; i < len; ++i) {
if ('\n' == buf[i]) {
if (i > j) {
if (i >= j) {
if ((i != j) || (i == 0)) {
if (debug_unterm)
fprintf (sim_deb, "%.*s\r\n", i-j, &buf[j]);
else /* print prefix when required */
fprintf (sim_deb, "%s%.*s\r\n", debug_prefix, i-j, &buf[j]);
}
debug_unterm = 0;
}
j = i + 1;
@ -7065,7 +7068,7 @@ if (sim_deb && (dptr->dctrl & dbits)) {
if (debug_unterm)
fprintf (sim_deb, "%.*s", i-j, &buf[j]);
else /* print prefix when required */
fprintf (sim_deb, "DBG(%.0f)%s> %s %s: %.*s", debug_prefix, i-j, &buf[j]);
fprintf (sim_deb, "%s%.*s", debug_prefix, i-j, &buf[j]);
}
/* Set unterminated flag for next time */