envstr: Environment variables in a str.

## Functions

const char * | envstr_find (const struct str *env, const char *var, long varlen)
const char * | envstr_get (const struct str *env, const char *var)
int | envstr_set (struct str *env, const char *var, const char *val, int overwrite)
void | envstr_unset (struct str *env, const char *var)
int | envstr_put (struct str *env, const char *asgn, int overwrite)
int | envstr_from_array (struct str *env, char **array, int overwrite)
int | envstr_from_string (struct str *env, const char *s, int overwrite)
char ** | envstr_make_array (const struct str *env)

## Detailed Description

Calling Convention

All functions that allocate memory return `0` (false) if the function failed due to being unable to allocate memory, and non-zero (true) otherwise.

## Function Documentation

## envstr_find()

const char * envstr_find | ( | const struct str * | env,
|  | const char * | var,
|  | long | len )

extern

Find the named variable in the environment string.

Returns
  a pointer to the start of the assignment.

References striter::startptr, and striter_loop.

Referenced by envstr_get(), envstr_put(), envstr_set(), and envstr_unset().

## envstr_from_array()

int envstr_from_array | ( | struct str * | env,
|  | char ** | array,
|  | int | overwrite )

extern

Adds the assignments from the array of pointers to the environment string. The array must be terminated by a `NULL` pointer, just the same as the standard `environ` array.

References envstr_put().

## envstr_from_string()

int envstr_from_string | ( | struct str * | env,
|  | const char * | s,
|  | int | overwrite )

extern

Adds the string-based list of assignments to the environment string. Each individual assignment in the list must be ASCII NUL terminated, and the final assignment must be followed by two ASCII NULs.

References envstr_put().

## envstr_get()

const char * envstr_get | ( | const struct str * | env,
|  | const char * | var )

extern

Get the value of an assignment from an environment string.

References envstr_find().

## envstr_make_array()

char ** envstr_make_array | ( | const struct str * | env | ) |

extern

Make a `environ` compatable array of pointers to the environment string.

Note
  The returned pointer is dynamically allocated, and must be freed.

References striter::startptr, striter_advance(), striter_start(), and striter_valid().

## envstr_put()

int envstr_put | ( | struct str * | env,
|  | const char * | asgn,
|  | int | overwrite )

extern

Put an assignment, in `NAME=value` format, into the environment string.

Note
  Unlike putenv, a copy of the assignment is made instead of keeping a copy of the given pointer.

References envstr_find(), str::s, str_catc(), and str_cats().

Referenced by envstr_from_array(), and envstr_from_string().

## envstr_set()

int envstr_set | ( | struct str * | env,
|  | const char * | var,
|  | const char * | val,
|  | int | overwrite )

extern

Set the named variable to the given value in the environment string.

References envstr_find(), str::s, str_catc(), and str_cats().

## envstr_unset()

void envstr_unset | ( | struct str * | env,
|  | const char * | var )

extern

Unset the named variable in the environment string.

References envstr_find(), str::len, and str::s.