# HG changeset patch # User Mikael Berthe # Date 1166125158 -3600 # Node ID 1db3d045e95cb4c1272366d4eb6adde29eeb4989 # Parent 8e12137fab20443771902b6b5c7aa195d8916a3e Fix 2 hooks bugs - do not write to file descriptor if mkstemp() fails; - remove bogus mkcmdstr("me "). diff -r 8e12137fab20 -r 1db3d045e95c mcabber/src/hooks.c --- a/mcabber/src/hooks.c Thu Dec 14 19:17:50 2006 +0100 +++ b/mcabber/src/hooks.c Thu Dec 14 20:39:18 2006 +0100 @@ -33,6 +33,8 @@ static char *extcmd; +static const char *COMMAND_ME = "/me "; + inline void hk_message_in(const char *bjid, const char *resname, time_t timestamp, const char *msg, const char *type, guint encrypted) @@ -56,15 +58,14 @@ if (!resname) { message_flags = HBB_PREFIX_INFO | HBB_PREFIX_NOFLAG; resname = ""; - bmsg = g_strdup_printf("~ %s", msg); + wmsg = bmsg = g_strdup_printf("~ %s", msg); } else { - bmsg = g_strdup_printf("<%s> %s", resname, msg); + wmsg = bmsg = g_strdup_printf("<%s> %s", resname, msg); + if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME))) + wmsg = mmsg = g_strdup_printf("*%s %s", resname, msg+4); } - wmsg = bmsg; - if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me ")))) - wmsg = mmsg = g_strdup_printf("*%s %s", resname, msg+4); } else { - if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me ")))) + if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME))) wmsg = mmsg = g_strdup_printf("*%s %s", bjid, msg+4); else wmsg = (char*) msg; @@ -96,7 +97,7 @@ wmsg = bmsg = g_strdup(msg); } else { wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", resname, msg); - if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me ")))) + if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME))) wmsg = mmsg = g_strdup_printf("PRIV#*%s %s", resname, msg+4); } } else { @@ -175,9 +176,11 @@ if (nick) { wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg); + if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME))) + wmsg = mmsg = g_strdup_printf("PRIV#*%s %s", nick, msg+4); } else { wmsg = (char*)msg; - if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me ")))) { + if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME))) { const char *myid = settings_opt_get("username"); if (myid) wmsg = mmsg = g_strdup_printf("*%s %s", settings_opt_get("username"), @@ -191,7 +194,8 @@ scr_WriteOutgoingMessage(bjid, wmsg, (encrypted ? HBB_PREFIX_PGPCRYPT : 0)); // We don't log private messages - if (!nick) hlog_write_message(bjid, timestamp, TRUE, msg); + if (!nick) + hlog_write_message(bjid, timestamp, TRUE, msg); // External command hk_ext_cmd(bjid, 'M', 'S', NULL); @@ -344,11 +348,12 @@ datafname = NULL; scr_LogPrint(LPRINT_LOGNORM, "Unable to create temp file for external command."); + } else { + write(fd, data_locale, strlen(data_locale)); + write(fd, "\n", 1); + close(fd); + arg_data = datafname; } - write(fd, data_locale, strlen(data_locale)); - write(fd, "\n", 1); - close(fd); - arg_data = datafname; g_free(data_locale); }