Next: , Previous: str_varscan, Up: Strings


4.23 str_interp

interpolates environmental variables into a string

Synopsis

     #include <suplib/str.h>
     
     
     
char *str_interp( const char *text, int keep_undef, char **ustart, char **uend, int *error );

Parameters

const char *text
the text to be interpolated into
int keep_undef
if true, undefined variables are left in the text. if false, they are removed
char **ustart
if not NULL, set to the start of the undefined variable name
char **uend
if not NULL, set to the end of the undefined variable name
int *error
error code

Description

This routine scans a string for embedded environmental variables and returns a pointer to a copy of the string with the interpolated values. The user is responsible for freeing the new string.

The input string is scanned left to right for substrings of the form ${VAR} or $VAR. VAR must begin with an alphabet character or the ‘_’ character. The remaining characters must be alphabetic, numeric, or the ‘_’ character.

Returns

Upon success a pointer to the interpolated string is returned and *error is set to 0. The user is responsible for freeing the memory pointed to by the returned string. If keep_undef was set and there was an undefined variable, then *errp is set to EFAULT and *ustart and *uend point at the first and last characters in the variable name. If multiple variables are undefined, they will point to the first undefined variable name. Upon error, NULL is returned and *errp is set to one of the following

EDOM There was an unbalanced ‘{’. *ustart is set
to point the the character that evoked the error. *uend is undefined.
ENOMEM
A memory allocation failed.

Author

Diab Jerius