diff options
author | Timo Sirainen <cras@irssi.org> | 2001-02-17 10:35:35 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2001-02-17 10:35:35 +0000 |
commit | abe4ddb52ab32cb7e6aaee98a25e93f769a3aa46 (patch) | |
tree | 18f744255342648f9443de36e5b1eee098c9abe2 /src/perl/perl-fe.c | |
parent | f1205c10e0d6ef29065c96d788c35c4e23ed4860 (diff) | |
download | irssi-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.c | 76 |
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); +} |