if (listing > 0)
ship_ln(buf);
- sprintf(buf1, "%s %d: Error: %s\n", curfname, curlineno, buf);
+ switch (cur_inobj->in_type)
+ {
+ case SRC_IFILE:
+ sprintf(buf1, "%s %d: Error: %s\n", curfname, curlineno, buf);
+ break;
+ case SRC_IMACRO:
+ sprintf(buf1, "%s %d: Error: %s\n", curfname, cur_inobj->inobj.imacro->im_macro->lineList->lineno, buf);
+ break;
+ case SRC_IREPT:
+ sprintf(buf1, "%s %d: Error: %s\n", curfname, cur_inobj->inobj.irept->lineno, buf);
+ break;
+ }
if (err_flag)
unused = write(err_fd, buf1, (LONG)strlen(buf1));
curmac->lineList = malloc(sizeof(LLIST));
curmac->lineList->next = NULL;
curmac->lineList->line = strdup(ln);
+ curmac->lineList->lineno = curlineno;
curmac->last = curmac->lineList;
}
else
curmac->last->next = malloc(sizeof(LLIST));
curmac->last->next->next = NULL;
curmac->last->next->line = strdup(ln);
+ curmac->lineList->lineno = curlineno;
curmac->last = curmac->last->next;
}
firstrpt = malloc(sizeof(LLIST));
firstrpt->next = NULL;
firstrpt->line = strdup(line);
+ firstrpt->lineno = curlineno;
nextrpt = firstrpt;
}
else
nextrpt->next = malloc(sizeof(LLIST));
nextrpt->next->next = NULL;
nextrpt->next->line = strdup(line);
+ nextrpt->next->lineno = curlineno;
nextrpt = nextrpt->next;
}
#endif
{
LLIST * next;
uint8_t * line;
+ int lineno;
};
// Symbols
// strp = irept->ir_nextln;
}
+ // Mark the current macro line in the irept object
+ // This is probably overkill - a global variable
+ // would suffice here (it only gets used during
+ // error reporting anyway)
+ irept->lineno = irept->ir_nextln->lineno;
// strcpy(irbuf, (char *)(irept->ir_nextln + 1));
strcpy(irbuf, irept->ir_nextln->line);
LLIST * ir_firstln; // Pointer to first line
LLIST * ir_nextln; // Pointer to next line
uint32_t ir_count; // Repeat count (decrements)
+ uint32_t lineno; // Repeat line number (Convert this to global instead of putting it here?)
};
// Exported variables