Surf now can handle absolute file paths. This allows better local HTML reading. - surf - Surf web browser.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 6cd54e4a3119bd201d95f5d67ffb4bfe28aac653
 (DIR) parent ad794e0f00f56065f4e8d7e4cd1e4b8873938993
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sun, 25 Nov 2012 22:31:46 +0100
       
       Surf now can handle absolute file paths. This allows better local HTML
       reading.
       Diffstat:
         config.mk                           |       2 +-
         surf.c                              |      16 +++++++++++++---
       
       2 files changed, 14 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/config.mk b/config.mk
       @@ -19,7 +19,7 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${GTKLIB} -lgthread-2.0 \
               -ljavascriptcoregtk-1.0
        
        # flags
       -CPPFLAGS = -DVERSION=\"${VERSION}\"
       +CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE
        CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
        LDFLAGS = -g ${LIBS}
        
 (DIR) diff --git a/surf.c b/surf.c
       @@ -13,6 +13,7 @@
        #include <sys/types.h>
        #include <sys/wait.h>
        #include <unistd.h>
       +#include <limits.h>
        #include <stdlib.h>
        #include <stdio.h>
        #include <webkit/webkit.h>
       @@ -497,14 +498,23 @@ loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) {
        
        void
        loaduri(Client *c, const Arg *arg) {
       -        char *u;
       +        char *u, *rp;
                const char *uri = (char *)arg->v;
                Arg a = { .b = FALSE };
        
                if(strcmp(uri, "") == 0)
                        return;
       -        u = g_strrstr(uri, "://") ? g_strdup(uri)
       -                : g_strdup_printf("http://%s", uri);
       +
       +        /* In case it's a file path. */
       +        if(uri[0] == '/') {
       +                rp = realpath(uri, NULL);
       +                u = g_strdup_printf("file://%s", rp);
       +                free(rp);
       +        } else {
       +                u = g_strrstr(uri, "://") ? g_strdup(uri)
       +                        : g_strdup_printf("http://%s", uri);
       +        }
       +
                /* prevents endless loop */
                if(c->uri && strcmp(u, c->uri) == 0) {
                        reload(c, &a);