aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl.c
diff options
context:
space:
mode:
authorGravatar Robert Manea <gotmor@gmail.com>2009-06-16 09:59:59 +0200
committerGravatar Robert Manea <gotmor@gmail.com>2009-06-16 09:59:59 +0200
commitb69be185c01329f7c29d28eb137ef19f19b5f7ab (patch)
tree453433a4bea25ecb2195bd76b091bdbdc76541ba /uzbl.c
parent1b52ae218fe67928580427723f534fd4d6742dbd (diff)
parentfedfe2c06b3e01d5dede2cbab395a0ab48bb94e9 (diff)
fix conflicts
Diffstat (limited to 'uzbl.c')
-rw-r--r--uzbl.c357
1 files changed, 238 insertions, 119 deletions
diff --git a/uzbl.c b/uzbl.c
index ff05b15..a5aee1a 100644
--- a/uzbl.c
+++ b/uzbl.c
@@ -45,6 +45,7 @@
#include <sys/time.h>
#include <webkit/webkit.h>
#include <libsoup/soup.h>
+#include <JavaScriptCore/JavaScript.h>
#include <stdio.h>
#include <string.h>
@@ -57,7 +58,6 @@
#include "config.h"
static Uzbl uzbl;
-typedef void (*Command)(WebKitWebView*, GArray *argv);
@@ -509,27 +509,27 @@ scroll (GtkAdjustment* bar, GArray *argv) {
}
static void
-scroll_begin(WebKitWebView* page, GArray *argv) {
- (void) page; (void) argv;
+scroll_begin(WebKitWebView* page, GArray *argv, GString *result) {
+ (void) page; (void) argv; (void) result;
gtk_adjustment_set_value (uzbl.gui.bar_v, gtk_adjustment_get_lower(uzbl.gui.bar_v));
}
static void
-scroll_end(WebKitWebView* page, GArray *argv) {
- (void) page; (void) argv;
+scroll_end(WebKitWebView* page, GArray *argv, GString *result) {
+ (void) page; (void) argv; (void) result;
gtk_adjustment_set_value (uzbl.gui.bar_v, gtk_adjustment_get_upper(uzbl.gui.bar_v) -
gtk_adjustment_get_page_size(uzbl.gui.bar_v));
}
static void
-scroll_vert(WebKitWebView* page, GArray *argv) {
- (void) page;
+scroll_vert(WebKitWebView* page, GArray *argv, GString *result) {
+ (void) page; (void) result;
scroll(uzbl.gui.bar_v, argv);
}
static void
-scroll_horz(WebKitWebView* page, GArray *argv) {
- (void) page;
+scroll_horz(WebKitWebView* page, GArray *argv, GString *result) {
+ (void) page; (void) result;
scroll(uzbl.gui.bar_h, argv);
}
@@ -544,17 +544,19 @@ cmd_set_status() {
}
static void
-toggle_zoom_type (WebKitWebView* page, GArray *argv) {
+toggle_zoom_type (WebKitWebView* page, GArray *argv, GString *result) {
(void)page;
(void)argv;
+ (void)result;
webkit_web_view_set_full_content_zoom (page, !webkit_web_view_get_full_content_zoom (page));
}
static void
-toggle_status_cb (WebKitWebView* page, GArray *argv) {
+toggle_status_cb (WebKitWebView* page, GArray *argv, GString *result) {
(void)page;
(void)argv;
+ (void)result;
if (uzbl.behave.show_status) {
gtk_widget_hide(uzbl.gui.mainbar);
@@ -655,7 +657,7 @@ log_history_cb () {
/* VIEW funcs (little webkit wrappers) */
-#define VIEWFUNC(name) static void view_##name(WebKitWebView *page, GArray *argv){(void)argv; webkit_web_view_##name(page);}
+#define VIEWFUNC(name) static void view_##name(WebKitWebView *page, GArray *argv, GString *result){(void)argv; (void)result; webkit_web_view_##name(page);}
VIEWFUNC(reload)
VIEWFUNC(reload_bypass_cache)
VIEWFUNC(stop_loading)
@@ -666,7 +668,7 @@ VIEWFUNC(go_forward)
#undef VIEWFUNC
/* -- command to callback/function map for things we cannot attach to any signals */
-static struct {char *name; Command command[2];} cmdlist[] =
+static struct {char *key; CommandInfo value;} cmdlist[] =
{ /* key function no_split */
{ "back", {view_go_back, 0} },
{ "forward", {view_go_forward, 0} },
@@ -680,8 +682,8 @@ static struct {char *name; Command command[2];} cmdlist[] =
{ "zoom_in", {view_zoom_in, 0}, }, //Can crash (when max zoom reached?).
{ "zoom_out", {view_zoom_out, 0}, },
{ "toggle_zoom_type", {toggle_zoom_type, 0}, },
- { "uri", {load_uri, NOSPLIT} },
- { "js", {run_js, NOSPLIT} },
+ { "uri", {load_uri, TRUE} },
+ { "js", {run_js, TRUE} },
{ "script", {run_external_js, 0} },
{ "toggle_status", {toggle_status_cb, 0} },
{ "spawn", {spawn, 0} },
@@ -689,19 +691,19 @@ static struct {char *name; Command command[2];} cmdlist[] =
{ "sh", {spawn_sh, 0} },
{ "sync_sh", {spawn_sh_sync, 0} }, // needed for cookie handler
{ "exit", {close_uzbl, 0} },
- { "search", {search_forward_text, NOSPLIT} },
- { "search_reverse", {search_reverse_text, NOSPLIT} },
+ { "search", {search_forward_text, TRUE} },
+ { "search_reverse", {search_reverse_text, TRUE} },
{ "dehilight", {dehilight, 0} },
{ "toggle_insert_mode", {toggle_insert_mode, 0} },
- { "set", {set_var, NOSPLIT} },
- //{ "get", {get_var, NOSPLIT} },
- { "bind", {act_bind, NOSPLIT} },
+ { "set", {set_var, TRUE} },
+ //{ "get", {get_var, TRUE} },
+ { "bind", {act_bind, TRUE} },
{ "dump_config", {act_dump_config, 0} },
- { "keycmd", {keycmd, NOSPLIT} },
- { "keycmd_nl", {keycmd_nl, NOSPLIT} },
+ { "keycmd", {keycmd, TRUE} },
+ { "keycmd_nl", {keycmd_nl, TRUE} },
{ "keycmd_bs", {keycmd_bs, 0} },
{ "chain", {chain, 0} },
- { "print", {print, NOSPLIT} }
+ { "print", {print, TRUE} }
};
static void
@@ -711,7 +713,7 @@ commands_hash(void)
uzbl.behave.commands = g_hash_table_new(g_str_hash, g_str_equal);
for (i = 0; i < LENGTH(cmdlist); i++)
- g_hash_table_insert(uzbl.behave.commands, cmdlist[i].name, cmdlist[i].command);
+ g_hash_table_insert(uzbl.behave.commands, cmdlist[i].key, &cmdlist[i].value);
}
/* -- CORE FUNCTIONS -- */
@@ -744,8 +746,8 @@ file_exists (const char * filename) {
}
static void
-set_var(WebKitWebView *page, GArray *argv) {
- (void) page;
+set_var(WebKitWebView *page, GArray *argv, GString *result) {
+ (void) page; (void) result;
gchar **split = g_strsplit(argv_idx(argv, 0), "=", 2);
gchar *value = parseenv(g_strdup(split[1] ? g_strchug(split[1]) : " "));
set_var_value(g_strstrip(split[0]), value);
@@ -754,18 +756,18 @@ set_var(WebKitWebView *page, GArray *argv) {
}
static void
-print(WebKitWebView *page, GArray *argv) {
- (void) page;
+print(WebKitWebView *page, GArray *argv, GString *result) {
+ (void) page; (void) result;
gchar* buf;
- buf = expand(argv_idx(argv, 0), 0);
- puts(buf);
+ buf = expand_vars(argv_idx(argv, 0));
+ g_string_assign(result, buf);
g_free(buf);
}
static void
-act_bind(WebKitWebView *page, GArray *argv) {
- (void) page;
+act_bind(WebKitWebView *page, GArray *argv, GString *result) {
+ (void) page; (void) result;
gchar **split = g_strsplit(argv_idx(argv, 0), " = ", 2);
gchar *value = parseenv(g_strdup(split[1] ? g_strchug(split[1]) : " "));
add_binding(g_strstrip(split[0]), value);
@@ -780,8 +782,8 @@ act_dump_config() {
}
static void
-toggle_insert_mode(WebKitWebView *page, GArray *argv) {
- (void)page;
+toggle_insert_mode(WebKitWebView *page, GArray *argv, GString *result) {
+ (void) page; (void) result;
if (argv_idx(argv, 0)) {
if (strcmp (argv_idx(argv, 0), "0") == 0) {
@@ -797,11 +799,13 @@ toggle_insert_mode(WebKitWebView *page, GArray *argv) {
}
static void
-load_uri (WebKitWebView *web_view, GArray *argv) {
+load_uri (WebKitWebView *web_view, GArray *argv, GString *result) {
+ (void) result;
+
if (argv_idx(argv, 0)) {
GString* newuri = g_string_new (argv_idx(argv, 0));
if (g_strstr_len (argv_idx(argv, 0), 11, "javascript:") != NULL) {
- run_js(web_view, argv);
+ run_js(web_view, argv, NULL);
return;
}
if (g_strrstr (argv_idx(argv, 0), "://") == NULL && g_strstr_len (argv_idx(argv, 0), 5, "data:") == NULL)
@@ -812,14 +816,111 @@ load_uri (WebKitWebView *web_view, GArray *argv) {
}
}
+
+/* Javascript*/
+
+static JSValueRef
+js_run_command (JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject,
+ size_t argumentCount, const JSValueRef arguments[],
+ JSValueRef* exception) {
+ (void) function;
+ (void) thisObject;
+ (void) exception;
+
+ JSStringRef js_result_string;
+ GString *result = g_string_new("");
+
+ if (argumentCount >= 1) {
+ JSStringRef arg = JSValueToStringCopy(ctx, arguments[0], NULL);
+ size_t arg_size = JSStringGetMaximumUTF8CStringSize(arg);
+ char ctl_line[arg_size];
+ JSStringGetUTF8CString(arg, ctl_line, arg_size);
+
+ parse_cmd_line(ctl_line, result);
+
+ JSStringRelease(arg);
+ }
+ js_result_string = JSStringCreateWithUTF8CString(result->str);
+
+ g_string_free(result, TRUE);
+
+ return JSValueMakeString(ctx, js_result_string);
+}
+
+static JSStaticFunction js_static_functions[] = {
+ {"run", js_run_command, kJSPropertyAttributeNone},
+};
+
+static void
+js_init() {
+ /* This function creates the class and its definition, only once */
+ if (!uzbl.js.initialized) {
+ /* it would be pretty cool to make this dynamic */
+ uzbl.js.classdef = kJSClassDefinitionEmpty;
+ uzbl.js.classdef.staticFunctions = js_static_functions;
+
+ uzbl.js.classref = JSClassCreate(&uzbl.js.classdef);
+ }
+}
+
+
+static void
+eval_js(WebKitWebView * web_view, gchar *script, GString *result) {
+ WebKitWebFrame *frame;
+ JSGlobalContextRef context;
+ JSObjectRef globalobject;
+ JSStringRef var_name;
+
+ JSStringRef js_script;
+ JSValueRef js_result;
+ JSStringRef js_result_string;
+ size_t js_result_size;
+
+ js_init();
+
+ frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(web_view));
+ context = webkit_web_frame_get_global_context(frame);
+ globalobject = JSContextGetGlobalObject(context);
+
+ /* uzbl javascript namespace */
+ var_name = JSStringCreateWithUTF8CString("Uzbl");
+ JSObjectSetProperty(context, globalobject, var_name,
+ JSObjectMake(context, uzbl.js.classref, NULL),
+ kJSClassAttributeNone, NULL);
+
+ /* evaluate the script and get return value*/
+ js_script = JSStringCreateWithUTF8CString(script);
+ js_result = JSEvaluateScript(context, js_script, globalobject, NULL, 0, NULL);
+ if (js_result && !JSValueIsUndefined(context, js_result)) {
+ js_result_string = JSValueToStringCopy(context, js_result, NULL);
+ js_result_size = JSStringGetMaximumUTF8CStringSize(js_result_string);
+
+ if (js_result_size) {
+ char js_result_utf8[js_result_size];
+ JSStringGetUTF8CString(js_result_string, js_result_utf8, js_result_size);
+ g_string_assign(result, js_result_utf8);
+ }
+
+ JSStringRelease(js_result_string);
+ }
+
+ /* cleanup */
+ JSObjectDeleteProperty(context, globalobject, var_name, NULL);
+
+ JSStringRelease(var_name);
+ JSStringRelease(js_script);
+}
+
static void
-run_js (WebKitWebView * web_view, GArray *argv) {
+run_js (WebKitWebView * web_view, GArray *argv, GString *result) {
+
if (argv_idx(argv, 0))
- webkit_web_view_execute_script (web_view, argv_idx(argv, 0));
+ eval_js(web_view, argv_idx(argv, 0), result);
}
static void
-run_external_js (WebKitWebView * web_view, GArray *argv) {
+run_external_js (WebKitWebView * web_view, GArray *argv, GString *result) {
+ (void) result;
if (argv_idx(argv, 0)) {
GArray* lines = read_file_by_line (argv_idx (argv, 0));
gchar* js = NULL;
@@ -845,7 +946,7 @@ run_external_js (WebKitWebView * web_view, GArray *argv) {
g_free (js);
js = newjs;
}
- webkit_web_view_execute_script (web_view, js);
+ eval_js (web_view, js, result);
g_free (js);
g_array_free (lines, TRUE);
}
@@ -870,18 +971,20 @@ search_text (WebKitWebView *page, GArray *argv, const gboolean forward) {
}
static void
-search_forward_text (WebKitWebView *page, GArray *argv) {
+search_forward_text (WebKitWebView *page, GArray *argv, GString *result) {
+ (void) result;
search_text(page, argv, TRUE);
}
static void
-search_reverse_text (WebKitWebView *page, GArray *argv) {
+search_reverse_text (WebKitWebView *page, GArray *argv, GString *result) {
+ (void) result;
search_text(page, argv, FALSE);
}
static void
-dehilight (WebKitWebView *page, GArray *argv) {
- (void) argv;
+dehilight (WebKitWebView *page, GArray *argv, GString *result) {
+ (void) argv; (void) result;
webkit_web_view_set_highlight_text_matches (page, FALSE);
}
@@ -906,31 +1009,33 @@ new_window_load_uri (const gchar * uri) {
}
static void
-chain (WebKitWebView *page, GArray *argv) {
- (void)page;
+chain (WebKitWebView *page, GArray *argv, GString *result) {
+ (void) page; (void) result;
gchar *a = NULL;
gchar **parts = NULL;
guint i = 0;
while ((a = argv_idx(argv, i++))) {
parts = g_strsplit (a, " ", 2);
- parse_command(parts[0], parts[1]);
+ parse_command(parts[0], parts[1], result);
g_strfreev (parts);
}
}
static void
-keycmd (WebKitWebView *page, GArray *argv) {
+keycmd (WebKitWebView *page, GArray *argv, GString *result) {
(void)page;
(void)argv;
+ (void)result;
g_string_assign(uzbl.state.keycmd, argv_idx(argv, 0));
run_keycmd(FALSE);
update_title();
}
static void
-keycmd_nl (WebKitWebView *page, GArray *argv) {
+keycmd_nl (WebKitWebView *page, GArray *argv, GString *result) {
(void)page;
(void)argv;
+ (void)result;
g_string_assign(uzbl.state.keycmd, argv_idx(argv, 0));
run_keycmd(TRUE);
update_title();
@@ -948,9 +1053,10 @@ keycmd_bs (WebKitWebView *page, GArray *argv) {
}
static void
-close_uzbl (WebKitWebView *page, GArray *argv) {
+close_uzbl (WebKitWebView *page, GArray *argv, GString *result) {
(void)page;
(void)argv;
+ (void)result;
gtk_main_quit ();
}
@@ -1279,16 +1385,16 @@ split_quoted(const gchar* src, const gboolean unquote) {
}
static void
-spawn(WebKitWebView *web_view, GArray *argv) {
- (void)web_view;
+spawn(WebKitWebView *web_view, GArray *argv, GString *result) {
+ (void)web_view; (void)result;
//TODO: allow more control over argument order so that users can have some arguments before the default ones from run_command, and some after
if (argv_idx(argv, 0))
run_command(argv_idx(argv, 0), 0, ((const gchar **) (argv->data + sizeof(gchar*))), FALSE, NULL);
}
static void
-spawn_sync(WebKitWebView *web_view, GArray *argv) {
- (void)web_view;
+spawn_sync(WebKitWebView *web_view, GArray *argv, GString *result) {
+ (void)web_view; (void)result;
if (argv_idx(argv, 0))
run_command(argv_idx(argv, 0), 0, ((const gchar **) (argv->data + sizeof(gchar*))),
@@ -1296,8 +1402,8 @@ spawn_sync(WebKitWebView *web_view, GArray *argv) {
}
static void
-spawn_sh(WebKitWebView *web_view, GArray *argv) {
- (void)web_view;
+spawn_sh(WebKitWebView *web_view, GArray *argv, GString *result) {
+ (void)web_view; (void)result;
if (!uzbl.behave.shell_cmd) {
g_printerr ("spawn_sh: shell_cmd is not set!\n");
return;
@@ -1317,8 +1423,8 @@ spawn_sh(WebKitWebView *web_view, GArray *argv) {
}
static void
-spawn_sh_sync(WebKitWebView *web_view, GArray *argv) {
- (void)web_view;
+spawn_sh_sync(WebKitWebView *web_view, GArray *argv, GString *result) {
+ (void)web_view; (void)result;
if (!uzbl.behave.shell_cmd) {
g_printerr ("spawn_sh_sync: shell_cmd is not set!\n");
return;
@@ -1339,22 +1445,32 @@ spawn_sh_sync(WebKitWebView *web_view, GArray *argv) {
}
static void
-parse_command(const char *cmd, const char *param) {
- Command *c;
+parse_command(const char *cmd, const char *param, GString *result) {
+ CommandInfo *c;
if ((c = g_hash_table_lookup(uzbl.behave.commands, cmd))) {
-
guint i;
gchar **par = split_quoted(param, TRUE);
GArray *a = g_array_new (TRUE, FALSE, sizeof(gchar*));
- if (c[1] == NOSPLIT) { /* don't split */
+ if (c->no_split) { /* don't split */
sharg_append(a, param);
} else if (par) {
for (i = 0; i < g_strv_length(par); i++)
sharg_append(a, par[i]);
}
- c[0](uzbl.gui.web_view, a);
+
+ if (result == NULL) {
+ GString *result_print = g_string_new("");
+
+ c->function(uzbl.gui.web_view, a, result_print);
+ if (result_print->len)
+ printf("%*s\n", result_print->len, result_print->str);
+
+ g_string_free(result_print, TRUE);
+ } else {
+ c->function(uzbl.gui.web_view, a, result);
+ }
g_strfreev (par);
g_array_free (a, TRUE);
@@ -1396,7 +1512,7 @@ static void
cmd_load_uri() {
GArray *a = g_array_new (TRUE, FALSE, sizeof(gchar*));
g_array_append_val (a, uzbl.state.uri);
- load_uri(uzbl.gui.web_view, a);
+ load_uri(uzbl.gui.web_view, a, NULL);
g_array_free (a, TRUE);
}
@@ -1664,7 +1780,7 @@ render_html() {
enum {M_CMD, M_HTML};
static void
-parse_cmd_line(const char *ctl_line) {
+parse_cmd_line(const char *ctl_line, GString *result) {
Behaviour *b = &uzbl.behave;
size_t len=0;
@@ -1697,7 +1813,7 @@ parse_cmd_line(const char *ctl_line) {
else ctlstrip = g_strdup(ctl_line);
tokens = g_strsplit(ctlstrip, " ", 2);
- parse_command(tokens[0], tokens[1]);
+ parse_command(tokens[0], tokens[1], result);
g_free(ctlstrip);
g_strfreev(tokens);
}
@@ -1743,7 +1859,7 @@ control_fifo(GIOChannel *gio, GIOCondition condition) {
g_error_free (err);
}
- parse_cmd_line(ctl_line);
+ parse_cmd_line(ctl_line, NULL);
g_free(ctl_line);
return TRUE;
@@ -1799,7 +1915,7 @@ control_stdin(GIOChannel *gio, GIOCondition condition) {
if ( (ret == G_IO_STATUS_ERROR) || (ret == G_IO_STATUS_EOF) )
return FALSE;
- parse_cmd_line(ctl_line);
+ parse_cmd_line(ctl_line, NULL);
g_free(ctl_line);
return TRUE;
@@ -1827,53 +1943,53 @@ create_stdin () {
static gboolean
control_socket(GIOChannel *chan) {
struct sockaddr_un remote;
- char buffer[512], *ctl_line;
- char temp[128];
- int sock, clientsock, n, done;
- unsigned int t;
-
- sock = g_io_channel_unix_get_fd(chan);
+ unsigned int t = sizeof(remote);
+ int clientsock;
+ GIOChannel *clientchan;
- memset (buffer, 0, sizeof (buffer));
-
- t = sizeof (remote);
- clientsock = accept (sock, (struct sockaddr *) &remote, &t);
-
- done = 0;
- do {
- memset (temp, 0, sizeof (temp));
- n = recv (clientsock, temp, 128, 0);
- if (n == 0) {
- buffer[strlen (buffer)] = '\0';
- done = 1;
- }
- if (!done)
- strcat (buffer, temp);
- } while (!done);
-
- if (strcmp (buffer, "\n") < 0) {
- buffer[strlen (buffer) - 1] = '\0';
- } else {
- buffer[strlen (buffer)] = '\0';
+ clientsock = accept (g_io_channel_unix_get_fd(chan),
+ (struct sockaddr *) &remote, &t);
+
+ if ((clientchan = g_io_channel_unix_new(clientsock))) {
+ g_io_add_watch(clientchan, G_IO_IN|G_IO_HUP,
+ (GIOFunc) control_client_socket, clientchan);
}
- close (clientsock);
- ctl_line = g_strdup(buffer);
- parse_cmd_line (ctl_line);
-/*
- TODO: we should be able to do it with this. but glib errors out with "Invalid argument"
+ return TRUE;
+}
+
+static gboolean
+control_client_socket(GIOChannel *clientchan) {
+ char *ctl_line;
+ GString *result = g_string_new("");
GError *error = NULL;
- gsize len;
GIOStatus ret;
- ret = g_io_channel_read_line(chan, &ctl_line, &len, NULL, &error);
- if (ret == G_IO_STATUS_ERROR)
- g_error ("Error reading: %s\n", error->message);
+ gsize len;
- printf("Got line %s (%u bytes) \n",ctl_line, len);
- if(ctl_line) {
- parse_line(ctl_line);
-*/
+ ret = g_io_channel_read_line(clientchan, &ctl_line, &len, NULL, &error);
+ if (ret == G_IO_STATUS_ERROR) {
+ g_warning ("Error reading: %s\n", error->message);
+ g_io_channel_shutdown(clientchan, TRUE, &error);
+ return FALSE;
+ } else if (ret == G_IO_STATUS_EOF) {
+ /* shutdown and remove channel watch from main loop */
+ g_io_channel_shutdown(clientchan, TRUE, &error);
+ return FALSE;
+ }
+ if (ctl_line) {
+ parse_cmd_line (ctl_line, result);
+ g_string_append_c(result, '\n');
+ ret = g_io_channel_write_chars (clientchan, result->str, result->len,
+ &len, &error);
+ if (ret == G_IO_STATUS_ERROR) {
+ g_warning ("Error writing: %s", error->message);
+ }
+ g_io_channel_flush(clientchan, &error);
+ }
+
+ if (error) g_error_free (error);
+ g_string_free(result, TRUE);
g_free(ctl_line);
return TRUE;
}
@@ -1985,7 +2101,7 @@ key_press_cb (GtkWidget* window, GdkEventKey* event)
if (event->keyval == GDK_Escape) {
g_string_truncate(uzbl.state.keycmd, 0);
update_title();
- dehilight(uzbl.gui.web_view, NULL);
+ dehilight(uzbl.gui.web_view, NULL, NULL);
return TRUE;
}
@@ -2006,7 +2122,7 @@ key_press_cb (GtkWidget* window, GdkEventKey* event)
}
if (event->keyval == GDK_BackSpace)
- keycmd_bs(NULL, NULL);
+ keycmd_bs(NULL, NULL, NULL);
gboolean key_ret = FALSE;
if ((event->keyval == GDK_Return) || (event->keyval == GDK_KP_Enter))
@@ -2025,7 +2141,7 @@ run_keycmd(const gboolean key_ret) {
Action *act;
if ((act = g_hash_table_lookup(uzbl.bindings, uzbl.state.keycmd->str))) {
g_string_truncate(uzbl.state.keycmd, 0);
- parse_command(act->name, act->param);
+ parse_command(act->name, act->param, NULL);
return;
}
@@ -2067,7 +2183,7 @@ exec_paramcmd(const Action *act, const guint i) {
g_string_printf (actionname, act->name, parampart->str);
if (act->param)
g_string_printf (actionparam, act->param, parampart->str);
- parse_command(actionname->str, actionparam->str);
+ parse_command(actionname->str, actionparam->str, NULL);
g_string_free(actionname, TRUE);
g_string_free(actionparam, TRUE);
g_string_free(parampart, TRUE);
@@ -2228,13 +2344,13 @@ run_handler (const gchar *act, const gchar *args) {
cp++;
}
- parse_command(parts[0], &(newargs->str[1]));
+ parse_command(parts[0], &(newargs->str[1]), NULL);
g_string_free(newargs, TRUE);
g_strfreev(chainparts);
} else {
gchar **inparts = inject_handler_args(parts[0], parts[1], args);
- parse_command(inparts[0], inparts[1]);
+ parse_command(inparts[0], inparts[1], NULL);
g_free(inparts[0]);
g_free(inparts[1]);
}
@@ -2318,7 +2434,12 @@ settings_init () {
Network *n = &uzbl.net;
int i;
for (i = 0; default_config[i].command != NULL; i++) {
- parse_cmd_line(default_config[i].command);
+ parse_cmd_line(default_config[i].command, NULL);
+ }
+
+ if (g_strcmp0(s->config_file, "-") == 0) {
+ s->config_file = NULL;
+ create_stdin();
}
if (!s->config_file) {
@@ -2331,7 +2452,7 @@ settings_init () {
gchar* line;
while ((line = g_array_index(lines, gchar*, i))) {
- parse_cmd_line (line);
+ parse_cmd_line (line, NULL);
i ++;
g_free (line);
}
@@ -2606,9 +2727,7 @@ main (int argc, char* argv[]) {
/* WebInspector */
set_up_inspector();
-
- create_stdin();
-
+
if (verbose_override > uzbl.state.verbose)
uzbl.state.verbose = verbose_override;