This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU M4 source repository".
http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=ab8d0f0e20729f31f2295f4d12afda955990297e The branch, branch-1_4 has been updated via ab8d0f0e20729f31f2295f4d12afda955990297e (commit) from 75160ba9c925c305a41b9002533e0c8013fe15ed (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ab8d0f0e20729f31f2295f4d12afda955990297e Author: Eric Blake <[EMAIL PROTECTED]> Date: Mon Oct 22 10:27:51 2007 -0600 Never let printf failures go undetected. * m4/gnulib-cache.m4: Augment with 'gnulib-tool --import xprintf'. * src/m4.h: Include xprintf.h. * src/format.c (format): Warn on format failures. * src/builtin.c (ntoa): Export. (m4_errprint): Adjust all *printf callers. * src/debug.c (debug_message_prefix, trace_format): Likewise. * src/freeze.c (produce_frozen_state): Likewise. * src/input.c [DEBUG_INPUT]: Likewise. * src/m4.c (usage): Likewise. * src/m4.h (DEBUG_PRINT1, DEBUG_PRINT3, DEBUG_MESSAGE) (DEBUG_MESSAGE1, DEBUG_MESSAGE2): Likewise. * src/output.c (m4_tmpname, shipout_text, freeze_diversione): Likewise. * src/path.c [DEBUG_INCL]: Likewise. * src/stackovf.c (process_sigsegv) [DEBUG_STKOVF]: Likewise. * src/symtab.c [DEBUG_SYM]: Likewise. Signed-off-by: Eric Blake <[EMAIL PROTECTED]> ----------------------------------------------------------------------- Summary of changes: ChangeLog | 21 +++++++++++++++++++++ m4/gnulib-cache.m4 | 4 ++-- src/builtin.c | 4 ++-- src/debug.c | 10 ++++------ src/format.c | 10 +++++++--- src/freeze.c | 20 ++++++++++---------- src/input.c | 26 +++++++++++++------------- src/m4.c | 8 ++++---- src/m4.h | 16 +++++++++------- src/output.c | 26 ++++++++++++++++---------- src/path.c | 8 ++++---- src/stackovf.c | 5 +++-- src/symtab.c | 28 ++++++++++++++-------------- 13 files changed, 109 insertions(+), 77 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e4a12b..33278ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2007-10-22 Eric Blake <[EMAIL PROTECTED]> + + Never let printf failures go undetected. + * m4/gnulib-cache.m4: Augment with 'gnulib-tool --import + xprintf'. + * src/m4.h: Include xprintf.h. + * src/format.c (format): Warn on format failures. + * src/builtin.c (ntoa): Export. + (m4_errprint): Adjust all *printf callers. + * src/debug.c (debug_message_prefix, trace_format): Likewise. + * src/freeze.c (produce_frozen_state): Likewise. + * src/input.c [DEBUG_INPUT]: Likewise. + * src/m4.c (usage): Likewise. + * src/m4.h (DEBUG_PRINT1, DEBUG_PRINT3, DEBUG_MESSAGE) + (DEBUG_MESSAGE1, DEBUG_MESSAGE2): Likewise. + * src/output.c (m4_tmpname, shipout_text, freeze_diversione): + Likewise. + * src/path.c [DEBUG_INCL]: Likewise. + * src/stackovf.c (process_sigsegv) [DEBUG_STKOVF]: Likewise. + * src/symtab.c [DEBUG_SYM]: Likewise. + 2007-10-17 Eric Blake <[EMAIL PROTECTED]> Fix 'm4 -F file -t undefined'. diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4 index a4de73d..8e2002a 100644 --- a/m4/gnulib-cache.m4 +++ b/m4/gnulib-cache.m4 @@ -15,11 +15,11 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=. --local-dir=local --lib=libm4 --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=. --with-tests --no-libtool --macro-prefix=M4 assert avltree-oset binary-io clean-temp cloexec close-stream closein config-h error fdl fflush fopen-safer free fseeko gendocs getopt gnupload gpl-3.0 mkstemp obstack regex stdbool stdint stdlib-safer strtol unlocked-io vasprintf-posix verror version-etc version-etc-fsf xalloc xvasprintf +# gnulib-tool --import --dir=. --local-dir=local --lib=libm4 --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=. --with-tests --no-libtool --macro-prefix=M4 assert avltree-oset binary-io clean-temp cloexec close-stream closein config-h error fdl fflush fopen-safer free fseeko gendocs getopt gnupload gpl-3.0 mkstemp obstack regex stdbool stdint stdlib-safer strtol unlocked-io vasprintf-posix verror version-etc version-etc-fsf xalloc xprintf xvasprintf # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([local]) -gl_MODULES([assert avltree-oset binary-io clean-temp cloexec close-stream closein config-h error fdl fflush fopen-safer free fseeko gendocs getopt gnupload gpl-3.0 mkstemp obstack regex stdbool stdint stdlib-safer strtol unlocked-io vasprintf-posix verror version-etc version-etc-fsf xalloc xvasprintf]) +gl_MODULES([assert avltree-oset binary-io clean-temp cloexec close-stream closein config-h error fdl fflush fopen-safer free fseeko gendocs getopt gnupload gpl-3.0 mkstemp obstack regex stdbool stdint stdlib-safer strtol unlocked-io vasprintf-posix verror version-etc version-etc-fsf xalloc xprintf xvasprintf]) gl_AVOID([]) gl_SOURCE_BASE([lib]) gl_M4_BASE([m4]) diff --git a/src/builtin.c b/src/builtin.c index 75859bd..5983ac2 100644 --- a/src/builtin.c +++ b/src/builtin.c @@ -553,7 +553,7 @@ numeric_arg (token_data *macro, const char *arg, int *valuep) /* Digits for number to ascii conversions. */ static char const digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; -static const char * +const char * ntoa (int32_t value, int radix) { bool negative; @@ -1541,7 +1541,7 @@ m4_errprint (struct obstack *obs, int argc, token_data **argv) dump_args (obs, argc, argv, " ", false); obstack_1grow (obs, '\0'); debug_flush_files (); - fprintf (stderr, "%s", (char *) obstack_finish (obs)); + xfprintf (stderr, "%s", (char *) obstack_finish (obs)); fflush (stderr); } diff --git a/src/debug.c b/src/debug.c index 2c4860f..c94a746 100644 --- a/src/debug.c +++ b/src/debug.c @@ -231,13 +231,13 @@ debug_set_output (const char *name) void debug_message_prefix (void) { - fprintf (debug, "m4debug:"); + xfprintf (debug, "m4debug:"); if (current_line) { if (debug_level & DEBUG_TRACE_FILE) - fprintf (debug, "%s:", current_file); + xfprintf (debug, "%s:", current_file); if (debug_level & DEBUG_TRACE_LINE) - fprintf (debug, "%d:", current_line); + xfprintf (debug, "%d:", current_line); } putc (' ', debug); } @@ -261,7 +261,6 @@ trace_format (const char *fmt, ...) char ch; int d; - char nbuf[32]; const char *s; int slen; int maxlen; @@ -297,8 +296,7 @@ trace_format (const char *fmt, ...) case 'd': d = va_arg (args, int); - sprintf (nbuf, "%d", d); - s = nbuf; + s = ntoa (d, 10); break; default: diff --git a/src/format.c b/src/format.c index afb3876..0cc283a 100644 --- a/src/format.c +++ b/src/format.c @@ -301,10 +301,14 @@ format (struct obstack *obs, int argc, token_data **argv) abort(); } - /* NULL was returned on failure, such as invalid format string. For - now, just silently ignore that bad specifier. */ + /* NULL was returned on failure, such as invalid format string. + Issue a warning, then proceed. */ if (str == NULL) - continue; + { + M4ERROR ((warning_status, 0, + "Warning: unable to format output for `%s'", f)); + continue; + } obstack_grow (obs, str, strlen (str)); free (str); diff --git a/src/freeze.c b/src/freeze.c index 89a4c35..18280f7 100644 --- a/src/freeze.c +++ b/src/freeze.c @@ -64,15 +64,15 @@ produce_frozen_state (const char *name) /* Write a recognizable header. */ - fprintf (file, "# This is a frozen state file generated by %s\n", + xfprintf (file, "# This is a frozen state file generated by %s\n", PACKAGE_STRING); - fprintf (file, "V1\n"); + xfprintf (file, "V1\n"); /* Dump quote delimiters. */ if (strcmp (lquote.string, DEF_LQUOTE) || strcmp (rquote.string, DEF_RQUOTE)) { - fprintf (file, "Q%d,%d\n", (int) lquote.length, (int) rquote.length); + xfprintf (file, "Q%d,%d\n", (int) lquote.length, (int) rquote.length); fputs (lquote.string, file); fputs (rquote.string, file); fputc ('\n', file); @@ -82,7 +82,7 @@ produce_frozen_state (const char *name) if (strcmp (bcomm.string, DEF_BCOMM) || strcmp (ecomm.string, DEF_ECOMM)) { - fprintf (file, "C%d,%d\n", (int) bcomm.length, (int) ecomm.length); + xfprintf (file, "C%d,%d\n", (int) bcomm.length, (int) ecomm.length); fputs (bcomm.string, file); fputs (ecomm.string, file); fputc ('\n', file); @@ -103,9 +103,9 @@ produce_frozen_state (const char *name) switch (SYMBOL_TYPE (sym)) { case TOKEN_TEXT: - fprintf (file, "T%d,%d\n", - (int) strlen (SYMBOL_NAME (sym)), - (int) strlen (SYMBOL_TEXT (sym))); + xfprintf (file, "T%d,%d\n", + (int) strlen (SYMBOL_NAME (sym)), + (int) strlen (SYMBOL_TEXT (sym))); fputs (SYMBOL_NAME (sym), file); fputs (SYMBOL_TEXT (sym), file); fputc ('\n', file); @@ -119,9 +119,9 @@ produce_frozen_state (const char *name) INTERNAL ERROR: builtin not found in builtin table!")); abort (); } - fprintf (file, "F%d,%d\n", - (int) strlen (SYMBOL_NAME (sym)), - (int) strlen (bp->name)); + xfprintf (file, "F%d,%d\n", + (int) strlen (SYMBOL_NAME (sym)), + (int) strlen (bp->name)); fputs (SYMBOL_NAME (sym), file); fputs (bp->name, file); fputc ('\n', file); diff --git a/src/input.c b/src/input.c index 2da8876..7f6f87b 100644 --- a/src/input.c +++ b/src/input.c @@ -845,7 +845,7 @@ next_token (token_data *td, int *line) if (ch == CHAR_EOF) { #ifdef DEBUG_INPUT - fprintf (stderr, "next_token -> EOF\n"); + xfprintf (stderr, "next_token -> EOF\n"); #endif next_char (); return TOKEN_EOF; @@ -855,8 +855,8 @@ next_token (token_data *td, int *line) init_macro_token (td); next_char (); #ifdef DEBUG_INPUT - fprintf (stderr, "next_token -> MACDEF (%s)\n", - find_builtin_by_addr (TOKEN_DATA_FUNC (td))->name); + xfprintf (stderr, "next_token -> MACDEF (%s)\n", + find_builtin_by_addr (TOKEN_DATA_FUNC (td))->name); #endif return TOKEN_MACDEF; } @@ -988,8 +988,8 @@ next_token (token_data *td, int *line) TOKEN_DATA_ORIG_TEXT (td) = orig_text; #endif #ifdef DEBUG_INPUT - fprintf (stderr, "next_token -> %s (%s)\n", - token_type_string (type), TOKEN_DATA_TEXT (td)); + xfprintf (stderr, "next_token -> %s (%s)\n", + token_type_string (type), TOKEN_DATA_TEXT (td)); #endif return type; } @@ -1045,7 +1045,7 @@ peek_token (void) } #ifdef DEBUG_INPUT - fprintf (stderr, "peek_token -> %s\n", token_type_string (result)); + xfprintf (stderr, "peek_token -> %s\n", token_type_string (result)); #endif /* DEBUG_INPUT */ return result; } @@ -1082,33 +1082,33 @@ token_type_string (token_type t) static void print_token (const char *s, token_type t, token_data *td) { - fprintf (stderr, "%s: ", s); + xfprintf (stderr, "%s: ", s); switch (t) { /* TOKSW */ case TOKEN_OPEN: case TOKEN_COMMA: case TOKEN_CLOSE: case TOKEN_SIMPLE: - fprintf (stderr, "char:"); + xfprintf (stderr, "char:"); break; case TOKEN_WORD: - fprintf (stderr, "word:"); + xfprintf (stderr, "word:"); break; case TOKEN_STRING: - fprintf (stderr, "string:"); + xfprintf (stderr, "string:"); break; case TOKEN_MACDEF: - fprintf (stderr, "macro: %p\n", TOKEN_DATA_FUNC (td)); + xfprintf (stderr, "macro: %p\n", TOKEN_DATA_FUNC (td)); break; case TOKEN_EOF: - fprintf (stderr, "eof\n"); + xfprintf (stderr, "eof\n"); break; } - fprintf (stderr, "\t\"%s\"\n", TOKEN_DATA_TEXT (td)); + xfprintf (stderr, "\t\"%s\"\n", TOKEN_DATA_TEXT (td)); } static void M4_GNUC_UNUSED diff --git a/src/m4.c b/src/m4.c index daa15a8..f22788e 100644 --- a/src/m4.c +++ b/src/m4.c @@ -137,10 +137,10 @@ static void usage (int status) { if (status != EXIT_SUCCESS) - fprintf (stderr, "Try `%s --help' for more information.\n", program_name); + xfprintf (stderr, "Try `%s --help' for more information.\n", program_name); else { - printf ("Usage: %s [OPTION]... [FILE]...\n", program_name); + xprintf ("Usage: %s [OPTION]... [FILE]...\n", program_name); fputs ("\ Process macros in FILEs. If no FILE or if FILE is `-', standard input\n\ is read.\n\ @@ -154,7 +154,7 @@ Operation modes:\n\ --help display this help and exit\n\ --version output version information and exit\n\ ", stdout); - printf ("\ + xprintf ("\ -E, --fatal-warnings once: warnings become errors, twice: stop\n\ execution at first error\n\ -i, --interactive unbuffer output, ignore interrupts\n\ @@ -223,7 +223,7 @@ of directories included after any specified by `-I'.\n\ Exit status is 0 for success, 1 for failure, 63 for frozen file version\n\ mismatch, or whatever value was passed to the m4exit macro.\n\ ", stdout); - printf ("\nReport bugs to <%s>.\n", PACKAGE_BUGREPORT); + xprintf ("\nReport bugs to <%s>.\n", PACKAGE_BUGREPORT); } exit (status); } diff --git a/src/m4.h b/src/m4.h index 38f9d09..a0b54f6 100644 --- a/src/m4.h +++ b/src/m4.h @@ -45,6 +45,7 @@ #include "unistd--.h" #include "verror.h" #include "xalloc.h" +#include "xprintf.h" #include "xvasprintf.h" /* Canonicalize UNIX recognition macros. */ @@ -128,14 +129,14 @@ extern const char *program_name; void m4_error (int, int, const char *, ...) M4_GNUC_PRINTF(3, 4); void m4_error_at_line (int, int, const char *, int, - const char *, ...) M4_GNUC_PRINTF(5, 6); + const char *, ...) M4_GNUC_PRINTF(5, 6); #define M4ERROR(Arglist) (m4_error Arglist) #define M4ERROR_AT_LINE(Arglist) (m4_error_at_line Arglist) #ifdef USE_STACKOVF void setup_stackovf_trap (char *const *, char *const *, - void (*handler) (void)); + void (*handler) (void)); #endif /* File: debug.c --- debugging and tracing function. */ @@ -174,7 +175,7 @@ extern FILE *debug; do \ { \ if (debug != NULL) \ - fprintf (debug, Fmt, Arg1); \ + xfprintf (debug, Fmt, Arg1); \ } \ while (0) @@ -182,7 +183,7 @@ extern FILE *debug; do \ { \ if (debug != NULL) \ - fprintf (debug, Fmt, Arg1, Arg2, Arg3); \ + xfprintf (debug, Fmt, Arg1, Arg2, Arg3); \ } \ while (0) @@ -192,7 +193,7 @@ extern FILE *debug; if (debug != NULL) \ { \ debug_message_prefix (); \ - fprintf (debug, Fmt); \ + xfprintf (debug, Fmt); \ putc ('\n', debug); \ } \ } \ @@ -204,7 +205,7 @@ extern FILE *debug; if (debug != NULL) \ { \ debug_message_prefix (); \ - fprintf (debug, Fmt, Arg1); \ + xfprintf (debug, Fmt, Arg1); \ putc ('\n', debug); \ } \ } \ @@ -216,7 +217,7 @@ extern FILE *debug; if (debug != NULL) \ { \ debug_message_prefix (); \ - fprintf (debug, Fmt, Arg1, Arg2); \ + xfprintf (debug, Fmt, Arg1, Arg2); \ putc ('\n', debug); \ } \ } \ @@ -422,6 +423,7 @@ void undivert_all (void); void expand_user_macro (struct obstack *, symbol *, int, token_data **); void m4_placeholder (struct obstack *, int, token_data **); void init_pattern_buffer (struct re_pattern_buffer *, struct re_registers *); +const char *ntoa (int32_t, int); const builtin *find_builtin_by_addr (builtin_func *); const builtin *find_builtin_by_name (const char *); diff --git a/src/output.c b/src/output.c index b36cd81..f88fc4b 100644 --- a/src/output.c +++ b/src/output.c @@ -197,7 +197,9 @@ m4_tmpname (int divnum) free (tail); tail = strrchr (buffer, '-') + 1; } - sprintf (tail, "%d", divnum); + if (sprintf (tail, "%d", divnum) < 0) + M4ERROR ((EXIT_FAILURE, errno, + "cannot create temporary file for diversion")); return buffer; } @@ -468,7 +470,6 @@ void shipout_text (struct obstack *obs, const char *text, int length, int line) { static bool start_of_output_line = true; - char linebuf[20]; const char *cursor; /* If output goes to an obstack, merely add TEXT to it. */ @@ -519,7 +520,7 @@ shipout_text (struct obstack *obs, const char *text, int length, int line) start_of_output_line = false; output_current_line++; #ifdef DEBUG_OUTPUT - fprintf (stderr, "DEBUG: line %d, cur %d, cur out %d\n", + xfprintf (stderr, "DEBUG: line %d, cur %d, cur out %d\n", line, current_line, output_current_line); #endif @@ -529,8 +530,13 @@ shipout_text (struct obstack *obs, const char *text, int length, int line) if (output_current_line != line) { - sprintf (linebuf, "#line %d", line); - for (cursor = linebuf; *cursor; cursor++) + OUTPUT_CHARACTER ('#'); + OUTPUT_CHARACTER ('l'); + OUTPUT_CHARACTER ('i'); + OUTPUT_CHARACTER ('n'); + OUTPUT_CHARACTER ('e'); + OUTPUT_CHARACTER (' '); + for (cursor = ntoa (line, 10); *cursor; cursor++) OUTPUT_CHARACTER (*cursor); if (output_current_line < 1 && current_file[0] != '\0') { @@ -553,7 +559,7 @@ shipout_text (struct obstack *obs, const char *text, int length, int line) start_of_output_line = false; output_current_line++; #ifdef DEBUG_OUTPUT - fprintf (stderr, "DEBUG: line %d, cur %d, cur out %d\n", + xfprintf (stderr, "DEBUG: line %d, cur %d, cur out %d\n", line, current_line, output_current_line); #endif } @@ -807,7 +813,7 @@ freeze_diversions (FILE *file) if (diversion->size || diversion->used) { if (diversion->size) - fprintf (file, "D%d,%d\n", diversion->divnum, diversion->used); + xfprintf (file, "D%d,%d\n", diversion->divnum, diversion->used); else { struct stat file_stat; @@ -817,8 +823,8 @@ freeze_diversions (FILE *file) if (file_stat.st_size < 0 || file_stat.st_size != (unsigned long int) file_stat.st_size) M4ERROR ((EXIT_FAILURE, 0, "diversion too large")); - fprintf (file, "D%d,%lu\n", diversion->divnum, - (unsigned long int) file_stat.st_size); + xfprintf (file, "D%d,%lu\n", diversion->divnum, + (unsigned long int) file_stat.st_size); } insert_diversion_helper (diversion); @@ -832,5 +838,5 @@ freeze_diversions (FILE *file) /* Save the active diversion number, if not already. */ if (saved_number != last_inserted) - fprintf (file, "D%d,0\n\n", saved_number); + xfprintf (file, "D%d,0\n\n", saved_number); } diff --git a/src/path.c b/src/path.c index cc08109..27ac4cc 100644 --- a/src/path.c +++ b/src/path.c @@ -101,7 +101,7 @@ add_include_directory (const char *dir) dir_list_end = incl; #ifdef DEBUG_INCL - fprintf (stderr, "add_include_directory (%s);\n", dir); + xfprintf (stderr, "add_include_directory (%s);\n", dir); #endif } @@ -154,7 +154,7 @@ m4_path_search (const char *file, char **result) strcpy (name + incl->len + 1, file); #ifdef DEBUG_INCL - fprintf (stderr, "m4_path_search (%s) -- trying %s\n", file, name); + xfprintf (stderr, "m4_path_search (%s) -- trying %s\n", file, name); #endif fp = fopen (name, "r"); @@ -185,9 +185,9 @@ include_dump (void) { includes *incl; - fprintf (stderr, "include_dump:\n"); + xfprintf (stderr, "include_dump:\n"); for (incl = dir_list; incl != NULL; incl = incl->next) - fprintf (stderr, "\t%s\n", incl->dir); + xfprintf (stderr, "\t%s\n", incl->dir); } #endif /* DEBUG_INCL */ diff --git a/src/stackovf.c b/src/stackovf.c index 775ba30..3877cd9 100644 --- a/src/stackovf.c +++ b/src/stackovf.c @@ -154,8 +154,9 @@ process_sigsegv (int signo, const char *p) { char buf[140]; - sprintf (buf, "process_sigsegv: p=%#lx stackend=%#lx diff=%ld bot=%#lx\n", - (long) p, (long) stackend, (long) diff, (long) stackbot); + snprintf (buf, sizeof buf, + "process_sigsegv: p=%#lx stackend=%#lx diff=%ld bot=%#lx\n", + (long) p, (long) stackend, (long) diff, (long) stackbot); write (2, buf, strlen (buf)); } #endif diff --git a/src/symtab.c b/src/symtab.c index 684dc56..872cfaa 100644 --- a/src/symtab.c +++ b/src/symtab.c @@ -56,10 +56,10 @@ show_profile (void) int i; for (i = 0; i < 5; i++) { - fprintf(stderr, "m4: lookup mode %d called %d times, %d compares, " - "%d misses, %lld bytes\n", - i, profiles[i].entry, profiles[i].comparisons, - profiles[i].misses, profiles[i].bytes); + xfprintf(stderr, "m4: lookup mode %d called %d times, %d compares, " + "%d misses, %lld bytes\n", + i, profiles[i].entry, profiles[i].comparisons, + profiles[i].misses, profiles[i].bytes); } } @@ -371,7 +371,7 @@ symtab_debug (void) s = lookup_symbol (text, SYMBOL_LOOKUP); if (s == NULL) - printf ("Name `%s' is unknown\n", text); + xprintf ("Name `%s' is unknown\n", text); if (delete) (void) lookup_symbol (text, SYMBOL_DELETE); @@ -387,17 +387,17 @@ symtab_print_list (int i) symbol *sym; size_t h; - printf ("Symbol dump #%d:\n", i); + xprintf ("Symbol dump #%d:\n", i); for (h = 0; h < hash_table_size; h++) for (sym = symtab[h]; sym != NULL; sym = sym->next) - printf ("\tname %s, bucket %lu, addr %p, next %p, " - "flags%s%s%s, pending %d\n", - SYMBOL_NAME (sym), - (unsigned long int) h, sym, SYMBOL_NEXT (sym), - SYMBOL_TRACED (sym) ? " traced" : "", - SYMBOL_SHADOWED (sym) ? " shadowed" : "", - SYMBOL_DELETED (sym) ? " deleted" : "", - SYMBOL_PENDING_EXPANSIONS (sym)); + xprintf ("\tname %s, bucket %lu, addr %p, next %p, " + "flags%s%s%s, pending %d\n", + SYMBOL_NAME (sym), + (unsigned long int) h, sym, SYMBOL_NEXT (sym), + SYMBOL_TRACED (sym) ? " traced" : "", + SYMBOL_SHADOWED (sym) ? " shadowed" : "", + SYMBOL_DELETED (sym) ? " deleted" : "", + SYMBOL_PENDING_EXPANSIONS (sym)); } #endif /* DEBUG_SYM */ hooks/post-receive -- GNU M4 source repository
