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

Diff of /m4/modules/gnu.c

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

revision 1.29 by gary, Thu Jul 24 14:21:03 2003 UTC revision 1.30 by gary, Tue Aug 12 15:33:57 2003 UTC
# Line 90  int errno; Line 90  int errno;
90    
91    
92  /* Generate prototypes for each builtin handler function. */  /* Generate prototypes for each builtin handler function. */
93  #define BUILTIN(handler, macros,  blind, min, max)  M4BUILTIN(handler)  #define BUILTIN(handler, macros, blind, min, max)  M4BUILTIN(handler)
94    builtin_functions    builtin_functions
95  #undef BUILTIN  #undef BUILTIN
96    
# Line 452  M4BUILTIN_HANDLER (epatsubst) Line 452  M4BUILTIN_HANDLER (epatsubst)
452  /* Implementation of "symbols".  It builds up a table of pointers to  /* Implementation of "symbols".  It builds up a table of pointers to
453     symbols, sorts it and ships out the symbol names.  */     symbols, sorts it and ships out the symbol names.  */
454    
 /* TODO:  Import this through the m4_export list of m4 module.  */  
 extern void m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, int argc,  
                              m4_symbol_value **argv, boolean complain);  
   
455  /**  /**
456   * symbols([...])   * symbols([...])
457   **/   **/
458  M4BUILTIN_HANDLER (symbols)  M4BUILTIN_HANDLER (symbols)
459  {  {
460    m4_dump_symbol_data data;    M4_MODULE_IMPORT (m4, m4_dump_symbols);
   m4_obstack data_obs;  
   
   obstack_init (&data_obs);  
   data.obs = &data_obs;  
   m4_dump_symbols (context, &data, argc, argv, FALSE);  
461    
462    for (; data.size > 0; --data.size, data.base++)    if (m4_dump_symbols)
463      {      {
464        m4_shipout_string (context, obs, data.base[0], 0, TRUE);        m4_dump_symbol_data data;
465        if (data.size > 1)        m4_obstack data_obs;
466          obstack_1grow (obs, ',');  
467          obstack_init (&data_obs);
468          data.obs = &data_obs;
469          m4_dump_symbols (context, &data, argc, argv, FALSE);
470    
471          for (; data.size > 0; --data.size, data.base++)
472            {
473              m4_shipout_string (context, obs, data.base[0], 0, TRUE);
474              if (data.size > 1)
475                obstack_1grow (obs, ',');
476            }
477          obstack_free (&data_obs, NULL);
478      }      }
   obstack_free (&data_obs, NULL);  
479  }  }
480    
481    
# Line 506  M4BUILTIN_HANDLER (syncoutput) Line 507  M4BUILTIN_HANDLER (syncoutput)
507   * esyscmd(SHELL-COMMAND)   * esyscmd(SHELL-COMMAND)
508   **/   **/
509    
 /* TODO:  Import these through the m4_export list of m4 module.  */  
 extern int  m4_sysval;  
 extern void m4_sysval_flush (m4 *);  
   
510  M4BUILTIN_HANDLER (esyscmd)  M4BUILTIN_HANDLER (esyscmd)
511  {  {
512    FILE *pin;    M4_MODULE_IMPORT (m4, m4_set_sysval);
513    int ch;    M4_MODULE_IMPORT (m4, m4_sysval_flush);
514    
515    m4_sysval_flush (context);    if (m4_set_sysval && m4_sysval_flush)
   pin = popen (M4ARG (1), "r");  
   if (pin == NULL)  
     {  
       M4ERROR ((m4_get_warning_status_opt (context), errno,  
                 _("Cannot open pipe to command `%s'"), M4ARG (1)));  
       m4_sysval = 0xff << 8;  
     }  
   else  
516      {      {
517        while ((ch = getc (pin)) != EOF)        FILE *pin;
518          obstack_1grow (obs, (char) ch);        int ch;
519        m4_sysval = pclose (pin);  
520          m4_sysval_flush (context);
521          pin = popen (M4ARG (1), "r");
522          if (pin == NULL)
523            {
524              M4ERROR ((m4_get_warning_status_opt (context), errno,
525                        _("Cannot open pipe to command `%s'"), M4ARG (1)));
526              m4_set_sysval (0xff << 8);
527            }
528          else
529            {
530              while ((ch = getc (pin)) != EOF)
531                obstack_1grow (obs, (char) ch);
532              m4_set_sysval (pclose (pin));
533            }
534      }      }
535  }  }
536    

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

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