diff options
author | intrigeri <intrigeri@boum.org> | 2010-06-25 14:38:37 +0200 |
---|---|---|
committer | intrigeri <intrigeri@boum.org> | 2010-06-25 14:38:37 +0200 |
commit | 9f401d6617a11efcedda1c956b2ccea061a7540f (patch) | |
tree | a5648589b38487427a58a7ebacfdc036a5dd102a /IkiWiki/Wrapper.pm | |
parent | 73f4a8835876c8cb07808367cd72d9ae972893e8 (diff) | |
parent | 71950b2ae5ff6fd3b631c5504455cc07699b1c11 (diff) | |
download | ikiwiki-9f401d6617a11efcedda1c956b2ccea061a7540f.tar ikiwiki-9f401d6617a11efcedda1c956b2ccea061a7540f.tar.gz |
Merge remote branch 'upstream/master' into prv/po
Conflicts:
IkiWiki/Plugin/po.pm
Diffstat (limited to 'IkiWiki/Wrapper.pm')
-rw-r--r-- | IkiWiki/Wrapper.pm | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 5427a5c80..73f0896e8 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -76,8 +76,8 @@ EOF { int fd=open("$config{wikistatedir}/cgilock", O_CREAT | O_RDWR, 0666); if (fd != -1 && flock(fd, LOCK_EX) == 0) { - char *fd_s; - asprintf(&fd_s, "%i", fd); + char *fd_s=malloc(8); + sprintf(fd_s, "%i", fd); setenv("IKIWIKI_CGILOCK_FD", fd_s, 1); } } @@ -105,7 +105,7 @@ extern char **environ; char *newenviron[$#envsave+6]; int i=0; -addenv(char *var, char *val) { +void addenv(char *var, char *val) { char *s=malloc(strlen(var)+1+strlen(val)+1); if (!s) perror("malloc"); @@ -121,8 +121,19 @@ $check_commit_hook $envsave newenviron[i++]="HOME=$ENV{HOME}"; newenviron[i++]="WRAPPED_OPTIONS=$configstring"; + +#ifdef __TINYC__ + /* old tcc versions do not support modifying environ directly */ + 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) { |