diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2010-03-28 18:27:23 -0400 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2010-03-28 18:27:23 -0400 |
commit | 0c6e467aa6931ec6bd7720ecaea5e33aeca4d1be (patch) | |
tree | c71617f6e0570f0aa66857f1da7855c780f56520 /IkiWiki/Wrapper.pm | |
parent | 7e9d1932a2b90d5092315c18603cf495da28d6da (diff) | |
download | ikiwiki-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.pm | 6 |
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) { |