28 extern "C" int setenv(
const char *env_var,
const char *env_val,
int dummy) {
29 char *buf, *value, *p, *q, *a, *b, quote=
'\0';
33 a = (
char *) malloc((strlen(env_var) + 1) *
sizeof(char));
34 b = (
char *) malloc((strlen(env_val) + 1) *
sizeof(
char));
36 Rf_error(
"memory allocation failure in setenv");
41 buf = (
char *) malloc((strlen(a) + strlen(b) + 2) *
sizeof(char));
43 Rf_error(
"memory allocation failure in setenv");
45 strcpy(buf, a); strcat(buf,
"=");
46 value = buf+strlen(buf);
49 for(p = b, q = value; *p; p++) {
51 if(!inquote && (*p ==
'"' || *p ==
'\'')) {
57 if(inquote && *p == quote && *(p-1) !=
'\\') {
62 if(!inquote && *p ==
'\\') {
66 else if(*(p+1) ==
'\\') {
76 if(inquote && *p ==
'\\' && *(p+1) == quote)
int setenv(const char *env_var, const char *env_val, int dummy)