summaryrefslogtreecommitdiff
path: root/src/perl/perl-fe.c
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2001-02-17 10:35:35 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2001-02-17 10:35:35 +0000
commitabe4ddb52ab32cb7e6aaee98a25e93f769a3aa46 (patch)
tree18f744255342648f9443de36e5b1eee098c9abe2 /src/perl/perl-fe.c
parentf1205c10e0d6ef29065c96d788c35c4e23ed4860 (diff)
downloadirssi-abe4ddb52ab32cb7e6aaee98a25e93f769a3aa46.zip
/LOAD module tries to load "module_core" instead. If it wasn't found,
it fallbacks to "module" again. If it is found, it tries to load several other modules too, like irc_module, fe_module and fe_irc_module. Split perl module to perl_core and fe_perl. Removed "_common" from some fe_common modules. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1228 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/perl/perl-fe.c')
-rw-r--r--src/perl/perl-fe.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/perl/perl-fe.c b/src/perl/perl-fe.c
new file mode 100644
index 00000000..f7ace310
--- /dev/null
+++ b/src/perl/perl-fe.c
@@ -0,0 +1,76 @@
+/*
+ perl-fe.c : irssi
+
+ Copyright (C) 2001 Timo Sirainen
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#include "module.h"
+#include "signals.h"
+
+#include "fe-common/core/themes.h"
+#include "fe-common/core/formats.h"
+
+#include "perl-common.h"
+
+static void perl_unregister_theme(const char *package)
+{
+ FORMAT_REC *formats;
+ int n;
+
+ formats = g_hash_table_lookup(default_formats, package);
+ if (formats == NULL) return;
+
+ for (n = 0; formats[n].def != NULL; n++) {
+ g_free(formats[n].tag);
+ g_free(formats[n].def);
+ }
+ g_free(formats);
+ theme_unregister_module(package);
+}
+
+static void sig_script_destroy(const char *type, const char *name,
+ const char *package)
+{
+ if (strcmp(type, "PERL") == 0)
+ perl_unregister_theme(package);
+}
+
+static void sig_perl_stop(void)
+{
+ GSList *tmp;
+ char *package;
+
+ /* themes */
+ for (tmp = perl_scripts; tmp != NULL; tmp = tmp->next) {
+ package = g_strdup_printf("Irssi::Script::%s",
+ (char *) tmp->data);
+ perl_unregister_theme(package);
+ g_free(package);
+ }
+}
+
+void fe_perl_init(void)
+{
+ signal_add("script destroy", (SIGNAL_FUNC) sig_script_destroy);
+ signal_add("perl stop", (SIGNAL_FUNC) sig_perl_stop);
+}
+
+void fe_perl_deinit(void)
+{
+ signal_remove("script destroy", (SIGNAL_FUNC) sig_script_destroy);
+ signal_remove("perl stop", (SIGNAL_FUNC) sig_perl_stop);
+}