return;
}
+ static void
+ cmd_load_uri() {
- load_uri(uzbl.gui.web_view, uzbl.state.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);
++ g_array_free (a, TRUE);
+ }
+
+ static void
+ cmd_always_insert_mode() {
+ uzbl.behave.insert_mode =
+ uzbl.behave.always_insert_mode ? TRUE : FALSE;
+ update_title();
+ }
+
+ static void
+ cmd_max_conns() {
+ g_object_set(G_OBJECT(uzbl.net.soup_session),
+ SOUP_SESSION_MAX_CONNS, uzbl.net.max_conns, NULL);
+ }
+
+ static void
+ cmd_max_conns_host() {
+ g_object_set(G_OBJECT(uzbl.net.soup_session),
+ SOUP_SESSION_MAX_CONNS_PER_HOST, uzbl.net.max_conns_host, NULL);
+ }
+
+ static void
+ cmd_http_debug() {
+ soup_session_remove_feature
+ (uzbl.net.soup_session, SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
+ /* do we leak if this doesn't get freed? why does it occasionally crash if freed? */
+ /*g_free(uzbl.net.soup_logger);*/
+
+ uzbl.net.soup_logger = soup_logger_new(uzbl.behave.http_debug, -1);
+ soup_session_add_feature(uzbl.net.soup_session,
+ SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
+ }
+
+ static void
+ cmd_default_font_size() {
+ WebKitWebSettings *ws = webkit_web_view_get_settings(uzbl.gui.web_view);
+ g_object_set (G_OBJECT(ws), "default-font-size", uzbl.behave.default_font_size, NULL);
+ }
+
+ static void
+ cmd_minimum_font_size() {
+ WebKitWebSettings *ws = webkit_web_view_get_settings(uzbl.gui.web_view);
+ g_object_set (G_OBJECT(ws), "minimum-font-size", uzbl.behave.minimum_font_size, NULL);
+ }
+
+ static void
+ cmd_fifo_dir() {
+ char *buf;
+
+ buf = init_fifo(uzbl.behave.fifo_dir);
+ if(uzbl.behave.fifo_dir)
+ free(uzbl.behave.fifo_dir);
+
+ uzbl.behave.fifo_dir = buf?buf:g_strdup("");
+ }
+
+ static void
+ cmd_socket_dir() {
+ char *buf;
+
+ buf = init_socket(uzbl.behave.fifo_dir);
+ if(uzbl.behave.socket_dir)
+ free(uzbl.behave.socket_dir);
+
+ uzbl.behave.socket_dir = buf?buf:g_strdup("");
+ }
+
+ static void
+ cmd_modkey() {
+ int i;
+ char *buf;
+
+ buf = g_utf8_strup(uzbl.behave.modkey, -1);
+ uzbl.behave.modmask = 0;
+
+ if(uzbl.behave.modkey)
+ free(uzbl.behave.modkey);
+
+ for (i = 0; modkeys[i].key != NULL; i++) {
+ if (g_strrstr(uzbl.behave.modkey, modkeys[i].key))
+ uzbl.behave.modmask |= modkeys[i].mask;
+ }
+ }
+
+ static void
+ cmd_useragent() {
+ char *buf;
+
+ buf = set_useragent(uzbl.net.useragent);
+ if(uzbl.net.useragent)
+ free(uzbl.net.useragent);
+
+ uzbl.net.useragent = buf?buf:g_strdup("");
+ }
static void
move_statusbar() {
char *endp = NULL;
char *buf=NULL;
- if( (p = g_hash_table_lookup(uzbl.comm.proto_var, name)) ) {
- if(var_is("status_message", name)
- || var_is("status_background", name)
- || var_is("status_format", name)
- || var_is("title_format_long", name)
- || var_is("title_format_short", name)
- || var_is("load_finish_handler", name)
- || var_is("load_start_handler", name)
- || var_is("load_commit_handler", name)
- || var_is("history_handler", name)
- || var_is("download_handler", name)
- || var_is("cookie_handler", name)) {
- if(*p)
- free(*p);
- *p = g_strdup(val);
- update_title();
- }
- else if(var_is("uri", name)) {
- if(*p) free(*p);
- *p = g_strdup(val);
- GArray *a = g_array_new(TRUE, FALSE, sizeof(gchar*));
- g_array_append_val(a, *p);
- load_uri(uzbl.gui.web_view, a);
- g_array_free(a, TRUE);
- }
- else if(var_is("proxy_url", name)) {
- if(*p) free(*p);
- *p = g_strdup(val);
- set_proxy_url();
- }
- else if(var_is("fifo_dir", name)) {
- if(*p) free(*p);
- buf = init_fifo(val);
- *p = buf?buf:g_strdup("");
- }
- else if(var_is("socket_dir", name)) {
- if(*p) free(*p);
- buf = init_socket(val);
- *p = buf?buf:g_strdup("");
- }
- else if(var_is("modkey", name)) {
- if(*p) free(*p);
- int i;
- *p = g_utf8_strup(val, -1);
- uzbl.behave.modmask = 0;
- for (i = 0; modkeys[i].key != NULL; i++) {
- if (g_strrstr(*p, modkeys[i].key))
- uzbl.behave.modmask |= modkeys[i].mask;
- }
- }
- else if(var_is("useragent", name)) {
- if(*p) free(*p);
- buf = set_useragent(val);
- *p = buf?buf:g_strdup("");
- }
- else if(var_is("shell_cmd", name)) {
- if(*p) free(*p);
- *p = g_strdup(val);
- }
- /* variables that take int values */
- else {
- int *ip = (int *)p;
+ if( (c = g_hash_table_lookup(uzbl.comm.proto_var, name)) ) {
+ /* check for the variable type */
+ if (c->type == TYPE_STRING) {
+ free(*c->ptr);
+ *c->ptr = g_strdup(val);
+ } else if(c->type == TYPE_INT) {
- *c->ptr = (int)strtoul(val, &endp, 10);
++ int *ip = c->ptr;
+ *ip = (int)strtoul(val, &endp, 10);
-
- if(var_is("show_status", name)) {
- cmd_set_status();
- }
- else if(var_is("always_insert_mode", name)) {
- uzbl.behave.insert_mode =
- uzbl.behave.always_insert_mode ? TRUE : FALSE;
- update_title();
- }
- else if (var_is("max_conns", name)) {
- g_object_set(G_OBJECT(uzbl.net.soup_session),
- SOUP_SESSION_MAX_CONNS, uzbl.net.max_conns, NULL);
- }
- else if (var_is("max_conns_host", name)) {
- g_object_set(G_OBJECT(uzbl.net.soup_session),
- SOUP_SESSION_MAX_CONNS_PER_HOST, uzbl.net.max_conns_host, NULL);
- }
- else if (var_is("http_debug", name)) {
- soup_session_remove_feature
- (uzbl.net.soup_session, SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
- /* do we leak if this doesn't get freed? why does it occasionally crash if freed? */
- /*g_free(uzbl.net.soup_logger);*/
-
- uzbl.net.soup_logger = soup_logger_new(uzbl.behave.http_debug, -1);
- soup_session_add_feature(uzbl.net.soup_session,
- SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
- }
- else if (var_is("status_top", name)) {
- move_statusbar();
- }
- else if (var_is("default_font_size", name)) {
- WebKitWebSettings *ws = webkit_web_view_get_settings(uzbl.gui.web_view);
- g_object_set (G_OBJECT(ws), "default-font-size", *ip, NULL);
- }
- else if (var_is("minimum_font_size", name)) {
- WebKitWebSettings *ws = webkit_web_view_get_settings(uzbl.gui.web_view);
- g_object_set (G_OBJECT(ws), "minimum-font-size", *ip, NULL);
- }
}
+
+ /* invoke a command specific function */
- if(c->func)
- c->func();
++ if(c->func) c->func();
+
+ /* this will be removed as soon as we have converted to
+ * the callback interface
+ */
+ p = *c->ptr;
}
return TRUE;
}
create_stdin();
- if(uzbl.state.uri)
- load_uri (uzbl.gui.web_view, uzbl.state.uri);
+ //if(uzbl.state.uri)
+ // load_uri (uzbl.gui.web_view, uzbl.state.uri);
-
gtk_main ();
clean_up();