From fe07757574dcda6b6ee9ca06ddf8471fbb2a90bb Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 12:07:14 +0000 Subject: [PATCH 1/8] BitTorrent: Remove a superfluous check and assignment choke_bittorrent_peer checks and sets peer->remote.choked, so do not do it again in the caller. --- src/protocol/bittorrent/connection.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/protocol/bittorrent/connection.c b/src/protocol/bittorrent/connection.c index b55832b2..b6ad61ec 100644 --- a/src/protocol/bittorrent/connection.c +++ b/src/protocol/bittorrent/connection.c @@ -124,10 +124,7 @@ update_bittorrent_connection_state(struct connection *conn) max_uploads--; } else { - if (!peer->remote.choked) - choke_bittorrent_peer(peer); - - peer->remote.choked = 1; + choke_bittorrent_peer(peer); } /* Can remove the peer so we use foreachsafe(). */ From eee3ecdbbc3678f9970ea8d37d7044c4152375e6 Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 12:11:27 +0000 Subject: [PATCH 2/8] BitTorrent: Remove superfluous check and assignment unchoke_bittorrent_peer checks and clears peer->remote.choked, so do not do so in the caller. --- src/protocol/bittorrent/connection.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/protocol/bittorrent/connection.c b/src/protocol/bittorrent/connection.c index b6ad61ec..c0d4423a 100644 --- a/src/protocol/bittorrent/connection.c +++ b/src/protocol/bittorrent/connection.c @@ -114,10 +114,7 @@ update_bittorrent_connection_state(struct connection *conn) continue; if (min_uploads < max_uploads) { - if (peer->remote.choked) - unchoke_bittorrent_peer(peer); - - peer->remote.choked = 0; + unchoke_bittorrent_peer(peer); /* Uninterested peers are not counted as uploads. */ if (peer->remote.interested) From 5dcac5c32db4fcfaf78b902d2c70d6321f99c7d5 Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 12:36:54 +0000 Subject: [PATCH 3/8] Modularise config/kbdbind --- src/config/kbdbind.c | 19 +++++++++++++++---- src/config/kbdbind.h | 6 +++--- src/main/main.c | 3 --- src/main/module.c | 2 ++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/config/kbdbind.c b/src/config/kbdbind.c index 0a3e8eba..2c150e5a 100644 --- a/src/config/kbdbind.c +++ b/src/config/kbdbind.c @@ -16,6 +16,7 @@ #include "config/options.h" #include "intl/gettext/libintl.h" #include "main/event.h" +#include "main/module.h" #include "terminal/kbd.h" #include "util/memory.h" #include "util/string.h" @@ -515,8 +516,8 @@ static struct action_list action_table[KEYMAP_MAX] = { #undef ACTION_ -void -init_keymaps(void) +static void +init_keymaps(struct module *xxx) { enum keymap_id keymap_id; @@ -527,8 +528,8 @@ init_keymaps(void) add_default_keybindings(); } -void -free_keymaps(void) +static void +free_keymaps(struct module *xxx) { enum keymap_id keymap_id; @@ -948,3 +949,13 @@ bind_config_string(struct string *file) } } } + +struct module kbdbind_module = struct_module( + /* name: */ "Keyboard Bindings", + /* options: */ NULL, + /* hooks: */ NULL, + /* submodules: */ NULL, + /* data: */ NULL, + /* init: */ init_keymaps, + /* done: */ free_keymaps +); diff --git a/src/config/kbdbind.h b/src/config/kbdbind.h index 1a3c7809..39a6f9de 100644 --- a/src/config/kbdbind.h +++ b/src/config/kbdbind.h @@ -8,6 +8,7 @@ #include "util/string.h" struct listbox_item; +struct module; /* Used for holding enum _action values. */ typedef long action_id_T; @@ -114,9 +115,6 @@ struct keybinding { }; -void init_keymaps(void); -void free_keymaps(void); - struct keybinding *add_keybinding(enum keymap_id keymap_id, action_id_T action_id, struct term_event_keyboard *kbd, int event); int keybinding_exists(enum keymap_id keymap_id, struct term_event_keyboard *kbd, action_id_T *action_id); void free_keybinding(struct keybinding *); @@ -207,4 +205,6 @@ unsigned char *get_keystroke(action_id_T action_id, enum keymap_id keymap_id); void add_actions_to_string(struct string *string, action_id_T actions[], enum keymap_id keymap_id, struct terminal *term); +extern struct module kbdbind_module; + #endif diff --git a/src/main/main.c b/src/main/main.c index 173e0933..22a2861e 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -23,7 +23,6 @@ #include "config/cmdline.h" #include "config/conf.h" #include "config/home.h" -#include "config/kbdbind.h" #include "config/options.h" #include "dialogs/menu.h" #include "document/document.h" @@ -130,7 +129,6 @@ init(void) register_modules_options(builtin_modules); set_sigcld(); get_system_name(); - init_keymaps(); /* XXX: OS/2 has some stupid bug and the pipe must be created before * socket :-/. -- Mikulas */ @@ -298,7 +296,6 @@ terminate_all_subsystems(void) free_charsets_lookup(); free_colors_lookup(); done_modules(main_modules); - free_keymaps(); free_conv_table(); check_bottom_halves(); done_home(); diff --git a/src/main/module.c b/src/main/module.c index 4988bbd0..cbaf60e1 100644 --- a/src/main/module.c +++ b/src/main/module.c @@ -14,6 +14,7 @@ #include "bfu/dialog.h" #include "bookmarks/bookmarks.h" +#include "config/kbdbind.h" #include "config/timer.h" #include "config/urlhist.h" #include "cookies/cookies.h" @@ -33,6 +34,7 @@ struct module *main_modules[] = { &document_module, + &kbdbind_module, NULL /* XXX: Keep this */ }; From 4bb87288f886095776907a467fad972f99d8fe4f Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 12:39:37 +0000 Subject: [PATCH 4/8] Document the difference between builtin_modules and main_modules --- src/main/module.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/module.h b/src/main/module.h index 822d8f35..3b56e40b 100644 --- a/src/main/module.h +++ b/src/main/module.h @@ -74,7 +74,11 @@ void done_module(struct module *module); /* Interface for handling builtin modules */ +/* Builtin modules are initialised only when not connecting to a master + * terminal. */ extern struct module *builtin_modules[]; + +/* Main modules are initialised earlier and are not listed in Help -> About. */ extern struct module *main_modules[]; void register_modules_options(struct module *modules[]); From 337958d4e436cbb585fc1411f1869e2acaeb7c67 Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 12:49:51 +0000 Subject: [PATCH 5/8] Modularise HTTP authentication --- src/main/main.c | 1 - src/protocol/auth/auth.c | 17 +++++++++++++++++ src/protocol/auth/auth.h | 3 +++ src/protocol/protocol.c | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/main.c b/src/main/main.c index 22a2861e..5c38251b 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -286,7 +286,6 @@ terminate_all_subsystems(void) free_marks(); #endif free_history_lists(); - free_auth(); done_modules(builtin_modules); done_screen_drivers(); done_saved_session_info(); diff --git a/src/protocol/auth/auth.c b/src/protocol/auth/auth.c index 6b7f30eb..0788036d 100644 --- a/src/protocol/auth/auth.c +++ b/src/protocol/auth/auth.c @@ -10,6 +10,7 @@ #include "bfu/hierbox.h" #include "intl/gettext/libintl.h" +#include "main/module.h" #include "protocol/auth/auth.h" #include "protocol/auth/dialogs.h" #include "protocol/protocol.h" @@ -305,6 +306,12 @@ free_auth(void) free_list(questions_queue); } +static void +done_auth(struct module *xxx) +{ + free_auth(); +} + struct auth_entry * get_invalid_auth_entry(void) { @@ -320,3 +327,13 @@ get_invalid_auth_entry(void) return NULL; } + +struct module auth_module = struct_module( + /* name: */ "HTTP Authentication", + /* options: */ NULL, + /* hooks: */ NULL, + /* submodules: */ NULL, + /* data: */ NULL, + /* init: */ NULL, + /* done: */ done_auth +); diff --git a/src/protocol/auth/auth.h b/src/protocol/auth/auth.h index 386c3de8..ea4c5e88 100644 --- a/src/protocol/auth/auth.h +++ b/src/protocol/auth/auth.h @@ -7,6 +7,7 @@ #include "util/lists.h" struct listbox_item; +struct module; struct auth_entry { OBJECT_HEAD(struct auth_entry); @@ -41,4 +42,6 @@ void del_auth_entry(struct auth_entry *); void free_auth(void); struct auth_entry *get_invalid_auth_entry(void); +extern struct module auth_module; + #endif diff --git a/src/protocol/protocol.c b/src/protocol/protocol.c index fe2d060c..3ffca54c 100644 --- a/src/protocol/protocol.c +++ b/src/protocol/protocol.c @@ -26,6 +26,7 @@ /* Backends dynamic area: */ #include "protocol/about.h" +#include "protocol/auth/auth.h" #include "protocol/bittorrent/bittorrent.h" #include "protocol/bittorrent/connection.h" #include "protocol/data.h" @@ -273,6 +274,7 @@ static struct option_info protocol_options[] = { NULL_OPTION_INFO, }; static struct module *protocol_submodules[] = { + &auth_module, #ifdef CONFIG_BITTORRENT &bittorrent_protocol_module, #endif From a0bcf254ae290d00716fbc44e77ffe119d841625 Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 12:59:40 +0000 Subject: [PATCH 6/8] Modularise src/terminal --- src/main/main.c | 1 - src/main/module.c | 2 ++ src/terminal/screen.c | 14 +++++++++++++- src/terminal/screen.h | 4 ++-- src/terminal/terminal.c | 16 ++++++++++++++++ src/terminal/terminal.h | 3 +++ 6 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/main/main.c b/src/main/main.c index 5c38251b..95e730ed 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -287,7 +287,6 @@ terminate_all_subsystems(void) #endif free_history_lists(); done_modules(builtin_modules); - done_screen_drivers(); done_saved_session_info(); } diff --git a/src/main/module.c b/src/main/module.c index cbaf60e1..4bee1459 100644 --- a/src/main/module.c +++ b/src/main/module.c @@ -28,6 +28,7 @@ #include "network/ssl/ssl.h" #include "protocol/protocol.h" #include "scripting/scripting.h" +#include "terminal/terminal.h" #include "viewer/text/search.h" #include "viewer/timer.h" @@ -35,6 +36,7 @@ struct module *main_modules[] = { &document_module, &kbdbind_module, + &terminal_module, NULL /* XXX: Keep this */ }; diff --git a/src/terminal/screen.c b/src/terminal/screen.c index 1d44f595..352dc404 100644 --- a/src/terminal/screen.c +++ b/src/terminal/screen.c @@ -11,6 +11,7 @@ #include "config/options.h" #include "intl/charsets.h" +#include "main/module.h" #include "osdep/ascii.h" #include "osdep/osdep.h" #include "terminal/color.h" @@ -305,8 +306,9 @@ get_screen_driver(struct terminal *term) return add_screen_driver(type, term, len); } +/* Release private screen drawing utilities. */ void -done_screen_drivers(void) +done_screen_drivers(struct module *xxx) { free_list(active_screen_drivers); } @@ -776,3 +778,13 @@ done_screen(struct terminal_screen *screen) mem_free_if(screen->image); mem_free(screen); } + +struct module terminal_screen_module = struct_module( + /* name: */ "Terminal Screen", + /* options: */ NULL, + /* hooks: */ NULL, + /* submodules: */ NULL, + /* data: */ NULL, + /* init: */ NULL, + /* done: */ done_screen_drivers +); diff --git a/src/terminal/screen.h b/src/terminal/screen.h index 5608a0e3..35cd4351 100644 --- a/src/terminal/screen.h +++ b/src/terminal/screen.h @@ -2,6 +2,7 @@ #define EL__TERMINAL_SCREEN_H +struct module; struct screen_char; struct terminal; @@ -49,7 +50,6 @@ void erase_screen(struct terminal *term); /* Meeep! */ void beep_terminal(struct terminal *term); -/* Release private screen drawing utilities. */ -void done_screen_drivers(void); +extern struct module terminal_screen_module; #endif diff --git a/src/terminal/terminal.c b/src/terminal/terminal.c index 26943835..d5aab281 100644 --- a/src/terminal/terminal.c +++ b/src/terminal/terminal.c @@ -17,6 +17,7 @@ #include "config/options.h" #include "intl/gettext/libintl.h" #include "main/main.h" +#include "main/module.h" #include "main/object.h" #include "main/select.h" #include "osdep/osdep.h" @@ -370,3 +371,18 @@ attach_terminal(int in, int out, int ctl, void *info, int len) return term; } + +static struct module *terminal_submodules[] = { + &terminal_screen_module, + NULL +}; + +struct module terminal_module = struct_module( + /* name: */ "Terminal", + /* options: */ NULL, + /* hooks: */ NULL, + /* submodules: */ terminal_submodules, + /* data: */ NULL, + /* init: */ NULL, + /* done: */ NULL +); diff --git a/src/terminal/terminal.h b/src/terminal/terminal.h index d6a46d3d..9570260c 100644 --- a/src/terminal/terminal.h +++ b/src/terminal/terminal.h @@ -5,6 +5,7 @@ #include "terminal/event.h" #include "util/lists.h" +struct module; struct option; struct terminal_screen; struct terminal_interlink; @@ -178,4 +179,6 @@ int check_terminal_pipes(void); void close_terminal_pipes(void); struct terminal *attach_terminal(int in, int out, int ctl, void *info, int len); +extern struct module terminal_module; + #endif /* EL__TERMINAL_TERMINAL_H */ From e91b46de5f94b1e1f32e9839e079d3fe02ffd5c6 Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 13:05:48 +0000 Subject: [PATCH 7/8] Modularise viewer/text/marks --- src/main/main.c | 3 --- src/main/module.c | 4 ++++ src/viewer/text/marks.c | 15 +++++++++++++-- src/viewer/text/marks.h | 3 ++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/main.c b/src/main/main.c index 95e730ed..4f214ab1 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -281,9 +281,6 @@ terminate_all_subsystems(void) if (init_b) { #ifdef CONFIG_SCRIPTING trigger_event_name("quit"); -#endif -#ifdef CONFIG_MARKS - free_marks(); #endif free_history_lists(); done_modules(builtin_modules); diff --git a/src/main/module.c b/src/main/module.c index 4bee1459..35fd78ea 100644 --- a/src/main/module.c +++ b/src/main/module.c @@ -29,6 +29,7 @@ #include "protocol/protocol.h" #include "scripting/scripting.h" #include "terminal/terminal.h" +#include "viewer/text/marks.h" #include "viewer/text/search.h" #include "viewer/timer.h" @@ -44,6 +45,9 @@ struct module *main_modules[] = { struct module *builtin_modules[] = { &periodic_saving_module, &timer_module, +#ifdef CONFIG_MARKS + &viewer_marks_module, +#endif #ifdef CONFIG_CSS &css_module, #endif diff --git a/src/viewer/text/marks.c b/src/viewer/text/marks.c index 9fb97fe0..eafdcc88 100644 --- a/src/viewer/text/marks.c +++ b/src/viewer/text/marks.c @@ -10,6 +10,7 @@ #include "elinks.h" #include "document/view.h" +#include "main/module.h" #include "protocol/uri.h" #include "util/memory.h" #include "util/string.h" @@ -136,8 +137,8 @@ set_mark(unsigned char mark, struct view_state *mark_vs) marks[i] = vs; } -void -free_marks(void) +static void +done_marks(struct module *xxx) { int i; @@ -145,3 +146,13 @@ free_marks(void) free_mark_by_index(i); } } + +struct module viewer_marks_module = struct_module( + /* name: */ "Marks", + /* options: */ NULL, + /* hooks: */ NULL, + /* submodules: */ NULL, + /* data: */ NULL, + /* init: */ NULL, + /* done: */ done_marks +); diff --git a/src/viewer/text/marks.h b/src/viewer/text/marks.h index e39526b6..17185248 100644 --- a/src/viewer/text/marks.h +++ b/src/viewer/text/marks.h @@ -2,11 +2,12 @@ #ifndef EL__VIEWER_TEXT_MARKS_H #define EL__VIEWER_TEXT_MARKS_H +struct module; struct view_state; void goto_mark(unsigned char mark, struct view_state *vs); void set_mark(unsigned char mark, struct view_state *vs); -void free_marks(void); +extern struct module viewer_marks_module; #endif From 7f312c546c9d6bcd12d0a07dc4121c8800a3f3e3 Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sat, 20 May 2006 13:18:23 +0000 Subject: [PATCH 8/8] Create a module for src/viewer, which subsumes some existing modules as submodules --- src/main/module.c | 10 ++-------- src/viewer/Makefile | 2 +- src/viewer/viewer.c | 31 +++++++++++++++++++++++++++++++ src/viewer/viewer.h | 8 ++++++++ 4 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 src/viewer/viewer.c create mode 100644 src/viewer/viewer.h diff --git a/src/main/module.c b/src/main/module.c index 35fd78ea..3d0ebb86 100644 --- a/src/main/module.c +++ b/src/main/module.c @@ -29,9 +29,7 @@ #include "protocol/protocol.h" #include "scripting/scripting.h" #include "terminal/terminal.h" -#include "viewer/text/marks.h" -#include "viewer/text/search.h" -#include "viewer/timer.h" +#include "viewer/viewer.h" struct module *main_modules[] = { @@ -44,10 +42,7 @@ struct module *main_modules[] = { /* This is also used for version string composing so keep NULL terminated */ struct module *builtin_modules[] = { &periodic_saving_module, - &timer_module, -#ifdef CONFIG_MARKS - &viewer_marks_module, -#endif + &viewer_module, #ifdef CONFIG_CSS &css_module, #endif @@ -81,7 +76,6 @@ struct module *builtin_modules[] = { &exmode_module, #endif &goto_url_history_module, - &search_history_module, NULL }; diff --git a/src/viewer/Makefile b/src/viewer/Makefile index cc6e1ef3..6acdb3ff 100644 --- a/src/viewer/Makefile +++ b/src/viewer/Makefile @@ -2,6 +2,6 @@ top_builddir=../.. include $(top_builddir)/Makefile.config SUBDIRS = dump text -OBJS = action.o timer.o +OBJS = action.o timer.o viewer.o include $(top_srcdir)/Makefile.lib diff --git a/src/viewer/viewer.c b/src/viewer/viewer.c new file mode 100644 index 00000000..57db019e --- /dev/null +++ b/src/viewer/viewer.c @@ -0,0 +1,31 @@ +/* Viewer module */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "elinks.h" + +#include "intl/gettext/libintl.h" +#include "main/module.h" +#include "viewer/text/marks.h" +#include "viewer/text/search.h" +#include "viewer/timer.h" + +static struct module *viewer_submodules[] = { + &search_history_module, + &timer_module, +#ifdef CONFIG_MARKS + &viewer_marks_module, +#endif +}; + +struct module viewer_module = struct_module( + /* name: */ N_("Viewer"), + /* options: */ NULL, + /* hooks: */ NULL, + /* submodules: */ viewer_submodules, + /* data: */ NULL, + /* init: */ NULL, + /* done: */ NULL +); diff --git a/src/viewer/viewer.h b/src/viewer/viewer.h new file mode 100644 index 00000000..c32f92e8 --- /dev/null +++ b/src/viewer/viewer.h @@ -0,0 +1,8 @@ +#ifndef EL__VIEWER_VIEWER_H +#define EL__VIEWER_VIEWER_H + +struct module; + +extern struct module viewer_module; + +#endif