Irc: module { PATH: con "irc.dis"; MAXARG : con 16; #IRC response codes RPL_WELCOME : con 001; RPL_YOURHOST : con 002; RPL_CREATED : con 003; RPL_MYINFO : con 004; RPL_BOUNCE : con 005; RPL_USERHOST : con 302; RPL_ISON : con 303; RPL_AWAY : con 301; RPL_UNAWAY : con 305; RPL_NOWAWAY : con 306; RPL_WHOISUSER : con 311; RPL_WHOISSERVER : con 312; RPL_WHOISOPERATOR : con 313; RPL_WHOISIDLE : con 317; RPL_ENDOFWHOIS : con 318; RPL_WHOISCHANNELS : con 319; RPL_WHOISIDENTIFIED : con 320; RPL_WHOWASUSER : con 314; RPL_ENDOFWHOWAS : con 369; RPL_LISTSTART : con 321; RPL_LIST : con 322; RPL_LISTEND : con 323; RPL_UNIQOPIS : con 325; RPL_CHANNELMODEIS : con 324; RPL_NOTOPIC : con 331; RPL_TOPIC : con 332; RPL_OWNERTIME : con 333; RPL_INVITING : con 341; RPL_SUMMONING : con 342; RPL_INVITELIST : con 346; RPL_ENDOFINVITELIST : con 347; RPL_EXCEPTLIST : con 348; RPL_ENDOFEXCEPTLIST : con 349; RPL_VERSION : con 351; RPL_WHOREPLY : con 352; RPL_ENDOFWHO : con 315; RPL_NAMREPLY : con 353; RPL_ENDOFNAMES : con 366; RPL_LINKS : con 364; RPL_ENDOFLINKS : con 365; RPL_BANLIST : con 367; RPL_ENDOFBANLIST : con 368; RPL_INFO : con 371; RPL_ENDOFINFO : con 374; RPL_MOTDSTART : con 375; RPL_MOTD : con 372; RPL_ENDOFMOTD : con 376; RPL_YOUREOPER : con 381; RPL_REHASHING : con 382; RPL_YOURESERVICE : con 383; RPL_TIME : con 391; RPL_USERSSTART : con 392; RPL_USERS : con 393; RPL_ENDOFUSERS : con 394; RPL_NOUSERS : con 395; RPL_TRACELINK : con 200; RPL_TRACECONNECTING : con 201; RPL_TRACEHANDSHAKE : con 202; RPL_TRACEUNKNOWN : con 203; RPL_TRACEOPERATOR : con 204; RPL_TRACEUSER : con 205; RPL_TRACESERVER : con 206; RPL_TRACESERVICE : con 207; RPL_TRACENEWTYPE : con 208; RPL_TRACECLASS : con 209; RPL_TRACERECONNECT : con 210; RPL_TRACELOG : con 261; RPL_TRACEEND : con 262; RPL_STATSLINKINFO : con 211; RPL_STATSCOMMANDS : con 212; RPL_ENDOFSTATS : con 219; RPL_STATSUPTIME : con 242; RPL_STATSOLINE : con 243; RPL_UMODEIS : con 221; RPL_SERVLIST : con 234; RPL_SERVLISTEND : con 235; RPL_LUSERCLIENT : con 251; RPL_LUSEROP : con 252; RPL_LUSERUNKNOWN : con 253; RPL_LUSERCHANNELS : con 254; RPL_LUSERME : con 255; RPL_ADMINME : con 256; RPL_ADMINLOC1 : con 257; RPL_ADMINLOC2 : con 258; RPL_ADMINEMAIL : con 259; RPL_TRYAGAIN : con 263; ERR_NOSUCHNICK : con 401; ERR_NOSUCHSERVER : con 402; ERR_NOSUCHCHANNEL : con 403; ERR_CANNOTSENDTOCHAN : con 404; ERR_TOOMANYCHANNELS : con 405; ERR_WASNOSUCHNICK : con 406; ERR_TOOMANYTARGETS : con 407; ERR_NOSUCHSERVICE : con 408; ERR_NOORIGIN : con 409; ERR_NORECIPIENT : con 411; ERR_NOTEXTTOSEND : con 412; ERR_NOTOPLEVEL : con 413; ERR_WILDTOPLEVEL : con 414; ERR_BADMASK : con 415; ERR_UNKNOWNCOMMAND : con 421; ERR_NOMOTD : con 422; ERR_NOADMININFO : con 423; ERR_FILEERROR : con 424; ERR_NONICKNAMEGIVEN : con 431; ERR_ERRONEUSNICKNAME : con 432; ERR_NICKNAMEINUSE : con 433; ERR_NICKCOLLISION : con 436; ERR_UNAVAILRESOURCE : con 437; ERR_USERNOTINCHANNEL : con 441; ERR_NOTONCHANNEL : con 442; ERR_USERONCHANNEL : con 443; ERR_NOLOGIN : con 444; ERR_SUMMONDISABLED : con 445; ERR_USERSDISABLED : con 446; ERR_NOTREGISTERED : con 451; ERR_NEEDMOREPARAMS : con 461; ERR_ALREADYREGISTRED : con 462; ERR_NOPERMFORHOST : con 463; ERR_PASSWDMISMATCH : con 464; ERR_YOUREBANNEDCREEP : con 465; ERR_YOUWILLBEBANNED : con 466; ERR_KEYSET : con 467; ERR_CHANNELISFULL : con 471; ERR_UNKNOWNMODE : con 472; ERR_INVITEONLYCHAN : con 473; ERR_BANNEDFROMCHAN : con 474; ERR_BADCHANNELKEY : con 475; ERR_BADCHANMASK : con 476; ERR_NOCHANMODES : con 477; ERR_BANLISTFULL : con 478; ERR_NOPRIVILEGES : con 481; ERR_CHANOPRIVSNEEDED : con 482; ERR_CANTKILLSERVER : con 483; ERR_RESTRICTED : con 484; ERR_UNIQOPPRIVSNEEDED : con 485; ERR_NOOPERHOST : con 491; ERR_UMODEUNKNOWNFLAG : con 501; ERR_USERSDONTMATCH : con 502; readchan: chan of ref Imsg; writechan: chan of string; subchan: chan of ref Isub; unsubchan: chan of ref Isub; nick: string; chatty: int; Imsg : adt { prefix: string; src: string; dst: string; cmd: string; cmdnum: int; arg: list of string; }; Isub : adt { # aux : ref Ichan; mop: int; snoop: int; match: ref fn(i: ref Isub, m: ref Imsg): int; ml: chan of ref Imsg; disable: int; name: string; }; Iwho : adt { user: string; host: string; server: string; nick: string; mode: string; hops: int; fullname: string; }; Ichan : adt { refn: int; sure: int; name: string; sub: ref Isub; topic: string; owner: string; time: int; who: list of ref Iwho; err: string; _inwho: int; chatter: chan of ref Imsg; }; init: fn(); ircdial: fn(addr: string): int; login: fn(fullname: string, nicks: list of string, passwd: string): int; ircjoin: fn(name: string, sure: int): (string, ref Ichan); ircleave: fn(ic: ref Ichan); irccistrcmp: fn(s, t: string): int; addwho: fn(ic: ref Ichan, m: ref Imsg); findnick: fn(ic: ref Ichan, name: string): ref Iwho; addname: fn(ic: ref Ichan, name: string); delname: fn(ic: ref Ichan, name: string); changename: fn(ic: ref Ichan, old, name: string); irctolower: fn(c: int): int; inputrelay: fn(ic: ref Ichan); imsgfmt: fn(m: ref Imsg): string; };