summaryrefslogtreecommitdiff
path: root/src/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug.c')
-rw-r--r--src/debug.c36
1 files changed, 16 insertions, 20 deletions
diff --git a/src/debug.c b/src/debug.c
index 4173f9b4..c22a4820 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -30,9 +30,7 @@ FILE *debug = NULL;
/* Obstack for trace messages. */
static struct obstack trace;
-extern int expansion_level;
-
-static void debug_set_file (FILE *);
+static void debug_set_file (const char *, FILE *);
/*----------------------------------.
| Initialise the debugging module. |
@@ -41,7 +39,7 @@ static void debug_set_file (FILE *);
void
debug_init (void)
{
- debug_set_file (stderr);
+ debug_set_file (NULL, stderr);
obstack_init (&trace);
}
@@ -128,14 +126,13 @@ debug_decode (const char *opts)
`------------------------------------------------------------------------*/
static void
-debug_set_file (FILE *fp)
+debug_set_file (const char *caller, FILE *fp)
{
struct stat stdout_stat, debug_stat;
if (debug != NULL && debug != stderr && debug != stdout
&& close_stream (debug) != 0)
- /* FIXME - report on behalf of macro caller. */
- m4_error (0, errno, NULL, _("error writing to debug stream"));
+ m4_error (0, errno, caller, _("error writing to debug stream"));
debug = fp;
if (debug != NULL && debug != stdout)
@@ -152,8 +149,7 @@ debug_set_file (FILE *fp)
&& stdout_stat.st_ino != 0)
{
if (debug != stderr && close_stream (debug) != 0)
- /* FIXME - report on behalf of macro caller. */
- m4_error (0, errno, NULL, _("error writing to debug stream"));
+ m4_error (0, errno, caller, _("error writing to debug stream"));
debug = stdout;
}
}
@@ -190,21 +186,22 @@ debug_flush_files (void)
}
}
-/*-------------------------------------------------------------------------.
-| Change the debug output to file NAME. If NAME is NULL, debug output is |
-| reverted to stderr, and if empty debug output is discarded. Return true |
-| iff the output stream was changed. |
-`-------------------------------------------------------------------------*/
+/*-------------------------------------------------------------------.
+| Change the debug output to file NAME. If NAME is NULL, debug |
+| output is reverted to stderr, and if empty, debug output is |
+| discarded. Return true iff the output stream was changed. Report |
+| errors on behalf of CALLER. |
+`-------------------------------------------------------------------*/
bool
-debug_set_output (const char *name)
+debug_set_output (const char *caller, const char *name)
{
FILE *fp;
if (name == NULL)
- debug_set_file (stderr);
+ debug_set_file (caller, stderr);
else if (*name == '\0')
- debug_set_file (NULL);
+ debug_set_file (caller, NULL);
else
{
fp = fopen (name, "a");
@@ -212,9 +209,8 @@ debug_set_output (const char *name)
return false;
if (set_cloexec_flag (fileno (fp), true) != 0)
- /* FIXME - report on behalf of macro caller. */
- m4_warn (errno, NULL, _("cannot protect debug file across forks"));
- debug_set_file (fp);
+ m4_warn (errno, caller, _("cannot protect debug file across forks"));
+ debug_set_file (caller, fp);
}
return true;
}