static void trace_header (int id) { trace_format ("m4trace:"); if (current_line) { if (debug_level & DEBUG_TRACE_FILE) trace_format ("%s:", current_file); if (debug_level & DEBUG_TRACE_LINE) trace_format ("%d:", current_line); } trace_format (" -%d- ", expansion_level); if (debug_level & DEBUG_TRACE_CALLID) trace_format ("id %d: ", id); }
void trace_prepre (const char *name, int id) { trace_header (id); trace_format ("%s ...", name); trace_flush (); }
void trace_pre (const char *name, int id, int argc, token_data **argv) { int i; const builtin *bp; trace_header (id); trace_format ("%s", name); if (argc > 1 && (debug_level & DEBUG_TRACE_ARGS)) { trace_format ("("); for (i = 1; i < argc; i++) { if (i != 1) trace_format (", "); switch (TOKEN_DATA_TYPE (argv[i])) { case TOKEN_TEXT: trace_format ("%l%S%r", TOKEN_DATA_TEXT (argv[i])); break; case TOKEN_FUNC: bp = find_builtin_by_addr (TOKEN_DATA_FUNC (argv[i])); if (bp == NULL) { M4ERROR ((warning_status, 0, "\ INTERNAL ERROR: builtin not found in builtin table! (trace_pre ())")); abort (); } trace_format ("<%s>", bp->name); break; case TOKEN_VOID: default: M4ERROR ((warning_status, 0, "INTERNAL ERROR: bad token data type (trace_pre ())")); abort (); } }