about summary refs log tree commit diff stats
path: root/xxxterm.h
diff options
context:
space:
mode:
authorMarco Peereboom <marco@conformal.com>2012-05-17 08:04:36 -0500
committerMarco Peereboom <marco@conformal.com>2012-05-17 08:04:36 -0500
commit77b17b22ccbfd89b90ced9996ee6a97a482b54f9 (patch)
tree3fa903781598244e7648289754cb87310d83ece8 /xxxterm.h
parent1b1398e0f206ca1e445e5768feda331065ea01f4 (diff)
downloadxombrero-77b17b22ccbfd89b90ced9996ee6a97a482b54f9.tar.gz
rename xxxterm to xomrero
Diffstat (limited to 'xxxterm.h')
-rw-r--r--xxxterm.h725
1 files changed, 0 insertions, 725 deletions
diff --git a/xxxterm.h b/xxxterm.h
deleted file mode 100644
index 8e5676d..0000000
--- a/xxxterm.h
+++ /dev/null
@@ -1,725 +0,0 @@
-/*
- * Copyright (c) 2011 Conformal Systems LLC <info@conformal.com>
- * Copyright (c) 2011 Marco Peereboom <marco@peereboom.us>
- * Copyright (c) 2010, 2011, 2012 Edd Barrett <vext01@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <ctype.h>
-#include <dlfcn.h>
-#include <err.h>
-#include <errno.h>
-#include <libgen.h>
-#include <pwd.h>
-#include <regex.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <inttypes.h>
-
-#include <sys/types.h>
-#if defined(__linux__)
-#include "linux/util.h"
-#include "linux/tree.h"
-#include <bsd/stdlib.h>
-# if !defined(sane_libbsd_headers)
-void		arc4random_buf(void *, size_t);
-u_int32_t	arc4random_uniform(u_int32_t);
-# endif
-#elif defined(__FreeBSD__)
-#include <libutil.h>
-#include "freebsd/util.h"
-#include <sys/tree.h>
-#elif defined(__OpenBSD__)
-#include <util.h>
-#include <sys/tree.h>
-#else
-void		arc4random_buf(void *, size_t);
-uint32_t	arc4random_uniform(uint32_t);
-#include "tree.h"
-#endif
-#include <sys/queue.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/un.h>
-
-#include <X11/Xlib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-
-#if GTK_CHECK_VERSION(3,0,0)
-/* we still use GDK_* instead of GDK_KEY_* */
-#include <gdk/gdkkeysyms-compat.h>
-#endif
-
-#include <webkit/webkit.h>
-#include <libsoup/soup.h>
-#include <JavaScriptCore/JavaScript.h>
-#include <gnutls/gnutls.h>
-#include <gnutls/x509.h>
-
-/* comment if you don't want to use threads */
-#define USE_THREADS
-
-#ifdef USE_THREADS
-#include <gcrypt.h>
-#include <pthread.h>
-
-/* #define USE_FLUSH */
-#ifdef USE_FLUSH
-#define GDK_FLUSH()	do { gdk_flush(); } while (0)
-#else
-#define GDK_FLUSH()
-#endif /* USE_FLUSH */
-
-#endif
-
-/* set if you don't want to use signals */
-#ifndef XT_SIGNALS_DISABLE
-#include <sys/wait.h>
-#endif
-
-/* set if you don't want to use resource limits */
-#ifndef XT_RESOURCE_LIMITS_DISABLE
-#include <sys/resource.h>
-#endif
-
-#include "javascript.h"
-/*
-javascript.h borrowed from vimprobable2 under the following license:
-
-Copyright (c) 2009 Leon Winter
-Copyright (c) 2009-2011 Hannes Schueller
-Copyright (c) 2009-2010 Matto Fransen
-Copyright (c) 2010-2011 Hans-Peter Deifel
-Copyright (c) 2010-2011 Thomas Adam
-Copyright (c) 2011 Albert Kim
-Copyright (c) 2011 Daniel Carl
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/*#define XT_DEBUG*/
-#ifdef XT_DEBUG
-#define DPRINTF(x...)		do { if (swm_debug) fprintf(stderr, x); } while (0)
-#define DNPRINTF(n,x...)	do { if (swm_debug & n) fprintf(stderr, x); } while (0)
-#define XT_D_MOVE		0x0001
-#define XT_D_KEY		0x0002
-#define XT_D_TAB		0x0004
-#define XT_D_URL		0x0008
-#define XT_D_CMD		0x0010
-#define XT_D_NAV		0x0020
-#define XT_D_DOWNLOAD		0x0040
-#define XT_D_CONFIG		0x0080
-#define XT_D_JS			0x0100
-#define XT_D_FAVORITE		0x0200
-#define XT_D_PRINTING		0x0400
-#define XT_D_COOKIE		0x0800
-#define XT_D_KEYBINDING		0x1000
-#define XT_D_CLIP		0x2000
-#define XT_D_BUFFERCMD		0x4000
-#define XT_D_INSPECTOR		0x8000
-#define XT_D_VISITED		0x10000
-#define XT_D_HISTORY		0x20000
-extern uint32_t	swm_debug;
-#else
-#define DPRINTF(x...)
-#define DNPRINTF(n,x...)
-#endif
-
-#define LENGTH(x)		(sizeof x / sizeof x[0])
-#define CLEAN(mask)		(mask & ~(GDK_MOD2_MASK) &	\
-				    ~(GDK_BUTTON1_MASK) &	\
-				    ~(GDK_BUTTON2_MASK) &	\
-				    ~(GDK_BUTTON3_MASK) &	\
-				    ~(GDK_BUTTON4_MASK) &	\
-				    ~(GDK_BUTTON5_MASK))
-
-#define XT_MARKS		"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'"
-#define XT_NOMARKS		(sizeof(XT_MARKS) - 1)
-#define XT_QMARKS		"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
-#define XT_NOQMARKS		(sizeof(XT_QMARKS) - 1)
-
-/* Path Separator */
-#ifndef	PS
-#define PS			"/"
-#endif
-
-struct tab {
-	TAILQ_ENTRY(tab)	entry;
-	GtkWidget		*vbox;
-	GtkWidget		*tab_content;
-	struct {
-		GtkWidget	*label;
-		GtkWidget	*favicon;
-		GtkWidget	*eventbox;
-		GtkWidget	*box;
-		GtkWidget	*sep;
-	} tab_elems;
-	GtkWidget		*label;
-	GtkWidget		*spinner;
-	GtkWidget		*uri_entry;
-	GtkStyle		*default_style;
-	GtkWidget		*search_entry;
-	GtkWidget		*toolbar;
-	GtkWidget		*browser_win;
-	GtkWidget		*statusbar_box;
-	struct {
-		GtkWidget	*statusbar;
-		GtkWidget	*buffercmd;
-		GtkWidget	*zoom;
-		GtkWidget	*position;
-	} sbe;
-	GtkWidget		*cmd;
-	GtkWidget		*buffers;
-	GtkWidget		*oops;
-	GtkWidget		*backward;
-	GtkWidget		*forward;
-	GtkWidget		*stop;
-	GtkWidget		*gohome;
-	GtkWidget		*js_toggle;
-	GtkEntryCompletion	*completion;
-	guint			tab_id;
-	WebKitWebView		*wv;
-
-	WebKitWebHistoryItem		*item;
-	WebKitWebBackForwardList	*bfl;
-
-	/* favicon */
-	WebKitNetworkRequest	*icon_request;
-	WebKitDownload		*icon_download;
-	gchar			*icon_dest_uri;
-
-	/* adjustments for browser */
-	GtkScrollbar		*sb_h;
-	GtkScrollbar		*sb_v;
-	GtkAdjustment		*adjust_h;
-	GtkAdjustment		*adjust_v;
-
-	/* flags */
-	int			mode;
-#define XT_MODE_COMMAND		(0)
-#define XT_MODE_INSERT		(1)
-#define XT_MODE_HINT		(2)
-#define XT_MODE_PASSTHROUGH	(3)
-	int			(*mode_cb)(struct tab *, GdkEventKey *, gpointer);
-	gpointer		mode_cb_data;
-	int			focus_wv;
-	int			ctrl_click;
-	gchar			*status;
-	int			xtp_meaning; /* identifies dls/favorites */
-	gchar			*tmp_uri;
-	int			popup; /* 1 if cmd_entry has popup visible */
-#ifdef USE_THREADS
-	/* https thread stuff */
-	GThread			*thread;
-#endif
-	/* hints */
-	int			script_init;
-	int			new_tab;
-
-	/* custom stylesheet */
-	int			styled;
-	char			*stylesheet;
-
-	/* search */
-	char			*search_text;
-	int			search_forward;
-	guint			search_id;
-
-	/* settings */
-	WebKitWebSettings	*settings;
-	gchar			*user_agent;
-	gboolean		load_images;
-
-	/* marks */
-	double			mark[XT_NOMARKS];
-
-	/* inspector */
-	WebKitWebInspector	*inspector;
-	GtkWidget		*inspector_window;
-	GtkWidget		*inspector_view;
-};
-TAILQ_HEAD(tab_list, tab);
-
-struct karg {
-	int		i;
-	char		*s;
-	int		precount;
-};
-
-struct download {
-	RB_ENTRY(download)	entry;
-	int			id;
-	WebKitDownload		*download;
-	struct tab		*tab;
-};
-RB_HEAD(download_list, download);
-RB_PROTOTYPE(download_list, download, entry, download_rb_cmp);
-
-struct history {
-	RB_ENTRY(history)	entry;
-	gchar			*uri;
-	gchar			*title;
-	time_t			time; /* When the item was added. */
-};
-RB_HEAD(history_list, history);
-RB_PROTOTYPE(history_list, history, entry, history_rb_cmp);
-
-#define XT_STS_FLAGS_INCLUDE_SUBDOMAINS		(1)
-#define XT_STS_FLAGS_EXPAND			(2)
-#define XT_STS_FILE				("strict-transport")
-
-struct strict_transport {
-	RB_ENTRY(strict_transport)	entry;
-	gchar				*host;
-	time_t				timeout;
-	int				flags;
-};
-RB_HEAD(strict_transport_tree, strict_transport);
-RB_PROTOTYPE(strict_transport_tree, strict_transport, entry, strict_transport_rb_cmp);
-
-/* utility */
-#define XT_NAME			("XXXTerm")
-#define XT_CB_HANDLED		(TRUE)
-#define XT_CB_PASSTHROUGH	(FALSE)
-#define XT_FAVS_FILE		("favorites")
-#define XT_SOD_FILE		("startofday")
-
-int			run_script(struct tab *, char *);
-void			xt_icon_from_file(struct tab *, char *);
-GtkWidget		*create_window(const gchar *);
-void			show_oops(struct tab *, const char *, ...);
-gchar			*get_html_page(gchar *, gchar *, gchar *, bool);
-const gchar		*get_uri(struct tab *);
-const gchar		*get_title(struct tab *, bool);
-void			load_uri(struct tab *t, gchar *uri);
-gboolean		match_uri(const gchar *uri, const gchar *key);
-int			valid_url_type(char *);
-
-void			load_webkit_string(struct tab *, const char *, gchar *);
-void			button_set_stockid(GtkWidget *, char *);
-
-/* cookies */
-int			remove_cookie(int);
-int			remove_cookie_domain(int);
-int			remove_cookie_all(void);
-void			print_cookie(char *msg, SoupCookie *);
-void			setup_cookies(void);
-
-/* history */
-int			insert_history_item(const gchar *uri, const gchar *title, time_t time);
-int			save_global_history_to_disk(struct tab *t);
-int			restore_global_history(void);
-char			*color_visited_helper(void);
-int			color_visited(struct tab *t, char *visited);
-
-/* completion */
-void			completion_add(struct tab *);
-void			completion_add_uri(const gchar *uri);
-
-/* external editor */
-#define XT_EE_BUFSZ	(64 * 1024)
-int			edit_src(struct tab *t, struct karg *args);
-int			edit_element(struct tab *t, struct karg *a);
-
-/* proxy */
-#define XT_PRXY_SHOW		(1<<0)
-#define XT_PRXY_TOGGLE		(1<<1)
-
-/* inspector */
-#define XT_INS_SHOW		(1<<0)
-#define XT_INS_HIDE		(1<<1)
-#define XT_INS_CLOSE		(1<<2)
-
-WebKitWebView*		inspector_inspect_web_view_cb(WebKitWebInspector *,
-			    WebKitWebView*, struct tab *);
-void			setup_inspector(struct tab *);
-int			inspector_cmd(struct tab *, struct karg *);
-
-/* tld public suffix */
-void			tld_tree_init();
-char			*tld_get_suffix(const char *);
-
-/* about */
-#define XT_XTP_STR		"xxxt://"
-#define XT_URI_ABOUT		("about:")
-#define XT_URI_ABOUT_LEN	(strlen(XT_URI_ABOUT))
-#define XT_URI_ABOUT_ABOUT	("about")
-#define XT_URI_ABOUT_ALLTHETHINGS ("allthethings")
-#define XT_URI_ABOUT_BLANK	("blank")
-#define XT_URI_ABOUT_CERTS	("certs")
-#define XT_URI_ABOUT_COOKIEWL	("cookiewl")
-#define XT_URI_ABOUT_COOKIEJAR	("cookiejar")
-#define XT_URI_ABOUT_DOWNLOADS	("downloads")
-#define XT_URI_ABOUT_FAVORITES	("favorites")
-#define XT_URI_ABOUT_HELP	("help")
-#define XT_URI_ABOUT_HISTORY	("history")
-#define XT_URI_ABOUT_JSWL	("jswl")
-#define XT_URI_ABOUT_PLUGINWL	("plwl")
-#define XT_URI_ABOUT_SET	("set")
-#define XT_URI_ABOUT_STATS	("stats")
-#define XT_URI_ABOUT_MARCO	("marco")
-#define XT_URI_ABOUT_STARTPAGE	("startpage")
-#define XT_URI_ABOUT_WEBKIT	("webkit")
-
-struct about_type {
-	char		*name;
-	int		(*func)(struct tab *, struct karg *);
-};
-
-struct sp {
-	char			*line;
-	TAILQ_ENTRY(sp)		entry;
-};
-TAILQ_HEAD(sp_list, sp);
-
-int			blank(struct tab *, struct karg *);
-int			help(struct tab *, struct karg *);
-int			about(struct tab *, struct karg *);
-int			stats(struct tab *, struct karg *);
-void			show_certs(struct tab *, gnutls_x509_crt_t *,
-			    size_t, char *);
-int			ca_cmd(struct tab *, struct karg *);
-int			cookie_show_wl(struct tab *, struct karg *);
-int			xtp_page_cl(struct tab *, struct karg *);
-int			xtp_page_dl(struct tab *, struct karg *);
-int			xtp_page_fl(struct tab *, struct karg *);
-int			xtp_page_hl(struct tab *, struct karg *);
-int			parse_xtp_url(struct tab *, const char *);
-int			add_favorite(struct tab *, struct karg *);
-void			update_favorite_tabs(struct tab *);
-void			update_history_tabs(struct tab *);
-void			update_download_tabs(struct tab *);
-void			xtp_generate_keys(void);
-size_t			about_list_size(void);
-int			cookie_cmd(struct tab *, struct karg *);
-int			js_cmd(struct tab *, struct karg *);
-int			pl_cmd(struct tab *, struct karg *);
-void			startpage_add(const char *, ...);
-
-/*
- * xtp tab meanings
- * identifies which tabs have xtp pages in (corresponding to about_list indices)
- */
-#define XT_XTP_TAB_MEANING_NORMAL	(-1) /* normal url */
-#define XT_XTP_TAB_MEANING_BL		(1)  /* about:blank in this tab */
-#define XT_XTP_TAB_MEANING_CL		(4)  /* cookie manager in this tab */
-#define XT_XTP_TAB_MEANING_DL		(5)  /* download manager in this tab */
-#define XT_XTP_TAB_MEANING_FL		(6)  /* favorite manager in this tab */
-#define XT_XTP_TAB_MEANING_HL		(8)  /* history manager in this tab */
-
-/* whitelists */
-#define XT_WL_TOGGLE		(1<<0)
-#define XT_WL_ENABLE		(1<<1)
-#define XT_WL_DISABLE		(1<<2)
-#define XT_WL_FQDN		(1<<3) /* default */
-#define XT_WL_TOPLEVEL		(1<<4)
-#define XT_WL_PERSISTENT	(1<<5)
-#define XT_WL_SESSION		(1<<6)
-#define XT_WL_RELOAD		(1<<7)
-#define XT_SHOW			(1<<8)
-#define XT_DELETE		(1<<9)
-#define XT_SAVE			(1<<10)
-#define XT_OPEN			(1<<11)
-
-#define XT_WL_INVALID		(0)
-#define XT_WL_JAVASCRIPT	(1)
-#define XT_WL_COOKIE		(2)
-#define XT_WL_PLUGIN		(3)
-
-struct domain {
-	RB_ENTRY(domain)	entry;
-	gchar			*d;
-	int			handy; /* app use */
-};
-RB_HEAD(domain_list, domain);
-RB_PROTOTYPE(domain_list, domain, entry, domain_rb_cmp);
-
-int			wl_show(struct tab *, struct karg *, char *,
-			    struct domain_list *);
-
-/* uri aliases */
-struct alias {
-	char			*a_name;
-	char			*a_uri;
-	TAILQ_ENTRY(alias)	 entry;
-};
-TAILQ_HEAD(alias_list, alias);
-
-/* mime types */
-struct mime_type {
-	char			*mt_type;
-	char			*mt_action;
-	int			mt_default;
-	int			mt_download;
-	TAILQ_ENTRY(mime_type)	entry;
-};
-TAILQ_HEAD(mime_type_list, mime_type);
-
-struct domain *	wl_find(const gchar *, struct domain_list *);
-int		wl_save(struct tab *, struct karg *, int);
-int		toggle_cwl(struct tab *, struct karg *);
-int		toggle_js(struct tab *, struct karg *);
-int		toggle_pl(struct tab *, struct karg *);
-
-/* input autofocus */
-void		input_autofocus(struct tab *);
-void		input_focus_blur(struct tab *, void *);
-void		*input_check_mode(struct tab *);
-int		command_mode(struct tab *, struct karg *);
-
-/* OS specific */
-int		fork_exec(struct tab *, char *, const gchar *, char *, int);
-
-/* settings */
-#define XT_BM_NORMAL		(0)
-#define XT_BM_WHITELIST		(1)
-#define XT_BM_KIOSK		(2)
-
-#define XT_GM_CLASSIC		(0)
-#define XT_GM_MINIMAL		(1)
-
-#define XT_TABS_NORMAL		(0)
-#define XT_TABS_COMPACT		(1)
-
-#define XT_EM_HYBRID		(0)
-#define XT_EM_VI		(1)
-
-#define XT_DM_START		(0)
-#define XT_DM_ASK		(1)
-#define XT_DM_ADD		(2)
-
-#define XT_REFERER_ALWAYS	(0)
-#define XT_REFERER_NEVER	(1)
-#define XT_REFERER_SAME_DOMAIN	(2)
-#define XT_REFERER_CUSTOM	(3)
-#define XT_REFERER_SAME_FQDN	(4)
-
-#define CTRL			GDK_CONTROL_MASK
-#define MOD1			GDK_MOD1_MASK
-#define SHFT			GDK_SHIFT_MASK
-
-/* actions */
-#define XT_STYLE_CURRENT_TAB	(0)
-#define XT_STYLE_GLOBAL		(1)
-
-#define XT_TAB_LAST		(-4)
-#define XT_TAB_FIRST		(-3)
-#define XT_TAB_PREV		(-2)
-#define XT_TAB_NEXT		(-1)
-#define XT_TAB_INVALID		(0)
-#define XT_TAB_NEW		(1)
-#define XT_TAB_DELETE		(2)
-#define XT_TAB_DELQUIT		(3)
-#define XT_TAB_OPEN		(4)
-#define XT_TAB_UNDO_CLOSE	(5)
-#define XT_TAB_SHOW		(6)
-#define XT_TAB_HIDE		(7)
-#define XT_TAB_NEXTSTYLE	(8)
-#define XT_TAB_LOAD_IMAGES	(9)
-
-#define XT_URL_SHOW		(1)
-#define XT_URL_HIDE		(2)
-
-struct key_binding {
-	char				*cmd;
-	guint				mask;
-	guint				use_in_entry;
-	guint				key;
-	TAILQ_ENTRY(key_binding)	entry;	/* in bss so no need to init */
-};
-TAILQ_HEAD(keybinding_list, key_binding);
-
-struct user_agent {
-	char *value;
-	TAILQ_ENTRY(user_agent)	entry;
-};
-TAILQ_HEAD(user_agent_list, user_agent);
-
-struct settings {
-	char		*name;
-	int		type;
-#define XT_S_INVALID	(0)
-#define XT_S_INT	(1)
-#define XT_S_STR	(2)
-#define XT_S_FLOAT	(3)
-	uint32_t	flags;
-#define XT_SF_RESTART	(1<<0)
-#define XT_SF_RUNTIME	(1<<1)
-	int		*ival;
-	char		**sval;
-	struct special	*s;
-	gfloat		*fval;
-	int		(*activate)(char *);
-};
-
-int		set(struct tab *, struct karg *);
-size_t		get_settings_size(void);
-int		settings_add(char *, char *);
-void		setup_proxy(char *);
-int		set_browser_mode(struct settings *, char *);
-int		set_encoding(struct tab *, struct karg *);
-int		set_gui_mode(struct settings *, char *);
-int		set_cookie_policy(struct settings *, char *);
-int		set_ssl_ca_file(char *);
-char		*get_browser_mode(struct settings *);
-char		*get_gui_mode(struct settings *);
-char		*get_cookie_policy(struct settings *);
-void		init_keybindings(void);
-void		config_parse(char *, int);
-char		*get_setting_name(int);
-void		statusbar_set_visibility(void);
-int		tabaction(struct tab *, struct karg *);
-int		urlaction(struct tab *, struct karg *);
-int		userstyle(struct tab *, struct karg *);
-struct tab	*get_current_tab(void);
-int		resizetab(struct tab *, struct karg *);
-
-#define		XT_DL_START	(0)
-#define		XT_DL_RESTART	(1)
-int		download_start(struct tab *, struct download *, int flag);
-
-extern int	tabless;
-extern int	enable_socket;
-extern int	single_instance;
-extern int	fancy_bar;
-extern int	browser_mode;
-extern int	enable_localstorage;
-extern char	*statusbar_elems;
-
-extern int	show_tabs;
-extern int	tab_style;
-extern int	show_url;
-extern int	show_statusbar;
-extern int	ctrl_click_focus;
-extern int	cookies_enabled;
-extern int	read_only_cookies;
-extern int	enable_scripts;
-extern int	enable_plugins;
-extern gfloat	default_zoom_level;
-extern char	default_script[PATH_MAX];
-extern int	window_height;
-extern int	window_width;
-extern int	window_maximize;
-extern int	icon_size;
-extern int	refresh_interval;
-extern int	enable_plugin_whitelist;
-extern int	enable_cookie_whitelist;
-extern int	enable_js_whitelist;
-extern int	session_timeout;
-extern int	cookie_policy;
-extern char	*ssl_ca_file;
-extern char	*resource_dir;
-extern gboolean	ssl_strict_certs;
-extern gboolean	enable_strict_transport;
-extern int	append_next;
-extern char	*home;
-extern char	*search_string;
-extern char	*http_proxy;
-extern char	*external_editor;
-extern char	download_dir[PATH_MAX];
-extern int	download_mode;
-extern char	runtime_settings[PATH_MAX];
-extern int	allow_volatile_cookies;
-extern int	color_visited_uris;
-extern int	save_global_history;
-extern struct user_agent	*user_agent;
-extern int	save_rejected_cookies;
-extern int	session_autosave;
-extern int	guess_search;
-extern int	dns_prefetch;
-extern gint	max_connections;
-extern gint	max_host_connections;
-extern gint	enable_spell_checking;
-extern char	*spell_check_languages;
-extern int	xterm_workaround;
-extern char	*url_regex;
-extern int	history_autosave;
-extern char	search_file[PATH_MAX];
-extern char	command_file[PATH_MAX];
-extern char	*encoding;
-extern int	autofocus_onload;
-extern int	enable_js_autorun;
-extern char	*cmd_font_name;
-extern char	*oops_font_name;
-extern char	*statusbar_font_name;
-extern char	*tabbar_font_name;
-extern int	edit_mode;
-extern int	userstyle_global;
-extern int	auto_load_images;
-extern int	enable_autoscroll;
-extern int	enable_favicon_entry;
-extern int	enable_favicon_tabs;
-extern int	referer_mode;
-extern char	*referer_custom;
-extern int	download_notifications;
-
-/* globals */
-extern char		*version;
-extern char		*icons[];
-extern char		rc_fname[PATH_MAX];
-extern char		work_dir[PATH_MAX];
-extern char		temp_dir[PATH_MAX];
-extern struct passwd	*pwd;
-extern SoupCookieJar	*s_cookiejar;
-extern SoupCookieJar	*p_cookiejar;
-extern SoupSession	*session;
-extern GtkNotebook	*notebook;
-extern GtkListStore	*completion_model;
-extern uint64_t		blocked_cookies;
-
-extern void	(*_soup_cookie_jar_add_cookie)(SoupCookieJar *, SoupCookie *);
-
-extern struct history_list	hl;
-extern int			hl_purge_count;
-extern struct download_list	downloads;
-extern struct tab_list		tabs;
-extern struct about_type	about_list[];
-extern struct domain_list	c_wl;
-extern struct domain_list	js_wl;
-extern struct domain_list	pl_wl;
-extern struct strict_transport_tree	st_tree;
-extern struct alias_list	aliases;
-extern struct mime_type_list	mtl;
-extern struct keybinding_list	kbl;
-extern struct sp_list		spl;
-extern struct user_agent_list	ua_list;
-extern int			user_agent_count;
-
-extern PangoFontDescription	*cmd_font;
-extern PangoFontDescription	*oops_font;
-extern PangoFontDescription	*statusbar_font;
-extern PangoFontDescription	*tabbar_font;