View | Details | Raw Unified
Collapse All | Expand All

(-) variable.h (+2 lines)
 Lines 107-112    Link Here 
extern char *expand_argument PARAMS ((char *str, char *end));
extern char *expand_argument PARAMS ((char *str, char *end));
extern char *variable_expand_string PARAMS ((char *line, char *string,
extern char *variable_expand_string PARAMS ((char *line, char *string,
                                             long length));
                                             long length));
extern void install_variable_buffer PARAMS ((char **bufp, unsigned int *lenp));
extern void restore_variable_buffer PARAMS ((char *buf, unsigned int len));
/* function.c */
/* function.c */
extern int handle_function PARAMS ((char **op, char **stringp));
extern int handle_function PARAMS ((char **op, char **stringp));
(-) expand.c (+25 lines)
 Lines 545-547    Link Here 
  return value;
  return value;
}
}
/* Install a new variable_buffer context, returning the current one for
   safe-keeping.  */
void
install_variable_buffer (char **bufp, unsigned int *lenp)
{
  *bufp = variable_buffer;
  *lenp = variable_buffer_length;
  variable_buffer = 0;
  initialize_variable_output ();
}
/* Restore a previously-saved variable_buffer setting (free the current one).
 */
void
restore_variable_buffer (char *buf, unsigned int len)
{
  free (variable_buffer);
  variable_buffer = buf;
  variable_buffer_length = len;
}
(-) function.c (+10 lines)
 Lines 1196-1202    Link Here 
static char *
static char *
func_eval (char *o, char **argv, const char *funcname)
func_eval (char *o, char **argv, const char *funcname)
{
{
  char *buf;
  unsigned int len;
  /* Eval the buffer.  Pop the current variable buffer setting so that the
     eval'd code can use its own without conflicting.  */
  install_variable_buffer (&buf, &len);
  eval_buffer (argv[0]);
  eval_buffer (argv[0]);
  restore_variable_buffer (buf, len);
  return o;
  return o;
}
}