equal
deleted
inserted
replaced
17 * along with this program; if not, write to the Free Software |
17 * along with this program; if not, write to the Free Software |
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
19 * USA |
19 * USA |
20 */ |
20 */ |
21 |
21 |
|
22 #include <loudmouth/loudmouth.h> |
|
23 #include <stdlib.h> |
|
24 #include <string.h> |
22 #include <sys/types.h> |
25 #include <sys/types.h> |
23 #include <unistd.h> |
26 #include <unistd.h> |
24 #include <stdlib.h> |
|
25 |
27 |
26 #include "hooks.h" |
28 #include "hooks.h" |
27 #include "screen.h" |
29 #include "screen.h" |
28 #include "roster.h" |
30 #include "roster.h" |
29 #include "histolog.h" |
31 #include "histolog.h" |
53 */ |
55 */ |
54 fifo_read(); |
56 fifo_read(); |
55 } |
57 } |
56 |
58 |
57 void hk_message_in(const char *bjid, const char *resname, |
59 void hk_message_in(const char *bjid, const char *resname, |
58 time_t timestamp, const char *msg, const char *type, |
60 time_t timestamp, const char *msg, LmMessageSubType type, |
59 guint encrypted) |
61 guint encrypted) |
60 { |
62 { |
61 int new_guy = FALSE; |
63 int new_guy = FALSE; |
62 int is_groupchat = FALSE; // groupchat message |
64 int is_groupchat = FALSE; // groupchat message |
63 int is_room = FALSE; // window is a room window |
65 int is_room = FALSE; // window is a room window |
64 int log_muc_conf = FALSE; |
66 int log_muc_conf = FALSE; |
73 if (encrypted == ENCRYPTED_PGP) |
75 if (encrypted == ENCRYPTED_PGP) |
74 message_flags |= HBB_PREFIX_PGPCRYPT; |
76 message_flags |= HBB_PREFIX_PGPCRYPT; |
75 else if (encrypted == ENCRYPTED_OTR) |
77 else if (encrypted == ENCRYPTED_OTR) |
76 message_flags |= HBB_PREFIX_OTRCRYPT; |
78 message_flags |= HBB_PREFIX_OTRCRYPT; |
77 |
79 |
78 if (type && !strcmp(type, "groupchat")) { |
80 if (type == LM_MESSAGE_SUB_TYPE_GROUPCHAT) { |
79 rtype = ROSTER_TYPE_ROOM; |
81 rtype = ROSTER_TYPE_ROOM; |
80 is_groupchat = TRUE; |
82 is_groupchat = TRUE; |
81 log_muc_conf = settings_opt_get_int("log_muc_conf"); |
83 log_muc_conf = settings_opt_get_int("log_muc_conf"); |
82 if (!resname) { |
84 if (!resname) { |
83 message_flags = HBB_PREFIX_INFO | HBB_PREFIX_NOFLAG; |
85 message_flags = HBB_PREFIX_INFO | HBB_PREFIX_NOFLAG; |
170 } |
172 } |
171 } |
173 } |
172 } |
174 } |
173 } |
175 } |
174 |
176 |
175 if (type && !strcmp(type, "error")) { |
177 if (type == LM_MESSAGE_SUB_TYPE_ERROR) { |
176 message_flags = HBB_PREFIX_ERR | HBB_PREFIX_IN; |
178 message_flags = HBB_PREFIX_ERR | HBB_PREFIX_IN; |
177 scr_LogPrint(LPRINT_LOGNORM, "Error message received from <%s>", bjid); |
179 scr_LogPrint(LPRINT_LOGNORM, "Error message received from <%s>", bjid); |
178 } |
180 } |
179 |
181 |
180 // Note: the hlog_write should not be called first, because in some |
182 // Note: the hlog_write should not be called first, because in some |
290 g_free(bmsg); |
292 g_free(bmsg); |
291 g_free(mmsg); |
293 g_free(mmsg); |
292 } |
294 } |
293 |
295 |
294 void hk_statuschange(const char *bjid, const char *resname, gchar prio, |
296 void hk_statuschange(const char *bjid, const char *resname, gchar prio, |
295 time_t timestamp, enum imstatus status, |
297 time_t timestamp, enum imstatus status, |
296 const char *status_msg) |
298 const char *status_msg) |
297 { |
299 { |
298 int st_in_buf; |
300 int st_in_buf; |
299 enum imstatus oldstat; |
301 enum imstatus oldstat; |
300 char *bn; |
302 char *bn; |
301 char *logsmsg; |
303 char *logsmsg; |
475 g_free(datafname); |
477 g_free(datafname); |
476 datafname = NULL; |
478 datafname = NULL; |
477 scr_LogPrint(LPRINT_LOGNORM, |
479 scr_LogPrint(LPRINT_LOGNORM, |
478 "Unable to create temp file for external command."); |
480 "Unable to create temp file for external command."); |
479 } else { |
481 } else { |
480 write(fd, data_locale, strlen(data_locale)); |
482 size_t data_locale_len = strlen(data_locale); |
481 write(fd, "\n", 1); |
483 ssize_t a = write(fd, data_locale, data_locale_len); |
|
484 ssize_t b = write(fd, "\n", 1); |
|
485 if (a != data_locale_len || b != 1) { |
|
486 g_free(datafname); |
|
487 datafname = NULL; |
|
488 scr_LogPrint(LPRINT_LOGNORM, |
|
489 "Unable to write to temp file for external command."); |
|
490 } |
482 close(fd); |
491 close(fd); |
483 arg_data = datafname; |
492 arg_data = datafname; |
484 } |
493 } |
485 g_free(data_locale); |
494 g_free(data_locale); |
486 } |
495 } |