static void cmd_topic(const char *data, SERVER_REC *server, WI_ITEM_REC *item) { CHANNEL_REC *channel; char *timestr, *bynick, *byhost; g_return_if_fail(data != NULL); channel = *data != '\0' ? channel_find(server, data) : CHANNEL(item); if (channel == NULL) return; printformat(server, channel->visible_name, MSGLEVEL_CRAP, channel->topic == NULL ? IRCTXT_NO_TOPIC : IRCTXT_TOPIC, channel->visible_name, channel->topic); if (channel->topic_time > 0) { byhost = strchr(channel->topic_by, '!'); if (byhost == NULL) { bynick = g_strdup(channel->topic_by); byhost = ""; } else { bynick = g_strndup(channel->topic_by, (int) (byhost-channel->topic_by)); byhost++; } timestr = my_asctime(channel->topic_time); printformat(server, channel->visible_name, MSGLEVEL_CRAP, IRCTXT_TOPIC_INFO, bynick, timestr, byhost); g_free(timestr); g_free(bynick); } signal_stop(); }
static void event_whois_idle(IRC_SERVER_REC *server, const char *data) { char *params, *nick, *secstr, *signonstr, *rest, *timestr; long days, hours, mins, secs; time_t signon; g_return_if_fail(data != NULL); params = event_get_params(data, 5 | PARAM_FLAG_GETREST, NULL, &nick, &secstr, &signonstr, &rest); secs = atol(secstr); signon = strstr(rest, "signon time") == NULL ? 0 : (time_t) atol(signonstr); days = secs/3600/24; hours = (secs%(3600*24))/3600; mins = (secs%3600)/60; secs %= 60; if (signon == 0) printformat(server, nick, MSGLEVEL_CRAP, IRCTXT_WHOIS_IDLE, nick, days, hours, mins, secs); else { timestr = my_asctime(signon); printformat(server, nick, MSGLEVEL_CRAP, IRCTXT_WHOIS_IDLE_SIGNON, nick, days, hours, mins, secs, timestr); g_free(timestr); } g_free(params); }
static void event_channel_created(IRC_SERVER_REC *server, const char *data) { char *params, *channel, *createtime, *timestr; g_return_if_fail(data != NULL); params = event_get_params(data, 3, NULL, &channel, &createtime); timestr = my_asctime((time_t) atol(createtime)); printformat(server, channel, MSGLEVEL_CRAP, IRCTXT_CHANNEL_CREATED, channel, timestr); g_free(timestr); g_free(params); }
/* CTCP version */ static void ctcp_time(IRC_SERVER_REC *server, const char *data, const char *nick) { char *str, *reply; g_return_if_fail(server != NULL); g_return_if_fail(nick != NULL); reply = my_asctime(time(NULL)); str = g_strdup_printf("NOTICE %s :\001TIME %s\001", nick, reply); ctcp_send_reply(server, str); g_free(str); g_free(reply); }
static void event_topic_info(IRC_SERVER_REC *server, const char *data) { char *params, *timestr, *channel, *topicby, *topictime; g_return_if_fail(data != NULL); params = event_get_params(data, 4, NULL, &channel, &topicby, &topictime); timestr = my_asctime((time_t) atol(topictime)); printformat(server, channel, MSGLEVEL_CRAP, IRCTXT_TOPIC_INFO, topicby, timestr); g_free(timestr); g_free(params); }
static void event_topic_info(IRC_SERVER_REC *server, const char *data) { const char *channel; char *params, *timestr, *bynick, *byhost, *topictime; g_return_if_fail(data != NULL); params = event_get_params(data, 4, NULL, &channel, &bynick, &topictime); timestr = my_asctime((time_t) atol(topictime)); byhost = strchr(bynick, '!'); if (byhost != NULL) *byhost++ = '\0'; channel = get_visible_target(server, channel); printformat(server, channel, MSGLEVEL_CRAP, IRCTXT_TOPIC_INFO, bynick, timestr, byhost == NULL ? "" : byhost); g_free(timestr); g_free(params); }