URI: 
       Trying to fix the base path. - geomyidae - A small C-based gopherd.
  HTML git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit bb858e05c4c1e15bd54b5bcb37ebac0f9356af47
   DIR parent 708d5eec1eaa6e7b3189515adcc353ff4058d592
  HTML Author: Christoph Lohmann <20h@r-36.net>
       Date:   Wed, 16 Mar 2011 06:26:06 +0100
       
       Trying to fix the base path.
       
       Diffstat:
         M handlr.c                            |      17 +++++++++++++++--
       
       1 file changed, 15 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/handlr.c b/handlr.c
       @@ -149,13 +149,22 @@ void
        handlecgi(int sock, char *file, char *port, char *base, char *args,
                        char *sear)
        {
       -        char *p;
       +        char *p, *path;
        
                USED(base);
                USED(port);
        
       +        path = gstrdup(file);
       +        p = strrchr(path, '/');
       +        if (p != nil)
       +                p[1] = '\0';
       +        else {
       +                free(path);
       +                path = nil;
       +        }
       +
                p = strrchr(file, '/');
       -        if(p == nil)
       +        if (p == nil)
                        p = file;
        
                if(sear == nil)
       @@ -166,11 +175,15 @@ handlecgi(int sock, char *file, char *port, char *base, char *args,
                dup2(sock, 2);
                switch(fork()) {
                case 0:
       +                if (path != nil)
       +                        chdir(path);
                        execl(file, p, sear, args, (char *)nil);
                case -1:
                        break;
                default:
                        wait(NULL);
       +                if (path != nil)
       +                        free(path);
                        shutdown(sock, SHUT_RDWR);
                        close(sock);
                        break;