diff options
author | Robert Manea <gotmor@gmail.com> | 2009-10-20 15:32:07 +0200 |
---|---|---|
committer | Robert Manea <gotmor@gmail.com> | 2009-10-20 15:32:07 +0200 |
commit | bb5efd8d5e44518ecbeb91776dff988a9ff29154 (patch) | |
tree | 4c674bae2070288a61c13b8e8479ab565065ae01 | |
parent | a8f9841e47a1caafd31bc976676d41f926bc8fd0 (diff) | |
parent | ac94640f72277e23cf82183227dcef8bce196f49 (diff) |
Merge branch 'cleanup' of git://github.com/keis/uzbl into experimental
-rw-r--r-- | callbacks.c | 5 | ||||
-rw-r--r-- | events.c | 2 | ||||
-rw-r--r-- | uzbl-core.c | 122 | ||||
-rw-r--r-- | uzbl-core.h | 19 |
4 files changed, 58 insertions, 90 deletions
diff --git a/callbacks.c b/callbacks.c index a9cdc79..1cf7221 100644 --- a/callbacks.c +++ b/callbacks.c @@ -62,10 +62,7 @@ cmd_set_status() { 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, NULL); - g_array_free (a, TRUE); + load_uri_imp (uzbl.state.uri); } void @@ -152,7 +152,7 @@ send_event(int type, const gchar *details, const gchar *custom_event) { /* expand shell vars */ if(details) { buf = g_strdup(details); - p_val = parseenv(g_strdup(buf ? g_strchug(buf) : " ")); + p_val = parseenv(buf ? g_strchug(buf) : " "); g_free(buf); } diff --git a/uzbl-core.c b/uzbl-core.c index b7192af..ef9852b 100644 --- a/uzbl-core.c +++ b/uzbl-core.c @@ -444,21 +444,22 @@ find_existing_file(gchar* path_list) { } +/* Returns a new string with environment $variables expanded */ gchar* -parseenv (char* string) { +parseenv (gchar* string) { extern char** environ; - gchar* tmpstr = NULL; + gchar* tmpstr = NULL, * out; int i = 0; + out = g_strdup(string); while (environ[i] != NULL) { gchar** env = g_strsplit (environ[i], "=", 2); gchar* envname = g_strconcat ("$", env[0], NULL); if (g_strrstr (string, envname) != NULL) { - tmpstr = g_strdup(string); - g_free (string); - string = str_replace(envname, env[1], tmpstr); + tmpstr = out; + out = str_replace(envname, env[1], out); g_free (tmpstr); } @@ -467,7 +468,7 @@ parseenv (char* string) { i++; } - return string; + return out; } @@ -664,28 +665,6 @@ commands_hash(void) /* -- CORE FUNCTIONS -- */ -void -free_action(gpointer act) { - Action *action = (Action*)act; - g_free(action->name); - if (action->param) - g_free(action->param); - g_free(action); -} - -Action* -new_action(const gchar *name, const gchar *param) { - Action *action = g_new(Action, 1); - - action->name = g_strdup(name); - if (param) - action->param = g_strdup(param); - else - action->param = NULL; - - return action; -} - bool file_exists (const char * filename) { return (access(filename, F_OK) == 0); @@ -696,7 +675,7 @@ set_var(WebKitWebView *page, GArray *argv, GString *result) { (void) page; (void) result; gchar **split = g_strsplit(argv_idx(argv, 0), "=", 2); if (split[0] != NULL) { - gchar *value = parseenv(g_strdup(split[1] ? g_strchug(split[1]) : " ")); + gchar *value = parseenv(split[1] ? g_strchug(split[1]) : " "); set_var_value(g_strstrip(split[0]), value); g_free(value); } @@ -921,37 +900,8 @@ act_dump_config_as_events() { void 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, NULL); - return; - } - if (!soup_uri_new(argv_idx(argv, 0))) { - GString* fullpath = g_string_new (""); - if (g_path_is_absolute (newuri->str)) - g_string_assign (fullpath, newuri->str); - else { - gchar* wd; - wd = g_get_current_dir (); - g_string_assign (fullpath, g_build_filename (wd, newuri->str, NULL)); - free(wd); - } - struct stat stat_result; - if (! g_stat(fullpath->str, &stat_result)) { - g_string_prepend (fullpath, "file://"); - g_string_assign (newuri, fullpath->str); - } - else - g_string_prepend (newuri, "http://"); - g_string_free (fullpath, TRUE); - } - /* if we do handle cookies, ask our handler for them */ - webkit_web_view_load_uri (web_view, newuri->str); - g_string_free (newuri, TRUE); - } + (void) web_view; (void) result; + load_uri_imp (argv_idx (argv, 0)); } /* Javascript*/ @@ -1509,8 +1459,8 @@ move_statusbar() { !uzbl.gui.mainbar) return; - gtk_widget_ref(uzbl.gui.scrolled_win); - gtk_widget_ref(uzbl.gui.mainbar); + g_object_ref(uzbl.gui.scrolled_win); + g_object_ref(uzbl.gui.mainbar); gtk_container_remove(GTK_CONTAINER(uzbl.gui.vbox), uzbl.gui.scrolled_win); gtk_container_remove(GTK_CONTAINER(uzbl.gui.vbox), uzbl.gui.mainbar); @@ -1522,8 +1472,8 @@ move_statusbar() { gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.scrolled_win, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.mainbar, FALSE, TRUE, 0); } - gtk_widget_unref(uzbl.gui.scrolled_win); - gtk_widget_unref(uzbl.gui.mainbar); + g_object_unref(uzbl.gui.scrolled_win); + g_object_unref(uzbl.gui.mainbar); gtk_widget_grab_focus (GTK_WIDGET (uzbl.gui.web_view)); return; } @@ -1571,13 +1521,13 @@ set_var_value(const gchar *name, gchar *val) { } /* custom vars */ - c = malloc(sizeof(uzbl_cmdprop)); + c = g_malloc(sizeof(uzbl_cmdprop)); c->type = TYPE_STR; c->dump = 0; c->func = NULL; c->writeable = 1; buf = g_strdup(val); - c->ptr.s = malloc(sizeof(char *)); + c->ptr.s = g_malloc(sizeof(char *)); *c->ptr.s = buf; g_hash_table_insert(uzbl.comm.proto_var, g_strdup(name), (gpointer) c); @@ -2315,6 +2265,8 @@ void initialize(int argc, char *argv[]) { if (!g_thread_supported ()) g_thread_init (NULL); + gtk_init (&argc, &argv); + uzbl.state.executable_path = g_strdup(argv[0]); uzbl.state.selected_url = NULL; uzbl.state.searchtx = NULL; @@ -2357,14 +2309,45 @@ initialize(int argc, char *argv[]) { create_browser(); } +void +load_uri_imp(gchar *uri) { + GString* newuri; + if (g_strstr_len (uri, 11, "javascript:") != NULL) { + eval_js(uzbl.gui.web_view, uri, NULL); + return; + } + newuri = g_string_new (uri); + if (!soup_uri_new(uri)) { + GString* fullpath = g_string_new (""); + if (g_path_is_absolute (newuri->str)) + g_string_assign (fullpath, newuri->str); + else { + gchar* wd; + wd = g_get_current_dir (); + g_string_assign (fullpath, g_build_filename (wd, newuri->str, NULL)); + free(wd); + } + struct stat stat_result; + if (! g_stat(fullpath->str, &stat_result)) { + g_string_prepend (fullpath, "file://"); + g_string_assign (newuri, fullpath->str); + } + else + g_string_prepend (newuri, "http://"); + g_string_free (fullpath, TRUE); + } + /* if we do handle cookies, ask our handler for them */ + webkit_web_view_load_uri (uzbl.gui.web_view, newuri->str); + g_string_free (newuri, TRUE); +} + + #ifndef UZBL_LIBRARY /** -- MAIN -- **/ int main (int argc, char* argv[]) { initialize(argc, argv); - gtk_init (&argc, &argv); - uzbl.gui.scrolled_win = gtk_scrolled_window_new (NULL, NULL); //main_window_ref = g_object_ref(scrolled_window); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (uzbl.gui.scrolled_win), @@ -2448,8 +2431,7 @@ main (int argc, char* argv[]) { if (uri_override) { set_var_value("uri", uri_override); g_free(uri_override); - } else if (uzbl.state.uri) - cmd_load_uri(); + } gtk_main (); clean_up(); diff --git a/uzbl-core.h b/uzbl-core.h index 21707f9..43d5a3b 100644 --- a/uzbl-core.h +++ b/uzbl-core.h @@ -211,11 +211,6 @@ extern UzblCore uzbl; typedef void sigfunc(int); -typedef struct { - char* name; - char* param; -} Action; - /* XDG Stuff */ typedef struct { gchar* environmental; @@ -237,7 +232,7 @@ GArray* read_file_by_line (const gchar *path); gchar* -parseenv (char* string); +parseenv (gchar* string); void clean_up(void); @@ -248,23 +243,17 @@ catch_sigterm(int s); sigfunc * setup_signal(int signe, sigfunc *shandler); -gchar* -parseenv (char* string); - gboolean set_var_value(const gchar *name, gchar *val); void -print(WebKitWebView *page, GArray *argv, GString *result); +load_uri_imp(gchar *uri); void -commands_hash(void); +print(WebKitWebView *page, GArray *argv, GString *result); void -free_action(gpointer act); - -Action* -new_action(const gchar *name, const gchar *param); +commands_hash(void); bool file_exists (const char * filename); |