# HG changeset patch # User Mikael Berthe # Date 1208694625 -7200 # Node ID 7b36b91a4388c17fdf664f63fabec317e6a63b1f # Parent e74cc83e7158c1d4a9c71d70b05849fb57b15cac New UI message flag (O) when OTR is used When PGP is used, the flag is still '~'. When OTR is used (and PGP is not), the encryption flag is 'O'. diff -r e74cc83e7158 -r 7b36b91a4388 mcabber/src/commands.c --- a/mcabber/src/commands.c Sun Apr 20 11:45:01 2008 +0200 +++ b/mcabber/src/commands.c Sun Apr 20 14:30:25 2008 +0200 @@ -1140,8 +1140,7 @@ // Network part jb_send_msg(fjid, msg, (isroom ? ROSTER_TYPE_ROOM : ROSTER_TYPE_USER), - subj, NULL, &crypted, - type_overwrite); + subj, NULL, &crypted, type_overwrite); if (crypted == -1) { scr_LogPrint(LPRINT_LOGNORM, "Encryption error. Message was not sent."); diff -r e74cc83e7158 -r 7b36b91a4388 mcabber/src/hbuf.h --- a/mcabber/src/hbuf.h Sun Apr 20 11:45:01 2008 +0200 +++ b/mcabber/src/hbuf.h Sun Apr 20 14:30:25 2008 +0200 @@ -26,7 +26,8 @@ #define HBB_PREFIX_NONE (1U<<9) #define HBB_PREFIX_SPECIAL (1U<<10) #define HBB_PREFIX_PGPCRYPT (1U<<11) -#define HBB_PREFIX_CONT (1U<<12) +#define HBB_PREFIX_OTRCRYPT (1U<<12) +#define HBB_PREFIX_CONT (1U<<13) typedef struct { time_t timestamp; diff -r e74cc83e7158 -r 7b36b91a4388 mcabber/src/hooks.c --- a/mcabber/src/hooks.c Sun Apr 20 11:45:01 2008 +0200 +++ b/mcabber/src/hooks.c Sun Apr 20 14:30:25 2008 +0200 @@ -70,8 +70,10 @@ unsigned mucnicklen = 0; const char *ename = NULL; - if (encrypted) + if (encrypted == ENCRYPTED_PGP) message_flags |= HBB_PREFIX_PGPCRYPT; + else if (encrypted == ENCRYPTED_OTR) + message_flags |= HBB_PREFIX_OTRCRYPT; if (type && !strcmp(type, "groupchat")) { rtype = ROSTER_TYPE_ROOM; @@ -250,6 +252,7 @@ time_t timestamp, const char *msg, guint encrypted) { char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL; + guint cryptflag = 0; if (nick) { wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg); @@ -271,7 +274,11 @@ // Note: the hlog_write should not be called first, because in some // cases scr_WriteOutgoingMessage() will load the history and we'd // have the message twice... - scr_WriteOutgoingMessage(bjid, wmsg, (encrypted ? HBB_PREFIX_PGPCRYPT : 0)); + if (encrypted == ENCRYPTED_PGP) + cryptflag = HBB_PREFIX_PGPCRYPT; + else if (encrypted == ENCRYPTED_OTR) + cryptflag = HBB_PREFIX_OTRCRYPT; + scr_WriteOutgoingMessage(bjid, wmsg, cryptflag); // We don't log private messages if (!nick) diff -r e74cc83e7158 -r 7b36b91a4388 mcabber/src/hooks.h --- a/mcabber/src/hooks.h Sun Apr 20 11:45:01 2008 +0200 +++ b/mcabber/src/hooks.h Sun Apr 20 14:30:25 2008 +0200 @@ -4,6 +4,9 @@ #include #include "jabglue.h" +// These two defines are used by hk_message_{in,out} arguments +#define ENCRYPTED_PGP 1 +#define ENCRYPTED_OTR 2 void hk_mainloop(void); void hk_message_in(const char *bjid, const char *resname, diff -r e74cc83e7158 -r 7b36b91a4388 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Sun Apr 20 11:45:01 2008 +0200 +++ b/mcabber/src/jabglue.c Sun Apr 20 14:30:25 2008 +0200 @@ -641,9 +641,8 @@ return; } } - if (otr_msg && encrypted) { - *encrypted = 1; - } + if (otr_msg && encrypted) + *encrypted = ENCRYPTED_OTR; } #endif @@ -693,7 +692,7 @@ xmlnode_put_attrib(y, "xmlns", NS_ENCRYPTED); xmlnode_insert_cdata(y, enc, (unsigned) -1); if (encrypted) - *encrypted = 1; + *encrypted = ENCRYPTED_PGP; g_free(enc); } @@ -1841,6 +1840,15 @@ (type && strcmp(type, "chat")) || ((s = settings_opt_get("server")) != NULL && !strcasecmp(bjid, s))) { gchar *fullbody = NULL; + guint encrypted; + + if (decrypted_pgp) + encrypted = ENCRYPTED_PGP; + else if (otr_msg) + encrypted = ENCRYPTED_OTR; + else + encrypted = 0; + if (subject) { if (body) fullbody = g_strdup_printf("[%s]\n%s", subject, body); @@ -1848,8 +1856,7 @@ fullbody = g_strdup_printf("[%s]\n", subject); body = fullbody; } - hk_message_in(bjid, rname, timestamp, body, type, - ((decrypted_pgp || otr_msg) ? TRUE : FALSE)); + hk_message_in(bjid, rname, timestamp, body, type, encrypted); g_free(fullbody); } else { scr_LogPrint(LPRINT_LOGNORM, "Blocked a message from <%s>", bjid); diff -r e74cc83e7158 -r 7b36b91a4388 mcabber/src/screen.c --- a/mcabber/src/screen.c Sun Apr 20 11:45:01 2008 +0200 +++ b/mcabber/src/screen.c Sun Apr 20 14:30:25 2008 +0200 @@ -1019,10 +1019,22 @@ dir = '>'; g_snprintf(pref, preflen, "%s#%c# ", date, dir); } else if (line->flags & HBB_PREFIX_IN) { - char cryptflag = line->flags & HBB_PREFIX_PGPCRYPT ? '~' : '='; + char cryptflag; + if (line->flags & HBB_PREFIX_PGPCRYPT) + cryptflag = '~'; + else if (line->flags & HBB_PREFIX_OTRCRYPT) + cryptflag = 'O'; + else + cryptflag = '='; g_snprintf(pref, preflen, "%s<%c= ", date, cryptflag); } else if (line->flags & HBB_PREFIX_OUT) { - char cryptflag = line->flags & HBB_PREFIX_PGPCRYPT ? '~' : '-'; + char cryptflag; + if (line->flags & HBB_PREFIX_PGPCRYPT) + cryptflag = '~'; + else if (line->flags & HBB_PREFIX_OTRCRYPT) + cryptflag = 'O'; + else + cryptflag = '='; g_snprintf(pref, preflen, "%s-%c> ", date, cryptflag); } else if (line->flags & HBB_PREFIX_SPECIAL) { strftime(date, 30, getspectprefix(), localtime(&line->timestamp)); @@ -1990,7 +2002,7 @@ { if (!(prefix & ~HBB_PREFIX_NOFLAG & ~HBB_PREFIX_HLIGHT & ~HBB_PREFIX_HLIGHT_OUT & - ~HBB_PREFIX_PGPCRYPT)) + ~HBB_PREFIX_PGPCRYPT & ~HBB_PREFIX_OTRCRYPT)) prefix |= HBB_PREFIX_IN; scr_WriteMessage(jidfrom, text, timestamp, prefix, mucnicklen);