]> jfr.im git - solanum.git/commitdiff
modules: can .la suffix.
authorElizabeth Myers <redacted>
Sun, 13 Mar 2016 02:10:46 +0000 (20:10 -0600)
committerElizabeth Myers <redacted>
Sun, 13 Mar 2016 02:10:46 +0000 (20:10 -0600)
.la archives are prohibited by most Linux distributions because they
clutter up the linker. They may get caught up as victims in scripts that
purge .la files. Besides, .la files don't matter for simple loadable
modules on most systems.

So, what we do now instead is just use the platform suffix detected by
libtool.

Makefile.am
doc/ircd.conf.example
doc/reference.conf
ircd/modules.c

index 34e152871c43caf71157225a608c1eeb9720f770..c4a49a6df6df6211d28763de7578b6a04354c17e 100644 (file)
@@ -37,3 +37,8 @@ include/serno.h:
 
 install-data-hook:
        test -d ${DESTDIR}${logdir} || mkdir -p ${DESTDIR}${logdir}
+
+install-exec-hook:
+       rm -f ${DESTDIR}${moduledir}/*.la
+       rm -f ${DESTDIR}${moduledir}/autoload/*.la
+       rm -f ${DESTDIR}${moduledir}/extensions/*.la
index 49951a5ef162732d919c13379850837e1a80117c..9f2616610312b2bca1f86f1a87c7f56fe979bbb1 100644 (file)
@@ -8,33 +8,33 @@
  */
 
 /* Extensions */
-#loadmodule "extensions/chm_operonly_compat.la";
-#loadmodule "extensions/chm_quietunreg_compat.la";
-#loadmodule "extensions/chm_sslonly_compat.la";
-#loadmodule "extensions/chm_operpeace.la";
-#loadmodule "extensions/createauthonly.la";
-#loadmodule "extensions/extb_account.la";
-#loadmodule "extensions/extb_canjoin.la";
-#loadmodule "extensions/extb_channel.la";
-#loadmodule "extensions/extb_combi.la";
-#loadmodule "extensions/extb_extgecos.la";
-#loadmodule "extensions/extb_hostmask.la";
-#loadmodule "extensions/extb_oper.la";
-#loadmodule "extensions/extb_realname.la";
-#loadmodule "extensions/extb_server.la";
-#loadmodule "extensions/extb_ssl.la";
-#loadmodule "extensions/hurt.la";
-#loadmodule "extensions/m_extendchans.la";
-#loadmodule "extensions/m_findforwards.la";
-#loadmodule "extensions/m_identify.la";
-#loadmodule "extensions/no_oper_invis.la";
-#loadmodule "extensions/sno_farconnect.la";
-#loadmodule "extensions/sno_globalkline.la";
-#loadmodule "extensions/sno_globalnickchange.la";
-#loadmodule "extensions/sno_globaloper.la";
-#loadmodule "extensions/sno_whois.la";
-#loadmodule "extensions/override.la";
-#loadmodule "extensions/no_kill_services.la";
+#loadmodule "extensions/chm_operonly_compat";
+#loadmodule "extensions/chm_quietunreg_compat";
+#loadmodule "extensions/chm_sslonly_compat";
+#loadmodule "extensions/chm_operpeace";
+#loadmodule "extensions/createauthonly";
+#loadmodule "extensions/extb_account";
+#loadmodule "extensions/extb_canjoin";
+#loadmodule "extensions/extb_channel";
+#loadmodule "extensions/extb_combi";
+#loadmodule "extensions/extb_extgecos";
+#loadmodule "extensions/extb_hostmask";
+#loadmodule "extensions/extb_oper";
+#loadmodule "extensions/extb_realname";
+#loadmodule "extensions/extb_server";
+#loadmodule "extensions/extb_ssl";
+#loadmodule "extensions/hurt";
+#loadmodule "extensions/m_extendchans";
+#loadmodule "extensions/m_findforwards";
+#loadmodule "extensions/m_identify";
+#loadmodule "extensions/no_oper_invis";
+#loadmodule "extensions/sno_farconnect";
+#loadmodule "extensions/sno_globalkline";
+#loadmodule "extensions/sno_globalnickchange";
+#loadmodule "extensions/sno_globaloper";
+#loadmodule "extensions/sno_whois";
+#loadmodule "extensions/override";
+#loadmodule "extensions/no_kill_services";
 
 /*
  * IP cloaking extensions: use ip_cloaking_4.0
@@ -43,8 +43,8 @@
  * releases.
  */
 
