Surf now can handle absolute file paths. This allows better local HTML

reading.
This commit is contained in:
Christoph Lohmann 2012-11-25 22:31:46 +01:00
parent ad794e0f00
commit 6cd54e4a31
2 changed files with 14 additions and 4 deletions

View File

@ -19,7 +19,7 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${GTKLIB} -lgthread-2.0 \
-ljavascriptcoregtk-1.0 -ljavascriptcoregtk-1.0
# flags # flags
CPPFLAGS = -DVERSION=\"${VERSION}\" CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE
CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
LDFLAGS = -g ${LIBS} LDFLAGS = -g ${LIBS}

16
surf.c
View File

@ -13,6 +13,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <unistd.h> #include <unistd.h>
#include <limits.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <webkit/webkit.h> #include <webkit/webkit.h>
@ -497,14 +498,23 @@ loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) {
void void
loaduri(Client *c, const Arg *arg) { loaduri(Client *c, const Arg *arg) {
char *u; char *u, *rp;
const char *uri = (char *)arg->v; const char *uri = (char *)arg->v;
Arg a = { .b = FALSE }; Arg a = { .b = FALSE };
if(strcmp(uri, "") == 0) if(strcmp(uri, "") == 0)
return; 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 */ /* prevents endless loop */
if(c->uri && strcmp(u, c->uri) == 0) { if(c->uri && strcmp(u, c->uri) == 0) {
reload(c, &a); reload(c, &a);