-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I've attached a diff that I find useful, I'm not sure of your opinions
of it. There are a few things that still need to be done that I'm not
sure how to go about as of yet.

a) Setting it up such that a user can add this in the program itself
with the /network -pre_connect_cmd .
b) Performing the appropriate incantations on the configure script to
include this (at the moment it needs -D_PRE_CONNECT_CMD to build in, the
impression I got from the irc channel was that at best this was a
possible addon.

At the moment if a network has a "pre_connect_cmd" directive in the
config file, that command is passed back to the shell, before connecting.

I personally use this to make sure my nick is released on DALnet before
connecting.

Thanks


Rich Healey
- --
Richo -                                          - [EMAIL PROTECTED]
Developer / Systems Admin                       - OpenPGP: 0x8C8147807
MSN: [EMAIL PROTECTED]                       AIM: richohealey33
irc.psych0tik.net    ->              #hbh #admin       ((richohealey))
irc.freenode.org     ->              #hbh #debian      ((PythonNinja))
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkkc3V4ACgkQLeTfO4yBSAeM5ACbB82lbVd3WdNwNDsLgV6XdLJf
AH4AoNnEoTv9XQVBuLscNXXT+F69KXvR
=ZNs9
-----END PGP SIGNATURE-----
Index: src/core/chatnet-rec.h
===================================================================
--- src/core/chatnet-rec.h      (revision 4906)
+++ src/core/chatnet-rec.h      (working copy)
@@ -9,4 +9,7 @@
 
 char *own_host; /* address to use when connecting this server */
 char *autosendcmd; /* command to send after connecting to this ircnet */
+#ifdef _PRE_CONNECT_CMD
+char *pre_connect_cmd; /* shell command to be executed before connection */
+#endif
 IPADDR *own_ip4, *own_ip6; /* resolved own_address if not NULL */
Index: src/core/server-connect-rec.h
===================================================================
--- src/core/server-connect-rec.h       (revision 4906)
+++ src/core/server-connect-rec.h       (working copy)
@@ -22,6 +22,7 @@
 char *nick;
 char *username;
 char *realname;
+char *pre_connect_cmd;
 
 char *ssl_cert;
 char *ssl_pkey;
Index: src/core/chat-commands.c
===================================================================
--- src/core/chat-commands.c    (revision 4906)
+++ src/core/chat-commands.c    (working copy)
@@ -17,7 +17,6 @@
     with this program; if not, write to the Free Software Foundation, Inc.,
     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
-
 #include "module.h"
 #include "network.h"
 #include "signals.h"
@@ -83,7 +82,6 @@
                 cmd_params_free(free_arg);
                return NULL;
        }
-
        if (strchr(addr, '/') != NULL)
                conn->unix_socket = TRUE;
 
Index: src/core/servers-setup.c
===================================================================
--- src/core/servers-setup.c    (revision 4906)
+++ src/core/servers-setup.c    (working copy)
@@ -17,7 +17,9 @@
     with this program; if not, write to the Free Software Foundation, Inc.,
     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
-
+#ifdef _PRE_CONNECT_CMD
+#include <stdlib.h>
+#endif
 #include "module.h"
 #include "signals.h"
 #include "network.h"
@@ -313,6 +315,10 @@
 
         chatrec = chatnet_find(dest);
        if (chatrec != NULL) {
+        #ifdef _PRE_CONNECT_CMD
+            if (chatrec->pre_connect_cmd != NULL)
+                system(chatrec->pre_connect_cmd);
+        #endif
                rec = create_chatnet_conn(chatrec->name, port, password, nick);
                if (rec != NULL)
                        return rec;
Index: src/irc/core/irc-chatnets.c
===================================================================
--- src/irc/core/irc-chatnets.c (revision 4906)
+++ src/irc/core/irc-chatnets.c (working copy)
@@ -17,7 +17,6 @@
     with this program; if not, write to the Free Software Foundation, Inc.,
     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
-
 #include "module.h"
 #include "signals.h"
 #include "lib-config/iconfig.h"
@@ -48,6 +47,10 @@
        rec->max_msgs = config_node_get_int(node, "max_msgs", 0);
        rec->max_modes = config_node_get_int(node, "max_modes", 0);
        rec->max_whois = config_node_get_int(node, "max_whois", 0);
+    #ifdef _PRE_CONNECT_CMD
+    rec->pre_connect_cmd = config_node_get_str(node, "pre_connect_cmd", NULL);
+    #endif
+
 }
 
 static void sig_chatnet_saved(IRC_CHATNET_REC *rec, CONFIG_NODE *node)
@@ -73,6 +76,10 @@
                iconfig_node_set_int(node, "max_modes", rec->max_modes);
        if (rec->max_whois > 0)
                iconfig_node_set_int(node, "max_whois", rec->max_whois);
+    #ifdef _PRE_CONNECT_CMD
+       if (rec->pre_connect_cmd != NULL)
+                iconfig_node_set_str(node, "pre_connect_cmd", 
rec->pre_connect_cmd);
+   #endif
 }
 
 static void sig_chatnet_destroyed(IRC_CHATNET_REC *rec)

Reply via email to