Updates mcabber to 0.10.3. Thanks a lot to Tim van der Molen for sending me the patch. Patch needs to be applied with the -E option, the patch files are no longer needed.
Regards Markus Index: Makefile =================================================================== RCS file: /cvs/ports/net/mcabber/Makefile,v retrieving revision 1.21 diff -u -p -u -r1.21 Makefile --- Makefile 15 Aug 2013 16:34:49 -0000 1.21 +++ Makefile 21 Jan 2015 09:35:21 -0000 @@ -3,11 +3,10 @@ SHARED_ONLY= Yes COMMENT= console jabber client -DISTNAME= mcabber-0.10.2 -REVISION= 0 +DISTNAME= mcabber-0.10.3 CATEGORIES= net -HOMEPAGE= http://www.lilotux.net/~mikael/mcabber/ +HOMEPAGE= http://mcabber.com/ MAINTAINER= Markus Hennecke <markus-henne...@markus-hennecke.de> @@ -30,6 +29,7 @@ LIB_DEPENDS= devel/glib2 \ security/libotr RUN_DEPENDS= devel/desktop-file-utils +USE_GMAKE = Yes USE_GROFF = Yes LIBTOOL_FLAGS= --tag=disable-static Index: distinfo =================================================================== RCS file: /cvs/ports/net/mcabber/distinfo,v retrieving revision 1.8 diff -u -p -u -r1.8 distinfo --- distinfo 30 May 2013 12:01:17 -0000 1.8 +++ distinfo 21 Jan 2015 09:35:21 -0000 @@ -1,2 +1,2 @@ -SHA256 (mcabber-0.10.2.tar.bz2) = 4kbRU/k6dbT0WHn0R0NNsHBQPJkDvz+ZWvOWs7lFhvg= -SIZE (mcabber-0.10.2.tar.bz2) = 604378 +SHA256 (mcabber-0.10.3.tar.bz2) = d0ZhOElswm2xJRRcwo3E/A33mCcUO5It+58C6w3H+m0= +SIZE (mcabber-0.10.3.tar.bz2) = 612153 Index: patches/patch-configure_ac =================================================================== RCS file: /cvs/ports/net/mcabber/patches/patch-configure_ac,v retrieving revision 1.1 diff -u -p -u -r1.1 patch-configure_ac --- patches/patch-configure_ac 15 Aug 2013 16:34:50 -0000 1.1 +++ patches/patch-configure_ac 21 Jan 2015 09:35:21 -0000 @@ -1,45 +0,0 @@ -$OpenBSD: patch-configure_ac,v 1.1 2013/08/15 16:34:50 stsp Exp $ -http://www.isbear.org.ua/hg/isbear/mcabber-patches/file/tip/use-otr-v4.diff ---- configure.ac.orig Sun Dec 2 14:27:30 2012 -+++ configure.ac Wed Aug 14 18:56:07 2013 -@@ -184,16 +184,26 @@ fi - - # Check for otr - AC_ARG_ENABLE(otr, -- AC_HELP_STRING([--enable-otr], -- [enable OTR (Off-the-Record) messaging support]), -- enable_otr=$enableval, otr="") -+ AC_HELP_STRING([--enable-otr], -+ [enable OTR (Off-the-Record) messaging support]), -+ enable_otr=$enableval, -+ otr="") - if test "x$enable_otr" = "xyes"; then -- # Look for libgcrypt and libotr -- AM_PATH_LIBGCRYPT(1.2.2, [ -- AM_PATH_LIBOTR(3.1.0, , -- AC_MSG_ERROR(libotr 3.1.0 or newer is required.)) -- ], AC_MSG_ERROR(libgcrypt 1.2.2 or newer is required.) -- ) -+ # Look for libgcrypt and libotr -+ AM_PATH_LIBGCRYPT(1.2.2, [ -+ AM_PATH_LIBOTR(4.0.0, [ -+ AC_DEFINE([HAVE_LIBOTR], 1, [Define if you use libotr]) -+ ], [ -+ AM_PATH_LIBOTR(3.1.0, [ -+ AC_DEFINE([HAVE_LIBOTR], 1, [Define if you use libotr]) -+ AC_DEFINE([HAVE_LIBOTR3], 1, [Define if you use libotr v3]) -+ ], [ -+ AC_MSG_ERROR(libotr 3.1.0 or newer is required.) -+ ]) -+ ]) -+ ], [ -+ AC_MSG_ERROR(libgcrypt 1.2.2 or newer is required.) -+ ]) - fi - - # Check for Enchant stuff -@@ -290,3 +300,4 @@ AC_CONFIG_FILES([mcabber/Makefile - mcabber.pc - Makefile]) - AC_OUTPUT -+dnl vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2: For Vim users... Index: patches/patch-mcabber_otr_c =================================================================== RCS file: /cvs/ports/net/mcabber/patches/patch-mcabber_otr_c,v retrieving revision 1.1 diff -u -p -u -r1.1 patch-mcabber_otr_c --- patches/patch-mcabber_otr_c 15 Aug 2013 16:34:50 -0000 1.1 +++ patches/patch-mcabber_otr_c 21 Jan 2015 09:35:21 -0000 @@ -1,540 +0,0 @@ -$OpenBSD: patch-mcabber_otr_c,v 1.1 2013/08/15 16:34:50 stsp Exp $ -http://www.isbear.org.ua/hg/isbear/mcabber-patches/file/tip/use-otr-v4.diff ---- mcabber/otr.c.orig Sun Dec 2 14:27:32 2012 -+++ mcabber/otr.c Wed Aug 14 18:56:07 2013 -@@ -56,6 +56,20 @@ static void cb_inject_message (void *opdata, - const char *protocol, - const char *recipient, - const char *message); -+static void cb_update_context_list(void *opdata); -+static void cb_new_fingerprint (void *opdata, OtrlUserState us, -+ const char *accountname, -+ const char *protocol, -+ const char *username, -+ unsigned char fingerprint[20]); -+static void cb_write_fingerprints (void *opdata); -+static void cb_gone_secure (void *opdata, ConnContext *context); -+static void cb_gone_insecure (void *opdata, ConnContext *context); -+static void cb_still_secure (void *opdata, ConnContext *context, -+ int is_reply); -+static int cb_max_message_size (void *opdata, ConnContext *context); -+ -+#ifdef HAVE_LIBOTR3 - static void cb_notify (void *opdata, - OtrlNotifyLevel level, - const char *accountname, -@@ -69,49 +83,71 @@ static int cb_display_otr_message(void *opdata, - const char *protocol, - const char *username, - const char *msg); --static void cb_update_context_list(void *opdata); - static const char *cb_protocol_name (void *opdata, const char *protocol); - static void cb_protocol_name_free (void *opdata, - const char *protocol_name); --static void cb_new_fingerprint (void *opdata, OtrlUserState us, -- const char *accountname, -- const char *protocol, -- const char *username, -- unsigned char fingerprint[20]); --static void cb_write_fingerprints (void *opdata); --static void cb_gone_secure (void *opdata, ConnContext *context); --static void cb_gone_insecure (void *opdata, ConnContext *context); --static void cb_still_secure (void *opdata, ConnContext *context, -- int is_reply); - static void cb_log_message (void *opdata, const char *message); --static int cb_max_message_size (void *opdata, ConnContext *context); - -+static void otr_handle_smp_tlvs (OtrlTLV *tlvs, ConnContext *ctx); -+#else /* HAVE_LIBOTR3 */ -+static char *tagfile = NULL; -+static guint otr_timer_source = 0; -+ -+static void cb_handle_smp_event (void *opdata, OtrlSMPEvent event, -+ ConnContext *context, unsigned short percent, -+ char *question); -+static void cb_handle_msg_event (void *opdata, OtrlMessageEvent event, -+ ConnContext *context, const char *message, -+ gcry_error_t err); -+static void cb_create_instag (void *opdata, const char *accountname, -+ const char *protocol); -+static void cb_timer_control (void *opdata, unsigned int interval); -+#endif /* HAVE_LIBOTR3 */ -+ - static OtrlMessageAppOps ops = - { - cb_policy, - cb_create_privkey, - cb_is_logged_in, - cb_inject_message, -+#ifdef HAVE_LIBOTR3 - cb_notify, - cb_display_otr_message, -+#endif - cb_update_context_list, -+#ifdef HAVE_LIBOTR3 - cb_protocol_name, - cb_protocol_name_free, -+#endif - cb_new_fingerprint, - cb_write_fingerprints, - cb_gone_secure, - cb_gone_insecure, - cb_still_secure, -+#ifdef HAVE_LIBOTR3 - cb_log_message, -+#endif - cb_max_message_size, -- NULL, /*account_name*/ -- NULL /*account_name_free*/ -+ NULL, /* account_name */ -+ NULL, /* account_name_free */ -+#ifndef HAVE_LIBOTR3 -+ NULL, /* received_symkey */ -+ NULL, /* otr_error_message */ -+ NULL, /* otr_error_message_free */ -+ NULL, /* resent_msg_prefix */ -+ NULL, /* resent_msg_prefix_free */ -+ cb_handle_smp_event, -+ cb_handle_msg_event, -+ cb_create_instag, -+ NULL, /* convert_msg */ -+ NULL, /* convert_free */ -+ cb_timer_control, -+#endif - }; - - static void otr_message_disconnect(ConnContext *ctx); - static ConnContext *otr_get_context(const char *buddy); - static void otr_startstop(const char *buddy, int start); --static void otr_handle_smp_tlvs(OtrlTLV *tlvs, ConnContext *ctx); - - static char *otr_get_dir(void); - -@@ -135,7 +171,6 @@ void otr_init(const char *fjid) - account = jidtodisp(fjid); - keyfile = g_strdup_printf("%s%s.key", root, account); - fprfile = g_strdup_printf("%s%s.fpr", root, account); -- g_free(root); - - if (otrl_privkey_read(userstate, keyfile)){ - scr_LogPrint(LPRINT_LOGNORM, "Could not read OTR key from %s", keyfile); -@@ -145,6 +180,14 @@ void otr_init(const char *fjid) - scr_LogPrint(LPRINT_LOGNORM, "Could not read OTR fingerprints from %s", - fprfile); - } -+#ifndef HAVE_LIBOTR3 -+ tagfile = g_strdup_printf("%s%s.tag", root, account); -+ if (otrl_instag_read(userstate, tagfile)) { -+ scr_LogPrint(LPRINT_LOGNORM, "Could not read OTR instance tag from %s", tagfile); -+ cb_create_instag(NULL, account, OTR_PROTOCOL_NAME); -+ } -+#endif -+ g_free(root); - } - - void otr_terminate(void) -@@ -154,6 +197,13 @@ void otr_terminate(void) - if (!otr_is_enabled) - return; - -+#ifndef HAVE_LIBOTR3 -+ if (otr_timer_source > 0) { -+ g_source_remove (otr_timer_source); -+ otr_timer_source = 0; -+ } -+#endif -+ - for (ctx = userstate->context_root; ctx; ctx = ctx->next) - if (ctx->msgstate == OTRL_MSGSTATE_ENCRYPTED) - otr_message_disconnect(ctx); -@@ -175,6 +225,12 @@ void otr_terminate(void) - userstate = NULL; - g_free(keyfile); - keyfile = NULL; -+ g_free(fprfile); -+ fprfile = NULL; -+#ifndef HAVE_LIBOTR3 -+ g_free(tagfile); -+ tagfile = NULL; -+#endif - } - - static char *otr_get_dir(void) -@@ -206,7 +262,12 @@ static ConnContext *otr_get_context(const char *buddy) - - mc_strtolower(lowcasebuddy); - ctx = otrl_context_find(userstate, lowcasebuddy, account, OTR_PROTOCOL_NAME, -+#ifdef HAVE_LIBOTR3 - 1, &null, NULL, NULL); -+#else -+ // INSTAG XXX -+ OTRL_INSTAG_BEST, 1, &null, NULL, NULL); -+#endif - g_free(lowcasebuddy); - return ctx; - } -@@ -216,7 +277,12 @@ static void otr_message_disconnect(ConnContext *ctx) - if (ctx->msgstate == OTRL_MSGSTATE_ENCRYPTED) - cb_gone_insecure(NULL, ctx); - otrl_message_disconnect(userstate, &ops, NULL, ctx->accountname, -+#ifdef HAVE_LIBOTR3 - ctx->protocol, ctx->username); -+#else -+ // INSTAG XXX -+ ctx->protocol, ctx->username, OTRL_INSTAG_BEST); -+#endif - } - - static void otr_startstop(const char *buddy, int start) -@@ -283,6 +349,8 @@ void otr_fingerprint(const char *buddy, const char *tr - cb_write_fingerprints(NULL); - } - -+#ifdef HAVE_LIBOTR3 -+ - static void otr_handle_smp_tlvs(OtrlTLV *tlvs, ConnContext *ctx) - { - OtrlTLV *tlv = NULL; -@@ -354,6 +422,130 @@ static void otr_handle_smp_tlvs(OtrlTLV *tlvs, ConnCon - } - } - -+#else /* HAVE_LIBOTR3 */ -+ -+static void cb_handle_smp_event(void *opdata, OtrlSMPEvent event, -+ ConnContext *context, unsigned short percent, -+ char *question) -+{ -+ const char *msg = NULL; -+ char *freeme = NULL; -+ switch (event) { -+ case OTRL_SMPEVENT_ASK_FOR_SECRET: -+ msg = freeme = g_strdup_printf("OTR: Socialist Millionaires' Protocol: " -+ "Received SMP Initiation.\n" -+ "Answer with /otr smpr %s $secret", -+ context->username); -+ break; -+ case OTRL_SMPEVENT_ASK_FOR_ANSWER: -+ msg = freeme = g_strdup_printf("OTR: Socialist Millionaires' Protocol: " -+ "Received SMP Initiation.\n" -+ "Answer with /otr smpr %s $secret\n" -+ "Question: %s", context->username, -+ question); -+ break; -+ case OTRL_SMPEVENT_CHEATED: -+ msg = "OTR: Socialist Millionaires' Protocol: Correspondent cancelled negotiation!"; -+ otrl_message_abort_smp(userstate, &ops, opdata, context); -+ break; -+ case OTRL_SMPEVENT_IN_PROGRESS: -+ scr_log_print(LPRINT_DEBUG, "OTR: Socialist Millionaires' Protocol: " -+ "Negotiation is in pogress..."); -+ break; -+ case OTRL_SMPEVENT_SUCCESS: -+ msg = "OTR: Socialist Millionaires' Protocol: Success!"; -+ break; -+ case OTRL_SMPEVENT_FAILURE: -+ msg = "OTR: Socialist Millionaires' Protocol: Failure."; -+ break; -+ case OTRL_SMPEVENT_ABORT: -+ msg = "OTR: Socialist Millionaires' Protocol: Aborted."; -+ break; -+ case OTRL_SMPEVENT_ERROR: -+ msg = "OTR: Socialist Millionaires' Protocol: Error occured, aborting negotiations!"; -+ otrl_message_abort_smp(userstate, &ops, opdata, context); -+ break; -+ default: -+ break; -+ } -+ -+ if (msg) { -+ scr_WriteIncomingMessage(context->username, msg, 0, HBB_PREFIX_INFO, 0); -+ g_free(freeme); -+ } -+} -+ -+static void cb_handle_msg_event(void *opdata, OtrlMessageEvent event, -+ ConnContext *context, const char *message, -+ gcry_error_t err) -+{ -+ const char *msg = NULL; -+ char *freeme = NULL; -+ switch (event) { -+ case OTRL_MSGEVENT_ENCRYPTION_REQUIRED: -+ msg = "OTR: Policy requires encryption on message!"; -+ break; -+ case OTRL_MSGEVENT_ENCRYPTION_ERROR: -+ msg = "OTR: Encryption error! Message not sent."; -+ break; -+ case OTRL_MSGEVENT_CONNECTION_ENDED: -+ msg = "OTR: Connection closed by remote end, message lost. " -+ "Close or refresh connection."; -+ break; -+ case OTRL_MSGEVENT_SETUP_ERROR: -+ // FIXME -+ msg = freeme = g_strdup_printf("OTR: Error setting up private conversation: %u", -+ err); -+ break; -+ case OTRL_MSGEVENT_MSG_REFLECTED: -+ msg = "OTR: Received own OTR message!"; -+ break; -+ case OTRL_MSGEVENT_MSG_RESENT: -+ msg = "OTR: Previous message was resent."; -+ break; -+ case OTRL_MSGEVENT_RCVDMSG_NOT_IN_PRIVATE: -+ msg = "OTR: Received encrypted message, but connection is not established " \ -+ "yet! Message lost."; -+ break; -+ case OTRL_MSGEVENT_RCVDMSG_UNREADABLE: -+ msg = "OTR: Unable to read incoming message!"; -+ break; -+ case OTRL_MSGEVENT_RCVDMSG_MALFORMED: -+ msg = "OTR: Malformed incoming message!"; -+ break; -+ case OTRL_MSGEVENT_LOG_HEARTBEAT_RCVD: -+ scr_log_print(LPRINT_DEBUG, "OTR: Received heartbeat."); -+ break; -+ case OTRL_MSGEVENT_LOG_HEARTBEAT_SENT: -+ scr_log_print(LPRINT_DEBUG, "OTR: Sent heartbeat."); -+ break; -+ case OTRL_MSGEVENT_RCVDMSG_GENERAL_ERR: -+ msg = freeme = g_strdup_printf("OTR: Received general otr error: %s", -+ message); -+ break; -+ case OTRL_MSGEVENT_RCVDMSG_UNENCRYPTED: -+ msg = freeme = g_strdup_printf("OTR: Received unencrypted message: %s", -+ message); -+ break; -+ case OTRL_MSGEVENT_RCVDMSG_UNRECOGNIZED: -+ msg = "OTR: Unable to determine type of received OTR message!"; -+ break; -+ case OTRL_MSGEVENT_RCVDMSG_FOR_OTHER_INSTANCE: -+ // XXX -+ scr_log_print(LPRINT_DEBUG, "OTR: Received message for other instance."); -+ break; -+ default: -+ break; -+ } -+ -+ if (msg) { -+ scr_WriteIncomingMessage(context->username, msg, 0, HBB_PREFIX_INFO, 0); -+ g_free(freeme); -+ } -+} -+ -+#endif /* HAVE_LIBOTR3 */ -+ - /* - * returns whether a otr_message was received - * sets *otr_data to NULL, when it was an internal otr message -@@ -362,8 +554,10 @@ int otr_receive(char **otr_data, const char *buddy, in - { - int ignore_message; - char *newmessage = NULL; -+#ifdef HAVE_LIBOTR3 - OtrlTLV *tlvs = NULL; - OtrlTLV *tlv = NULL; -+#endif - ConnContext *ctx; - - ctx = otr_get_context(buddy); -@@ -371,9 +565,9 @@ int otr_receive(char **otr_data, const char *buddy, in - ignore_message = otrl_message_receiving(userstate, &ops, NULL, - ctx->accountname, ctx->protocol, - ctx->username, *otr_data, -- &newmessage, &tlvs,NULL, NULL); -+#ifdef HAVE_LIBOTR3 -+ &newmessage, &tlvs, NULL, NULL); - -- - tlv = otrl_tlv_find(tlvs, OTRL_TLV_DISCONNECTED); - if (tlv) { - /* Notify the user that the other side disconnected. */ -@@ -387,6 +581,9 @@ int otr_receive(char **otr_data, const char *buddy, in - - if (tlvs != NULL) - otrl_tlv_free(tlvs); -+#else -+ &newmessage, NULL, NULL, NULL, NULL); -+#endif - - if (ignore_message) - *otr_data = NULL; -@@ -410,13 +607,27 @@ int otr_send(char **msg, const char *buddy) - - if (ctx->msgstate == OTRL_MSGSTATE_PLAINTEXT) - err = otrl_message_sending(userstate, &ops, NULL, ctx->accountname, -+#ifdef HAVE_LIBOTR3 - ctx->protocol, ctx->username, *msg, NULL, - &newmessage, NULL, NULL); -+#else -+ // INSTAG XXX -+ ctx->protocol, ctx->username, OTRL_INSTAG_BEST, -+ *msg, NULL, &newmessage, OTRL_FRAGMENT_SEND_SKIP, -+ NULL, NULL, NULL); -+#endif - else { - htmlmsg = html_escape(*msg); - err = otrl_message_sending(userstate, &ops, NULL, ctx->accountname, -+#ifdef HAVE_LIBOTR3 - ctx->protocol, ctx->username, htmlmsg, NULL, - &newmessage, NULL, NULL); -+#else -+ // INSTAG XXX -+ ctx->protocol, ctx->username, OTRL_INSTAG_BEST, -+ htmlmsg, NULL, &newmessage, OTRL_FRAGMENT_SEND_SKIP, -+ NULL, NULL, NULL); -+#endif - g_free(htmlmsg); - } - -@@ -648,6 +859,59 @@ static void cb_inject_message(void *opdata, const char - LM_MESSAGE_SUB_TYPE_NOT_SET, NULL); - } - -+/* When the list of ConnContexts changes (including a change in -+ * state), this is called so the UI can be updated. */ -+static void cb_update_context_list(void *opdata) -+{ -+ /*maybe introduce new status characters for mcabber, -+ * then use this function (?!)*/ -+} -+ -+/* A new fingerprint for the given user has been received. */ -+static void cb_new_fingerprint(void *opdata, OtrlUserState us, -+ const char *accountname, const char *protocol, -+ const char *username, -+ unsigned char fingerprint[20]) -+{ -+ char *sbuf = NULL; -+ char readable[45]; -+ -+ otrl_privkey_hash_to_human(readable, fingerprint); -+ sbuf = g_strdup_printf("OTR: new fingerprint: %s", readable); -+ scr_WriteIncomingMessage(username, sbuf, 0, HBB_PREFIX_INFO, 0); -+ g_free(sbuf); -+} -+ -+/* The list of known fingerprints has changed. Write them to disk. */ -+static void cb_write_fingerprints(void *opdata) -+{ -+ otrl_privkey_write_fingerprints(userstate, fprfile); -+} -+ -+/* A ConnContext has entered a secure state. */ -+static void cb_gone_secure(void *opdata, ConnContext *context) -+{ -+ scr_WriteIncomingMessage(context->username, "OTR: channel established", 0, -+ HBB_PREFIX_INFO, 0); -+} -+ -+/* A ConnContext has left a secure state. */ -+static void cb_gone_insecure(void *opdata, ConnContext *context) -+{ -+ scr_WriteIncomingMessage(context->username, "OTR: channel closed", 0, -+ HBB_PREFIX_INFO, 0); -+} -+ -+/* We have completed an authentication, using the D-H keys we -+ * already knew. is_reply indicates whether we initiated the AKE. */ -+static void cb_still_secure(void *opdata, ConnContext *context, int is_reply) -+{ -+ scr_WriteIncomingMessage(context->username, "OTR: channel reestablished", 0, -+ HBB_PREFIX_INFO, 0); -+} -+ -+#ifdef HAVE_LIBOTR3 -+ - /* Display a notification message for a particular - * accountname / protocol / username conversation. */ - static void cb_notify(void *opdata, OtrlNotifyLevel level, -@@ -684,14 +948,6 @@ static int cb_display_otr_message(void *opdata, const - return 0; - } - --/* When the list of ConnContexts changes (including a change in -- * state), this is called so the UI can be updated. */ --static void cb_update_context_list(void *opdata) --{ -- /*maybe introduce new status characters for mcabber, -- * then use this function (?!)*/ --} -- - /* Return a newly allocated string containing a human-friendly name - * for the given protocol id */ - static const char *cb_protocol_name(void *opdata, const char *protocol) -@@ -705,54 +961,40 @@ static void cb_protocol_name_free (void *opdata, const - /* We didn't allocated memory, so we don't have to free anything :p */ - } - --/* A new fingerprint for the given user has been received. */ --static void cb_new_fingerprint(void *opdata, OtrlUserState us, -- const char *accountname, const char *protocol, -- const char *username, -- unsigned char fingerprint[20]) -+/* Log a message. The passed message will end in "\n". */ -+static void cb_log_message(void *opdata, const char *message) - { -- char *sbuf = NULL; -- char readable[45]; -- -- otrl_privkey_hash_to_human(readable, fingerprint); -- sbuf = g_strdup_printf("OTR: new fingerprint: %s", readable); -- scr_WriteIncomingMessage(username, sbuf, 0, HBB_PREFIX_INFO, 0); -- g_free(sbuf); -+ scr_LogPrint(LPRINT_DEBUG, "OTR: %s", message); - } - --/* The list of known fingerprints has changed. Write them to disk. */ --static void cb_write_fingerprints(void *opdata) --{ -- otrl_privkey_write_fingerprints(userstate, fprfile); --} -+#else /* HAVE_LIBOTR3 */ - --/* A ConnContext has entered a secure state. */ --static void cb_gone_secure(void *opdata, ConnContext *context) -+/* Generate unique instance tag for account. */ -+static void cb_create_instag(void *opdata, const char *accountname, -+ const char *protocol) - { -- scr_WriteIncomingMessage(context->username, "OTR: channel established", 0, -- HBB_PREFIX_INFO, 0); -+ if (otrl_instag_generate(userstate, tagfile, accountname, protocol)) { -+ scr_LogPrint(LPRINT_LOGNORM, "OTR instance tag generation failed!"); -+ } - } - --/* A ConnContext has left a secure state. */ --static void cb_gone_insecure(void *opdata, ConnContext *context) -+static gboolean otr_timer_cb(gpointer userdata) - { -- scr_WriteIncomingMessage(context->username, "OTR: channel closed", 0, -- HBB_PREFIX_INFO, 0); -+ otrl_message_poll(userstate, &ops, userdata); -+ return TRUE; - } - --/* We have completed an authentication, using the D-H keys we -- * already knew. is_reply indicates whether we initiated the AKE. */ --static void cb_still_secure(void *opdata, ConnContext *context, int is_reply) -+static void cb_timer_control(void *opdata, unsigned int interval) - { -- scr_WriteIncomingMessage(context->username, "OTR: channel reestablished", 0, -- HBB_PREFIX_INFO, 0); -+ if (otr_timer_source > 0) { -+ g_source_remove(otr_timer_source); -+ otr_timer_source = 0; -+ } -+ if (interval > 0) -+ otr_timer_source = g_timeout_add_seconds(interval, otr_timer_cb, opdata); - } - --/* Log a message. The passed message will end in "\n". */ --static void cb_log_message(void *opdata, const char *message) --{ -- scr_LogPrint(LPRINT_DEBUG, "OTR: %s", message); --} -+#endif /* HAVE_LIBOTR3 */ - - /* Find the maximum message size supported by this protocol. */ - static int cb_max_message_size(void *opdata, ConnContext *context) Index: patches/patch-mcabber_otr_h =================================================================== RCS file: /cvs/ports/net/mcabber/patches/patch-mcabber_otr_h,v retrieving revision 1.1 diff -u -p -u -r1.1 patch-mcabber_otr_h --- patches/patch-mcabber_otr_h 15 Aug 2013 16:34:50 -0000 1.1 +++ patches/patch-mcabber_otr_h 21 Jan 2015 09:35:21 -0000 @@ -1,14 +0,0 @@ -$OpenBSD: patch-mcabber_otr_h,v 1.1 2013/08/15 16:34:50 stsp Exp $ -http://www.isbear.org.ua/hg/isbear/mcabber-patches/file/tip/use-otr-v4.diff ---- mcabber/otr.h.orig Sun Dec 2 14:27:32 2012 -+++ mcabber/otr.h Wed Aug 14 18:56:07 2013 -@@ -5,6 +5,9 @@ - - #ifdef HAVE_LIBOTR - -+#ifndef HAVE_LIBOTR3 -+# include <libotr/instag.h> -+#endif - #include <libotr/proto.h> - #include <libotr/message.h> - #include <libotr/privkey.h>