]> Savannah Git Hosting - m4.git/commitdiff

Savannah Git Hosting - m4.git/commitdiff

git git@sv / m4.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f6e28cf)
Add macro name to debugfile messages.
2007年11月23日 23:14:17 +0000 (16:14 -0700)
2007年11月23日 23:14:17 +0000 (16:14 -0700)
* m4/m4module.h (m4_debug_set_output): Add parameter.
* m4/debug.c (m4_debug_set_output, set_debug_file): Pass macro
name through.
* modules/gnu.c (debugfile): Adjust caller.
* modules/m4.c (m4exit): Likewise.
* src/main.c (main): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>

diff --git a/ChangeLog b/ChangeLog
index 0ac9fbd716ebf4645c1c14052a5a6bc7e4ffec8f..0b02b246dc1f3e0a82cfb8f7dbed736611fbf1fe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2007年11月23日 Eric Blake <ebb9@byu.net>
+ Add macro name to debugfile messages.
+ * m4/m4module.h (m4_debug_set_output): Add parameter.
+ * m4/debug.c (m4_debug_set_output, set_debug_file): Pass macro
+ name through.
+ * modules/gnu.c (debugfile): Adjust caller.
+ * modules/m4.c (m4exit): Likewise.
+ * src/main.c (main): Likewise.
+
Factor out handling of macro name in error messages.
* m4/m4module.h (m4_error, m4_error_at_line, m4_warn)
(m4_warn_at_line): Add new parameter.
diff --git a/m4/debug.c b/m4/debug.c
index dd4a941958905703df4edd237437b7467e3a1a5a..29272d01a3fb0cdea3f96cb08b694b66e2547380 100644 (file)
--- a/m4/debug.c
+++ b/m4/debug.c
@@ -26,7 +26,7 @@
#include "m4private.h"
#include "close-stream.h"
-static void set_debug_file (m4 *, FILE *);
+static void set_debug_file (m4 *, const char *, FILE *);
\f
@@ -131,9 +131,9 @@ m4_debug_decode (m4 *context, int previous, const char *opts)
/* Change the debug output stream to FP. If the underlying file is the
same as stdout, use stdout instead so that debug messages appear in the
- correct relative position. */
+ correct relative position. Report errors on behalf of MACRO. */
static void
-set_debug_file (m4 *context, FILE *fp)
+set_debug_file (m4 *context, const char *macro, FILE *fp)
{
FILE *debug_file;
struct stat stdout_stat, debug_stat;
@@ -143,8 +143,7 @@ set_debug_file (m4 *context, FILE *fp)
debug_file = m4_get_debug_file (context);
if (debug_file != NULL && debug_file != stderr && debug_file != stdout
&& close_stream (debug_file) != 0)
- /* FIXME - use macro name. */
- m4_error (context, 0, errno, NULL, _("error writing to debug stream"));
+ m4_error (context, 0, errno, macro, _("error writing to debug stream"));
debug_file = fp;
m4_set_debug_file (context, fp);
@@ -163,28 +162,28 @@ set_debug_file (m4 *context, FILE *fp)
&& stdout_stat.st_ino != 0)
{
if (debug_file != stderr && close_stream (debug_file) != 0)
- /* FIXME - use macro name. */
- m4_error (context, 0, errno, NULL,
+ m4_error (context, 0, errno, macro,
_("error writing to debug stream"));
m4_set_debug_file (context, stdout);
}
}
}
-/* 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 MACRO. */
bool
-m4_debug_set_output (m4 *context, const char *name)
+m4_debug_set_output (m4 *context, const char *macro, const char *name)
{
FILE *fp;
assert (context);
if (name == NULL)
- set_debug_file (context, stderr);
+ set_debug_file (context, macro, stderr);
else if (*name == '0円')
- set_debug_file (context, NULL);
+ set_debug_file (context, macro, NULL);
else
{
fp = fopen (name, "a");
@@ -192,10 +191,9 @@ m4_debug_set_output (m4 *context, const char *name)
return false;
if (set_cloexec_flag (fileno (fp), true) != 0)
- /* FIXME - use macro name. */
- m4_warn (context, errno, NULL,
+ m4_warn (context, errno, macro,
_("cannot protect debug file across forks"));
- set_debug_file (context, fp);
+ set_debug_file (context, macro, fp);
}
return true;
}
diff --git a/m4/m4module.h b/m4/m4module.h
index 6bfa18a31efc2ab2e7eb270be4c56c1b80135a6e..8b59e15867be39907bad00ef755d01a18d5b6657 100644 (file)
--- a/m4/m4module.h
+++ b/m4/m4module.h
@@ -332,7 +332,7 @@ enum {
#define m4_is_debug_bit(C,B) ((m4_get_debug_level_opt (C) & (B)) != 0)
extern int m4_debug_decode (m4 *, int, const char *);
-extern bool m4_debug_set_output (m4 *, const char *);
+extern bool m4_debug_set_output (m4 *, const char *, const char *);
extern void m4_debug_message_prefix (m4 *);
extern void m4_debug_message (m4 *, int, const char *, ...)
M4_GNUC_PRINTF (3, 4);
diff --git a/modules/gnu.c b/modules/gnu.c
index 1e02128a0a18997f25f0098f009a9a35adccc318..1aba84b114271836f34edc9cc736c9897980fbd3 100644 (file)
--- a/modules/gnu.c
+++ b/modules/gnu.c
@@ -538,12 +538,14 @@ M4BUILTIN_HANDLER (changesyntax)
**/
M4BUILTIN_HANDLER (debugfile)
{
+ const char *me = M4ARG (0);
+
if (argc == 1)
- m4_debug_set_output (context, NULL);
+ m4_debug_set_output (context, me, NULL);
else if (m4_get_safer_opt (context) && *M4ARG (1))
- m4_error (context, 0, 0, M4ARG (0), _("disabled by --safer"));
- else if (!m4_debug_set_output (context, M4ARG (1)))
- m4_error (context, 0, errno, M4ARG (0), _("cannot set debug file `%s'"),
+ m4_error (context, 0, 0, me, _("disabled by --safer"));
+ else if (!m4_debug_set_output (context, me, M4ARG (1)))
+ m4_error (context, 0, errno, me, _("cannot set debug file `%s'"),
M4ARG (1));
}
diff --git a/modules/m4.c b/modules/m4.c
index 1ba0fcb8af1e6ac2863bbc061d66d2ed368c2def..ec2372a787ab842ef8d4d0b66c23f281e6cf7b88 100644 (file)
--- a/modules/m4.c
+++ b/modules/m4.c
@@ -821,6 +821,7 @@ M4BUILTIN_HANDLER (errprint)
arguments are present. */
M4BUILTIN_HANDLER (m4exit)
{
+ const char *me = M4ARG (0);
int exit_code = EXIT_SUCCESS;
/* Warn on bad arguments, but still exit. */
@@ -828,8 +829,7 @@ M4BUILTIN_HANDLER (m4exit)
exit_code = EXIT_FAILURE;
if (exit_code < 0 || exit_code > 255)
{
- m4_warn (context, 0, M4ARG (0), _("exit status out of range: `%d'"),
- exit_code);
+ m4_warn (context, 0, me, _("exit status out of range: `%d'"), exit_code);
exit_code = EXIT_FAILURE;
}
@@ -842,7 +842,7 @@ M4BUILTIN_HANDLER (m4exit)
/* Change debug stream back to stderr, to force flushing debug
stream and detect any errors. */
- m4_debug_set_output (context, NULL);
+ m4_debug_set_output (context, me, NULL);
m4_sysval_flush (context, true);
/* Check for saved error. */
diff --git a/src/main.c b/src/main.c
index 96a9cc572d42b7b0d7924c3287d57f3a5568acff..a54a533256f61bfda7ffd96c430aee302e7a1c1f 100644 (file)
--- a/src/main.c
+++ b/src/main.c
@@ -613,7 +613,7 @@ main (int argc, char *const *argv, char *const *envp)
/* Do the basic initializations. */
- if (debugfile && !m4_debug_set_output (context, debugfile))
+ if (debugfile && !m4_debug_set_output (context, NULL, debugfile))
m4_error (context, 0, errno, NULL, _("cannot set debug file `%s'"),
debugfile);
m4_input_init (context);
@@ -774,7 +774,7 @@ main (int argc, char *const *argv, char *const *envp)
/* Change debug stream back to stderr, to force flushing the debug
stream and detect any errors it might have encountered. The
three standard streams are closed by close_stdin. */
- m4_debug_set_output (context, NULL);
+ m4_debug_set_output (context, NULL, NULL);
exit_status = m4_get_exit_status (context);
m4_delete (context);
GNU M4 source repository
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /