]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Wrapper.pm
export CALLER_UID
[ikiwiki.git] / IkiWiki / Wrapper.pm
index 79b9eb3e32499229aaa43f8884a776ae8471ccb4..eb6228dc314dd2b24d6740f34e08c8f73e437512 100644 (file)
@@ -4,14 +4,14 @@ package IkiWiki;
 
 use warnings;
 use strict;
-use Cwd q{abs_path};
+use File::Spec;
 use Data::Dumper;
 use IkiWiki;
 
 sub gen_wrapper () { #{{{
-       $config{srcdir}=abs_path($config{srcdir});
-       $config{destdir}=abs_path($config{destdir});
-       my $this=abs_path($0);
+       $config{srcdir}=File::Spec->rel2abs($config{srcdir});
+       $config{destdir}=File::Spec->rel2abs($config{destdir});
+       my $this=File::Spec->rel2abs($0);
        if (! -x $this) {
                error(sprintf(gettext("%s doesn't seem to be executable"), $this));
        }
@@ -28,7 +28,7 @@ sub gen_wrapper () { #{{{
        my @envsave;
        push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
                       CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
-                      HTTP_COOKIE REMOTE_USER} if $config{cgi};
+                      HTTP_COOKIE REMOTE_USER HTTPS} if $config{cgi};
        my $envsave="";
        foreach my $var (@envsave) {
                $envsave.=<<"EOF"
@@ -55,7 +55,7 @@ EOF
 #include <string.h>
 
 extern char **environ;
-char *newenviron[$#envsave+5];
+char *newenviron[$#envsave+6];
 int i=0;
 
 addenv(char *var, char *val) {
@@ -72,6 +72,7 @@ int main (int argc, char **argv) {
 $envsave
        newenviron[i++]="HOME=$ENV{HOME}";
        newenviron[i++]="WRAPPED_OPTIONS=$configstring";
+       asprintf(newenviron[i++], "CALLER_UID=%i", getuid());
        newenviron[i]=NULL;
        environ=newenviron;