Index: libuirc/libuirc.c =================================================================== --- libuirc/libuirc.c (revision 31359) +++ libuirc/libuirc.c (revision 31360) @@ -158,7 +158,25 @@ return 0; } +static uirc_event_t uirc_parse_notice(uirc_t *ctx, char *nick, char *arg) +{ + char *text; + int q; + if (*arg == ':') arg++; + payload(text, arg); + + q = uirc_query_search(ctx, arg); + + if (ctx->on_notice != NULL) { + ctx->on_notice(ctx, nick, q, arg, text); + return UIRC_NOTICE; + } + + return 0; +} + + static uirc_event_t uirc_parse(uirc_t *ctx, char *line) { char *end, *arg, *cmd, *from = line; @@ -205,6 +223,7 @@ if (strcasecmp(cmd, "join") == 0) return res | uirc_parse_join(ctx, from, arg); if (strcasecmp(cmd, "part") == 0) return res | uirc_parse_part(ctx, from, arg); if (strcasecmp(cmd, "privmsg") == 0) return res | uirc_parse_msg(ctx, from, arg); + if (strcasecmp(cmd, "notice") == 0) return res | uirc_parse_notice(ctx, from, arg); return res; } Index: libuirc/libuirc.h =================================================================== --- libuirc/libuirc.h (revision 31359) +++ libuirc/libuirc.h (revision 31360) @@ -33,7 +33,8 @@ UIRC_JOIN = 0x0100, UIRC_ME_PART = 0x0200, UIRC_PART = 0x0400, - UIRC_MSG = 0x0800 + UIRC_MSG = 0x0800, + UIRC_NOTICE = 0x1000 } uirc_event_t; typedef struct uirc_s uirc_t; @@ -55,6 +56,7 @@ void (*on_me_part)(uirc_t *ctx, int query, char *chan); void (*on_part)(uirc_t *ctx, char *nick, int query, char *chan, char *reason); void (*on_msg)(uirc_t *ctx, char *from, int query, char *to, char *text); + void (*on_notice)(uirc_t *ctx, char *from, int query, char *to, char *text); /* internal */ P_net_socket sk; Index: libuirc/main.c =================================================================== --- libuirc/main.c (revision 31359) +++ libuirc/main.c (revision 31360) @@ -13,7 +13,12 @@ printf("(msg:%s) <%s> %s\n", to, from, text); } +static void on_notice(uirc_t *ctx, char *from, int query, char *to, char *text) +{ + printf("(msg:%s) -%s- %s\n", to, from, text); +} + static void read_stdin(uirc_t *ctx) { struct P_pollfd fds[1]; @@ -41,6 +46,7 @@ memset(&irc, 0, sizeof(irc)); irc.on_me_part = on_me_part; irc.on_msg = on_msg; + irc.on_notice = on_notice; irc.nick = strdup("libuirc"); if (uirc_connect(&irc, "10.0.0.2", 6667, "libuirc test client") != 0) {