-#loadmodule "extensions/ip_cloaking_4.0.la";
-#loadmodule "extensions/ip_cloaking.la";
+#loadmodule "extensions/ip_cloaking_4.0";
+#loadmodule "extensions/ip_cloaking";
 
 serverinfo {
        name = "hades.arpa";
index 19e337c562c9df11c927ef10b54ce1325144864c..2cb078c7f031b73634ad65b8154e2e4827e40a55 100644 (file)
  * Charybdis contains several extensions that are not enabled by default.
  * To use them, uncomment the lines below.
  *
- * Channel mode +-A (admin only)                     -- chm_adminonly.la
- * Channel mode +-O (oper only)                      -- chm_operonly.la
- * Channel mode +-S (ssl only)                       -- chm_sslonly.la
- * Emulates channel mode +-O (oper only) (+-iI $o)   -- chm_operonly_compat.la
- * Emulates channel mode +-R (quiet unreg) (+-q $~a) -- chm_quietunreg_compat.la
- * Emulates channel mode +-S (ssl only) (+-b $~z)    -- chm_sslonly_compat.la
- * Channel mode +-M (disallow KICK on IRC ops)       -- chm_operpeace.la
- * Restrict channel creation to logged in users      -- createauthonly.la
- * Account bans (+b $a[:mask])                       -- extb_account.la
- * Banned from another channel (+b $j:mask)          -- extb_canjoin.la
- * Other-channel bans (+b $c:mask)                   -- extb_channel.la
- * Combination extbans                               -- extb_combi.la
- * Extended ban (+b $x:mask)                         -- extb_extgecos.la
- * Hostmask bans (for combination extbans)           -- extb_hostmask.la
- * Oper bans (+b $o)                                 -- extb_oper.la
- * Realname (gecos) bans (+b $r:mask)                -- extb_realname.la
- * Server bans (+b $s:mask)                          -- extb_server.la
- * SSL bans (+b $z)                                  -- extb_ssl.la
- * Helpops system (umode +H)                         -- helpops.la
- * HURT system                                       -- hurt.la
- * New host mangling (umode +x)                      -- ip_cloaking_4.0.la
- * Old host mangling (umode +h)                      -- ip_cloaking.la
- * Dynamically extend channel limits                 -- m_extendchans.la
- * Find channel forwards                             -- m_findforwards.la
- * /identify support                                 -- m_identify.la
- * Opers cannot be invisible (umode +i)              -- no_oper_invis.la
- * Far connection notices (snomask +F)               -- sno_farconnect.la
- * Remote k/d/x line active notices                  -- sno_globalkline.la
- * Remote oper up notices                            -- sno_globaloper.la
- * Global nick-change notices                        -- sno_globalnickchange.la
- * /whois notifications (snomask +W)                 -- sno_whois.la
- * Oper-override (modehacking only)                  -- override.la
- * Stop services kills                               -- no_kill_services.la
+ * Channel mode +-A (admin only)                     -- chm_adminonly
+ * Channel mode +-O (oper only)                      -- chm_operonly
+ * Channel mode +-S (ssl only)                       -- chm_sslonly
+ * Emulates channel mode +-O (oper only) (+-iI $o)   -- chm_operonly_compat
+ * Emulates channel mode +-R (quiet unreg) (+-q $~a) -- chm_quietunreg_compat
+ * Emulates channel mode +-S (ssl only) (+-b $~z)    -- chm_sslonly_compat
+ * Channel mode +-M (disallow KICK on IRC ops)       -- chm_operpeace
+ * Restrict channel creation to logged in users      -- createauthonly
+ * Account bans (+b $a[:mask])                       -- extb_account
+ * Banned from another channel (+b $j:mask)          -- extb_canjoin
+ * Other-channel bans (+b $c:mask)                   -- extb_channel
+ * Combination extbans                               -- extb_combi
+ * Extended ban (+b $x:mask)                         -- extb_extgecos
+ * Hostmask bans (for combination extbans)           -- extb_hostmask
+ * Oper bans (+b $o)                                 -- extb_oper
+ * Realname (gecos) bans (+b $r:mask)                -- extb_realname
+ * Server bans (+b $s:mask)                          -- extb_server
+ * SSL bans (+b $z)                                  -- extb_ssl
+ * Helpops system (umode +H)                         -- helpops
+ * HURT system                                       -- hurt
+ * New host mangling (umode +x)                      -- ip_cloaking_4.0
+ * Old host mangling (umode +h)                      -- ip_cloaking
+ * Dynamically extend channel limits                 -- m_extendchans
+ * Find channel forwards                             -- m_findforwards
+ * /identify support                                 -- m_identify
+ * Opers cannot be invisible (umode +i)              -- no_oper_invis
+ * Far connection notices (snomask +F)               -- sno_farconnect
+ * Remote k/d/x line active notices                  -- sno_globalkline
+ * Remote oper up notices                            -- sno_globaloper
+ * Global nick-change notices                        -- sno_globalnickchange
+ * /whois notifications (snomask +W)                 -- sno_whois
+ * Oper-override (modehacking only)                  -- override
+ * Stop services kills                               -- no_kill_services
  */
-#loadmodule "extensions/chm_adminonly.la";
-#loadmodule "extensions/chm_operonly.la";
-#loadmodule "extensions/chm_sslonly.la";
-#loadmodule "extensions/chm_operonly_compat.la";
-#loadmodule "extensions/chm_quietunreg_compat.la";
-#loadmodule "extensions/chm_sslonly_compat.la";
-#loadmodule "extensions/chm_operpeace.la";
-#loadmodule "extensions/createauthonly.la";
-#loadmodule "extensions/extb_account.la";
-#loadmodule "extensions/extb_canjoin.la";
-#loadmodule "extensions/extb_channel.la";
-#loadmodule "extensions/extb_combi.la";
-#loadmodule "extensions/extb_extgecos.la";
-#loadmodule "extensions/extb_hostmask.la";
-#loadmodule "extensions/extb_oper.la";
-#loadmodule "extensions/extb_realname.la";
-#loadmodule "extensions/extb_server.la";
-#loadmodule "extensions/extb_ssl.la";
-#loadmodule "extensions/helpops.la";
-#loadmodule "extensions/hurt.la";
-#loadmodule "extensions/ip_cloaking_4.0.la";
-#loadmodule "extensions/ip_cloaking.la";
-#loadmodule "extensions/m_extendchans.la";
-#loadmodule "extensions/m_findforwards.la";
-#loadmodule "extensions/m_identify.la";
-#loadmodule "extensions/no_oper_invis.la";
-#loadmodule "extensions/sno_farconnect.la";
-#loadmodule "extensions/sno_globalkline.la";
-#loadmodule "extensions/sno_globalnickchange.la";
-#loadmodule "extensions/sno_globaloper.la";
-#loadmodule "extensions/sno_whois.la";
-#loadmodule "extensions/override.la";
-#loadmodule "extensions/no_kill_services.la";
+#loadmodule "extensions/chm_adminonly";
+#loadmodule "extensions/chm_operonly";
+#loadmodule "extensions/chm_sslonly";
+#loadmodule "extensions/chm_operonly_compat";
+#loadmodule "extensions/chm_quietunreg_compat";
+#loadmodule "extensions/chm_sslonly_compat";
+#loadmodule "extensions/chm_operpeace";
+#loadmodule "extensions/createauthonly";
+#loadmodule "extensions/extb_account";
+#loadmodule "extensions/extb_canjoin";
+#loadmodule "extensions/extb_channel";
+#loadmodule "extensions/extb_combi";
+#loadmodule "extensions/extb_extgecos";
+#loadmodule "extensions/extb_hostmask";
+#loadmodule "extensions/extb_oper";
+#loadmodule "extensions/extb_realname";
+#loadmodule "extensions/extb_server";
+#loadmodule "extensions/extb_ssl";
+#loadmodule "extensions/helpops";
+#loadmodule "extensions/hurt";
+#loadmodule "extensions/ip_cloaking_4.0";
+#loadmodule "extensions/ip_cloaking";
+#loadmodule "extensions/m_extendchans";
+#loadmodule "extensions/m_findforwards";
+#loadmodule "extensions/m_identify";
+#loadmodule "extensions/no_oper_invis";
+#loadmodule "extensions/sno_farconnect";
+#loadmodule "extensions/sno_globalkline";
+#loadmodule "extensions/sno_globalnickchange";
+#loadmodule "extensions/sno_globaloper";
+#loadmodule "extensions/sno_whois";
+#loadmodule "extensions/override";
+#loadmodule "extensions/no_kill_services";
 
 /* serverinfo {}:  Contains information about the server. (OLD M:) */
 serverinfo {
@@ -569,7 +569,7 @@ connect "irc.uplink.com" {
        flags = compressed, topicburst;
 };
 
-connect "ipv6.lame.server" {
+connect "ipv6me.server" {
        /* Hosts that are IPv6 addresses must be in :: shortened form
         * if applicable.  Addresses starting with a colon get an extra
         * zero prepended, for example: 0::1
@@ -625,8 +625,8 @@ cluster {
         *    all     - share all of the above
         */
 
-       /* share klines/unklines/xlines with *.lan */
-       name = "*.lan";
+       /* share klines/unklines/xlines with *n */
+       name = "*n";
        flags = kline, unkline, xline;
 
        /* share locops with irc.ircd-ratbox.org and ircd.ircd-ratbox.org */
@@ -1349,5 +1349,5 @@ modules {
        path = "/usr/local/ircd/modules/autoload";
 
        /* module: the name of a module to load on startup/rehash */
-       #module = "some_module.la";
+       #module = "some_module";
 };
index 8175c6246607266c3b83db2a293479551a1ac938..6f509ed9e8ba15aa7d63552dde1659489fa9587a 100644 (file)
 
 #include <ltdl.h>
 
+#ifndef LT_MODULE_EXT
+#      error "Charybdis requires loadable module support."
+#endif
+
 struct module **modlist = NULL;
 
 static const char *core_module_table[] = {
@@ -223,8 +227,8 @@ load_all_modules(int warn)
        DIR *system_module_dir = NULL;
        struct dirent *ldirent = NULL;
        char module_fq_name[PATH_MAX + 1];
-       int len;
-
+       static size_t module_ext_len = strlen(LT_MODULE_EXT);
+       
        modules_init();
 
        modlist = (struct module **) rb_malloc(sizeof(struct module *) * (MODS_INCREMENT));
@@ -241,8 +245,11 @@ load_all_modules(int warn)
 
        while ((ldirent = readdir(system_module_dir)) != NULL)
        {
+               struct stat s;
+               size_t len;
+
                len = strlen(ldirent->d_name);
-               if((len > 3) && !strcmp(ldirent->d_name+len-3, ".la"))
+               if(len > module_ext_len && !strcasecmp(ldirent->d_name + (len - module_ext_len), LT_MODULE_EXT))
                {
                        (void) snprintf(module_fq_name, sizeof(module_fq_name), "%s/%s", AUTOMODPATH, ldirent->d_name);
                        (void) load_a_module(module_fq_name, warn, MAPI_ORIGIN_CORE, 0);
@@ -267,14 +274,14 @@ load_core_modules(int warn)
 
        for (i = 0; core_module_table[i]; i++)
        {
-               snprintf(module_name, sizeof(module_name), "%s/%s%s", MODPATH,
-                           core_module_table[i], ".la");
+               snprintf(module_name, sizeof(module_name), "%s/%s", MODPATH,
+                           core_module_table[i]);
 
                if(load_a_module(module_name, warn, MAPI_ORIGIN_CORE, 1) == -1)
                {
                        ilog(L_MAIN,
-                            "Error loading core module %s%s: terminating ircd",
-                            core_module_table[i], ".la");
+                            "Error loading core module %s: terminating ircd",
+                            core_module_table[i]);
                        exit(0);
                }
        }
@@ -809,7 +816,7 @@ load_a_module(const char *path, int warn, int origin, int core)
 
        mod_basename = rb_basename(path);
 
-       tmpptr = lt_dlopen(path);
+       tmpptr = lt_dlopenext(path);
 
        if(tmpptr == NULL)
        {
@@ -822,7 +829,6 @@ load_a_module(const char *path, int warn, int origin, int core)
                return -1;
        }
 
-
        /*
         * _mheader is actually a struct mapi_mheader_*, but mapi_version
         * is always the first member of this structure, so we treate it