aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/callbacks.c
diff options
context:
space:
mode:
authorGravatar Brendan Taylor <brendan@inkdit.com>2011-05-20 10:37:40 -0400
committerGravatar Brendan Taylor <brendan@inkdit.com>2011-05-20 10:37:40 -0400
commitf5a41502f52ad3e26f5d5a11d58869cf37f12e7b (patch)
treeadc6a2ebc1981213784590c128b794acff5ad2f7 /src/callbacks.c
parent4a3c40a64537b1673d6619b8c200432ea807842d (diff)
moved load_uri_imp into cmd_load_uri (the only place it was used)
Diffstat (limited to 'src/callbacks.c')
-rw-r--r--src/callbacks.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/src/callbacks.c b/src/callbacks.c
index 853edb2..7830032 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -112,7 +112,46 @@ cmd_set_status() {
void
cmd_load_uri() {
- load_uri_imp (uzbl.state.uri);
+ const gchar *uri = uzbl.state.uri;
+
+ GString* newuri;
+ SoupURI* soup_uri;
+
+ /* Strip leading whitespaces */
+ while (*uri) {
+ if (!isspace(*uri)) break;
+ uri++;
+ }
+
+ if (g_strstr_len (uri, 11, "javascript:") != NULL) {
+ eval_js(uzbl.gui.web_view, uri, NULL, "javascript:");
+ return;
+ }
+
+ newuri = g_string_new (uri);
+ soup_uri = soup_uri_new(uri);
+
+ if (!soup_uri) {
+ gchar* fullpath;
+ if (g_path_is_absolute (newuri->str))
+ fullpath = newuri->str;
+ else {
+ gchar* wd = g_get_current_dir ();
+ fullpath = g_build_filename (wd, newuri->str, NULL);
+ g_free(wd);
+ }
+ struct stat stat_result;
+ if (! g_stat(fullpath, &stat_result))
+ g_string_printf (newuri, "file://%s", fullpath);
+ else
+ g_string_prepend (newuri, "http://");
+ } else {
+ soup_uri_free(soup_uri);
+ }
+
+ /* 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);
}
void