aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Wrapper.pm
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2010-03-28 18:27:23 -0400
committerJoey Hess <joey@gnu.kitenet.net>2010-03-28 18:27:23 -0400
commit0c6e467aa6931ec6bd7720ecaea5e33aeca4d1be (patch)
treec71617f6e0570f0aa66857f1da7855c780f56520 /IkiWiki/Wrapper.pm
parent7e9d1932a2b90d5092315c18603cf495da28d6da (diff)
downloadikiwiki-0c6e467aa6931ec6bd7720ecaea5e33aeca4d1be.tar
ikiwiki-0c6e467aa6931ec6bd7720ecaea5e33aeca4d1be.tar.gz
use __TINYC__ define to avoid tinyc compat fixes breaking FreeBSD
To review, tcc does not really use environ, so you have to use clearenv there. But POSIX, in their wisdom, didn't standardise clearenv yet, so on FreeBSD, one still needs to manipulate environ on their own. (If you use tcc on FreeBSD, this may leave you unsatisfied.)
Diffstat (limited to 'IkiWiki/Wrapper.pm')
-rw-r--r--IkiWiki/Wrapper.pm6
1 files changed, 6 insertions, 0 deletions
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
index f175b4a0b..3f3e63ca6 100644
--- a/IkiWiki/Wrapper.pm
+++ b/IkiWiki/Wrapper.pm
@@ -101,6 +101,7 @@ EOF
#include <string.h>
#include <sys/file.h>
+extern char **environ;
char *newenviron[$#envsave+6];
int i=0;
@@ -121,12 +122,17 @@ $envsave
newenviron[i++]="HOME=$ENV{HOME}";
newenviron[i++]="WRAPPED_OPTIONS=$configstring";
+#ifdef __TINYC__
if (clearenv() != 0) {
perror("clearenv");
exit(1);
}
for (; i>0; i--)
putenv(newenviron[i-1]);
+#else
+ newenviron[i]=NULL;
+ environ=newenviron;
+#endif
if (setregid(getegid(), -1) != 0 &&
setregid(getegid(), -1) != 0) {