comparison mcabber/src/hooks.c @ 1444:3bf11085c6a5

New external "UNREAD" event (suggested by Viacheslav Chumushuk) Thanks to Viacheslav for the suggestion and sample patch.
author Mikael Berthe <mikael@lilotux.net>
date Sun, 02 Mar 2008 11:14:42 +0100
parents a64778f5f26b
children ba706e97d6ec
comparison
equal deleted inserted replaced
1443:0623d694a77f 1444:3bf11085c6a5
403 char *arg_type = NULL; 403 char *arg_type = NULL;
404 char *arg_info = NULL; 404 char *arg_info = NULL;
405 char *arg_data = NULL; 405 char *arg_data = NULL;
406 char status_str[2]; 406 char status_str[2];
407 char *datafname = NULL; 407 char *datafname = NULL;
408 char unread_str[16];
408 409
409 if (!extcmd) return; 410 if (!extcmd) return;
410 411
411 // Prepare arg_* (external command parameters) 412 // Prepare arg_* (external command parameters)
412 switch (type) { 413 switch (type) {
413 case 'M': 414 case 'M': /* Normal message */
414 arg_type = "MSG"; 415 arg_type = "MSG";
415 if (info == 'R') 416 if (info == 'R')
416 arg_info = "IN"; 417 arg_info = "IN";
417 else if (info == 'S') 418 else if (info == 'S')
418 arg_info = "OUT"; 419 arg_info = "OUT";
419 break; 420 break;
420 case 'G': 421 case 'G': /* Groupchat message */
421 arg_type = "MSG"; 422 arg_type = "MSG";
422 arg_info = "MUC"; 423 arg_info = "MUC";
423 break; 424 break;
424 case 'S': 425 case 'S': /* Status change */
425 arg_type = "STATUS"; 426 arg_type = "STATUS";
426 if (strchr(imstatus2char, tolower(info))) { 427 if (strchr(imstatus2char, tolower(info))) {
427 status_str[0] = toupper(info); 428 status_str[0] = toupper(info);
428 status_str[1] = 0; 429 status_str[1] = 0;
429 arg_info = status_str; 430 arg_info = status_str;
430 } 431 }
432 break;
433 case 'U': /* Unread buffer count */
434 arg_type = "UNREAD";
435 g_snprintf(unread_str, sizeof unread_str, "%d", info);
436 arg_info = unread_str; /* number of remaining unread bjids */
431 break; 437 break;
432 default: 438 default:
433 return; 439 return;
434 } 440 }
435 441