/* channel wholist received: send the auto send command */ static void channel_wholist(CHANNEL_REC *channel) { SETUP_CHANNEL_REC *rec; NICK_REC *nick; char **bots, **bot; g_return_if_fail(channel != NULL); rec = channels_setup_find(channel->name, channel->server->connrec->ircnet); if (rec == NULL || rec->autosendcmd == NULL || !*rec->autosendcmd) return; if (rec->botmasks == NULL || !*rec->botmasks) { /* just send the command. */ eval_special_string(rec->autosendcmd, "", channel->server, channel); } /* find first available bot.. */ bots = g_strsplit(rec->botmasks, " ", -1); for (bot = bots; *bot != NULL; bot++) { nick = nicklist_find(channel, *bot); if (nick == NULL) continue; /* got one! */ eval_special_string(rec->autosendcmd, nick->nick, channel->server, channel); break; } g_strfreev(bots); }
/* Send the auto send command to channel */ void channel_send_autocommands(CHANNEL_REC *channel) { CHANNEL_SETUP_REC *rec; NICK_REC *nick; char **bots, **bot; g_return_if_fail(IS_CHANNEL(channel)); rec = channel_setup_find(channel->name, channel->server->connrec->chatnet); if (rec == NULL || rec->autosendcmd == NULL || !*rec->autosendcmd) return; if (rec->botmasks == NULL || !*rec->botmasks) { /* just send the command. */ eval_special_string(rec->autosendcmd, "", channel->server, channel); return; } /* find first available bot.. */ bots = g_strsplit(rec->botmasks, " ", -1); for (bot = bots; *bot != NULL; bot++) { const char *botnick = *bot; nick = nicklist_find_mask(channel, channel->server->isnickflag(*botnick) ? botnick+1 : botnick); if (nick != NULL && match_nick_flags(channel->server, nick, *botnick)) { eval_special_string(rec->autosendcmd, nick->nick, channel->server, channel); break; } } g_strfreev(bots); }
static void autorun_startup(void) { char *path; GIOChannel *handle; GString *buf; gsize tpos; /* open ~/.irssi/startup and run all commands in it */ path = g_strdup_printf("%s/startup", get_irssi_dir()); handle = g_io_channel_new_file(path, "r", NULL); g_free(path); if (handle == NULL) { /* file not found */ return; } g_io_channel_set_encoding(handle, NULL, NULL); buf = g_string_sized_new(512); while (g_io_channel_read_line_string(handle, buf, &tpos, NULL) == G_IO_STATUS_NORMAL) { buf->str[tpos] = '\0'; if (buf->str[0] != '#') { eval_special_string(buf->str, "", active_win->active_server, active_win->active); } } g_string_free(buf, TRUE); g_io_channel_unref(handle); }
static void sig_connected(SERVER_REC *server) { CHATNET_REC *rec; g_return_if_fail(IS_SERVER(server)); if (server->connrec->chatnet == NULL || server->session_reconnect) return; rec = chatnet_find(server->connrec->chatnet); if (!server->connrec->no_autosendcmd && rec != NULL && rec->autosendcmd) eval_special_string(rec->autosendcmd, "", server, NULL); }