--- a/UnixOS.st Wed Jun 10 19:59:37 1998 +0200
+++ b/UnixOS.st Wed Jun 10 20:21:15 1998 +0200
@@ -3081,7 +3081,6 @@
}
if ((envPairs != nil) && __isArray(envPairs)) {
-#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
for (i=0; (i+1)<__arraySize(envPairs); i+=2) {
OBJ t;
char *var, *val;
@@ -3092,14 +3091,30 @@
t = __ArrayInstPtr(envPairs)->a_element[i+1];
if (__isString(t) || __isSymbol(t)) {
val = __stringVal(t);
+ } else {
+ val = NULL;
+ }
+#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
+ if (val != NULL) {
setenv(var, val, 1);
} else {
unsetenv(var);
}
-
+#else /* use putenv */
+ if (val != NULL) {
+ e = (char *)malloc(strlen(var) + 1 + strlen(val) + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ strcat(e, val);
+ } else {
+ e = (char *)malloc(strlen(var) + 1 + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ }
+ putenv(e);
+#endif /* HAS_SETENV && HAS_UNSETENV */
}
}
-#endif /* HAS_SETENV && HAS_UNSETENV */
}
if (newPgrp == true) {
@@ -3130,10 +3145,9 @@
* no subprocess (i.e. transfer to another program)
*/
if ((envPairs != nil) && __isArray(envPairs)) {
-#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
for (i=0; (i+1)<__arraySize(envPairs); i+=2) {
OBJ t;
- char *var, *val;
+ char *var, *val, *e;
t = __ArrayInstPtr(envPairs)->a_element[i];
if (__isString(t) || __isSymbol(t)) {
@@ -3141,14 +3155,30 @@
t = __ArrayInstPtr(envPairs)->a_element[i+1];
if (__isString(t) || __isSymbol(t)) {
val = __stringVal(t);
+ } else {
+ val = NULL;
+ }
+#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
+ if (val != NULL) {
setenv(var, val, 1);
} else {
unsetenv(var);
}
-
+#else /* use putenv */
+ if (val != NULL) {
+ e = (char *)malloc(strlen(var) + 1 + strlen(val) + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ strcat(e, val);
+ } else {
+ e = (char *)malloc(strlen(var) + 1 + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ }
+ putenv(e);
+#endif /* HAS_SETENV && HAS_UNSETENV */
}
}
-#endif /* HAS_SETENV && HAS_UNSETENV */
}
execv(__stringVal(aCommandPath), argv);
@@ -8387,6 +8417,6 @@
!UnixOperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/UnixOS.st,v 1.14 1998-06-10 17:07:37 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/UnixOS.st,v 1.15 1998-06-10 18:21:15 cg Exp $'
! !
UnixOperatingSystem initialize!
--- a/UnixOperatingSystem.st Wed Jun 10 19:59:37 1998 +0200
+++ b/UnixOperatingSystem.st Wed Jun 10 20:21:15 1998 +0200
@@ -3081,7 +3081,6 @@
}
if ((envPairs != nil) && __isArray(envPairs)) {
-#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
for (i=0; (i+1)<__arraySize(envPairs); i+=2) {
OBJ t;
char *var, *val;
@@ -3092,14 +3091,30 @@
t = __ArrayInstPtr(envPairs)->a_element[i+1];
if (__isString(t) || __isSymbol(t)) {
val = __stringVal(t);
+ } else {
+ val = NULL;
+ }
+#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
+ if (val != NULL) {
setenv(var, val, 1);
} else {
unsetenv(var);
}
-
+#else /* use putenv */
+ if (val != NULL) {
+ e = (char *)malloc(strlen(var) + 1 + strlen(val) + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ strcat(e, val);
+ } else {
+ e = (char *)malloc(strlen(var) + 1 + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ }
+ putenv(e);
+#endif /* HAS_SETENV && HAS_UNSETENV */
}
}
-#endif /* HAS_SETENV && HAS_UNSETENV */
}
if (newPgrp == true) {
@@ -3130,10 +3145,9 @@
* no subprocess (i.e. transfer to another program)
*/
if ((envPairs != nil) && __isArray(envPairs)) {
-#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
for (i=0; (i+1)<__arraySize(envPairs); i+=2) {
OBJ t;
- char *var, *val;
+ char *var, *val, *e;
t = __ArrayInstPtr(envPairs)->a_element[i];
if (__isString(t) || __isSymbol(t)) {
@@ -3141,14 +3155,30 @@
t = __ArrayInstPtr(envPairs)->a_element[i+1];
if (__isString(t) || __isSymbol(t)) {
val = __stringVal(t);
+ } else {
+ val = NULL;
+ }
+#if defined(HAS_SETENV) && defined(HAS_UNSETENV)
+ if (val != NULL) {
setenv(var, val, 1);
} else {
unsetenv(var);
}
-
+#else /* use putenv */
+ if (val != NULL) {
+ e = (char *)malloc(strlen(var) + 1 + strlen(val) + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ strcat(e, val);
+ } else {
+ e = (char *)malloc(strlen(var) + 1 + 1);
+ strcpy(e, var);
+ strcat(e, "=";
+ }
+ putenv(e);
+#endif /* HAS_SETENV && HAS_UNSETENV */
}
}
-#endif /* HAS_SETENV && HAS_UNSETENV */
}
execv(__stringVal(aCommandPath), argv);
@@ -8387,6 +8417,6 @@
!UnixOperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.14 1998-06-10 17:07:37 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.15 1998-06-10 18:21:15 cg Exp $'
! !
UnixOperatingSystem initialize!