Merge commit 'rob/master' into experimental
authorDuClare <akarinotengoku@gmail.com>
Tue, 19 May 2009 18:21:39 +0000 (21:21 +0300)
committerDuClare <akarinotengoku@gmail.com>
Tue, 19 May 2009 18:21:39 +0000 (21:21 +0300)
Also fixed a ptr bug in set_var_value.

Conflicts:
uzbl.c

1  2 
uzbl.c
uzbl.h

diff --cc uzbl.c
--- 1/uzbl.c
--- 2/uzbl.c
+++ b/uzbl.c
@@@ -971,6 -954,103 +965,106 @@@ set_proxy_url() 
      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() {
@@@ -1003,108 -1080,23 +1094,23 @@@ set_var_value(gchar *name, gchar *val) 
      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;
  }
@@@ -1869,10 -1861,9 +1875,9 @@@ main (int argc, char* argv[]) 
  
      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();
  
diff --cc uzbl.h
Simple merge