...
| Code Block | ||
|---|---|---|
| ||
int func(char const *var) {
static char *oldenv;
char const *env_format = "TEST=%s";
size_t const len = strlen(var) + strlen(env_format);
char *env = (char *) malloc(len);
if (env == NULL) {
return -1;
}
int rc = snprintf(env, len, env_format, var);
if (rc < 0 || (size_t)rc >= len) {
/* Handle Error */
}
if (putenv(env) != 0) {
free(env);
return -1;
}
if (oldenv != NULL)
free(oldenv); //* avoid memory leak */
oldenv = env;
return 0;
}
|
...
Using setenv() is easier, and consequently, less error prone, than using (putenv()).
...