/[m4]/m4/modules/m4.c
ViewVC logotype

Diff of /m4/modules/m4.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13 by gary, Sat Sep 1 16:10:40 2001 UTC revision 1.14 by gary, Sat Sep 1 20:05:27 2001 UTC
# Line 279  M4BUILTIN_HANDLER (dumpdef) Line 279  M4BUILTIN_HANDLER (dumpdef)
279    
280    for (; data.size > 0; --data.size, data.base++)    for (; data.size > 0; --data.size, data.base++)
281      {      {
282        fprintf (stderr, "%s:\t", M4_SYMBOL_NAME (data.base[0]));        m4_symbol *symbol = m4_lookup_symbol (data.base[0], M4_SYMBOL_LOOKUP);
283    
284        switch (M4_SYMBOL_TYPE (data.base[0]))        fprintf (stderr, "%s:\t", data.base[0]);
285          switch (M4_SYMBOL_TYPE (symbol))
286          {          {
287          case M4_TOKEN_TEXT:          case M4_TOKEN_TEXT:
288            if (debug_level & M4_DEBUG_TRACE_QUOTE)            if (debug_level & M4_DEBUG_TRACE_QUOTE)
289              fprintf (stderr, "%s%s%s\n",              fprintf (stderr, "%s%s%s\n",
290                       lquote.string, M4_SYMBOL_TEXT (data.base[0]), rquote.string);                       lquote.string, M4_SYMBOL_TEXT (symbol), rquote.string);
291            else            else
292              fprintf (stderr, "%s\n", M4_SYMBOL_TEXT (data.base[0]));              fprintf (stderr, "%s\n", M4_SYMBOL_TEXT (symbol));
293            break;            break;
294    
295          case M4_TOKEN_FUNC:          case M4_TOKEN_FUNC:
296            bp = m4_builtin_find_by_func (NULL, M4_SYMBOL_FUNC (data.base[0]));            bp = m4_builtin_find_by_func (NULL, M4_SYMBOL_FUNC (symbol));
297            if (bp == NULL)            if (bp == NULL)
298              {              {
299                M4ERROR ((warning_status, 0,                M4ERROR ((warning_status, 0,
300                          _("Undefined name `%s'"), M4_SYMBOL_NAME (data.base[0])));                          _("Undefined name `%s'"), data.base[0]));
301                abort ();                abort ();
302              }              }
303            fprintf (stderr, "<%s>\n", bp->name);            fprintf (stderr, "<%s>\n", bp->name);
# Line 608  M4BUILTIN_HANDLER (m4wrap) Line 609  M4BUILTIN_HANDLER (m4wrap)
609  /* Set_trace () is used by "traceon" and "traceoff" to enable and disable  /* Set_trace () is used by "traceon" and "traceoff" to enable and disable
610     tracing of a macro.  It disables tracing if DATA is NULL, otherwise it     tracing of a macro.  It disables tracing if DATA is NULL, otherwise it
611     enable tracing.  */     enable tracing.  */
612  static void  static int
613  set_trace (m4_symbol *symbol, const char *data)  set_trace (const char *name, m4_symbol *symbol, void *data);
614    
615    static int
616    set_trace (const char *name, m4_symbol *symbol, void *data)
617  {  {
618    M4_SYMBOL_TRACED (symbol) = (boolean) (data != NULL);    M4_SYMBOL_TRACED (symbol) = (boolean) (data != NULL);
619      return 0;
620  }  }
621    
622  M4BUILTIN_HANDLER (traceon)  M4BUILTIN_HANDLER (traceon)
623  {  {
   m4_symbol *symbol;  
624    int i;    int i;
625    
626    if (argc == 1)    if (argc == 1)
627      m4_hack_all_symbols (set_trace, (char *) obs);      m4_symtab_apply (set_trace, (char *) obs);
628    else    else
629      for (i = 1; i < argc; i++)      for (i = 1; i < argc; i++)
630        {        {
631          symbol = m4_lookup_symbol (M4_TOKEN_DATA_TEXT (argv[i]), M4_SYMBOL_LOOKUP);          const char *name = M4_TOKEN_DATA_TEXT (argv[i]);
632            m4_symbol *symbol = m4_lookup_symbol (name, M4_SYMBOL_LOOKUP);
633          if (symbol != NULL)          if (symbol != NULL)
634            set_trace (symbol, (char *) obs);            set_trace (name, symbol, (char *) obs);
635          else          else
636            M4ERROR ((warning_status, 0,            M4ERROR ((warning_status, 0, _("Undefined name %s"), name));
                     _("Undefined name %s"), M4_TOKEN_DATA_TEXT (argv[i])));  
637        }        }
638  }  }
639    
640  /* Disable tracing of all specified macros, or all, if none is specified.  */  /* Disable tracing of all specified macros, or all, if none is specified.  */
641  M4BUILTIN_HANDLER (traceoff)  M4BUILTIN_HANDLER (traceoff)
642  {  {
   m4_symbol *symbol;  
643    int i;    int i;
644    
645    if (argc == 1)    if (argc == 1)
646      m4_hack_all_symbols (set_trace, NULL);      m4_symtab_apply (set_trace, NULL);
647    else    else
648      for (i = 1; i < argc; i++)      for (i = 1; i < argc; i++)
649        {        {
650          symbol = m4_lookup_symbol (M4_TOKEN_DATA_TEXT (argv[i]), M4_SYMBOL_LOOKUP);          const char *name = M4_TOKEN_DATA_TEXT (argv[i]);
651            m4_symbol *symbol = m4_lookup_symbol (name, M4_SYMBOL_LOOKUP);
652          if (symbol != NULL)          if (symbol != NULL)
653            set_trace (symbol, NULL);            set_trace (name, symbol, NULL);
654          else          else
655            M4ERROR ((warning_status, 0,            M4ERROR ((warning_status, 0, _("Undefined name %s"), name));
                     _("Undefined name %s"), M4_TOKEN_DATA_TEXT (argv[i])));  
656        }        }
657  }  }
658    

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26