121 |
{ 0, 0 }, |
{ 0, 0 }, |
122 |
}; |
}; |
123 |
|
|
124 |
static void substitute (m4 *context, struct obstack *obs, const char *victim, |
static void substitute (m4 *context, m4_obstack *obs, const char *victim, |
125 |
const char *repl, struct re_registers *regs); |
const char *repl, struct re_registers *regs); |
126 |
static void m4_patsubst_do (m4 *context, struct obstack *obs, int argc, |
static void m4_patsubst_do (m4 *context, m4_obstack *obs, int argc, |
127 |
m4_symbol_value **argv, int syntax); |
m4_symbol_value **argv, int syntax); |
128 |
|
|
129 |
|
|
159 |
**/ |
**/ |
160 |
M4BUILTIN_HANDLER (indir) |
M4BUILTIN_HANDLER (indir) |
161 |
{ |
{ |
162 |
m4_symbol *symbol; |
const char * name = M4ARG (1); |
163 |
const char *name = M4ARG (1); |
m4_symbol * symbol = m4_symbol_lookup (M4SYMTAB, name); |
164 |
|
|
|
symbol = m4_symbol_lookup (M4SYMTAB, name); |
|
165 |
if (symbol == NULL) |
if (symbol == NULL) |
166 |
M4ERROR ((m4_get_warning_status_opt (context), 0, |
M4ERROR ((m4_get_warning_status_opt (context), 0, |
167 |
_("Undefined name `%s'"), name)); |
_("Undefined name `%s'"), name)); |
168 |
else |
else |
169 |
m4_call_macro (context, symbol, obs, argc - 1, argv + 1); |
m4_macro_call (context, symbol, obs, argc - 1, argv + 1); |
170 |
} |
} |
171 |
|
|
172 |
/* Change the current input syntax. The function set_syntax () lives |
/* Change the current input syntax. The function set_syntax () lives |
306 |
**/ |
**/ |
307 |
|
|
308 |
static void |
static void |
309 |
m4_regexp_do (m4 *context, struct obstack *obs, int argc, |
m4_regexp_do (m4 *context, m4_obstack *obs, int argc, |
310 |
m4_symbol_value **argv, int syntax) |
m4_symbol_value **argv, int syntax) |
311 |
{ |
{ |
312 |
const char *victim; /* first argument */ |
const char *victim; /* first argument */ |
371 |
* patsubst(STRING, REGEXP, [REPLACEMENT]) |
* patsubst(STRING, REGEXP, [REPLACEMENT]) |
372 |
**/ |
**/ |
373 |
static void |
static void |
374 |
m4_patsubst_do (m4 *context, struct obstack *obs, int argc, |
m4_patsubst_do (m4 *context, m4_obstack *obs, int argc, |
375 |
m4_symbol_value **argv, int syntax) |
m4_symbol_value **argv, int syntax) |
376 |
{ |
{ |
377 |
const char *victim; /* first argument */ |
const char *victim; /* first argument */ |
460 |
M4BUILTIN_HANDLER (symbols) |
M4BUILTIN_HANDLER (symbols) |
461 |
{ |
{ |
462 |
struct m4_dump_symbol_data data; |
struct m4_dump_symbol_data data; |
463 |
struct obstack data_obs; |
m4_obstack data_obs; |
464 |
|
|
465 |
obstack_init (&data_obs); |
obstack_init (&data_obs); |
466 |
data.obs = &data_obs; |
data.obs = &data_obs; |
562 |
static int substitute_warned = 0; |
static int substitute_warned = 0; |
563 |
|
|
564 |
static void |
static void |
565 |
substitute (m4 *context, struct obstack *obs, const char *victim, |
substitute (m4 *context, m4_obstack *obs, const char *victim, |
566 |
const char *repl, struct re_registers *regs) |
const char *repl, struct re_registers *regs) |
567 |
{ |
{ |
568 |
register unsigned int ch; |
register unsigned int ch; |