/* stuff used by tcl.c & tclhash.c */ /* types of commands */ #define CMD_MSG 0 #define CMD_DCC 1 #define CMD_FIL 2 #define CMD_PUB 3 #define CMD_MSGM 4 #define CMD_PUBM 5 #define CMD_JOIN 6 #define CMD_PART 7 #define CMD_SIGN 8 #define CMD_KICK 9 #define CMD_TOPC 10 #define CMD_MODE 11 #define CMD_CTCP 12 #define CMD_CTCR 13 #define CMD_NICK 14 #define CMD_RAW 15 #define CMD_BOT 16 #define CMD_CHON 17 #define CMD_CHOF 18 #define CMD_SENT 19 #define CMD_RCVD 20 #define CMD_CHAT 21 #define CMD_LINK 22 #define CMD_DISC 23 #define CMD_SPLT 24 #define CMD_REJN 25 #define CMD_FILT 26 #define CMD_FLUD 27 #define CMD_NOTE 28 #define CMD_ACT 29 #define BINDS 30 /* extra commands are stored in Tcl hash tables (one hash table for each type of command: msg, dcc, etc) */ typedef struct tct { int flags_needed; char *func_name; struct tct *next; } tcl_cmd_t; typedef struct timer_str { unsigned int mins; /* time to elapse */ char *cmd; /* command linked to */ unsigned long id; /* used to remove timers */ struct timer_str *next; } tcl_timer_t; /* used for stub functions : */ #define STDVAR (cd,irp,argc,argv) \ ClientData cd; Tcl_Interp *irp; int argc; char *argv[]; #define BADARGS(nl,nh,example) \ if ((argc<(nl)) || (argc>(nh))) { \ Tcl_AppendResult(irp,"wrong # args: should be \"",argv[0], \ (example),"\"",NULL); \ return TCL_ERROR; \ } #define X(A) int A() #define X5(A,B,C,D,E) X(A);X(B);X(C);X(D);X(E) /***** prototypes! *****/ /* tclchan.c */ X5(tcl_chanlist, tcl_botisop, tcl_isop, tcl_isvoice, tcl_onchan); X5(tcl_handonchan, tcl_ischanban, tcl_getchanhost, tcl_onchansplit, tcl_maskhost); X5(tcl_delglban, tcl_delban, tcl_isban, tcl_ispermban, tcl_matchban); X5(tcl_addban, tcl_addglban, tcl_jump, tcl_getchanidle, tcl_chanbans); X5(tcl_hand2nick, tcl_nick2hand, tcl_channel_info, tcl_channel_modify, tcl_channel_add); X5(tcl_channel, tcl_banlist, tcl_channels, tcl_getchanmode, tcl_flushmode); X5(tcl_pushmode, tcl_newchanban, tcl_newban, tcl_killchanban, tcl_killban); /* tcluser.c */ X5(tcl_countusers, tcl_validuser, tcl_finduser, tcl_passwdOk, tcl_chattr); X5(tcl_matchattr, tcl_adduser, tcl_addbot, tcl_deluser, tcl_addhost); X5(tcl_delhost, tcl_getinfo, tcl_getdccdir, tcl_getcomment, tcl_getemail); X5(tcl_getxtra, tcl_setinfo, tcl_setdccdir, tcl_setcomment, tcl_setemail); X5(tcl_setxtra, tcl_getlaston, tcl_setlaston, tcl_userlist, tcl_save); X5(tcl_reload, tcl_gethosts, tcl_chpass, tcl_chhandle, tcl_getting_users); X5(tcl_getaddr, tcl_addignore, tcl_addpermignore, tcl_delignore, tcl_isignore); X(tcl_newignore); X(tcl_killignore); X(tcl_ignorelist); /* tcldcc.c */ X5(tcl_putdcc, tcl_dccsimul, tcl_dccsend, tcl_dccbroadcast, tcl_hand2idx); X5(tcl_getchan, tcl_setchan, tcl_dccputchan, tcl_console, tcl_echo); X5(tcl_control, tcl_killdcc, tcl_putbot, tcl_putallbots, tcl_idx2hand); X5(tcl_bots, tcl_dcclist, tcl_dccused, tcl_link, tcl_unlink); X5(tcl_filesend, tcl_assoc, tcl_killassoc, tcl_getdccidle, tcl_getdccaway); X(tcl_setdccaway); X(tcl_connect); /* tclmisc.c */ X5(tcl_putserv, tcl_puthelp, tcl_putlog, tcl_putcmdlog, tcl_putxferlog); X5(tcl_putloglev, tcl_bind, tcl_timer, tcl_utimer, tcl_killtimer); X5(tcl_killutimer, tcl_unixtime, tcl_time, tcl_date, tcl_timers); X5(tcl_utimers, tcl_ctime, tcl_myip, tcl_rand, tcl_sendnote); X5(tcl_getfileq, tcl_getdesc, tcl_setdesc, tcl_getowner, tcl_setowner); X5(tcl_getgots, tcl_setlink, tcl_getlink, tcl_setpwd, tcl_getpwd); X5(tcl_getfiles, tcl_getdirs, tcl_hide, tcl_unhide, tcl_share); X(tcl_unshare); X(tcl_encrypt); X(tcl_decrypt);