Provided by: publib-dev_0.40-2_amd64 bug

NAME

       strvars - expand variables in string

SYNOPSIS

       #include <publib.h>
       int strvars(char **res, const char *str, char *(*expand)(const char *));

DESCRIPTION

       strvars  will  replaces  references  to variables in the string str with the values of the
       variables.  A reference to a variable is of the form $(foo) or $x (where  x  is  a  single
       character,  but  not  $).   A  dollar  sign  is expressed in the string as $$, and will be
       converted to $ in the output.  Memory for the expanded string  is  allocated  dynamically,
       and *res is set to point to it.

       The  values  of the variables are fetched using the function expand.  It is given the name
       of the variable as its argument, and must return a pointer to the value, or NULL  if  that
       variable doesn't exist.

RETURN VALUE

       strvars will return 0 if successful, or NULL if an error occurred (malformed input string,
       result too big, or unknown variable).

EXAMPLE

       To replace references to environment variables, one would the following.

            #include <publib.h>
            #include <stdlib.h>

            char line[1024];
            char *res;

            if (strvars(&res, line, getenv) == NULL)
                errormsg(1, 0, "strvars failed");
            printf("res = <%s>\n", res);

SEE ALSO

       publib(3), getenv(3)

AUTHOR

       Lars Wirzenius (lars.wirzenius@helsinki.fi)