% reaction to !kernel variable stable = "unknown"; variable devel = "unknown"; define start_finger() { variable fd, chk, buf; fd = tcp_open(79, "ftp.kernel.org"); () = fputs("\r\n", fd); chk = fgets(fd); while(chk > 0) { buf = (); if(strlen(buf)) { % irc_logf("Last char is '%c'", buf[strlen(buf) - 1], 1); if(buf[strlen(buf) - 1] == '\n') { % irc_log("Stripping LF..."); (buf, ) = v_split(buf, "\n"); } if(buf[strlen(buf) - 1] == '\r') { % irc_log("Stripping CR..."); (buf, ) = v_split(buf, "\r"); } } if(strlen(buf)) { % irc_logf("Okay, have \"%s\"", buf, 1); chk = s_split(buf, ' '); chk--; for( ; chk; chk--) { buf = (); } buf = (); % irc_logf("Now have \"%s\"", buf, 1); if(strcmp(stable, "unknown")) devel = buf; else stable = buf; } chk = fgets(fd); } fclose(fd); return(1); } define do_kernel_bot() { variable text = Rpms[R_trailing]; if(text[0] == '!') { !if(strcmp(text, "!kernel")) { variable cache = "(cached) "; !if(strcmp(stable, "unknown")) { variable chk; chk = start_finger(); cache = ""; } irc_send_string(sprintf("PRIVMSG %s :[SLbot] %sLatest kernels: Stable: %s Devel: %s\r\n", Rpms[2], cache, stable, devel)); irc_say(sprintf("[SLbot] %sLatest kernels: Stable: %s Devel: %s", cache, stable, devel), irc_nickname, Rpms[2]); } } } register_action("PRIVMSG", &do_kernel_bot);