From: Enno Boland (tox) Date: Sun, 9 May 2010 20:41:11 +0000 (+0200) Subject: merge X-Git-Url: https://git.danieliu.xyz/?p=surf.git;a=commitdiff_plain;h=f304d0af52a7141f8395b0eea961292fa91104f0;hp=11039e5e2b8cef231f49bef1175c4d4d94ee6ba3 merge --- diff --git a/config.mk b/config.mk index c40df0b..a5f0b6d 100644 --- a/config.mk +++ b/config.mk @@ -17,7 +17,7 @@ LIBS = -L/usr/lib -lc ${GTKLIB} -lgthread-2.0 # flags CPPFLAGS = -DVERSION=\"${VERSION}\" -CFLAGS = -std=c99 -pedantic -Wall -O0 -g ${INCS} ${CPPFLAGS} +CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} LDFLAGS = -g ${LIBS} # Solaris diff --git a/surf.c b/surf.c index 652889b..09cf840 100644 --- a/surf.c +++ b/surf.c @@ -18,6 +18,7 @@ #include #include #include +#include #define LENGTH(x) (sizeof x / sizeof x[0]) #define CLEANMASK(mask) (mask & ~(GDK_MOD2_MASK)) @@ -149,6 +150,19 @@ cleanup(void) { g_free(stylefile); } +void +runscript(WebKitWebFrame *frame, JSContextRef js) { + JSStringRef jsscript; + char *script; + JSValueRef exception = NULL; + GError *error; + + if(g_file_get_contents(scriptfile, &script, NULL, &error)) { + jsscript = JSStringCreateWithUTF8CString(script); + JSEvaluateScript(js, jsscript, JSContextGetGlobalObject(js), NULL, 0, &exception); + } +} + void clipboard(Client *c, const Arg *arg) { gboolean paste = *(gboolean *)arg; @@ -469,6 +483,7 @@ newclient(void) { int i; Client *c; WebKitWebSettings *settings; + WebKitWebFrame *frame; GdkGeometry hints = { 1, 1 }; char *uri, *ua; @@ -555,6 +570,8 @@ newclient(void) { gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK); gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c); webkit_web_view_set_full_content_zoom(c->view, TRUE); + frame = webkit_web_view_get_main_frame(c->view); + runscript(frame, webkit_web_frame_get_global_context(frame)); settings = webkit_web_view_get_settings(c->view); if(!(ua = getenv("SURF_USERAGENT"))) ua = useragent; @@ -704,6 +721,10 @@ scroll(Client *c, const Arg *arg) { void setcookie(SoupCookie *c) { + int lock; + + lock = open(cookiefile, 0); + flock(lock, LOCK_EX); SoupDate *e; SoupCookieJar *j = soup_cookie_jar_text_new(cookiefile, FALSE); c = soup_cookie_copy(c); @@ -713,6 +734,8 @@ setcookie(SoupCookie *c) { } soup_cookie_jar_add_cookie(j, c); g_object_unref(j); + flock(lock, LOCK_UN); + close(lock); } void @@ -853,15 +876,7 @@ usage(void) { void windowobjectcleared(GtkWidget *w, WebKitWebFrame *frame, JSContextRef js, JSObjectRef win, Client *c) { - JSStringRef jsscript; - char *script; - JSValueRef exception = NULL; - GError *error; - - if(g_file_get_contents(scriptfile, &script, NULL, &error)) { - jsscript = JSStringCreateWithUTF8CString(script); - JSEvaluateScript(js, jsscript, JSContextGetGlobalObject(js), NULL, 0, &exception); - } + runscript(frame, js); } void