aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile45
-rw-r--r--README6
-rw-r--r--docs/TODO1
-rw-r--r--tests/Makefile14
-rw-r--r--tests/test-1.c48
-rw-r--r--uzbl.c395
-rw-r--r--uzbl.h224
8 files changed, 417 insertions, 317 deletions
diff --git a/.gitignore b/.gitignore
index abbd2d7..2efc5e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
uzbl
uzblctrl
+uzbl.o
*~
tags
examples/data
diff --git a/Makefile b/Makefile
index 4e9d282..960ea20 100644
--- a/Makefile
+++ b/Makefile
@@ -4,8 +4,47 @@ all: uzbl uzblctrl
PREFIX?=$(DESTDIR)/usr
-test: uzbl
- ./uzbl --uri http://www.uzbl.org --verbose
+# When compiling unit tests, compile uzbl as a library first
+test: uzbl.o
+ $(CC) -DUZBL_LIBRARY -shared -Wl uzbl.o -o ./tests/libuzbl.so
+ cd ./tests/; $(MAKE)
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+#test-report perf-report full-report: ${TEST_PROGS}
+# @test -z "${TEST_PROGS}" || { \
+# case $@ in \
+# test-report) test_options="-k";; \
+# perf-report) test_options="-k -m=perf";; \
+# full-report) test_options="-k -m=perf -m=slow";; \
+# esac ; \
+# if test -z "$$GTESTER_LOGDIR" ; then \
+# ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+# elif test -n "${TEST_PROGS}" ; then \
+# ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+# fi ; \
+# }
+# @ ignore_logdir=true ; \
+# if test -z "$$GTESTER_LOGDIR" ; then \
+# GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+# ignore_logdir=false ; \
+# fi ; \
+# for subdir in $(SUBDIRS) . ; do \
+# test "$$subdir" = "." -o "$$subdir" = "po" || \
+# ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+# done ; \
+# $$ignore_logdir || { \
+# echo '<?xml version="1.0"?>' > $@.xml ; \
+# echo '<report-collection>' >> $@.xml ; \
+# for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+# sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+# done ; \
+# echo >> $@.xml ; \
+# echo '</report-collection>' >> $@.xml ; \
+# rm -rf "$$GTESTER_LOGDIR"/ ; \
+# ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+# }
test-dev: uzbl
XDG_DATA_HOME=./examples/data XDG_CONFIG_HOME=./examples/config ./uzbl --uri http://www.uzbl.org --verbose
@@ -17,6 +56,8 @@ test-share: uzbl
clean:
rm -f uzbl
rm -f uzblctrl
+ rm -f uzbl.o
+ cd ./tests/; $(MAKE) clean
install:
install -d $(PREFIX)/bin
diff --git a/README b/README
index 47b17b9..2e2be35 100644
--- a/README
+++ b/README
@@ -308,10 +308,4 @@ Custom, userdefined scripts (`spawn foo bar`) get first the arguments as specifi
### BUGS
-known bugs:
-
-* Segfaults when using zoom commands (happens when max zoom already reached?).
-
Please report new issues @ uzbl.org/bugs
-
-
diff --git a/docs/TODO b/docs/TODO
index 00166eb..343a344 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -38,6 +38,7 @@ More or less in order of importance/urgency
* proxy_url is not a good var name. it's not a url.
* regex style page searching? so you can do 'or' and 'and' things. flags like case sensitive etc.
* check for real command name, not just the first letter.
+* Allow the spacebar to be binded to a command
* let users attach handlers to the most common events/signals in uzbl.
great use case: automatically calling formfiller for certain sites
* document:
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..43a878b
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,14 @@
+CFLAGS:=-std=c99 -I$(shell pwd)/../ -L$(shell pwd) -luzbl $(shell pkg-config --cflags gtk+-2.0 webkit-1.0 libsoup-2.4) -ggdb -Wall -W -DARCH="\"$(shell uname -m)\"" -DG_ERRORCHECK_MUTEXES -DCOMMIT="\"$(shell git log | head -n1 | sed "s/.* //")\"" $(CPPFLAGS)
+LDFLAGS:=$(shell pkg-config --libs gtk+-2.0 webkit-1.0 libsoup-2.4) -pthread $(LDFLAGS)
+
+GTESTER:=gtester
+GTESTER_REPORT:=gtester-report
+
+TEST_PROGS:=test-1
+
+all: $(TEST_PROGS)
+ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:." $(GTESTER) --verbose $(TEST_PROGS)
+
+clean:
+ rm -f $(TEST_PROGS)
+ rm -f libuzbl.so
diff --git a/tests/test-1.c b/tests/test-1.c
new file mode 100644
index 0000000..3a94c9b
--- /dev/null
+++ b/tests/test-1.c
@@ -0,0 +1,48 @@
+/* -*- c-basic-offset: 4; -*- */
+#define _POSIX_SOURCE
+
+#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
+#include <gdk/gdkkeysyms.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <sys/utsname.h>
+#include <sys/time.h>
+#include <webkit/webkit.h>
+#include <libsoup/soup.h>
+#include <JavaScriptCore/JavaScript.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+
+#include <uzbl.h>
+#include <config.h>
+
+Uzbl uzbl;
+
+static void
+test_URI (void) {
+ setup_scanner();
+ uzbl.state.uri = g_strdup("http://www.uzbl.org");
+ g_assert_cmpstr(expand_template("URI", FALSE), ==, uzbl.state.uri);
+ g_free(uzbl.state.uri);
+}
+
+int
+main (int argc, char *argv[]) {
+ g_type_init();
+ g_test_init(&argc, &argv, NULL);
+
+ g_test_add_func("/test-1/URI", test_URI);
+
+ return g_test_run();
+}
+
+/* vi: set et ts=4: */
diff --git a/uzbl.c b/uzbl.c
index ed9c4be..dd94c20 100644
--- a/uzbl.c
+++ b/uzbl.c
@@ -57,12 +57,10 @@
#include "uzbl.h"
#include "config.h"
-static Uzbl uzbl;
-
-
+Uzbl uzbl;
/* commandline arguments (set initial values for the state variables) */
-static const
+const
GOptionEntry entries[] =
{
{ "uri", 'u', 0, G_OPTION_ARG_STRING, &uzbl.state.uri,
@@ -80,6 +78,8 @@ GOptionEntry entries[] =
/* associate command names to their properties */
typedef const struct {
+ /* TODO: Make this ambiguous void **ptr into a union { char *char_p; int *int_p; float *float_p; } val;
+ the PTR() macro is kind of preventing this change at the moment. */
void **ptr;
int type;
int dump;
@@ -181,7 +181,7 @@ const struct {
/* construct a hash from the var_name_to_ptr array for quick access */
-static void
+void
make_var_to_name_hash() {
uzbl.comm.proto_var = g_hash_table_new(g_str_hash, g_str_equal);
while(n2v_p->name) {
@@ -191,9 +191,8 @@ make_var_to_name_hash() {
}
/* --- UTILITY FUNCTIONS --- */
-
enum {EXP_ERR, EXP_SIMPLE_VAR, EXP_BRACED_VAR, EXP_EXPR, EXP_JS};
-static guint
+guint
get_exp_type(gchar *s) {
/* variables */
if(*(s+1) == '(')
@@ -212,7 +211,7 @@ return EXP_ERR;
* recurse == 1: don't expand '@(command)@'
* recurse == 2: don't expand '@<java script>@'
*/
-static gchar *
+gchar *
expand(char *s, guint recurse) {
uzbl_cmdprop *c;
guint etype;
@@ -282,9 +281,10 @@ expand(char *s, guint recurse) {
if(c->type == TYPE_STR)
g_string_append(buf, (gchar *)*c->ptr);
else if(c->type == TYPE_INT) {
- char *b = itos((int)*c->ptr);
- g_string_append(buf, b);
- g_free(b);
+ g_string_append_printf(buf, "%d", (int)*c->ptr);
+ }
+ else if(c->type == TYPE_FLOAT) {
+ g_string_append_printf(buf, "%f", *(float *)c->ptr);
}
}
if(etype == EXP_SIMPLE_VAR)
@@ -341,13 +341,13 @@ itos(int val) {
return g_strdup(tmp);
}
-static gchar*
+gchar*
strfree(gchar *str) { g_free(str); return NULL; } // for freeing & setting to null in one go
-static gchar*
+gchar*
argv_idx(const GArray *a, const guint idx) { return g_array_index(a, gchar*, idx); }
-static char *
+char *
str_replace (const char* search, const char* replace, const char* string) {
gchar **buf;
char *ret;
@@ -359,7 +359,7 @@ str_replace (const char* search, const char* replace, const char* string) {
return ret;
}
-static GArray*
+GArray*
read_file_by_line (gchar *path) {
GIOChannel *chan = NULL;
gchar *readbuf = NULL;
@@ -385,8 +385,8 @@ read_file_by_line (gchar *path) {
return lines;
}
-static
-gchar* parseenv (char* string) {
+gchar*
+parseenv (char* string) {
extern char** environ;
gchar* tmpstr = NULL;
int i = 0;
@@ -411,7 +411,7 @@ gchar* parseenv (char* string) {
return string;
}
-static sigfunc*
+sigfunc*
setup_signal(int signr, sigfunc *shandler) {
struct sigaction nh, oh;
@@ -425,7 +425,7 @@ setup_signal(int signr, sigfunc *shandler) {
return NULL;
}
-static void
+void
clean_up(void) {
if (uzbl.behave.fifo_dir)
unlink (uzbl.comm.fifo_path);
@@ -436,13 +436,14 @@ clean_up(void) {
g_string_free(uzbl.state.keycmd, TRUE);
g_hash_table_destroy(uzbl.bindings);
g_hash_table_destroy(uzbl.behave.commands);
+ g_scanner_destroy(uzbl.scan);
}
/* used for html_mode_timeout
* be sure to extend this function to use
* more timers if needed in other places
*/
-static void
+void
set_timeout(int seconds) {
struct itimerval t;
memset(&t, 0, sizeof t);
@@ -454,20 +455,20 @@ set_timeout(int seconds) {
/* --- SIGNAL HANDLER --- */
-static void
+void
catch_sigterm(int s) {
(void) s;
clean_up();
}
-static void
+void
catch_sigint(int s) {
(void) s;
clean_up();
exit(EXIT_SUCCESS);
}
-static void
+void
catch_alrm(int s) {
(void) s;
@@ -478,7 +479,7 @@ catch_alrm(int s) {
/* --- CALLBACKS --- */
-static gboolean
+gboolean
new_window_cb (WebKitWebView *web_view, WebKitWebFrame *frame, WebKitNetworkRequest *request, WebKitWebNavigationAction *navigation_action, WebKitWebPolicyDecision *policy_decision, gpointer user_data) {
(void) web_view;
(void) frame;
@@ -492,7 +493,7 @@ new_window_cb (WebKitWebView *web_view, WebKitWebFrame *frame, WebKitNetworkRequ
return (FALSE);
}
-static gboolean
+gboolean
mime_policy_cb(WebKitWebView *web_view, WebKitWebFrame *frame, WebKitNetworkRequest *request, gchar *mime_type, WebKitWebPolicyDecision *policy_decision, gpointer user_data) {
(void) frame;
(void) request;
@@ -525,7 +526,7 @@ create_web_view_cb (WebKitWebView *web_view, WebKitWebFrame *frame, gpointer us
return (NULL);
}
-static gboolean
+gboolean
download_cb (WebKitWebView *web_view, GObject *download, gpointer user_data) {
(void) web_view;
(void) user_data;
@@ -540,7 +541,7 @@ download_cb (WebKitWebView *web_view, GObject *download, gpointer user_data) {
}
/* scroll a bar in a given direction */
-static void
+void
scroll (GtkAdjustment* bar, GArray *argv) {
gchar *end;
gdouble max_value;
@@ -562,32 +563,32 @@ scroll (GtkAdjustment* bar, GArray *argv) {
gtk_adjustment_set_value (bar, value);
}
-static void
+void
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
+void
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
+void
scroll_vert(WebKitWebView* page, GArray *argv, GString *result) {
(void) page; (void) result;
scroll(uzbl.gui.bar_v, argv);
}
-static void
+void
scroll_horz(WebKitWebView* page, GArray *argv, GString *result) {
(void) page; (void) result;
scroll(uzbl.gui.bar_h, argv);
}
-static void
+void
cmd_set_status() {
if (!uzbl.behave.show_status) {
gtk_widget_hide(uzbl.gui.mainbar);
@@ -597,16 +598,16 @@ cmd_set_status() {
update_title();
}
-static void
+void
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
+void
toggle_status_cb (WebKitWebView* page, GArray *argv, GString *result) {
(void)page;
(void)argv;
@@ -621,7 +622,7 @@ toggle_status_cb (WebKitWebView* page, GArray *argv, GString *result) {
update_title();
}
-static void
+void
link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) {
(void) page;
(void) title;
@@ -635,7 +636,7 @@ link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpoin
update_title();
}
-static void
+void
title_change_cb (WebKitWebView* web_view, GParamSpec param_spec) {
(void) web_view;
(void) param_spec;
@@ -646,7 +647,7 @@ title_change_cb (WebKitWebView* web_view, GParamSpec param_spec) {
update_title();
}
-static void
+void
progress_change_cb (WebKitWebView* page, gint progress, gpointer data) {
(void) page;
(void) data;
@@ -654,7 +655,7 @@ progress_change_cb (WebKitWebView* page, gint progress, gpointer data) {
update_title();
}
-static void
+void
load_finish_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
(void) page;
(void) frame;
@@ -663,7 +664,7 @@ load_finish_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
run_handler(uzbl.behave.load_finish_handler, "");
}
-static void
+void
load_start_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
(void) page;
(void) frame;
@@ -674,7 +675,7 @@ load_start_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
run_handler(uzbl.behave.load_start_handler, "");
}
-static void
+void
load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
(void) page;
(void) data;
@@ -689,29 +690,31 @@ load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
run_handler(uzbl.behave.load_commit_handler, uzbl.state.uri);
}
-static void
+void
destroy_cb (GtkWidget* widget, gpointer data) {
(void) widget;
(void) data;
gtk_main_quit ();
}
-static void
+void
log_history_cb () {
if (uzbl.behave.history_handler) {
- time_t rawtime;
- struct tm * timeinfo;
- char date [80];
- time ( &rawtime );
- timeinfo = localtime ( &rawtime );
- strftime (date, 80, "\"%Y-%m-%d %H:%M:%S\"", timeinfo);
+ GTimeVal the_time;
+ gchar *date;
+
+ g_get_current_time(&the_time);
+ /* no need to wrap this string with quotes since it contains no spaces.
+ format is like: 2009-06-26T20:02:05.262864Z */
+ date = g_time_val_to_iso8601(&the_time);
run_handler(uzbl.behave.history_handler, date);
+ g_free(date);
}
}
/* VIEW funcs (little webkit wrappers) */
-#define VIEWFUNC(name) static void view_##name(WebKitWebView *page, GArray *argv, GString *result){(void)argv; (void)result; webkit_web_view_##name(page);}
+#define VIEWFUNC(name) 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)
@@ -722,7 +725,7 @@ VIEWFUNC(go_forward)
#undef VIEWFUNC
/* -- command to callback/function map for things we cannot attach to any signals */
-static struct {char *key; CommandInfo value;} cmdlist[] =
+struct {char *key; CommandInfo value;} cmdlist[] =
{ /* key function no_split */
{ "back", {view_go_back, 0} },
{ "forward", {view_go_forward, 0} },
@@ -745,6 +748,7 @@ static struct {char *key; CommandInfo value;} cmdlist[] =
{ "sh", {spawn_sh, 0} },
{ "sync_sh", {spawn_sh_sync, 0} }, // needed for cookie handler
{ "exit", {close_uzbl, 0} },
+ { "quit", {close_uzbl, 0} },
{ "search", {search_forward_text, TRUE} },
{ "search_reverse", {search_reverse_text, TRUE} },
{ "dehilight", {dehilight, 0} },
@@ -760,7 +764,7 @@ static struct {char *key; CommandInfo value;} cmdlist[] =
{ "print", {print, TRUE} }
};
-static void
+void
commands_hash(void)
{
unsigned int i;
@@ -794,12 +798,12 @@ new_action(const gchar *name, const gchar *param) {
return action;
}
-static bool
+bool
file_exists (const char * filename) {
return (access(filename, F_OK) == 0);
}
-static void
+void
set_var(WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
gchar **split = g_strsplit(argv_idx(argv, 0), "=", 2);
@@ -811,7 +815,7 @@ set_var(WebKitWebView *page, GArray *argv, GString *result) {
g_strfreev(split);
}
-static void
+void
print(WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
gchar* buf;
@@ -821,7 +825,7 @@ print(WebKitWebView *page, GArray *argv, GString *result) {
g_free(buf);
}
-static void
+void
act_bind(WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
gchar **split = g_strsplit(argv_idx(argv, 0), " = ", 2);
@@ -832,12 +836,12 @@ act_bind(WebKitWebView *page, GArray *argv, GString *result) {
}
-static void
+void
act_dump_config() {
dump_config();
}
-static void
+void
toggle_insert_mode(WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
@@ -854,7 +858,7 @@ toggle_insert_mode(WebKitWebView *page, GArray *argv, GString *result) {
update_title();
}
-static void
+void
load_uri (WebKitWebView *web_view, GArray *argv, GString *result) {
(void) result;
@@ -872,10 +876,9 @@ load_uri (WebKitWebView *web_view, GArray *argv, GString *result) {
}
}
-
/* Javascript*/
-static JSValueRef
+JSValueRef
js_run_command (JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject,
size_t argumentCount, const JSValueRef arguments[],
JSValueRef* exception) {
@@ -903,11 +906,11 @@ js_run_command (JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject,
return JSValueMakeString(ctx, js_result_string);
}
-static JSStaticFunction js_static_functions[] = {
+JSStaticFunction js_static_functions[] = {
{"run", js_run_command, kJSPropertyAttributeNone},
};
-static void
+void
js_init() {
/* This function creates the class and its definition, only once */
if (!uzbl.js.initialized) {
@@ -920,7 +923,7 @@ js_init() {
}
-static void
+void
eval_js(WebKitWebView * web_view, gchar *script, GString *result) {
WebKitWebFrame *frame;
JSGlobalContextRef context;
@@ -967,14 +970,13 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result) {
JSStringRelease(js_script);
}
-static void
+void
run_js (WebKitWebView * web_view, GArray *argv, GString *result) {
-
if (argv_idx(argv, 0))
eval_js(web_view, argv_idx(argv, 0), result);
}
-static void
+void
run_external_js (WebKitWebView * web_view, GArray *argv, GString *result) {
(void) result;
if (argv_idx(argv, 0)) {
@@ -1008,7 +1010,7 @@ run_external_js (WebKitWebView * web_view, GArray *argv, GString *result) {
}
}
-static void
+void
search_text (WebKitWebView *page, GArray *argv, const gboolean forward) {
if (argv_idx(argv, 0) && (*argv_idx(argv, 0) != '\0')) {
if (g_strcmp0 (uzbl.state.searchtx, argv_idx(argv, 0)) != 0) {
@@ -1026,26 +1028,26 @@ search_text (WebKitWebView *page, GArray *argv, const gboolean forward) {
}
}
-static void
+void
search_forward_text (WebKitWebView *page, GArray *argv, GString *result) {
(void) result;
search_text(page, argv, TRUE);
}
-static void
+void
search_reverse_text (WebKitWebView *page, GArray *argv, GString *result) {
(void) result;
search_text(page, argv, FALSE);
}
-static void
+void
dehilight (WebKitWebView *page, GArray *argv, GString *result) {
(void) argv; (void) result;
webkit_web_view_set_highlight_text_matches (page, FALSE);
}
-static void
+void
new_window_load_uri (const gchar * uri) {
GString* to_execute = g_string_new ("");
g_string_append_printf (to_execute, "%s --uri '%s'", uzbl.state.executable_path, uri);
@@ -1064,7 +1066,7 @@ new_window_load_uri (const gchar * uri) {
g_string_free (to_execute, TRUE);
}
-static void
+void
chain (WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
gchar *a = NULL;
@@ -1072,12 +1074,13 @@ chain (WebKitWebView *page, GArray *argv, GString *result) {
guint i = 0;
while ((a = argv_idx(argv, i++))) {
parts = g_strsplit (a, " ", 2);
- parse_command(parts[0], parts[1], result);
+ if (parts[0])
+ parse_command(parts[0], parts[1], result);
g_strfreev (parts);
}
}
-static void
+void
keycmd (WebKitWebView *page, GArray *argv, GString *result) {
(void)page;
(void)argv;
@@ -1087,7 +1090,7 @@ keycmd (WebKitWebView *page, GArray *argv, GString *result) {
update_title();
}
-static void
+void
keycmd_nl (WebKitWebView *page, GArray *argv, GString *result) {
(void)page;
(void)argv;
@@ -1097,7 +1100,7 @@ keycmd_nl (WebKitWebView *page, GArray *argv, GString *result) {
update_title();
}
-static void
+void
keycmd_bs (WebKitWebView *page, GArray *argv, GString *result) {
gchar *prev;
(void)page;
@@ -1109,7 +1112,7 @@ keycmd_bs (WebKitWebView *page, GArray *argv, GString *result) {
update_title();
}
-static void
+void
close_uzbl (WebKitWebView *page, GArray *argv, GString *result) {
(void)page;
(void)argv;
@@ -1118,7 +1121,7 @@ close_uzbl (WebKitWebView *page, GArray *argv, GString *result) {
}
/* --Statusbar functions-- */
-static char*
+char*
build_progressbar_ascii(int percent) {
int width=uzbl.gui.sbar.progress_w;
int i;
@@ -1137,7 +1140,7 @@ build_progressbar_ascii(int percent) {
return g_string_free(bar, FALSE);
}
-static void
+void
setup_scanner() {
const GScannerConfig scan_config = {
(
@@ -1192,7 +1195,7 @@ setup_scanner() {
}
}
-static gchar *
+gchar *
expand_template(const char *template, gboolean escape_markup) {
if(!template) return NULL;
@@ -1210,14 +1213,14 @@ expand_template(const char *template, gboolean escape_markup) {
switch(sym) {
case SYM_URI:
if(escape_markup) {
- buf = uzbl.state.uri?
- g_markup_printf_escaped("%s", uzbl.state.uri):g_strdup("");
+ buf = uzbl.state.uri ?
+ g_markup_printf_escaped("%s", uzbl.state.uri) : g_strdup("");
g_string_append(ret, buf);
g_free(buf);
}
else
- g_string_append(ret, uzbl.state.uri?
- uzbl.state.uri:g_strdup(""));
+ g_string_append(ret, uzbl.state.uri ?
+ uzbl.state.uri : g_strdup(""));
break;
case SYM_LOADPRGS:
buf = itos(uzbl.gui.sbar.load_progress);
@@ -1231,51 +1234,51 @@ expand_template(const char *template, gboolean escape_markup) {
break;
case SYM_TITLE:
if(escape_markup) {
- buf = uzbl.gui.main_title?
- g_markup_printf_escaped("%s", uzbl.gui.main_title):g_strdup("");
+ buf = uzbl.gui.main_title ?
+ g_markup_printf_escaped("%s", uzbl.gui.main_title) : g_strdup("");
g_string_append(ret, buf);
g_free(buf);
}
else
- g_string_append(ret, uzbl.gui.main_title?
- uzbl.gui.main_title:g_strdup(""));
+ g_string_append(ret, uzbl.gui.main_title ?
+ uzbl.gui.main_title : "");
break;
case SYM_SELECTED_URI:
if(escape_markup) {
- buf = uzbl.state.selected_url?
- g_markup_printf_escaped("%s", uzbl.state.selected_url):g_strdup("");
+ buf = uzbl.state.selected_url ?
+ g_markup_printf_escaped("%s", uzbl.state.selected_url) : g_strdup("");
g_string_append(ret, buf);
g_free(buf);
}
else
- g_string_append(ret, uzbl.state.selected_url?
- uzbl.state.selected_url:g_strdup(""));
+ g_string_append(ret, uzbl.state.selected_url ?
+ uzbl.state.selected_url : "");
break;
case SYM_NAME:
buf = itos(uzbl.xwin);
g_string_append(ret,
- uzbl.state.instance_name?uzbl.state.instance_name:buf);
+ uzbl.state.instance_name ? uzbl.state.instance_name : buf);
g_free(buf);
break;
case SYM_KEYCMD:
if(escape_markup) {
- buf = uzbl.state.keycmd->str?
- g_markup_printf_escaped("%s", uzbl.state.keycmd->str):g_strdup("");
+ buf = uzbl.state.keycmd->str ?
+ g_markup_printf_escaped("%s", uzbl.state.keycmd->str) : g_strdup("");
g_string_append(ret, buf);
g_free(buf);
}
else
- g_string_append(ret, uzbl.state.keycmd->str?
- uzbl.state.keycmd->str:g_strdup(""));
+ g_string_append(ret, uzbl.state.keycmd->str ?
+ uzbl.state.keycmd->str : "");
break;
case SYM_MODE:
g_string_append(ret,
- uzbl.behave.insert_mode?
- uzbl.behave.insert_indicator:uzbl.behave.cmd_indicator);
+ uzbl.behave.insert_mode ?
+ uzbl.behave.insert_indicator : uzbl.behave.cmd_indicator);
break;
case SYM_MSG:
g_string_append(ret,
- uzbl.gui.sbar.msg?uzbl.gui.sbar.msg:"");
+ uzbl.gui.sbar.msg ? uzbl.gui.sbar.msg : "");
break;
/* useragent syms */
case SYM_WK_MAJ:
@@ -1324,9 +1327,7 @@ expand_template(const char *template, gboolean escape_markup) {
}
}
else if(token == G_TOKEN_INT) {
- buf = itos(g_scanner_cur_value(uzbl.scan).v_int);
- g_string_append(ret, buf);
- g_free(buf);
+ g_string_append_printf(ret, "%lu", g_scanner_cur_value(uzbl.scan).v_int);
}
else if(token == G_TOKEN_IDENTIFIER) {
g_string_append(ret, (gchar *)g_scanner_cur_value(uzbl.scan).v_identifier);
@@ -1334,20 +1335,26 @@ expand_template(const char *template, gboolean escape_markup) {
else if(token == G_TOKEN_CHAR) {
g_string_append_c(ret, (gchar)g_scanner_cur_value(uzbl.scan).v_char);
}
+ else if(token == G_TOKEN_ERROR) {
+ g_scanner_error(uzbl.scan, "Token error in template ('%s') at line %d, column %d.",
+ template,
+ g_scanner_cur_line(uzbl.scan),
+ g_scanner_cur_position(uzbl.scan));
+ }
}
return g_string_free(ret, FALSE);
}
/* --End Statusbar functions-- */
-static void
+void
sharg_append(GArray *a, const gchar *str) {
const gchar *s = (str ? str : "");
g_array_append_val(a, s);
}
// make sure that the args string you pass can properly be interpreted (eg properly escaped against whitespace, quotes etc)
-static gboolean
+gboolean
run_command (const gchar *command, const guint npre, const gchar **args,
const gboolean sync, char **output_stdout) {
//command <uzbl conf> <uzbl pid> <uzbl win id> <uzbl fifo file> <uzbl socket file> [args]
@@ -1404,7 +1411,7 @@ run_command (const gchar *command, const guint npre, const gchar **args,
return result;
}
-static gchar**
+gchar**
split_quoted(const gchar* src, const gboolean unquote) {
/* split on unquoted space, return array of strings;
remove a layer of quotes and backslashes if unquote */
@@ -1441,7 +1448,7 @@ split_quoted(const gchar* src, const gboolean unquote) {
return ret;
}
-static void
+void
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
@@ -1449,7 +1456,7 @@ spawn(WebKitWebView *web_view, GArray *argv, GString *result) {
run_command(argv_idx(argv, 0), 0, ((const gchar **) (argv->data + sizeof(gchar*))), FALSE, NULL);
}
-static void
+void
spawn_sync(WebKitWebView *web_view, GArray *argv, GString *result) {
(void)web_view; (void)result;
@@ -1458,7 +1465,7 @@ spawn_sync(WebKitWebView *web_view, GArray *argv, GString *result) {
TRUE, &uzbl.comm.sync_stdout);
}
-static void
+void
spawn_sh(WebKitWebView *web_view, GArray *argv, GString *result) {
(void)web_view; (void)result;
if (!uzbl.behave.shell_cmd) {
@@ -1479,7 +1486,7 @@ spawn_sh(WebKitWebView *web_view, GArray *argv, GString *result) {
g_strfreev (cmd);
}
-static void
+void
spawn_sh_sync(WebKitWebView *web_view, GArray *argv, GString *result) {
(void)web_view; (void)result;
if (!uzbl.behave.shell_cmd) {
@@ -1501,7 +1508,7 @@ spawn_sh_sync(WebKitWebView *web_view, GArray *argv, GString *result) {
g_strfreev (cmd);
}
-static void
+void
parse_command(const char *cmd, const char *param, GString *result) {
CommandInfo *c;
@@ -1535,7 +1542,7 @@ parse_command(const char *cmd, const char *param, GString *result) {
g_printerr ("command \"%s\" not understood. ignoring.\n", cmd);
}
-static void
+void
set_proxy_url() {
SoupURI *suri;
@@ -1554,7 +1561,7 @@ set_proxy_url() {
return;
}
-static void
+void
set_icon() {
if(file_exists(uzbl.gui.icon)) {
if (uzbl.gui.main_window)
@@ -1562,10 +1569,9 @@ set_icon() {
} else {
g_printerr ("Icon \"%s\" not found. ignoring.\n", uzbl.gui.icon);
}
- g_free (uzbl.gui.icon);
}
-static void
+void
cmd_load_uri() {
GArray *a = g_array_new (TRUE, FALSE, sizeof(gchar*));
g_array_append_val (a, uzbl.state.uri);
@@ -1573,26 +1579,26 @@ cmd_load_uri() {
g_array_free (a, TRUE);
}
-static void
+void
cmd_always_insert_mode() {
uzbl.behave.insert_mode =
uzbl.behave.always_insert_mode ? TRUE : FALSE;
update_title();
}
-static void
+void
cmd_max_conns() {
g_object_set(G_OBJECT(uzbl.net.soup_session),
SOUP_SESSION_MAX_CONNS, uzbl.net.max_conns, NULL);
}
-static void
+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
+void
cmd_http_debug() {
soup_session_remove_feature
(uzbl.net.soup_session, SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
@@ -1604,12 +1610,12 @@ cmd_http_debug() {
SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
}
-static WebKitWebSettings*
+WebKitWebSettings*
view_settings() {
return webkit_web_view_get_settings(uzbl.gui.web_view);
}
-static void
+void
cmd_font_size() {
WebKitWebSettings *ws = view_settings();
if (uzbl.behave.font_size > 0) {
@@ -1625,91 +1631,91 @@ cmd_font_size() {
}
}
-static void
+void
cmd_zoom_level() {
webkit_web_view_set_zoom_level (uzbl.gui.web_view, uzbl.behave.zoom_level);
}
-static void
+void
cmd_disable_plugins() {
g_object_set (G_OBJECT(view_settings()), "enable-plugins",
!uzbl.behave.disable_plugins, NULL);
}
-static void
+void
cmd_disable_scripts() {
g_object_set (G_OBJECT(view_settings()), "enable-scripts",
!uzbl.behave.disable_scripts, NULL);
}
-static void
+void
cmd_minimum_font_size() {
g_object_set (G_OBJECT(view_settings()), "minimum-font-size",
uzbl.behave.minimum_font_size, NULL);
}
-static void
+void
cmd_autoload_img() {
g_object_set (G_OBJECT(view_settings()), "auto-load-images",
uzbl.behave.autoload_img, NULL);
}
-static void
+void
cmd_autoshrink_img() {
g_object_set (G_OBJECT(view_settings()), "auto-shrink-images",
uzbl.behave.autoshrink_img, NULL);
}
-static void
+void
cmd_enable_spellcheck() {
g_object_set (G_OBJECT(view_settings()), "enable-spell-checking",
uzbl.behave.enable_spellcheck, NULL);
}
-static void
+void
cmd_enable_private() {
g_object_set (G_OBJECT(view_settings()), "enable-private-browsing",
uzbl.behave.enable_private, NULL);
}
-static void
+void
cmd_print_bg() {
g_object_set (G_OBJECT(view_settings()), "print-backgrounds",
uzbl.behave.print_bg, NULL);
}
-static void
+void
cmd_style_uri() {
g_object_set (G_OBJECT(view_settings()), "user-stylesheet-uri",
uzbl.behave.style_uri, NULL);
}
-static void
+void
cmd_resizable_txt() {
g_object_set (G_OBJECT(view_settings()), "resizable-text-areas",
uzbl.behave.resizable_txt, NULL);
}
-static void
+void
cmd_default_encoding() {
g_object_set (G_OBJECT(view_settings()), "default-encoding",
uzbl.behave.default_encoding, NULL);
}
-static void
+void
cmd_enforce_96dpi() {
g_object_set (G_OBJECT(view_settings()), "enforce-96-dpi",
uzbl.behave.enforce_96dpi, NULL);
}
-static void
+void
cmd_caret_browsing() {
g_object_set (G_OBJECT(view_settings()), "enable-caret-browsing",
uzbl.behave.caret_browsing, NULL);
}
-static void
+void
cmd_cookie_handler() {
gchar **split = g_strsplit(uzbl.behave.cookie_handler, " ", 2);
/* pitfall: doesn't handle chain actions; must the sync_ action manually */
@@ -1722,17 +1728,17 @@ cmd_cookie_handler() {
g_strfreev (split);
}
-static void
+void
cmd_fifo_dir() {
uzbl.behave.fifo_dir = init_fifo(uzbl.behave.fifo_dir);
}
-static void
+void
cmd_socket_dir() {
uzbl.behave.socket_dir = init_socket(uzbl.behave.socket_dir);
}
-static void
+void
cmd_inject_html() {
if(uzbl.behave.inject_html) {
webkit_web_view_load_html_string (uzbl.gui.web_view,
@@ -1740,7 +1746,7 @@ cmd_inject_html() {
}
}
-static void
+void
cmd_modkey() {
int i;
char *buf;
@@ -1758,7 +1764,7 @@ cmd_modkey() {
}
}
-static void
+void
cmd_useragent() {
if (*uzbl.net.useragent == ' ') {
g_free (uzbl.net.useragent);
@@ -1772,7 +1778,7 @@ cmd_useragent() {
}
}
-static void
+void
move_statusbar() {
gtk_widget_ref(uzbl.gui.scrolled_win);
gtk_widget_ref(uzbl.gui.mainbar);
@@ -1793,7 +1799,7 @@ move_statusbar() {
return;
}
-static gboolean
+gboolean
set_var_value(gchar *name, gchar *val) {
uzbl_cmdprop *c = NULL;
char *endp = NULL;
@@ -1823,7 +1829,7 @@ set_var_value(gchar *name, gchar *val) {
return TRUE;
}
-static void
+void
render_html() {
Behaviour *b = &uzbl.behave;
@@ -1836,7 +1842,7 @@ render_html() {
}
enum {M_CMD, M_HTML};
-static void
+void
parse_cmd_line(const char *ctl_line, GString *result) {
Behaviour *b = &uzbl.behave;
size_t len=0;
@@ -1876,7 +1882,7 @@ parse_cmd_line(const char *ctl_line, GString *result) {
}
}
-static gchar*
+gchar*
build_stream_name(int type, const gchar* dir) {
char *xwin_str = NULL;
State *s = &uzbl.state;
@@ -1896,7 +1902,7 @@ build_stream_name(int type, const gchar* dir) {
return str;
}
-static gboolean
+gboolean
control_fifo(GIOChannel *gio, GIOCondition condition) {
if (uzbl.state.verbose)
printf("triggered\n");
@@ -1922,20 +1928,8 @@ control_fifo(GIOChannel *gio, GIOCondition condition) {
return TRUE;
}
-static gchar*
+gchar*
init_fifo(gchar *dir) { /* return dir or, on error, free dir and return NULL */
- if (uzbl.comm.fifo_path) { /* get rid of the old fifo if one exists */
- if (unlink(uzbl.comm.fifo_path) == -1)
- g_warning ("Fifo: Can't unlink old fifo at %s\n", uzbl.comm.fifo_path);
- g_free(uzbl.comm.fifo_path);
- uzbl.comm.fifo_path = NULL;
- }
-
- if (*dir == ' ') { /* space unsets the variable */
- g_free (dir);
- return NULL;
- }
-
GIOChannel *chan = NULL;
GError *error = NULL;
gchar *path = build_stream_name(FIFO, dir);
@@ -1962,7 +1956,7 @@ init_fifo(gchar *dir) { /* return dir or, on error, free dir and return NULL */
return NULL;
}
-static gboolean
+gboolean
control_stdin(GIOChannel *gio, GIOCondition condition) {
(void) condition;
gchar *ctl_line = NULL;
@@ -1978,7 +1972,7 @@ control_stdin(GIOChannel *gio, GIOCondition condition) {
return TRUE;
}
-static void
+void
create_stdin () {
GIOChannel *chan = NULL;
GError *error = NULL;
@@ -1997,7 +1991,7 @@ create_stdin () {
if (error) g_error_free (error);
}
-static gboolean
+gboolean
control_socket(GIOChannel *chan) {
struct sockaddr_un remote;
unsigned int t = sizeof(remote);
@@ -2015,7 +2009,7 @@ control_socket(GIOChannel *chan) {
return TRUE;
}
-static gboolean
+gboolean
control_client_socket(GIOChannel *clientchan) {
char *ctl_line;
GString *result = g_string_new("");
@@ -2051,7 +2045,7 @@ control_client_socket(GIOChannel *clientchan) {
return TRUE;
}
-static gchar*
+gchar*
init_socket(gchar *dir) { /* return dir or, on error, free dir and return NULL */
if (uzbl.comm.socket_path) { /* remove an existing socket should one exist */
if (unlink(uzbl.comm.socket_path) == -1)
@@ -2100,7 +2094,7 @@ init_socket(gchar *dir) { /* return dir or, on error, free dir and return NULL *
it will probably improve performance if we would "cache" the processed variant, but for now it works well enough...
*/
// this function may be called very early when the templates are not set (yet), hence the checks
-static void
+void
update_title (void) {
Behaviour *b = &uzbl.behave;
gchar *parsed;
@@ -2136,7 +2130,7 @@ update_title (void) {
}
}
-static gboolean
+gboolean
key_press_cb (GtkWidget* window, GdkEventKey* event)
{
//TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.
@@ -2194,7 +2188,7 @@ key_press_cb (GtkWidget* window, GdkEventKey* event)
return TRUE;
}
-static void
+void
run_keycmd(const gboolean key_ret) {
/* run the keycmd immediately if it isn't incremental and doesn't take args */
Action *act;
@@ -2232,7 +2226,7 @@ run_keycmd(const gboolean key_ret) {
g_string_free (short_keys_inc, TRUE);
}
-static void
+void
exec_paramcmd(const Action *act, const guint i) {
GString *parampart = g_string_new (uzbl.state.keycmd->str);
GString *actionname = g_string_new ("");
@@ -2249,7 +2243,7 @@ exec_paramcmd(const Action *act, const guint i) {
}
-static GtkWidget*
+GtkWidget*
create_browser () {
GUI *g = &uzbl.gui;
@@ -2275,7 +2269,7 @@ create_browser () {
return scrolled_window;
}
-static GtkWidget*
+GtkWidget*
create_mainbar () {
GUI *g = &uzbl.gui;
@@ -2294,8 +2288,8 @@ create_mainbar () {
return g->mainbar;
}
-static
-GtkWidget* create_window () {
+GtkWidget*
+create_window () {
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
gtk_widget_set_name (window, "Uzbl browser");
@@ -2305,8 +2299,8 @@ GtkWidget* create_window () {
return window;
}
-static
-GtkPlug* create_plug () {
+GtkPlug*
+create_plug () {
GtkPlug* plug = GTK_PLUG (gtk_plug_new (uzbl.state.socket_id));
g_signal_connect (G_OBJECT (plug), "destroy", G_CALLBACK (destroy_cb), NULL);
g_signal_connect (G_OBJECT (plug), "key-press-event", G_CALLBACK (key_press_cb), NULL);
@@ -2315,7 +2309,7 @@ GtkPlug* create_plug () {
}
-static gchar**
+gchar**
inject_handler_args(const gchar *actname, const gchar *origargs, const gchar *newargs) {
/*
If actname is one that calls an external command, this function will inject
@@ -2323,7 +2317,7 @@ inject_handler_args(const gchar *actname, const gchar *origargs, const gchar *ne
come become after the body of the script (in sh) or after the name of
the command to execute (in spawn).
i.e. sh <body> <userargs> becomes sh <body> <ARGS> <userargs> and
- span <command> <userargs> becomes spawn <command> <ARGS> <userargs>.
+ spawn <command> <userargs> becomes spawn <command> <ARGS> <userargs>.
The return value consist of two strings: the action (sh, ...) and its args.
@@ -2331,6 +2325,7 @@ inject_handler_args(const gchar *actname, const gchar *origargs, const gchar *ne
gets duplicated.
*/
GArray *rets = g_array_new(TRUE, FALSE, sizeof(gchar*));
+ /* Arrr! Here be memory leaks */
gchar *actdup = g_strdup(actname);
g_array_append_val(rets, actdup);
@@ -2357,7 +2352,7 @@ inject_handler_args(const gchar *actname, const gchar *origargs, const gchar *ne
return (gchar**)g_array_free(rets, FALSE);
}
-static void
+void
run_handler (const gchar *act, const gchar *args) {
/* Consider this code a temporary hack to make the handlers usable.
In practice, all this splicing, injection, and reconstruction is
@@ -2416,7 +2411,7 @@ run_handler (const gchar *act, const gchar *args) {
g_strfreev(parts);
}
-static void
+void
add_binding (const gchar *key, const gchar *act) {
char **parts = g_strsplit(act, " ", 2);
Action *action;
@@ -2435,7 +2430,7 @@ add_binding (const gchar *key, const gchar *act) {
g_strfreev(parts);
}
-static gchar*
+gchar*
get_xdg_var (XDG_Var xdg) {
const gchar* actual_value = getenv (xdg.environmental);
const gchar* home = getenv ("HOME");
@@ -2454,7 +2449,7 @@ get_xdg_var (XDG_Var xdg) {
return return_value;
}
-static gchar*
+gchar*
find_xdg_file (int xdg_type, char* filename) {
/* xdg_type = 0 => config
xdg_type = 1 => data
@@ -2487,7 +2482,7 @@ find_xdg_file (int xdg_type, char* filename) {
return NULL;
}
}
-static void
+void
settings_init () {
State *s = &uzbl.state;
Network *n = &uzbl.net;
@@ -2524,7 +2519,7 @@ settings_init () {
g_signal_connect_after(n->soup_session, "request-started", G_CALLBACK(handle_cookies), NULL);
}
-static void handle_cookies (SoupSession *session, SoupMessage *msg, gpointer user_data){
+void handle_cookies (SoupSession *session, SoupMessage *msg, gpointer user_data){
(void) session;
(void) user_data;
if (!uzbl.behave.cookie_handler)
@@ -2547,7 +2542,7 @@ static void handle_cookies (SoupSession *session, SoupMessage *msg, gpointer use
g_string_free(s, TRUE);
}
-static void
+void
save_cookies (SoupMessage *msg, gpointer user_data){
(void) user_data;
GSList *ck;
@@ -2565,14 +2560,14 @@ save_cookies (SoupMessage *msg, gpointer user_data){
}
/* --- WEBINSPECTOR --- */
-static void
+void
hide_window_cb(GtkWidget *widget, gpointer data) {
(void) data;
gtk_widget_hide(widget);
}
-static WebKitWebView*
+WebKitWebView*
create_inspector_cb (WebKitWebInspector* web_inspector, WebKitWebView* page, gpointer data){
(void) data;
(void) page;
@@ -2601,7 +2596,7 @@ create_inspector_cb (WebKitWebInspector* web_inspector, WebKitWebView* page, gpo
return WEBKIT_WEB_VIEW(new_web_view);
}
-static gboolean
+gboolean
inspector_show_window_cb (WebKitWebInspector* inspector){
(void) inspector;
gtk_widget_show(uzbl.gui.inspector_window);
@@ -2609,37 +2604,37 @@ inspector_show_window_cb (WebKitWebInspector* inspector){
}
/* TODO: Add variables and code to make use of these functions */
-static gboolean
+gboolean
inspector_close_window_cb (WebKitWebInspector* inspector){
(void) inspector;
return TRUE;
}
-static gboolean
+gboolean
inspector_attach_window_cb (WebKitWebInspector* inspector){
(void) inspector;
return FALSE;
}
-static gboolean
+gboolean
inspector_detach_window_cb (WebKitWebInspector* inspector){
(void) inspector;
return FALSE;
}
-static gboolean
+gboolean
inspector_uri_changed_cb (WebKitWebInspector* inspector){
(void) inspector;
return FALSE;
}
-static gboolean
+gboolean
inspector_inspector_destroyed_cb (WebKitWebInspector* inspector){
(void) inspector;
return FALSE;
}
-static void
+void
set_up_inspector() {
GUI *g = &uzbl.gui;
WebKitWebSettings *settings = view_settings();
@@ -2656,7 +2651,7 @@ set_up_inspector() {
g_signal_connect (G_OBJECT (g->inspector), "notify::inspected-uri", G_CALLBACK (inspector_uri_changed_cb), NULL);
}
-static void
+void
dump_var_hash(gpointer k, gpointer v, gpointer ud) {
(void) ud;
uzbl_cmdprop *c = v;
@@ -2665,12 +2660,14 @@ dump_var_hash(gpointer k, gpointer v, gpointer ud) {
return;
if(c->type == TYPE_STR)
- printf("set %s = %s\n", (char *)k, *c->ptr?(char *)*c->ptr:" ");
+ printf("set %s = %s\n", (char *)k, *c->ptr ? (char *)*c->ptr : " ");
else if(c->type == TYPE_INT)
printf("set %s = %d\n", (char *)k, (int)*c->ptr);
+ else if(c->type == TYPE_FLOAT)
+ printf("set %s = %f\n", (char *)k, *(float *)c->ptr);
}
-static void
+void
dump_key_hash(gpointer k, gpointer v, gpointer ud) {
(void) ud;
Action *a = v;
@@ -2679,12 +2676,13 @@ dump_key_hash(gpointer k, gpointer v, gpointer ud) {
(char *)a->name, a->param?(char *)a->param:"");
}
-static void
+void
dump_config() {
g_hash_table_foreach(uzbl.comm.proto_var, dump_var_hash, NULL);
g_hash_table_foreach(uzbl.bindings, dump_key_hash, NULL);
}
+#ifndef UZBL_LIBRARY
/** -- MAIN -- **/
int
main (int argc, char* argv[]) {
@@ -2801,5 +2799,6 @@ main (int argc, char* argv[]) {
return EXIT_SUCCESS;
}
+#endif
/* vi: set et ts=4: */
diff --git a/uzbl.h b/uzbl.h
index d19ceb3..b40684a 100644
--- a/uzbl.h
+++ b/uzbl.h
@@ -224,79 +224,82 @@ XDG_Var XDG[] =
};
/* Functions */
-static void
+gchar *
+expand_template(const char *template, gboolean escape_markup);
+
+void
setup_scanner();
char *
itos(int val);
-static char *
+char *
str_replace (const char* search, const char* replace, const char* string);
-static GArray*
+GArray*
read_file_by_line (gchar *path);
-static
-gchar* parseenv (char* string);
+gchar*
+parseenv (char* string);
-static void
+void
clean_up(void);
-static void
+void
catch_sigterm(int s);
-static sigfunc *
+sigfunc *
setup_signal(int signe, sigfunc *shandler);
-static gboolean
+gboolean
set_var_value(gchar *name, gchar *val);
-static void
+void
print(WebKitWebView *page, GArray *argv, GString *result);
-static gboolean
+gboolean
new_window_cb (WebKitWebView *web_view, WebKitWebFrame *frame, WebKitNetworkRequest *request, WebKitWebNavigationAction *navigation_action, WebKitWebPolicyDecision *policy_decision, gpointer user_data);
-static gboolean
+gboolean
mime_policy_cb(WebKitWebView *web_view, WebKitWebFrame *frame, WebKitNetworkRequest *request, gchar *mime_type, WebKitWebPolicyDecision *policy_decision, gpointer user_data);
WebKitWebView*
create_web_view_cb (WebKitWebView *web_view, WebKitWebFrame *frame, gpointer user_data);
-static gboolean
+gboolean
download_cb (WebKitWebView *web_view, GObject *download, gpointer user_data);
-static void
+void
toggle_zoom_type (WebKitWebView* page, GArray *argv, GString *result);
-static void
+void
toggle_status_cb (WebKitWebView* page, GArray *argv, GString *result);
-static void
+void
link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data);
-static void
+void
title_change_cb (WebKitWebView* web_view, GParamSpec param_spec);
-static void
+void
progress_change_cb (WebKitWebView* page, gint progress, gpointer data);
-static void
+void
load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data);
-static void
+void
load_start_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data);
-static void
+void
load_finish_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data);
-static void
+void
destroy_cb (GtkWidget* widget, gpointer data);
-static void
+void
log_history_cb ();
-static void
+void
commands_hash(void);
void
@@ -305,171 +308,170 @@ free_action(gpointer act);
Action*
new_action(const gchar *name, const gchar *param);
-static bool
+bool
file_exists (const char * filename);
-static void
+void
toggle_insert_mode(WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
load_uri (WebKitWebView * web_view, GArray *argv, GString *result);
-static void
+void
new_window_load_uri (const gchar * uri);
-static void
+void
chain (WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
keycmd (WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
keycmd_nl (WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
keycmd_bs (WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
close_uzbl (WebKitWebView *page, GArray *argv, GString *result);
-static gboolean
+gboolean
run_command(const gchar *command, const guint npre,
const gchar **args, const gboolean sync, char **output_stdout);
-static void
+void
spawn(WebKitWebView *web_view, GArray *argv, GString *result);
-static void
+void
spawn_sh(WebKitWebView *web_view, GArray *argv, GString *result);
-static void
+void
spawn_sync(WebKitWebView *web_view, GArray *argv, GString *result);
-static void
+void
spawn_sh_sync(WebKitWebView *web_view, GArray *argv, GString *result);
-static void
+void
parse_command(const char *cmd, const char *param, GString *result);
-static void
+void
parse_cmd_line(const char *ctl_line, GString *result);
-static gchar*
+gchar*
build_stream_name(int type, const gchar *dir);
-static gboolean
+gboolean
control_fifo(GIOChannel *gio, GIOCondition condition);
-static gchar*
+gchar*
init_fifo(gchar *dir);
-static gboolean
+gboolean
control_stdin(GIOChannel *gio, GIOCondition condition);
-static void
+void
create_stdin();
-static gchar*
+gchar*
init_socket(gchar *dir);
-static gboolean
+gboolean
control_socket(GIOChannel *chan);
-static gboolean
+gboolean
control_client_socket(GIOChannel *chan);
-static void
+void
update_title (void);
-static gboolean
+gboolean
key_press_cb (GtkWidget* window, GdkEventKey* event);
-static void
+void
run_keycmd(const gboolean key_ret);
-static void
+void
exec_paramcmd(const Action* act, const guint i);
-static GtkWidget*
+GtkWidget*
create_browser ();
-static GtkWidget*
+GtkWidget*
create_mainbar ();
-static
-GtkWidget* create_window ();
+GtkWidget*
+create_window ();
-static
-GtkPlug* create_plug ();
+GtkPlug*
+create_plug ();
-static void
+void
run_handler (const gchar *act, const gchar *args);
-static void
+void
add_binding (const gchar *key, const gchar *act);
-static gchar*
+gchar*
get_xdg_var (XDG_Var xdg);
-static gchar*
+gchar*
find_xdg_file (int xdg_type, char* filename);
-static void
+void
settings_init ();
-static void
+void
search_text (WebKitWebView *page, GArray *argv, const gboolean forward);
-static void
+void
search_forward_text (WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
search_reverse_text (WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
dehilight (WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
run_js (WebKitWebView * web_view, GArray *argv, GString *result);
-static void
+void
run_external_js (WebKitWebView * web_view, GArray *argv, GString *result);
-static void
+void
eval_js(WebKitWebView * web_view, gchar *script, GString *result);
-static void handle_cookies (SoupSession *session,
+void handle_cookies (SoupSession *session,
SoupMessage *msg,
gpointer user_data);
-static void
+void
save_cookies (SoupMessage *msg,
gpointer user_data);
-static void
+void
set_var(WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
act_bind(WebKitWebView *page, GArray *argv, GString *result);
-static void
+void
act_dump_config();
-static void
+void
render_html();
-static void
+void
set_timeout(int seconds);
-static void
+void
dump_var_hash(gpointer k, gpointer v, gpointer ud);
-static void
+void
dump_key_hash(gpointer k, gpointer v, gpointer ud);
-static void
+void
dump_config();
-
typedef void (*Command)(WebKitWebView*, GArray *argv, GString *result);
typedef struct {
Command function;
@@ -477,96 +479,96 @@ typedef struct {
} CommandInfo;
/* Command callbacks */
-static void
+void
cmd_load_uri();
-static void
+void
cmd_set_status();
-static void
+void
set_proxy_url();
-static void
+void
set_icon();
-static void
+void
cmd_cookie_handler();
-static void
+void
move_statusbar();
-static void
+void
cmd_always_insert_mode();
-static void
+void
cmd_http_debug();
-static void
+void
cmd_max_conns();
-static void
+void
cmd_max_conns_host();
/* exported WebKitWebSettings properties */
-static void
+void
cmd_font_size();
-static void
+void
cmd_zoom_level();
-static void
+void
cmd_disable_plugins();
-static void
+void
cmd_disable_scripts();
-static void
+void
cmd_minimum_font_size();
-static void
+void
cmd_fifo_dir();
-static void
+void
cmd_socket_dir();
-static void
+void
cmd_modkey();
-static void
+void
cmd_useragent() ;
-static void
+void
cmd_autoload_img();
-static void
+void
cmd_autoshrink_img();
-static void
+void
cmd_enable_spellcheck();
-static void
+void
cmd_enable_private();
-static void
+void
cmd_print_bg();
-static void
+void
cmd_style_uri();
-static void
+void
cmd_resizable_txt();
-static void
+void
cmd_default_encoding();
-static void
+void
cmd_enforce_96dpi();
-static void
+void
cmd_inject_html();
-static void
+void
cmd_caret_browsing();
/* vi: set et ts=4: */