UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Brad Smith-14
Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
as the Pidgin SILC support has been updated to use the 1.1 API.

http://comstyle.com/pidgin/pidgin.diff
http://comstyle.com/pidgin/silc-toolkit.diff

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Simon Kuhnle
On Fri, Jun 15, 2007 at 09:33:28PM -0400, Brad wrote:
> Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
> as the Pidgin SILC support has been updated to use the 1.1 API.
>
> http://comstyle.com/pidgin/pidgin.diff
> http://comstyle.com/pidgin/silc-toolkit.diff

Both silc-toolkit and pidgin built and installed without problems.
Could connect to silc server and spam some channel :-)

(i386, Jun 16 snapshot)

--
simon

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Aleksander Piotrowski-4
Simon Kuhnle <[hidden email]> wrote:

> On Fri, Jun 15, 2007 at 09:33:28PM -0400, Brad wrote:
> > Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
> > as the Pidgin SILC support has been updated to use the 1.1 API.
> >
> > http://comstyle.com/pidgin/pidgin.diff
> > http://comstyle.com/pidgin/silc-toolkit.diff
>
> Both silc-toolkit and pidgin built and installed without problems.
> Could connect to silc server and spam some channel :-)

Works for me too.  Will commit this diff soon.  Thanks Brad.

Alek
--
I can't believe you're asking this. OpenBSD is more than just a source tree
providing functionality. OpenBSD is an attitude. Part of that attitude is to
do a serious job _while having fun_. Having fun is vital; otherwise all
developers would run away.
 -- Otto Moerbeek, [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Mikolaj Kucharski-3
In reply to this post by Brad Smith-14
On Fri, Jun 15, 2007 at 09:33:28PM -0400, Brad wrote:
> Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
> as the Pidgin SILC support has been updated to use the 1.1 API.
>
> http://comstyle.com/pidgin/pidgin.diff

Pidgin is working with gmail and hotmail for me.

--
best regards
q#

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Aleksander Piotrowski-4
In reply to this post by Aleksander Piotrowski-4
Just a quick notice, this port hasn't been commited recently as it
breaks devel/py-silc.  martynas@ is currently working on a fix/update
for py-silc so that it would work with new silc-toolkit release.

Cheers,

Alek
--
Dwa miesiące temu londyński klub nikogo poza Wyspami nie obchodził. Groził mu
upadek, gdy uratowała go boska interwencja w osobie Romana Abramowicza.
Człowieka, którego od Pana Boga różni tyle, że Pan Bóg może wszystko, a
rosyjski nafciarz może wszystko, co się da kupić.
 -- Rafał Stec, Gazeta Wyborcza, 2003-09-15

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Brad Smith-14
In reply to this post by Brad Smith-14
On Fri, 15 Jun 2007 21:33:28 -0400
Brad <[hidden email]> wrote:

> Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
> as the Pidgin SILC support has been updated to use the 1.1 API.
>
> http://comstyle.com/pidgin/silc-toolkit.diff

The diff has been updated to now include an update to silc-toolkit 1.1.1.

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Martynas Venckus-2
In reply to this post by Brad Smith-14
> Just a quick notice, this port hasn't been commited recently as it
> breaks devel/py-silc.  martynas@ is currently working on a fix/update
> for py-silc so that it would work with new silc-toolkit release.

Yes, i'm sorry for the delay (busy with my job lately);  here's the
large diff to catch up with the 1.1 api changes.  There may still
be some issues with the weird features you might use, but the things
i'm using it work fine.

Note: the obvious thing you *will* need to do first if you're using
py-silc, move connect_to_server to the running() callback (see
docs/examples updates).

Any reviews/comments/fixes appreciated.

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/py-silc/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- Makefile 15 May 2007 08:27:28 -0000 1.2
+++ Makefile 1 Jul 2007 20:03:59 -0000
@@ -6,7 +6,7 @@
 
 V= 0.4
 DISTNAME= pysilc-${V}
-PKGNAME= py-silc-${V}p0
+PKGNAME= py-silc-${V}p1
 CATEGORIES= devel
 
 HOMEPAGE= http://www.liquidx.net/pysilc/
@@ -24,7 +24,7 @@
 
 MODULES= lang/python converters/libiconv
 
-LIB_DEPENDS= silc.>=6,silcclient.>=4::devel/silc-toolkit
+LIB_DEPENDS= silc.>=7,silcclient.>=5::devel/silc-toolkit
 
 NO_REGRESS= Yes
 
Index: patches/patch-README
===================================================================
RCS file: patches/patch-README
diff -N patches/patch-README
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-README 1 Jul 2007 20:03:59 -0000
@@ -0,0 +1,21 @@
+$OpenBSD$
+--- README.orig Mon Jul 10 12:16:09 2006
++++ README Sun Jul  1 22:52:11 2007
+@@ -73,6 +73,9 @@ class EchoClient(silc.SilcClient):
+           print message
+           self.send_private_message(sender, message)
+
++      def running(self):
++          self.connect_to_server("silc.example.com")
++
+       def connected(self):
+           print "* Connected"
+           self.command_call("JOIN crazybotchannel")
+@@ -99,7 +102,6 @@ class EchoClient(silc.SilcClient):
+ if __name__ == "__main__":
+    keys = silc.create_key_pair("silc.pub", "silc.prv")
+    client = EchoClient(keys, "echobot", "echobot", "Echo Bot")
+-   client.connect_to_server("silc.example.com")
+
+    while True:
+          try:
Index: patches/patch-examples_demo_py
===================================================================
RCS file: patches/patch-examples_demo_py
diff -N patches/patch-examples_demo_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-examples_demo_py 1 Jul 2007 20:03:59 -0000
@@ -0,0 +1,22 @@
+$OpenBSD$
+--- examples/demo.py.orig Mon Jul 10 02:57:15 2006
++++ examples/demo.py Sun Jul  1 22:52:11 2007
+@@ -29,6 +29,10 @@ class SupySilcClient(silc.SilcClient):
+     def _cache_channel(self, channel):
+         self.channels[channel.channel_name] = channel
+
++    def running(self):
++        print 'SILC: Running.'
++        self.connect_to_server(sys.argv[1], 706)
++
+     def connected(self):
+         print 'SILC: Connected to server.'
+         self.isconnected = True
+@@ -209,7 +213,6 @@ class SupySilcClient(silc.SilcClient):
+ if __name__ == "__main__":
+     import sys
+     c = SupySilcClient()
+-    c.connect_to_server(sys.argv[1], 706)
+     try:
+         while True:
+             c.run_one()        
Index: patches/patch-examples_echo_py
===================================================================
RCS file: patches/patch-examples_echo_py
diff -N patches/patch-examples_echo_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-examples_echo_py 1 Jul 2007 20:03:59 -0000
@@ -0,0 +1,24 @@
+$OpenBSD$
+--- examples/echo.py.orig Mon Jul 10 03:09:26 2006
++++ examples/echo.py Sun Jul  1 22:52:11 2007
+@@ -11,6 +11,10 @@ class EchoClient(silc.SilcClient):
+           print message
+           self.send_private_message(sender, message)
+
++      def running(self):
++          print "* Running"
++          client.connect_to_server("silc.example.com")
++
+       def connected(self):
+           print "* Connected"
+           self.command_call("JOIN #cam")
+@@ -37,8 +41,7 @@ class EchoClient(silc.SilcClient):
+ if __name__ == "__main__":
+    keys = silc.create_key_pair("silc.pub", "silc.prv", passphrase = "")
+    client = EchoClient(keys, "echobot", "echobot", "Echo Bot")
+-   client.connect_to_server("silc.example.com")
+-  
++
+    while True:
+        try:
+            client.run_one()
Index: patches/patch-setup_py
===================================================================
RCS file: /cvs/ports/devel/py-silc/patches/patch-setup_py,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 patch-setup_py
--- patches/patch-setup_py 9 Oct 2006 13:10:34 -0000 1.1.1.1
+++ patches/patch-setup_py 1 Jul 2007 20:03:59 -0000
@@ -1,16 +1,18 @@
 $OpenBSD: patch-setup_py,v 1.1.1.1 2006/10/09 13:10:34 alek Exp $
---- setup.py.orig Mon Jul 10 10:44:43 2006
-+++ setup.py Mon Oct  9 13:23:48 2006
-@@ -9,10 +9,11 @@ except:
+--- setup.py.orig Mon Jul 10 11:44:43 2006
++++ setup.py Sun Jul  1 22:53:24 2007
+@@ -9,10 +9,13 @@ except:
 
  ext_modules = [
      Extension('silc', ['src/pysilc.c'],
 -              libraries = ['silc', 'silcclient'],
-+              library_dirs = ['/usr/lib', '%%LOCALBASE%%/lib'],
 +              libraries = ['iconv', 'silc', 'silcclient'],
                extra_compile_args = ['-g'],
++              library_dirs = ['%%LOCALBASE%%/lib'],
                include_dirs = ['/usr/include/silc-toolkit',
 -                              '/usr/local/include/silc'],
++                              '%%LOCALBASE%%/include/silc-toolkit',
++                              '/usr/include/silc',
 +                              '%%LOCALBASE%%/include/silc'],
                depends = ['src/pysilc_callbacks.c',
                           'src/pysilc_channel.c',
Index: patches/patch-src_pysilc_c
===================================================================
RCS file: patches/patch-src_pysilc_c
diff -N patches/patch-src_pysilc_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_pysilc_c 1 Jul 2007 20:03:59 -0000
@@ -0,0 +1,233 @@
+$OpenBSD$
+--- src/pysilc.c.orig Mon Jul 10 01:27:57 2006
++++ src/pysilc.c Sun Jul  1 22:52:11 2007
+@@ -26,26 +26,28 @@ void initsilc() {    
+     PY_MOD_ADD_CLASS(mod, SilcClient);
+     PY_MOD_ADD_CLASS(mod, SilcChannel);    
+     PY_MOD_ADD_CLASS(mod, SilcUser);
++    PyModule_AddIntConstant(mod, "SILC_ID_CLIENT", SILC_ID_CLIENT);
++    PyModule_AddIntConstant(mod, "SILC_ID_CHANNEL", SILC_ID_CHANNEL);
++    PyModule_AddIntConstant(mod, "SILC_ID_SERVER", SILC_ID_SERVER);
+ }
+
+ static int PySilcClient_Init(PyObject *self, PyObject *args, PyObject *kwds)
+ {
+     PySilcClient *pyclient = (PySilcClient *)self;
++
++    pyclient->conncallback = _pysilc_client_connect_callback;
++
+     pyclient->callbacks.say =               _pysilc_client_callback_say;
+     pyclient->callbacks.channel_message =   _pysilc_client_callback_channel_message;
+     pyclient->callbacks.private_message =   _pysilc_client_callback_private_message;
+     pyclient->callbacks.notify =            _pysilc_client_callback_notify;
+     pyclient->callbacks.command =           _pysilc_client_callback_command;
+     pyclient->callbacks.command_reply =     _pysilc_client_callback_command_reply;
+-    pyclient->callbacks.connected =         _pysilc_client_callback_connected;
+-    pyclient->callbacks.disconnected =      _pysilc_client_callback_disconnected;
+     pyclient->callbacks.get_auth_method =   _pysilc_client_callback_get_auth_method;
+     pyclient->callbacks.verify_public_key = _pysilc_client_callback_verify_key;
+     pyclient->callbacks.ask_passphrase =    _pysilc_client_callback_ask_passphrase;
+-    pyclient->callbacks.failure =           _pysilc_client_callback_failure;
+     pyclient->callbacks.key_agreement =     _pysilc_client_callback_key_agreement;
+     pyclient->callbacks.ftp =               _pysilc_client_callback_ftp;
+-    pyclient->callbacks.detach =            _pysilc_client_callback_detach;
+
+     char *nickname = NULL, *username = NULL, *realname = NULL, *hostname = NULL;
+     static char *kwlist[] = {"keys", "nickname", "username", "realname", "hostname", NULL};
+@@ -67,9 +69,11 @@ static int PySilcClient_Init(PyObject *self, PyObject
+         return -1;
+        
+     pyclient->silcconn = NULL;
+-    
++
++    memset(&(pyclient->params), 0, sizeof(pyclient->params));
++
+     if (nickname)
+-        pyclient->silcobj->nickname = strdup(nickname);
++        pyclient->params.nickname = strdup(nickname);
+     if (username)
+         pyclient->silcobj->username = strdup(username);
+     else
+@@ -83,29 +87,22 @@ static int PySilcClient_Init(PyObject *self, PyObject
+     else
+         pyclient->silcobj->hostname = silc_net_localhost();
+
+-    pyclient->silcobj->pkcs         = keys->pkcs;
+-    pyclient->silcobj->public_key   = keys->public;
+-    pyclient->silcobj->private_key  = keys->private;
+-    
+     pyclient->keys = keys;
+     Py_INCREF(keys);
+    
+-    silc_client_init(pyclient->silcobj);
++    silc_client_init(pyclient->silcobj, pyclient->silcobj->username,
++                     pyclient->silcobj->hostname,
++                     pyclient->silcobj->realname, _pysilc_client_running,
++                     pyclient->silcobj);
++
+     return 0;
+ }
+
+ static void PySilcClient_Del(PyObject *obj)
+ {
+-    printf("SilcClient.__del__\n");
+     PySilcClient *pyclient = (PySilcClient *)obj;
+     if (pyclient->silcobj) {
+-        silc_client_stop(pyclient->silcobj);
+-        if (pyclient->silcobj->username)
+-            free(pyclient->silcobj->username);          
+-        if (pyclient->silcobj->realname)
+-            free(pyclient->silcobj->realname);        
+-        if (pyclient->silcobj->hostname)
+-            free(pyclient->silcobj->hostname);        
++        silc_client_stop(pyclient->silcobj, NULL, NULL);
+         silc_client_free(pyclient->silcobj);
+     }
+     Py_XDECREF(pyclient->keys);
+@@ -114,27 +111,30 @@ static void PySilcClient_Del(PyObject *obj)
+
+ static PyObject *pysilc_client_connect_to_server(PyObject *self, PyObject *args, PyObject *kwds)
+ {
+-    int result;
++    SilcAsyncOperation op;
+     unsigned int port = 706;
+     char *host;
+     static char *kwlist[] = {"host", "port", NULL};
+     PySilcClient *pyclient = (PySilcClient *)self;
+-    
++
+     if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|I", kwlist, &host, &port))
+         return NULL;
+-        
++
+     if (!pyclient || !pyclient->silcobj) {
+         PyErr_SetString(PyExc_RuntimeError, "SILC Client Not Initialised");
+         return NULL;
+     }
+-            
+-    result = silc_client_connect_to_server(pyclient->silcobj, NULL, port, host, NULL);
+-    if (result != -1) {
++
++    op = silc_client_connect_to_server(pyclient->silcobj,
++         &(pyclient->params), pyclient->keys->public, pyclient->keys->private,
++         host, port, pyclient->conncallback, NULL);
++
++    if (!op) {
+         Py_INCREF(self);
+-        return PyInt_FromLong(result);
++        return PyInt_FromLong(-1);
+     }
+-    
+-    return PyInt_FromLong(result);
++
++    return PyInt_FromLong(0);
+ }
+
+ static PyObject *pysilc_client_run_one(PyObject *self)
+@@ -184,12 +184,11 @@ static PyObject *pysilc_client_send_channel_message(Py
+     PyObject *private_key = NULL; // TODO: ignored at the moment
+     unsigned int defaultFlags = SILC_MESSAGE_FLAG_UTF8;
+     unsigned int flags = 0;
+-    bool force_send = 1;
+     PySilcClient *pyclient = (PySilcClient *)self;    
+
+-    static char *kwlist[] = {"channel", "msg", "private_key", "flags", "force_send", NULL};
++    static char *kwlist[] = {"channel", "msg", "private_key", "flags", NULL};
+    
+-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oes#|OIb", kwlist, &channel, "utf-8", &message, &length, &private_key, &flags, &force_send))
++    if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oes#|OI", kwlist, &channel, "utf-8", &message, &length, &private_key, &flags))
+         return NULL;
+        
+     if (!PyObject_IsInstance((PyObject *)channel, (PyObject *)&PySilcChannel_Type))
+@@ -205,8 +204,8 @@ static PyObject *pysilc_client_send_channel_message(Py
+                                               channel->silcobj,
+                                               NULL,
+                                               flags | defaultFlags,
+-                                              message, length,
+-                                              force_send);
++                                              NULL,
++                                              message, length);
+    
+     return PyInt_FromLong(result);
+ }
+@@ -220,13 +219,12 @@ static PyObject *pysilc_client_send_private_message(Py
+     int result = 0;
+     unsigned int defaultFlags = SILC_MESSAGE_FLAG_UTF8;
+     unsigned int flags = 0;
+-    bool force_send = 1;
+     PySilcClient *pyclient = (PySilcClient *)self;    
+    
+    
+-    static char *kwlist[] = {"user", "message", "flags", "force_send", NULL};
++    static char *kwlist[] = {"user", "message", "flags", NULL};
+    
+-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oes#|Ib", kwlist, &user, "utf-8", &message, &length, &flags, &force_send))
++    if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oes#|I", kwlist, &user, "utf-8", &message, &length, &flags))
+         return NULL;
+        
+     if (!PyObject_IsInstance((PyObject *)user, (PyObject *)&PySilcUser_Type))
+@@ -241,9 +239,9 @@ static PyObject *pysilc_client_send_private_message(Py
+                                               pyclient->silcconn,
+                                               user->silcobj,
+                                               flags | defaultFlags,
++                                              NULL,
+                                               message,
+-                                              length,
+-                                              force_send);
++                                              length);
+    
+     return PyInt_FromLong(result);
+ }
+@@ -307,7 +305,6 @@ static PyObject *pysilc_create_key_pair(PyObject *mod,
+     char *pub_identifier = NULL;
+    
+     SilcUInt32      key_length = 2048;
+-    SilcPKCS        pkcs;
+     SilcPublicKey   public_key;
+     SilcPrivateKey  private_key;
+    
+@@ -331,13 +328,13 @@ static PyObject *pysilc_create_key_pair(PyObject *mod,
+
+     bool result = silc_create_key_pair(pkcs_name, key_length, pub_filename,
+                                        prv_filename, pub_identifier, passphrase,
+-                                       &pkcs, &public_key, &private_key, 0);
++                                       &public_key, &private_key, 0);
+     if (!result) {
+         PyErr_SetString(PyExc_RuntimeError, "Unable to generate keys.");
+         return NULL;
+     }
+        
+-    return PySilcKeys_New(pkcs, public_key, private_key);
++    return PySilcKeys_New(public_key, private_key);
+ }
+
+ static PyObject *pysilc_load_key_pair(PyObject *mod, PyObject *args, PyObject *kwds)
+@@ -346,7 +343,6 @@ static PyObject *pysilc_load_key_pair(PyObject *mod, P
+ char *passphrase = NULL;
+     char *pub_filename , *prv_filename;
+
+-    SilcPKCS        pkcs;
+     SilcPublicKey   public_key;
+     SilcPrivateKey  private_key;
+    
+@@ -368,15 +364,14 @@ static PyObject *pysilc_load_key_pair(PyObject *mod, P
+ }
+
+ // Use the passphrase passed.
+-    bool result = silc_load_key_pair(pub_filename, prv_filename,
+- passphrase,
+- &pkcs, &public_key, &private_key);
+-
++    bool result = silc_load_key_pair(pub_filename, prv_filename,
++                                     passphrase, &public_key,
++                                     &private_key);
++
+     if (!result) {
+ PyErr_SetString(PyExc_RuntimeError, "Unable to load keys.");
+ return NULL;
+     }
+        
+-    return PySilcKeys_New(pkcs, public_key, private_key);
++    return PySilcKeys_New(public_key, private_key);
+ }
+-    
Index: patches/patch-src_pysilc_callbacks_c
===================================================================
RCS file: patches/patch-src_pysilc_callbacks_c
diff -N patches/patch-src_pysilc_callbacks_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_pysilc_callbacks_c 1 Jul 2007 20:03:59 -0000
@@ -0,0 +1,630 @@
+$OpenBSD$
+--- src/pysilc_callbacks.c.orig Sun Jul  9 20:18:27 2006
++++ src/pysilc_callbacks.c Sun Jul  1 22:52:11 2007
+@@ -46,6 +46,81 @@
+ #define PYSILC_SILCBUFFER_TO_PYLIST(source, destination, Type) \
+     do { } while (0);
+
++static void _pysilc_client_running(SilcClient client,
++                                   void *context)
++{
++    PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
++    PyObject *callback = NULL, *result = NULL;
++
++    callback = PyObject_GetAttrString((PyObject *)pyclient, "running");
++    if (!PyCallable_Check(callback))
++        goto cleanup;
++    if ((result = PyObject_CallObject(callback, NULL)) == 0)
++        PyErr_Print();
++
++cleanup:
++    Py_XDECREF(callback);
++    Py_XDECREF(result);
++}
++
++static void _pysilc_client_connect_callback(SilcClient client,
++                                            SilcClientConnection conn,
++                                            SilcClientConnectionStatus status,
++                                            SilcStatus error,
++                                            const char *message,
++                                            void *context)
++{
++    PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
++    PyObject *args = NULL, *callback = NULL, *result = NULL;
++
++    if ((status == SILC_CLIENT_CONN_SUCCESS) || (status == SILC_CLIENT_CONN_SUCCESS_RESUME)) {
++        if (error != SILC_STATUS_OK) {
++            // TODO: raise an exception and abort
++            // call silc_client_close_connection(client, conn);
++            pyclient->silcconn = NULL;
++            goto cleanup;
++        }
++
++        pyclient->silcconn = conn;
++
++        callback = PyObject_GetAttrString((PyObject *)pyclient, "connected");
++        if (!PyCallable_Check(callback))
++            goto cleanup;
++        if ((result = PyObject_CallObject(callback, NULL)) == 0)
++            PyErr_Print();
++    }
++    else if (status == SILC_CLIENT_CONN_DISCONNECTED) {
++        if (status != SILC_STATUS_OK) {
++            // TODO: raise an exception and abort
++            // call silc_client_close_connection(client, conn);
++        }
++
++        // TODO: we're not letting the user know about ClientConnection atm.
++        pyclient->silcconn = NULL;
++        callback = PyObject_GetAttrString((PyObject *)pyclient, "disconnected");
++        if (!PyCallable_Check(callback))
++            goto cleanup;
++
++        if (!(args = Py_BuildValue("(s)", message)))
++            goto cleanup;
++        if ((result = PyObject_CallObject(callback, args)) == 0)
++            PyErr_Print();
++    }
++    else {
++        callback = PyObject_GetAttrString((PyObject *)pyclient, "failure");
++        if (!PyCallable_Check(callback))
++            goto cleanup;
++        // TODO: pass on protocol, failure parameters
++        if ((result = PyObject_CallObject(callback, NULL)) == 0)
++            PyErr_Print();
++    }
++
++cleanup:
++    Py_XDECREF(args);
++    Py_XDECREF(callback);
++    Py_XDECREF(result);
++}
++
+ static void _pysilc_client_callback_say(SilcClient client,
+                                         SilcClientConnection conn,
+                                         SilcClientMessageType type,
+@@ -72,10 +147,11 @@ cleanup:    
+
+ static void _pysilc_client_callback_command(SilcClient client,
+                                             SilcClientConnection conn,
+-                                            SilcClientCommandContext cmd_context,
+-                                            bool success,
++                                            SilcBool success,
+                                             SilcCommand command,
+-                                            SilcStatus status)
++                                            SilcStatus status,
++                                            SilcUInt32 argc,
++                                            unsigned char **argv)
+ {
+     PyObject *callback = NULL, *args = NULL, *result = NULL;
+    
+@@ -155,78 +231,26 @@ cleanup:
+     Py_XDECREF(result);
+ }
+
+-static void _pysilc_client_callback_connected(SilcClient client,
+-                                              SilcClientConnection conn,
+-                                              SilcClientConnectionStatus status)
+-{
+-    PyObject *result = NULL, *callback = NULL;
+-    PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
+-    
+-    if (status != SILC_STATUS_OK) {
+-        // TODO: raise an exception and abort
+-        // call silc_client_close_connection(client, conn);
+-        pyclient->silcconn = NULL;
+-        goto cleanup;
+-    }
+-
+-
+-    pyclient->silcconn = conn;
+-
+-    callback = PyObject_GetAttrString((PyObject *)pyclient, "connected");
+-    if (!PyCallable_Check(callback))
+-        goto cleanup;
+-    if ((result = PyObject_CallObject(callback, NULL)) == 0)
+-        PyErr_Print();
+-cleanup:
+-    Py_XDECREF(callback);
+-    Py_XDECREF(result);
+-}
+-
+-static void _pysilc_client_callback_disconnected(SilcClient client,
+-                                                 SilcClientConnection conn,
+-                                                 SilcStatus status,
+-                                                 const char *message)
+-{
+-    PyObject *result = NULL, *callback = NULL, *args = NULL;
+-    PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
+-    
+-    if (status != SILC_STATUS_OK) {
+-        // TODO: raise an exception and abort
+-        // call silc_client_close_connection(client, conn);
+-    }
+-    
+-    // TODO: we're not letting the user know about ClientConnection atm.
+-    pyclient->silcconn = NULL;
+-    callback = PyObject_GetAttrString((PyObject *)pyclient, "disconnected");
+-    if (!PyCallable_Check(callback))
+-        goto cleanup;
+-
+-    if (!(args = Py_BuildValue("(s)", message)))
+-        goto cleanup;
+-    if ((result = PyObject_CallObject(callback, args)) == 0)
+-        PyErr_Print();    
+-cleanup:
+-    Py_XDECREF(callback);
+-    Py_XDECREF(args);
+-    Py_XDECREF(result);
+-}
+-
+ typedef struct _PySilcClient_Callback_Join_Context
+ {
+    char *channel_name;
+    char *topic;
+    char *hmac_name;
++   char *cipher;
+    PyObject *pychannel;
+    SilcUInt32 channel_mode;
+-   SilcUInt32 user_limit;
++   SilcUInt32 user_limit;
++   SilcHashTableList *user_list;
+ } PySilcClient_Callback_Join_Context;
+
+ static void _pysilc_client_callback_command_reply_join_finished(SilcClient client,
+                                                                 SilcClientConnection conn,
+-                                                                SilcClientEntry *user_list,
+-                                                                SilcUInt32 user_count,
+-                                                                void * context)
++                                                                void *context)
+ {
++    SilcUInt32 user_count;
++    SilcClientEntry user;
++    SilcChannelUser user_channel;
++
+     PyObject *result = NULL, *callback = NULL, *args = NULL;
+     PyObject *pytopic = NULL, *pyhmac_name = NULL, *users = NULL;
+     PySilcClient_Callback_Join_Context *join_context = NULL;
+@@ -243,13 +267,16 @@ static void _pysilc_client_callback_command_reply_join
+
+     // extract all the users
+     SilcUInt32 i = 0;
+-    users = PyTuple_New(user_count);    
+-    for (i = 0; i < user_count; i++) {
+-        PyObject *u = PySilcUser_New(user_list[i]);
++    user_count = silc_hash_table_count(join_context->user_list->ht);
++    users = PyTuple_New(user_count);
++    i = 0;
++    while (silc_hash_table_get(join_context->user_list, (void *)&user, (void *)&user_channel)) {
++        PyObject *u = PySilcUser_New(user);
+         PyTuple_SetItem(users, i, u);
++        i++;
+         // TODO: we don't DECREF because PyTuple doesn't incr ref count.
+     }
+-    
++
+     // prepare some possibly NULL values
+     if (join_context->topic == NULL) {
+         pytopic = Py_None;
+@@ -292,14 +319,18 @@ static void _pysilc_client_callback_command_reply_join
+     Py_XDECREF(args);
+     Py_XDECREF(result);
+ }                                                                
+-    
+-    
++
++
+ static void _pysilc_client_callback_notify(SilcClient client,
+                                            SilcClientConnection conn,
+                                            SilcNotifyType type, ...) {
+
+     PyObject *args = NULL, *result = NULL, *pyuser = NULL, *pychannel = NULL;
+     PyObject *callback = NULL, *pyarg = NULL;
++    SilcIdType idtype;
++    SilcUInt32 mode;
++    void *entry = NULL;
++    char *topic = NULL;
+
+     PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
+     va_list va;
+@@ -357,30 +388,34 @@ static void _pysilc_client_callback_notify(SilcClient
+         break;
+     case SILC_NOTIFY_TYPE_TOPIC_SET:
+         PYSILC_GET_CALLBACK_OR_BREAK("notify_topic_set");
+-        int idtype = va_arg(va, int);
+-        void *entry = va_arg(va, void *);
+-        char *topic = va_arg(va, char *);
++        idtype = va_arg(va, int);
++        entry = va_arg(va, void *);
++        topic = va_arg(va, char *);
+         PYSILC_NEW_CHANNEL_OR_BREAK(va_arg(va, SilcChannelEntry), pychannel);
+
+         switch (idtype) {
+-        case SILC_ID_CLIENT:
+-            PYSILC_NEW_USER_OR_BREAK(entry, pyuser);
+-            if ((args = Py_BuildValue("(iOOs)", idtype, pyuser, pychannel, topic)) == NULL)
++            case SILC_ID_CLIENT:
++                PYSILC_NEW_USER_OR_BREAK(entry, pyarg);
+                 break;
+-            if ((result = PyObject_CallObject(callback, args)) == 0)
+-                PyErr_Print();
+-            break;
+-        case SILC_ID_CHANNEL:
+-            PYSILC_NEW_CHANNEL_OR_BREAK(entry, pyarg);
+-            if ((args = Py_BuildValue("(iOOs)", idtype, pyarg, pychannel, topic)) == NULL)
++            case SILC_ID_CHANNEL:
++                PYSILC_NEW_CHANNEL_OR_BREAK(entry, pyarg);
+                 break;
+-            if ((result = PyObject_CallObject(callback, args)) == 0)
+-                PyErr_Print();                
+-            break;
+-        case SILC_ID_SERVER:
+-            // TODO: Unimplemented
+-            break;
++            case SILC_ID_SERVER:
++                pyarg = Py_None;
++                Py_INCREF(pyarg); // TODO: no server type
++                break;
+         }
++        
++        args = Py_BuildValue("(iOOs)",
++            idtype,
++            pyarg,
++            pychannel,
++            topic);
++            
++        if (args == NULL)
++            break;
++        if ((result = PyObject_CallObject(callback, args)) == 0)
++            PyErr_Print();
+         break;
+
+     case SILC_NOTIFY_TYPE_NICK_CHANGE:
+@@ -394,30 +429,80 @@ static void _pysilc_client_callback_notify(SilcClient
+         break;
+
+     case SILC_NOTIFY_TYPE_CMODE_CHANGE:
+-        /*
+-        if (!PyCallable_Check(pyclient->notify_cmode_change))
+-            break;
++        PYSILC_GET_CALLBACK_OR_BREAK("notify_cmode_change");
++        idtype = va_arg(va, int);
++        entry = va_arg(va, void *);
++        mode = va_arg(va, SilcUInt32);
++        char *cipher_name = va_arg(va, char *);
++        char *hmac_name = va_arg(va, char *);
++        char *passphrase = va_arg(va, char *);
++        SilcPublicKey founder_key = va_arg(va, SilcPublicKey);
++        SilcBuffer channel_pubkeys = va_arg(va, SilcBuffer);
+         PYSILC_NEW_CHANNEL_OR_BREAK(va_arg(va, SilcChannelEntry), pychannel);
+-        PYSILC_NEW_USER_OR_BREAK(va_arg(va, SilcClientEntry), pyuser);
+-        if ((args = Py_BuildValue("(IOO)", status, pychannel, pyuser)) == NULL)
++        
++        switch (idtype) {
++            case SILC_ID_CLIENT:
++                PYSILC_NEW_USER_OR_BREAK(entry, pyarg);
++                break;
++            case SILC_ID_CHANNEL:
++                PYSILC_NEW_CHANNEL_OR_BREAK(entry, pyarg);
++                break;
++            case SILC_ID_SERVER:
++                pyarg = Py_None; // TODO: no server objects
++                Py_INCREF(Py_None);
++                break;
++        }
++
++        args = Py_BuildValue("(iOOissss)",
++            idtype,
++            pyarg,
++            mode,
++            cipher_name,
++            hmac_name,
++            passphrase,
++            Py_None,
++            Py_None,
++            pychannel);
++
++        if (args == NULL)
+             break;
+            
+-        result = PyObject_CallObject(pyclient->notify_cmode_change, args);
+-        */
+-        // TODO: wrong implementation
++        if ((result = PyObject_CallObject(callback, args)) == 0)
++            PyErr_Print();
+         break;
+
+     case SILC_NOTIFY_TYPE_CUMODE_CHANGE:
+-        /*
+-        if (!PyCallable_Check(pyclient->notify_cumode_change))
+-            break;
++        PYSILC_GET_CALLBACK_OR_BREAK("notify_cumode_change");
++        idtype = va_arg(va, int);
++        entry = va_arg(va, void *);
++        mode = va_arg(va, SilcUInt32);
+         PYSILC_NEW_CHANNEL_OR_BREAK(va_arg(va, SilcChannelEntry), pychannel);
+         PYSILC_NEW_USER_OR_BREAK(va_arg(va, SilcClientEntry), pyuser);
+-        if ((args = Py_BuildValue("(IOO)", status, pychannel, pyuser)) == NULL)
++        switch (idtype) {
++        case SILC_ID_CLIENT:
++            PYSILC_NEW_USER_OR_BREAK(entry, pyarg);
+             break;
+-        result = PyObject_CallObject(pyclient->notify_cumode_change, args);
+-        */
+-        // TODO: wrong implementation
++        case SILC_ID_CHANNEL:
++            PYSILC_NEW_CHANNEL_OR_BREAK(entry, pyarg);
++            break;
++        case SILC_ID_SERVER:
++            pyarg = Py_None; // TODO: no server objects
++            Py_INCREF(Py_None);
++            break;
++        }
++        
++        args = Py_BuildValue("(iOiOO)",
++                             idtype,
++                             pyarg,
++                             mode,
++                             pychannel,
++                             pyuser);
++            
++        if (args == NULL)
++            break;
++        
++        if ((result = PyObject_CallObject(callback, args)) == 0)
++            PyErr_Print();
+         break;
+
+     case SILC_NOTIFY_TYPE_MOTD:
+@@ -444,9 +529,8 @@ static void _pysilc_client_callback_notify(SilcClient
+        
+     case SILC_NOTIFY_TYPE_KICKED:
+         PYSILC_GET_CALLBACK_OR_BREAK("notify_kicked");
+-        char *message;        
+-        PYSILC_NEW_USER_OR_BREAK(va_arg(va, SilcClientEntry), pyarg);            
+-        message = va_arg(va, char *);
++        PYSILC_NEW_USER_OR_BREAK(va_arg(va, SilcClientEntry), pyarg);
++        char *message = va_arg(va, char *);
+         PYSILC_NEW_USER_OR_BREAK(va_arg(va, SilcClientEntry), pyuser);
+         PYSILC_NEW_CHANNEL_OR_BREAK(va_arg(va, SilcChannelEntry), pychannel);
+        
+@@ -457,7 +541,37 @@ static void _pysilc_client_callback_notify(SilcClient
+         break;
+
+     case SILC_NOTIFY_TYPE_KILLED:
+-        break; // TODO: Unimplemented
++        PYSILC_GET_CALLBACK_OR_BREAK("notify_killed");
++        PYSILC_NEW_USER_OR_BREAK(va_arg(va, SilcClientEntry), pyuser);
++        char *kill_message = va_arg(va, char *);
++        idtype = va_arg(va, int);
++        entry = va_arg(va, void *);
++        PYSILC_NEW_CHANNEL_OR_BREAK(va_arg(va, SilcChannelEntry), pychannel);
++        switch (idtype) {
++        case SILC_ID_CLIENT:
++             PYSILC_NEW_USER_OR_BREAK(entry, pyarg);
++             break;
++        case SILC_ID_CHANNEL:
++            PYSILC_NEW_CHANNEL_OR_BREAK(entry, pyarg);
++            break;
++        case SILC_ID_SERVER:
++            pyarg = Py_None; // TODO: no server objects
++            Py_INCREF(Py_None);
++            break;
++        }
++
++        args = Py_BuildValue("(OsOO)",
++         pyuser, // client that was killed
++         kill_message,
++         pyarg, // the killer, either a SilcClient or SilcChannel or None
++         pychannel);
++
++        if (args == NULL)
++            break;
++
++        if ((result = PyObject_CallObject(callback, args)) == 0)
++            PyErr_Print();
++        break;
+        
+     case SILC_NOTIFY_TYPE_ERROR:
+         PYSILC_GET_CALLBACK_OR_BREAK("notify_error");
+@@ -494,30 +608,27 @@ static void _pysilc_client_callback_notify(SilcClient
+
+
+
+-static void _pysilc_client_callback_command_reply(SilcClient client,
++static void _pysilc_client_callback_command_reply(SilcClient client,
+                                                   SilcClientConnection conn,
+-                                                  SilcCommandPayload cmd_payload,
+-                                                  bool success,
+-                                                  SilcCommand command,
+-                                                  SilcStatus status, ...)
++                                                  SilcCommand command,
++                                                  SilcStatus status,
++                                                  SilcStatus error, va_list va)
+ {
+     PyObject *args = NULL, *result = NULL, *pyuser = NULL, *pychannel = NULL;
+     PyObject *callback = NULL, *pyarg = NULL;
+
+     PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
+-    va_list va;
+-    va_start(va, status);
+    
+-    if (!success) {
+-        // we encounter an error, return the command and status
++    if (status != SILC_STATUS_OK) {
++        // we encounter an error, return the command and error
+         callback = PyObject_GetAttrString((PyObject *)pyclient,
+                                           "command_reply_failed");
+         if (!PyCallable_Check(callback))
+             return;
+         if (!(args = Py_BuildValue("(isis)", command,
+                                    silc_get_command_name(command),
+-                                   status,
+-                                   silc_get_status_message(status)))) {
++                                   error,
++                                   silc_get_status_message(error)))) {
+             Py_DECREF(callback);
+             return;
+         }
+@@ -696,14 +807,11 @@ static void _pysilc_client_callback_command_reply(Silc
+         memset(context, 0, sizeof(PySilcClient_Callback_Join_Context));
+         if (!context)
+             break;
+-            
++
+         char *tmpstr = NULL;
+-        int ignored;
+-        void *dummy;
+         SilcUInt32 client_count;
+         SilcBuffer client_list;
+-        
+-        
++
+         tmpstr = va_arg(va, char *);
+         if (tmpstr)
+             context->channel_name = strdup(tmpstr);
+@@ -711,27 +819,19 @@ static void _pysilc_client_callback_command_reply(Silc
+         context->pychannel = pychannel;
+         Py_INCREF(pychannel);
+         context->channel_mode = va_arg(va, SilcUInt32);
+-        ignored = va_arg(va, int);  // ignored: ignore        
+-        dummy = va_arg(va, void *); // ignored: key_payload
+-        dummy = va_arg(va, void *); // NULL
+-        dummy = va_arg(va, void *); // NULL
++        context->user_list = va_arg(va, SilcHashTableList *);
+         tmpstr = va_arg(va, char *);
+         if (tmpstr)
+             context->topic = strdup(tmpstr);
+         tmpstr = va_arg(va, char *);
++            context->cipher = strdup(tmpstr);
++        tmpstr = va_arg(va, char *);
+         if (tmpstr)
+             context->hmac_name = strdup(tmpstr);
+-        client_count = va_arg(va, SilcUInt32);
+-        client_list = va_arg(va, SilcBuffer);
+-        dummy = va_arg(va, void *); // TODO: SilcBuffer client_mode_list
+-        dummy = va_arg(va, void *); // TODO: SilcPublicKey founder_key
+-        dummy = va_arg(va, void *); // TODO: SilcBuffer channel_pubkeys
+         context->user_limit = va_arg(va, SilcUInt32);
+-            
+-        silc_client_get_clients_by_list(client, conn,
+-                                        client_count, client_list,
+-                                        _pysilc_client_callback_command_reply_join_finished,
+-                                        context);
++
++        _pysilc_client_callback_command_reply_join_finished(client, conn, context);
++
+         break;
+     }
+     case SILC_COMMAND_MOTD:
+@@ -846,7 +946,7 @@ static void _pysilc_client_callback_command_reply(Silc
+         if (channel && channel->user_list) {
+             silc_hash_table_list(channel->user_list, &hash_list);
+             while (silc_hash_table_get(&hash_list, (void *)&user, (void *)&user_channel)) {
+-                cached = silc_client_get_client_by_id(client, conn, user->id);
++                cached = silc_client_get_client_by_id(client, conn, &(user->id));
+                 if (cached) {
+                     u = PySilcUser_New(cached);
+                     PyTuple_SetItem(pyuser, i, u);
+@@ -880,60 +980,37 @@ cleanup:
+     Py_XDECREF(pyuser);
+ }
+
+-static void _pysilc_client_callback_verify_key(SilcClient client,
++static void _pysilc_client_callback_verify_key(SilcClient client,
+                                                SilcClientConnection conn,
+-                                               SilcSocketType conn_type,
+-                                               unsigned char *pk,
+-                                               SilcUInt32 pk_len,
+-                                               SilcSKEPKType pk_type,
+-                                               SilcVerifyPublicKey completion,
++                                               SilcConnectionType conn_type,
++                                               SilcPublicKey public_key,
++                                               SilcVerifyPublicKey completion,
+                                                void *context)
+ {
+     // TODO: implement me
+     completion(TRUE, context);  
+ }
+
+-static void _pysilc_client_callback_get_auth_method(SilcClient client,
++static void _pysilc_client_callback_get_auth_method(SilcClient client,
+                                                     SilcClientConnection conn,
+-                                                    char *hostname,
++                                                    char *hostname,
+                                                     SilcUInt16 port,
+-                                                    SilcGetAuthMeth completion,
++                                                    SilcAuthMethod auth_method,
++                                                    SilcGetAuthMeth completion,
+                                                     void *context)
+ {
+     // TODO: implement this properly
+-    completion(TRUE, SILC_AUTH_PUBLIC_KEY, NULL, 0, context);
++    completion(SILC_AUTH_PUBLIC_KEY, NULL, 0, context);
+ }
+
+-static void _pysilc_client_callback_failure(SilcClient client,
+-                                            SilcClientConnection conn,
+-                                            SilcProtocol protocol,
+-                                            void *failure)
++static void _pysilc_client_callback_key_agreement(SilcClient client,
++                                                  SilcClientConnection conn,
++                                                  SilcClientEntry client_entry,
++                                                  const char *hostname,
++                                                  SilcUInt16 protocol,
++                                                  SilcUInt16 port)
+ {
+-    PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
+-    PyObject *callback = NULL, *result = NULL;
+-    
+-    callback = PyObject_GetAttrString((PyObject *)pyclient, "failure");
+-    if (!PyCallable_Check(callback))
+-        goto cleanup;
+-    // TODO: pass on protocol, failure parameters
+-    if ((result = PyObject_CallObject(callback, NULL)) == 0)
+-        PyErr_Print();
+-cleanup:
+-    Py_XDECREF(callback);
+-    Py_XDECREF(result);
+-}
+-
+-
+-static bool _pysilc_client_callback_key_agreement(SilcClient client,
+-                                            SilcClientConnection conn,
+-                                            SilcClientEntry client_entry,
+-                                            const char *hostname,
+-                                            SilcUInt16 port,
+-                                            SilcKeyAgreementCallback *completion,
+-                                            void **context)
+-{
+     // TODO :implement me
+-    return FALSE;
+ }                                        
+
+ static void _pysilc_client_callback_ftp(SilcClient client,
+@@ -973,25 +1050,3 @@ cleanup:
+     Py_XDECREF(callback);
+     Py_XDECREF(result);
+ }
+-
+-static void _pysilc_client_callback_detach(SilcClient client,
+-                                            SilcClientConnection conn,
+-                                            const unsigned char *detach_data,
+-                                            SilcUInt32 detach_data_len)
+-{
+-    PYSILC_GET_CLIENT_OR_DIE(client, pyclient);
+-    PyObject *result = NULL, *callback = NULL, *args = NULL;
+-    callback = PyObject_GetAttrString((PyObject *)pyclient, "detach");
+-    if (!PyCallable_Check(callback))
+-        goto cleanup;
+-        
+-    if (!(args = Py_BuildValue("(s#)", detach_data, detach_data_len)))
+-        goto cleanup;
+-    if ((result = PyObject_CallObject(callback, args)) == 0)
+-        PyErr_Print();    
+-    
+-cleanup:
+-    Py_XDECREF(callback);
+-    Py_XDECREF(args);
+-    Py_XDECREF(result);
+-}                                            
Index: patches/patch-src_pysilc_channel_c
===================================================================
RCS file: patches/patch-src_pysilc_channel_c
diff -N patches/patch-src_pysilc_channel_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_pysilc_channel_c 1 Jul 2007 20:03:59 -0000
@@ -0,0 +1,59 @@
+$OpenBSD$
+--- src/pysilc_channel.c.orig Sun Jul  9 20:18:40 2006
++++ src/pysilc_channel.c Sun Jul  1 22:52:11 2007
+@@ -40,7 +40,6 @@ static PyObject *PySilcChannel_GetAttr(PyObject *self,
+     // - (TODO) founder_key
+     // - unsigned int user_limit
+     // - (TODO) user_list
+-    // - int resolve_cmd_ident
+    
+     int result;
+     PyObject *temp = NULL, *value = NULL;
+@@ -85,7 +84,7 @@ static PyObject *PySilcChannel_GetAttr(PyObject *self,
+         goto cleanup;
+     if (result == 0) {
+         char buf[160];
+-        memcpy(&buf, (pychannel->silcobj->id), 160);
++        memcpy(&buf, &(pychannel->silcobj->id), 160);
+         value = PyString_FromStringAndSize(buf, 160);
+         goto cleanup;
+     }
+@@ -110,16 +109,6 @@ static PyObject *PySilcChannel_GetAttr(PyObject *self,
+         goto cleanup;
+     }
+    
+-    // check for resolve_cmd_ident
+-    Py_DECREF(temp);    
+-    temp = PyString_FromString("resolve_cmd_ident");
+-    if (PyObject_Cmp(temp, name, &result) == -1)
+-        goto cleanup;
+-    if (result == 0) {
+-        value = PyInt_FromLong(pychannel->silcobj->resolve_cmd_ident);
+-        goto cleanup;
+-    }
+-    
+ cleanup:
+     Py_XDECREF(temp);
+     if (value)
+@@ -155,13 +144,12 @@ static int PySilcChannel_Compare(PyObject *self, PyObj
+ }
+
+
+-static PyObject *PySilcKeys_New(SilcPKCS pkcs, SilcPublicKey public, SilcPrivateKey private)
++static PyObject *PySilcKeys_New(SilcPublicKey public, SilcPrivateKey private)
+ {
+     PySilcKeys *pykeys = (PySilcKeys *)PyObject_New(PySilcKeys, &PySilcKeys_Type);
+     if (!pykeys)
+         return NULL;
+    
+-    pykeys->pkcs = pkcs;
+     pykeys->private = private;
+     pykeys->public = public;
+    
+@@ -171,6 +159,5 @@ static PyObject *PySilcKeys_New(SilcPKCS pkcs, SilcPub
+ static void PySilcKeys_Del(PyObject *object)
+ {
+     // TODO: free them properly
+-    //silc_pkcs_free((PySilcKeys *)object)->pkcs);
+     PyObject_Del(object);
+ }
Index: patches/patch-src_pysilc_h
===================================================================
RCS file: /cvs/ports/devel/py-silc/patches/patch-src_pysilc_h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 patch-src_pysilc_h
--- patches/patch-src_pysilc_h 9 Oct 2006 13:10:34 -0000 1.1.1.1
+++ patches/patch-src_pysilc_h 1 Jul 2007 20:03:59 -0000
@@ -1,7 +1,70 @@
 $OpenBSD: patch-src_pysilc_h,v 1.1.1.1 2006/10/09 13:10:34 alek Exp $
---- src/pysilc.h.orig Mon Jul 10 10:42:36 2006
-+++ src/pysilc.h Mon Oct  9 13:23:30 2006
-@@ -402,7 +402,8 @@ static PyMemberDef pysilc_client_members
+--- src/pysilc.h.orig Mon Jul 10 11:42:36 2006
++++ src/pysilc.h Sun Jul  1 22:52:11 2007
+@@ -22,7 +22,7 @@
+ #endif
+
+ #include "pysilc_macros.h"
+-#include <silcincludes.h>
++#include <silc.h>
+ #include <silcclient.h>
+ #include <silctypes.h>
+
+@@ -40,7 +40,6 @@ typedef struct {
+
+ typedef struct {
+     PyObject_HEAD
+-    SilcPKCS        pkcs;
+     SilcPublicKey   public;
+     SilcPrivateKey  private;
+ } PySilcKeys;
+@@ -107,9 +106,11 @@ typedef struct {
+         *ftp,
+         *detach;
+
+-    SilcClient             silcobj;
+-    SilcClientConnection   silcconn;
+-    SilcClientOperations   callbacks;
++    SilcClient                   silcobj;
++    SilcClientConnection         silcconn;
++    SilcClientConnectCallback    conncallback;
++    SilcClientOperations         callbacks;
++    SilcClientConnectionParams   params;
+
+ } PySilcClient;
+
+@@ -182,7 +183,7 @@ static PyMemberDef pysilc_user_members[] = {
+
+ /*  ---------------- pysilc keys ------------- */
+
+-static PyObject *PySilcKeys_New(SilcPKCS pkcs, SilcPublicKey public, SilcPrivateKey private);
++static PyObject *PySilcKeys_New(SilcPublicKey public, SilcPrivateKey private);
+ static void PySilcKeys_Del(PyObject *object);
+
+ static PyMethodDef pysilc_keys_methods[] = {
+@@ -227,9 +228,8 @@ static PyMethodDef pysilc_client_methods[] = {
+         (PyCFunction)pysilc_client_send_channel_message,
+         METH_VARARGS | METH_KEYWORDS,
+         "send_channel_message(channel, messsage, private_key = None,\n"
+-        "                     flags = 0, force_send = False)\n\n"
++        "                     flags = 0)\n\n"
+         "Send a message (Unicode string) to a channel (SilcChannel object).\n"
+-        "Setting 'force_send' to True means send the packet immediately\n."
+         "TODO: flags and private_key support not implemented.\n"
+     },
+     {
+@@ -237,9 +237,8 @@ static PyMethodDef pysilc_client_methods[] = {
+         (PyCFunction)pysilc_client_send_private_message,
+         METH_VARARGS | METH_KEYWORDS,
+         "send_private_message(user, messsage, private_key = None,\n"
+-        "                     flags = 0, force_send = False)\n\n"
++        "                     flags = 0)\n\n"
+         "Send a message (Unicode string) to a user (SilcUser object).\n"
+-        "Setting 'force_send' to True means send the packet immediately\n."
+         "TODO: flags and private_key support not implemented.\n"
+     },
+     {
+@@ -402,7 +401,8 @@ static PyMemberDef pysilc_client_members[] = {
  };
 
  #define PYSILC_CLIENT_DOC  "\
@@ -11,3 +74,26 @@
               hostname = \"\")\n\n\
    A SILC Client. 'keys' is a SilcKeys representing a public private\n\
    key pair. 'nickname', 'username', 'realname' and 'hostname'\n\
+@@ -461,8 +461,7 @@ Attributes accessible:\n\n\
+   channel_id = string (64-160bit)\n\n\
+   mode = int\n\n\
+   topic = string\n\n\
+-  user_limit = int \n\n\
+-  resolve_cmd_ident = int"
++  user_limit = int"
+
+ static PyTypeObject PySilcChannel_Type = {
+     PyObject_HEAD_INIT(&PyType_Type)
+@@ -514,11 +513,8 @@ Accessible Attributes:\n\n\
+   server = string\n\n\
+   realname = string\n\n\
+   fingerprint = string\n\n\
+-  fingerprint_len = int\n\n\
+   user_id = string (64/160bit)\n\n\
+-  mode = int\n\n\
+-  status = int\n\n\
+-  resolve_cmd_ident = int"
++  mode = int"
+
+ static PyTypeObject PySilcUser_Type = {
+     PyObject_HEAD_INIT(&PyType_Type)
Index: patches/patch-src_pysilc_user_c
===================================================================
RCS file: patches/patch-src_pysilc_user_c
diff -N patches/patch-src_pysilc_user_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_pysilc_user_c 1 Jul 2007 20:03:59 -0000
@@ -0,0 +1,64 @@
+$OpenBSD$
+--- src/pysilc_user.c.orig Sun Jul  9 20:18:34 2006
++++ src/pysilc_user.c Sun Jul  1 22:52:11 2007
+@@ -39,15 +39,12 @@ static PyObject *PySilcUser_GetAttr(PyObject *self, Py
+     // - char *server
+     // - char *realname
+     // - unsigned char *fingerprint;
+-    //   SilcUInt32 finderprint_len;
+     //
+     // - 64/160 bit user id
+     // - unsigned int mode
+     // - (TODO) attrs;
+     // - (TODO) public_key;
+-    // - int status
+     // - (TODO) channels
+-    // - int resolve_cmd_ident;
+    
+     int result;
+     PyObject *temp = NULL, *value = NULL;
+@@ -137,7 +134,7 @@ static PyObject *PySilcUser_GetAttr(PyObject *self, Py
+         goto cleanup;
+     if (result == 0) {
+         if (pyuser->silcobj->fingerprint)
+-            value = PyString_FromStringAndSize(pyuser->silcobj->fingerprint, pyuser->silcobj->fingerprint_len);
++            value = PyString_FromStringAndSize(pyuser->silcobj->fingerprint, 20);
+         else {
+             value = Py_None;
+             Py_INCREF(value);
+@@ -152,7 +149,7 @@ static PyObject *PySilcUser_GetAttr(PyObject *self, Py
+         goto cleanup;
+     if (result == 0) {
+         char buf[224];
+-        memcpy(&buf, (pyuser->silcobj->id), 224);
++        memcpy(&buf, &(pyuser->silcobj->id), 224);
+         value = PyString_FromStringAndSize(buf, 224);
+         goto cleanup;
+     }
+@@ -164,26 +161,6 @@ static PyObject *PySilcUser_GetAttr(PyObject *self, Py
+         goto cleanup;
+     if (result == 0) {
+         value = PyInt_FromLong(pyuser->silcobj->mode);
+-        goto cleanup;
+-    }
+-    
+-    // check for status
+-    Py_DECREF(temp);
+-    temp = PyString_FromString("status");
+-    if (PyObject_Cmp(temp, name, &result) == -1)
+-        goto cleanup;
+-    if (result == 0) {
+-        value = PyInt_FromLong(pyuser->silcobj->status);
+-        goto cleanup;
+-    }
+-    
+-    // check for resolve_cmd_ident
+-    Py_DECREF(temp);
+-    temp = PyString_FromString("resolve_cmd_ident");
+-    if (PyObject_Cmp(temp, name, &result) == -1)
+-        goto cleanup;
+-    if (result == 0) {
+-        value = PyInt_FromLong(pyuser->silcobj->resolve_cmd_ident);
+         goto cleanup;
+     }
+    

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Simon Kuhnle-2
py-silc and silc-toolkit-1.1.1 built and installed fine on i386.
Tested echo.py and it worked.

But I'm afraid there's silc-toolkit-1.1.2 already...
--
simon

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Brad Smith-14
In reply to this post by Brad Smith-14
On Fri, 15 Jun 2007 21:33:28 -0400
Brad <[hidden email]> wrote:

> Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
> as the Pidgin SILC support has been updated to use the 1.1 API.
>
> http://comstyle.com/pidgin/silc-toolkit.diff

The diff has been updated to now include an update to silc-toolkit 1.1.2.

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Simon Kuhnle-2
On Wed, Jul 04, 2007 at 12:57:52PM -0400, Brad wrote:
> The diff has been updated to now include an update to silc-toolkit 1.1.2.

silc-toolkit-1.1.2 built and installed fine without problems here.

pidgin-2.0.2 built and installed fine, but lib-depends-check says:

Bogus WANTLIB: silc.7 (/usr/local/lib/purple-2/libsilcpurple.so) (NOT
REACHABLE)
Bogus WANTLIB: silcclient.5 (/usr/local/lib/purple-2/libsilcpurple.so)
(NOT REACHABLE)

but besides that it seems to work on the silc side.

py-silc update builds and installs fine, too, with new silc-toolkit.
Tested echo.py. It echoes good ;-)

But same warning about Bogus WANTLIB.

--
simon

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

steven mestdagh
In reply to this post by Brad Smith-14
Brad [2007-07-04, 12:57:52]:
> On Fri, 15 Jun 2007 21:33:28 -0400
> Brad <[hidden email]> wrote:
>
> > Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
> > as the Pidgin SILC support has been updated to use the 1.1 API.
> >
> > http://comstyle.com/pidgin/silc-toolkit.diff
>
> The diff has been updated to now include an update to silc-toolkit 1.1.2.

and here's an update to pidgin 2.1.0. please give this a try.

thanks

Index: Makefile
===================================================================
RCS file: /cvs/ports/net/pidgin/Makefile,v
retrieving revision 1.5
diff -u -r1.5 Makefile
--- Makefile 28 May 2007 12:43:34 -0000 1.5
+++ Makefile 31 Jul 2007 17:18:33 -0000
@@ -4,7 +4,7 @@
 
 COMMENT= "multi-protocol instant messaging client"
 
-DISTNAME= pidgin-2.0.1
+DISTNAME= pidgin-2.1.0
 SHARED_LIBS += jabber               0.0      # .0.0
 SHARED_LIBS += oscar                0.0      # .0.0
 SHARED_LIBS += purple               0.0      # .0.0
@@ -37,7 +37,7 @@
  :py-gtk2-*:x11/py-gtk2
 LIB_DEPENDS+= gdk-x11-2.0,gdk_pixbuf-2.0,gtk-x11-2.0::x11/gtk+2 \
  startup-notification-1::devel/startup-notification \
- silc,silcclient::devel/silc-toolkit \
+ silc.>=7,silcclient.>=5::devel/silc-toolkit \
  meanwhile::net/meanwhile \
  gadu::net/libgadu \
  xml2::textproc/libxml \
@@ -49,7 +49,7 @@
 USE_GMAKE= Yes
 SEPARATE_BUILD= simple
 CONFIGURE_STYLE= autoconf
-AUTOCONF_VERSION= 2.59
+AUTOCONF_VERSION= 2.61
 CONFIGURE_ARGS+= --disable-gevolution \
  --disable-gnutls \
  --disable-nss \
Index: distinfo
===================================================================
RCS file: /cvs/ports/net/pidgin/distinfo,v
retrieving revision 1.2
diff -u -r1.2 distinfo
--- distinfo 28 May 2007 12:43:34 -0000 1.2
+++ distinfo 31 Jul 2007 17:18:33 -0000
@@ -1,5 +1,5 @@
-MD5 (pidgin-2.0.1.tar.gz) = ZWkTFtgVfLXBEdeG/YVTMg==
-RMD160 (pidgin-2.0.1.tar.gz) = A4EijmDx1lywbq8DE/+56h+FDyc=
-SHA1 (pidgin-2.0.1.tar.gz) = CVTxqnuO5iTha90Ac6yfC2J8Nq0=
-SHA256 (pidgin-2.0.1.tar.gz) = gg+3GoWF8EgVaGa7AGpC9BPe9u0xEFM0gdkvFTOufo4=
-SIZE (pidgin-2.0.1.tar.gz) = 10836164
+MD5 (pidgin-2.1.0.tar.gz) = QLuBhnsZ7v3EE1Hh09VbRg==
+RMD160 (pidgin-2.1.0.tar.gz) = rFbY1Ry16vjkaLyvPuFgEZCigL8=
+SHA1 (pidgin-2.1.0.tar.gz) = pHqwgnCK5HdioauYGLE12HGbgMQ=
+SHA256 (pidgin-2.1.0.tar.gz) = izoUkAwoyzFaHfHetdv/j7/Mziqrz1sBQXPyPJazV34=
+SIZE (pidgin-2.1.0.tar.gz) = 11061958
Index: patches/patch-config_h_in
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-config_h_in,v
retrieving revision 1.2
diff -u -r1.2 patch-config_h_in
--- patches/patch-config_h_in 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-config_h_in 31 Jul 2007 17:18:33 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-config_h_in,v 1.2 2007/05/28 12:43:34 steven Exp $
---- config.h.in.orig Fri May 25 12:28:50 2007
-+++ config.h.in Mon May 28 01:57:22 2007
-@@ -150,6 +150,12 @@
+--- config.h.in.orig Sun Jul 29 08:34:20 2007
++++ config.h.in Tue Jul 31 17:43:25 2007
+@@ -154,6 +154,12 @@
  /* Define to 1 if you have the <nss.h> header file. */
  #undef HAVE_NSS_H
 
Index: patches/patch-configure_ac
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-configure_ac,v
retrieving revision 1.2
diff -u -r1.2 patch-configure_ac
--- patches/patch-configure_ac 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-configure_ac 31 Jul 2007 17:18:33 -0000
@@ -1,6 +1,6 @@
 $OpenBSD: patch-configure_ac,v 1.2 2007/05/28 12:43:34 steven Exp $
---- configure.ac.orig Fri May 25 12:28:21 2007
-+++ configure.ac Mon May 28 01:57:22 2007
+--- configure.ac.orig Thu Jun 14 23:11:46 2007
++++ configure.ac Fri Jun 15 13:53:22 2007
 @@ -521,6 +521,7 @@ if test "x$enable_consoleui" = "xyes"; then
  # ncursesw was not found. Look for plain old ncurses
  enable_consoleui=yes
@@ -9,16 +9,16 @@
  AC_CHECK_LIB(panel, update_panels, [GNT_LIBS="$GNT_LIBS -lpanel"], [enable_consoleui=no])
  AC_DEFINE(NO_WIDECHAR, 1, [Define to 1 if you don't have wide-character support.])
  if test x"$ac_ncurses_includes" != "x"; then
-@@ -683,7 +684,7 @@ else
+@@ -695,7 +696,7 @@ else
  if test "$ac_silc_libs" != "no"; then
  SILC_LIBS="-L$ac_silc_libs"
  fi
 - SILC_LIBS="$SILC_LIBS -lsilc -lsilcclient -lpthread $LIBDL"
 + SILC_LIBS="$SILC_LIBS -lsilc -lsilcclient -pthread $LIBDL"
  AC_CHECK_LIB(silcclient, silc_client_init, [silcclient=yes], , $SILC_LIBS)
- fi
- AC_SUBST(SILC_LIBS)
-@@ -1312,8 +1313,13 @@ dnl ##################################################
+
+ if test "x$silcincludes" = "xyes" -a "x$silcclient" = "xyes"; then
+@@ -1360,8 +1361,13 @@ dnl ##################################################
 
  dnl These two are inverses of each other <-- stolen from evolution!
 
@@ -33,7 +33,7 @@
  [enable_gnutls="$enableval"],
  [enable_gnutls="yes"])
 
-@@ -1325,6 +1331,90 @@ AC_ARG_ENABLE(nss,
+@@ -1373,6 +1379,90 @@ AC_ARG_ENABLE(nss,
  msg_ssl="None (MSN and Google Talk will not work without SSL!)"
 
  dnl #
@@ -124,7 +124,7 @@
  dnl # Check for GnuTLS if it's specified.
  dnl #
  if test "x$enable_gnutls" != "xno"; then
-@@ -1679,12 +1769,20 @@ fi
+@@ -1727,12 +1817,20 @@ fi
 
  AM_CONDITIONAL(USE_NSS, test "x$enable_nss" = "xyes")
 
Index: patches/patch-finch_libgnt_Makefile_in
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-finch_libgnt_Makefile_in,v
retrieving revision 1.2
diff -u -r1.2 patch-finch_libgnt_Makefile_in
--- patches/patch-finch_libgnt_Makefile_in 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-finch_libgnt_Makefile_in 31 Jul 2007 17:18:33 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-finch_libgnt_Makefile_in,v 1.2 2007/05/28 12:43:34 steven Exp $
---- finch/libgnt/Makefile.in.orig Fri May 25 12:29:19 2007
-+++ finch/libgnt/Makefile.in Mon May 28 01:57:22 2007
-@@ -429,7 +429,7 @@ target_cpu = @target_cpu@
+--- finch/libgnt/Makefile.in.orig Sun Jul 29 08:33:32 2007
++++ finch/libgnt/Makefile.in Tue Jul 31 17:43:25 2007
+@@ -435,7 +435,7 @@ target_cpu = @target_cpu@
  target_os = @target_os@
  target_vendor = @target_vendor@
  EXTRA_DIST = genmarshal
Index: patches/patch-finch_libgnt_gntmain_c
===================================================================
RCS file: patches/patch-finch_libgnt_gntmain_c
diff -N patches/patch-finch_libgnt_gntmain_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-finch_libgnt_gntmain_c 31 Jul 2007 17:18:33 -0000
@@ -0,0 +1,12 @@
+$OpenBSD$
+--- finch/libgnt/gntmain.c.orig Tue Jul 31 18:31:35 2007
++++ finch/libgnt/gntmain.c Tue Jul 31 18:31:48 2007
+@@ -21,7 +21,7 @@
+  */
+
+ #define _GNU_SOURCE
+-#if defined(__APPLE__) || defined(__unix__)
++#if defined(__APPLE__) || defined(__unix__) && !defined(__OpenBSD__)
+ #define _XOPEN_SOURCE_EXTENDED
+ #endif
+
Index: patches/patch-finch_libgnt_gntwm_c
===================================================================
RCS file: patches/patch-finch_libgnt_gntwm_c
diff -N patches/patch-finch_libgnt_gntwm_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-finch_libgnt_gntwm_c 31 Jul 2007 17:18:33 -0000
@@ -0,0 +1,12 @@
+$OpenBSD$
+--- finch/libgnt/gntwm.c.orig Tue Jul 31 18:31:26 2007
++++ finch/libgnt/gntwm.c Tue Jul 31 18:31:58 2007
+@@ -21,7 +21,7 @@
+  */
+
+ #define _GNU_SOURCE
+-#if defined(__APPLE__) || defined(__unix__)
++#if defined(__APPLE__) || defined(__unix__) && !defined(__OpenBSD__)
+ #define _XOPEN_SOURCE_EXTENDED
+ #endif
+
Index: patches/patch-finch_plugins_Makefile_in
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-finch_plugins_Makefile_in,v
retrieving revision 1.2
diff -u -r1.2 patch-finch_plugins_Makefile_in
--- patches/patch-finch_plugins_Makefile_in 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-finch_plugins_Makefile_in 31 Jul 2007 17:18:33 -0000
@@ -1,6 +1,6 @@
 $OpenBSD: patch-finch_plugins_Makefile_in,v 1.2 2007/05/28 12:43:34 steven Exp $
---- finch/plugins/Makefile.in.orig Fri May 25 12:29:19 2007
-+++ finch/plugins/Makefile.in Mon May 28 01:57:22 2007
+--- finch/plugins/Makefile.in.orig Sun Jul 29 08:33:32 2007
++++ finch/plugins/Makefile.in Tue Jul 31 17:44:10 2007
 @@ -76,7 +76,8 @@ am__gnthistory_la_SOURCES_DIST = gnthistory.c
  @PLUGINS_TRUE@am_gnthistory_la_OBJECTS = gnthistory.lo
  gnthistory_la_OBJECTS = $(am_gnthistory_la_OBJECTS)
@@ -11,12 +11,12 @@
  am__gntlastlog_la_SOURCES_DIST = lastlog.c
  @PLUGINS_TRUE@am_gntlastlog_la_OBJECTS = lastlog.lo
  gntlastlog_la_OBJECTS = $(am_gntlastlog_la_OBJECTS)
-@@ -452,7 +453,7 @@ gntlastlog_la_LDFLAGS = -module -avoid-version
+@@ -455,7 +456,7 @@ gntlastlog_la_LDFLAGS = -module -avoid-version
+ @PLUGINS_TRUE@gntclipboard_la_CFLAGS = $(X11_CFLAGS)
+ @PLUGINS_TRUE@gntgf_la_CFLAGS = $(X11_CFLAGS)
  @PLUGINS_TRUE@gntclipboard_la_LIBADD = $(GLIB_LIBS) $(X11_LIBS)
- @PLUGINS_TRUE@gntgf_la_LIBADD = $(GLIB_LIBS) $(X11_LIBS) $(top_builddir)/finch/libgnt/libgnt.la
+-@PLUGINS_TRUE@gntgf_la_LIBADD = $(GLIB_LIBS) $(X11_LIBS) $(top_builddir)/finch/libgnt/libgnt.la
++@PLUGINS_TRUE@gntgf_la_LIBADD = $(GLIB_LIBS) $(X11_LIBS)
  @PLUGINS_TRUE@gnthistory_la_LIBADD = $(GLIB_LIBS)
--@PLUGINS_TRUE@gntlastlog_la_LIBADD = $(GLIB_LIBS)
-+@PLUGINS_TRUE@gntlastlog_la_LIBADD = $(GLIB_LIBS) $(top_builddir)/finch/libgnt/libgnt.la
- EXTRA_DIST =
- AM_CPPFLAGS = \
- -DDATADIR=\"$(datadir)\" \
+ @PLUGINS_TRUE@gntlastlog_la_LIBADD = $(GLIB_LIBS)
+ EXTRA_DIST = pietray.py
Index: patches/patch-libpurple_plugins_ssl_Makefile_in
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-libpurple_plugins_ssl_Makefile_in,v
retrieving revision 1.2
diff -u -r1.2 patch-libpurple_plugins_ssl_Makefile_in
--- patches/patch-libpurple_plugins_ssl_Makefile_in 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-libpurple_plugins_ssl_Makefile_in 31 Jul 2007 17:18:33 -0000
@@ -1,6 +1,6 @@
 $OpenBSD: patch-libpurple_plugins_ssl_Makefile_in,v 1.2 2007/05/28 12:43:34 steven Exp $
---- libpurple/plugins/ssl/Makefile.in.orig Fri May 25 12:29:21 2007
-+++ libpurple/plugins/ssl/Makefile.in Mon May 28 01:57:22 2007
+--- libpurple/plugins/ssl/Makefile.in.orig Sun Jul 29 08:33:34 2007
++++ libpurple/plugins/ssl/Makefile.in Tue Jul 31 17:43:25 2007
 @@ -57,6 +57,12 @@ am__installdirs = "$(DESTDIR)$(plugindir)"
  pluginLTLIBRARIES_INSTALL = $(INSTALL)
  LTLIBRARIES = $(plugin_LTLIBRARIES)
@@ -31,8 +31,8 @@
 +OPENSSL_LIBS = @OPENSSL_LIBS@
  GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
  GNUTLS_LIBS = @GNUTLS_LIBS@
- GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
-@@ -341,6 +349,8 @@ TCL_LIBS = @TCL_LIBS@
+ GREP = @GREP@
+@@ -342,6 +350,8 @@ TCL_LIBS = @TCL_LIBS@
  TK_LIBS = @TK_LIBS@
  USE_GCONFTOOL_FALSE = @USE_GCONFTOOL_FALSE@
  USE_GCONFTOOL_TRUE = @USE_GCONFTOOL_TRUE@
@@ -41,7 +41,7 @@
  USE_GNUTLS_FALSE = @USE_GNUTLS_FALSE@
  USE_GNUTLS_TRUE = @USE_GNUTLS_TRUE@
  USE_INTERNAL_LIBGADU_FALSE = @USE_INTERNAL_LIBGADU_FALSE@
-@@ -429,17 +439,21 @@ EXTRA_DIST = \
+@@ -434,17 +444,21 @@ EXTRA_DIST = \
 
  plugindir = $(libdir)/purple-$(PURPLE_MAJOR_VERSION)
  ssl_la_LDFLAGS = -module -avoid-version
@@ -63,7 +63,7 @@
  @PLUGINS_TRUE@ssl_gnutls_la_LIBADD = $(GLIB_LIBS) $(GNUTLS_LIBS)
  @PLUGINS_TRUE@ssl_nss_la_LIBADD = $(GLIB_LIBS) $(NSS_LIBS)
  AM_CPPFLAGS = \
-@@ -513,6 +527,8 @@ clean-pluginLTLIBRARIES:
+@@ -518,6 +532,8 @@ clean-pluginLTLIBRARIES:
   echo "rm -f \"$${dir}/so_locations\""; \
   rm -f "$${dir}/so_locations"; \
  done
@@ -72,7 +72,7 @@
  ssl-gnutls.la: $(ssl_gnutls_la_OBJECTS) $(ssl_gnutls_la_DEPENDENCIES)
  $(LINK) $(am_ssl_gnutls_la_rpath) $(ssl_gnutls_la_LDFLAGS) $(ssl_gnutls_la_OBJECTS) $(ssl_gnutls_la_LIBADD) $(LIBS)
  ssl-nss.la: $(ssl_nss_la_OBJECTS) $(ssl_nss_la_DEPENDENCIES)
-@@ -527,6 +543,7 @@ distclean-compile:
+@@ -532,6 +548,7 @@ distclean-compile:
  -rm -f *.tab.c
 
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssl.Plo@am__quote@
Index: patches/patch-libpurple_protocols_gg_Makefile_in
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-libpurple_protocols_gg_Makefile_in,v
retrieving revision 1.2
diff -u -r1.2 patch-libpurple_protocols_gg_Makefile_in
--- patches/patch-libpurple_protocols_gg_Makefile_in 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-libpurple_protocols_gg_Makefile_in 31 Jul 2007 17:18:34 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-libpurple_protocols_gg_Makefile_in,v 1.2 2007/05/28 12:43:34 steven Exp $
---- libpurple/protocols/gg/Makefile.in.orig Fri May 25 12:29:22 2007
-+++ libpurple/protocols/gg/Makefile.in Mon May 28 01:57:22 2007
-@@ -499,7 +499,7 @@ libgg_la_LDFLAGS = -module -avoid-version
+--- libpurple/protocols/gg/Makefile.in.orig Sun Jul 29 08:33:35 2007
++++ libpurple/protocols/gg/Makefile.in Tue Jul 31 17:43:26 2007
+@@ -504,7 +504,7 @@ libgg_la_LDFLAGS = -module -avoid-version
  @STATIC_GG_TRUE@libgg_a_CFLAGS = $(AM_CFLAGS)
  @STATIC_GG_TRUE@libgg_a_LIBADD = $(GADU_LIBS)
  @STATIC_GG_FALSE@libgg_la_SOURCES = $(GGSOURCES)
Index: patches/patch-libpurple_protocols_oscar_Makefile_am
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-libpurple_protocols_oscar_Makefile_am,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 patch-libpurple_protocols_oscar_Makefile_am
--- patches/patch-libpurple_protocols_oscar_Makefile_am 12 May 2007 15:19:36 -0000 1.1.1.1
+++ patches/patch-libpurple_protocols_oscar_Makefile_am 31 Jul 2007 17:18:34 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-libpurple_protocols_oscar_Makefile_am,v 1.1.1.1 2007/05/12 15:19:36 alek Exp $
---- libpurple/protocols/oscar/Makefile.am.orig Thu Jan 18 23:28:23 2007
-+++ libpurple/protocols/oscar/Makefile.am Fri Jan 19 22:02:01 2007
-@@ -70,10 +70,10 @@ liboscar_la_SOURCES = $(OSCARSOURCES)
+--- libpurple/protocols/oscar/Makefile.am.orig Thu Jun 14 23:11:58 2007
++++ libpurple/protocols/oscar/Makefile.am Fri Jun 15 13:53:22 2007
+@@ -65,10 +65,10 @@ liboscar_la_SOURCES = $(OSCARSOURCES)
  liboscar_la_LIBADD  = $(GLIB_LIBS)
 
  libaim_la_SOURCES = libaim.c
Index: patches/patch-libpurple_protocols_oscar_Makefile_in
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-libpurple_protocols_oscar_Makefile_in,v
retrieving revision 1.2
diff -u -r1.2 patch-libpurple_protocols_oscar_Makefile_in
--- patches/patch-libpurple_protocols_oscar_Makefile_in 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-libpurple_protocols_oscar_Makefile_in 31 Jul 2007 17:18:34 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-libpurple_protocols_oscar_Makefile_in,v 1.2 2007/05/28 12:43:34 steven Exp $
---- libpurple/protocols/oscar/Makefile.in.orig Fri May 25 12:29:24 2007
-+++ libpurple/protocols/oscar/Makefile.in Mon May 28 01:57:22 2007
-@@ -559,9 +559,9 @@ libicq_la_LDFLAGS = -module -avoid-version
+--- libpurple/protocols/oscar/Makefile.in.orig Sun Jul 29 08:33:36 2007
++++ libpurple/protocols/oscar/Makefile.in Tue Jul 31 17:43:26 2007
+@@ -550,9 +550,9 @@ libicq_la_LDFLAGS = -module -avoid-version
  @STATIC_OSCAR_FALSE@liboscar_la_SOURCES = $(OSCARSOURCES)
  @STATIC_OSCAR_FALSE@liboscar_la_LIBADD = $(GLIB_LIBS)
  @STATIC_OSCAR_FALSE@libaim_la_SOURCES = libaim.c
Index: patches/patch-pidgin_Makefile_in
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-pidgin_Makefile_in,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 patch-pidgin_Makefile_in
--- patches/patch-pidgin_Makefile_in 12 May 2007 15:19:36 -0000 1.1.1.1
+++ patches/patch-pidgin_Makefile_in 31 Jul 2007 17:18:34 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-pidgin_Makefile_in,v 1.1.1.1 2007/05/12 15:19:36 alek Exp $
---- pidgin/Makefile.in.orig Mon Apr 30 06:17:59 2007
-+++ pidgin/Makefile.in Tue May  1 23:11:28 2007
-@@ -104,7 +104,7 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES
+--- pidgin/Makefile.in.orig Sun Jul 29 08:33:39 2007
++++ pidgin/Makefile.in Tue Jul 31 17:43:26 2007
+@@ -106,7 +106,7 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES
  LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
  $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
  $(AM_CFLAGS) $(CFLAGS)
Index: patches/patch-pidgin_gtkdialogs_c
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-pidgin_gtkdialogs_c,v
retrieving revision 1.2
diff -u -r1.2 patch-pidgin_gtkdialogs_c
--- patches/patch-pidgin_gtkdialogs_c 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-pidgin_gtkdialogs_c 31 Jul 2007 17:18:34 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-pidgin_gtkdialogs_c,v 1.2 2007/05/28 12:43:34 steven Exp $
---- pidgin/gtkdialogs.c.orig Fri May 25 12:28:22 2007
-+++ pidgin/gtkdialogs.c Mon May 28 01:57:23 2007
-@@ -560,6 +560,12 @@ g_string_append(str, "<br/>  <b>Library Support</b><br
+--- pidgin/gtkdialogs.c.orig Sat Jul 28 07:12:36 2007
++++ pidgin/gtkdialogs.c Tue Jul 31 17:43:26 2007
+@@ -563,6 +563,12 @@ g_string_append(str, "<br/>  <b>Library Support</b><br
  g_string_append(str, "    <b>GtkSpell:</b> Disabled<br/>");
  #endif
 
Index: patches/patch-pidgin_gtkmain_c
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-pidgin_gtkmain_c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 patch-pidgin_gtkmain_c
--- patches/patch-pidgin_gtkmain_c 12 May 2007 15:19:36 -0000 1.1.1.1
+++ patches/patch-pidgin_gtkmain_c 31 Jul 2007 17:18:34 -0000
@@ -1,6 +1,6 @@
 $OpenBSD: patch-pidgin_gtkmain_c,v 1.1.1.1 2007/05/12 15:19:36 alek Exp $
---- pidgin/gtkmain.c.orig Mon Apr 30 05:37:55 2007
-+++ pidgin/gtkmain.c Tue May  1 23:11:28 2007
+--- pidgin/gtkmain.c.orig Thu Jun 14 23:12:03 2007
++++ pidgin/gtkmain.c Fri Jun 15 13:53:06 2007
 @@ -86,6 +86,7 @@ static SnDisplay *sn_display = NULL;
  #endif
 
@@ -9,7 +9,7 @@
 
  /*
   * Lists of signals we wish to catch and those we wish to ignore.
-@@ -186,6 +187,8 @@ clean_pid()
+@@ -181,6 +182,8 @@ clean_pid()
  do {
  pid = waitpid(-1, &status, WNOHANG);
  } while (pid != 0 && pid != (pid_t)-1);
Index: patches/patch-pidgin_gtknotify_c
===================================================================
RCS file: /cvs/ports/net/pidgin/patches/patch-pidgin_gtknotify_c,v
retrieving revision 1.2
diff -u -r1.2 patch-pidgin_gtknotify_c
--- patches/patch-pidgin_gtknotify_c 28 May 2007 12:43:34 -0000 1.2
+++ patches/patch-pidgin_gtknotify_c 31 Jul 2007 17:18:34 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-pidgin_gtknotify_c,v 1.2 2007/05/28 12:43:34 steven Exp $
---- pidgin/gtknotify.c.orig Fri May 25 12:28:22 2007
-+++ pidgin/gtknotify.c Mon May 28 01:57:23 2007
-@@ -967,7 +967,16 @@ uri_command(const char *command, gboolean sync)
+--- pidgin/gtknotify.c.orig Sat Jul 21 20:45:34 2007
++++ pidgin/gtknotify.c Tue Jul 31 17:43:26 2007
+@@ -980,7 +980,16 @@ uri_command(const char *command, gboolean sync)
  g_error_free(error);
  }
  else
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/net/pidgin/pkg/PLIST,v
retrieving revision 1.2
diff -u -r1.2 PLIST
--- pkg/PLIST 28 May 2007 12:43:34 -0000 1.2
+++ pkg/PLIST 31 Jul 2007 17:18:34 -0000
@@ -21,6 +21,7 @@
 include/finch/gntpounce.h
 include/finch/gntprefs.h
 include/finch/gntrequest.h
+include/finch/gntsound.h
 include/finch/gntstatus.h
 include/finch/gntui.h
 include/gnt/
@@ -41,6 +42,7 @@
 include/gnt/gntmenu.h
 include/gnt/gntmenuitem.h
 include/gnt/gntmenuitemcheck.h
+include/gnt/gntslider.h
 include/gnt/gntstyle.h
 include/gnt/gnttextview.h
 include/gnt/gnttree.h
@@ -48,6 +50,7 @@
 include/gnt/gntwidget.h
 include/gnt/gntwindow.h
 include/gnt/gntwm.h
+include/gnt/gntws.h
 include/libpurple/
 include/libpurple/account.h
 include/libpurple/accountopt.h
@@ -142,6 +145,8 @@
 include/pidgin/gtksession.h
 include/pidgin/gtksound.h
 include/pidgin/gtksourceiter.h
+include/pidgin/gtksourceundomanager.h
+include/pidgin/gtksourceview-marshal.h
 include/pidgin/gtkstatusbox.h
 include/pidgin/gtkthemes.h
 include/pidgin/gtkutils.h
@@ -175,6 +180,8 @@
 lib/pidgin/extplacement.so
 lib/pidgin/gestures.la
 lib/pidgin/gestures.so
+lib/pidgin/gtkbuddynote.la
+lib/pidgin/gtkbuddynote.so
 lib/pidgin/history.la
 lib/pidgin/history.so
 lib/pidgin/iconaway.la
@@ -416,6 +423,7 @@
 share/pixmaps/pidgin/emotes/default/angel.png
 share/pixmaps/pidgin/emotes/default/angry.png
 share/pixmaps/pidgin/emotes/default/arrogant.png
+share/pixmaps/pidgin/emotes/default/at-wits-end.png
 share/pixmaps/pidgin/emotes/default/bad.png
 share/pixmaps/pidgin/emotes/default/bashful.png
 share/pixmaps/pidgin/emotes/default/beat-up.png
@@ -466,6 +474,7 @@
 share/pixmaps/pidgin/emotes/default/embarrassed.png
 share/pixmaps/pidgin/emotes/default/excruciating.png
 share/pixmaps/pidgin/emotes/default/eyeroll.png
+share/pixmaps/pidgin/emotes/default/female-fighter.png
 share/pixmaps/pidgin/emotes/default/film.png
 share/pixmaps/pidgin/emotes/default/fingers-crossed.png
 share/pixmaps/pidgin/emotes/default/flag.png
@@ -514,6 +523,7 @@
 share/pixmaps/pidgin/emotes/default/musical-note.png
 share/pixmaps/pidgin/emotes/default/nailbiting.png
 share/pixmaps/pidgin/emotes/default/neutral.png
+share/pixmaps/pidgin/emotes/default/on-the-phone.png
 share/pixmaps/pidgin/emotes/default/party.png
 share/pixmaps/pidgin/emotes/default/peace.png
 share/pixmaps/pidgin/emotes/default/phone.png
@@ -567,6 +577,7 @@
 share/pixmaps/pidgin/emotes/default/theme
 share/pixmaps/pidgin/emotes/default/thinking.png
 share/pixmaps/pidgin/emotes/default/thunder.png
+share/pixmaps/pidgin/emotes/default/time-out.png
 share/pixmaps/pidgin/emotes/default/tongue.png
 share/pixmaps/pidgin/emotes/default/tremble.png
 share/pixmaps/pidgin/emotes/default/turtle.png
@@ -696,6 +707,7 @@
 share/pixmaps/pidgin/toolbar/16/font-size-up.png
 share/pixmaps/pidgin/toolbar/16/insert-image.png
 share/pixmaps/pidgin/toolbar/16/insert-link.png
+share/pixmaps/pidgin/toolbar/16/insert.png
 share/pixmaps/pidgin/toolbar/16/message-new.png
 share/pixmaps/pidgin/toolbar/16/plugins.png
 share/pixmaps/pidgin/toolbar/16/send-file.png
@@ -710,6 +722,7 @@
 share/pixmaps/pidgin/tray/16/tray-extended-away.png
 share/pixmaps/pidgin/tray/16/tray-invisible.png
 share/pixmaps/pidgin/tray/16/tray-message.png
+share/pixmaps/pidgin/tray/16/tray-new-im.png
 share/pixmaps/pidgin/tray/16/tray-offline.png
 share/pixmaps/pidgin/tray/16/tray-online.png
 share/pixmaps/pidgin/tray/22/
@@ -719,8 +732,27 @@
 share/pixmaps/pidgin/tray/22/tray-extended-away.png
 share/pixmaps/pidgin/tray/22/tray-invisible.png
 share/pixmaps/pidgin/tray/22/tray-message.png
+share/pixmaps/pidgin/tray/22/tray-new-im.png
 share/pixmaps/pidgin/tray/22/tray-offline.png
 share/pixmaps/pidgin/tray/22/tray-online.png
+share/pixmaps/pidgin/tray/32/
+share/pixmaps/pidgin/tray/32/tray-away.png
+share/pixmaps/pidgin/tray/32/tray-busy.png
+share/pixmaps/pidgin/tray/32/tray-connecting.png
+share/pixmaps/pidgin/tray/32/tray-extended-away.png
+share/pixmaps/pidgin/tray/32/tray-invisible.png
+share/pixmaps/pidgin/tray/32/tray-new-im.png
+share/pixmaps/pidgin/tray/32/tray-offline.png
+share/pixmaps/pidgin/tray/32/tray-online.png
+share/pixmaps/pidgin/tray/48/
+share/pixmaps/pidgin/tray/48/tray-away.png
+share/pixmaps/pidgin/tray/48/tray-busy.png
+share/pixmaps/pidgin/tray/48/tray-connecting.png
+share/pixmaps/pidgin/tray/48/tray-extended-away.png
+share/pixmaps/pidgin/tray/48/tray-invisible.png
+share/pixmaps/pidgin/tray/48/tray-new-im.png
+share/pixmaps/pidgin/tray/48/tray-offline.png
+share/pixmaps/pidgin/tray/48/tray-online.png
 share/pixmaps/purple/
 share/pixmaps/purple/buddy_icons/
 share/pixmaps/purple/buddy_icons/qq/

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Brad Smith-14
On Tue, 31 Jul 2007 19:20:58 +0200
steven mestdagh <[hidden email]> wrote:

> Brad [2007-07-04, 12:57:52]:
> > On Fri, 15 Jun 2007 21:33:28 -0400
> > Brad <[hidden email]> wrote:
> >
> > > Here is an update to Pidgin 2.0.2 as well as an update to silc-toolkit 1.1
> > > as the Pidgin SILC support has been updated to use the 1.1 API.
> > >
> > > http://comstyle.com/pidgin/silc-toolkit.diff
> >
> > The diff has been updated to now include an update to silc-toolkit 1.1.2.
>
> and here's an update to pidgin 2.1.0. please give this a try.
>
> thanks

This looks good to me.

Reply | Threaded
Open this post in threaded view
|

Re: UPDATE: Pidgin 2.0.2 (and silc-toolkit 1.1)

Mike Erdely
In reply to this post by steven mestdagh
On Tue, Jul 31, 2007 at 07:20:58PM +0200, steven mestdagh wrote:
> and here's an update to pidgin 2.1.0. please give this a try.

Works for me with AIM and GTalk on i386.

-ME