1 /* 2 firetalk.h - FireTalk wrapper declarations 3 Copyright (C) 2000 Ian Gulliver 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of version 2 of the GNU General Public License as 7 published by the Free Software Foundation. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software 16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18 #ifndef _FIRETALK_H 19 #define _FIRETALK_H 20 21 #include <sys/types.h> 22 #include <sys/time.h> 23 #include <unistd.h> 24 #include <netinet/in.h> 25 26 #define _FC_USE_IPV6 27 28 #ifndef _HAVE_FIRETALK_T 29 typedef void *firetalk_t; 30 #define _HAVE_FIRETALK_T 31 #endif 32 33 /* enums */ 34 enum firetalk_protocol { 35 FP_DUMMY 36 }; 37 38 enum firetalk_callback { 39 FC_CONNECTED, 40 /* void *connection, void *clientstruct */ 41 FC_CONNECTFAILED, 42 /* void *connection, void *clientstruct, int error, char *reason */ 43 FC_DOINIT, 44 /* void *connection, void *clientstruct, char *nickname */ 45 FC_ERROR, 46 /* void *connection, void *clientstruct, int error, char *roomoruser (room or user that error applies to, null if none) */ 47 FC_LOG, 48 /* void *connection, void *clientstruct, char *message */ 49 FC_DISCONNECT, 50 /* void *connection, void *clientstruct, int error */ 51 FC_SETIDLE, 52 /* void *connection, void *clientstruct, long *idle */ 53 FC_EVILED, 54 /* void *connection, void *clientstruct, int newevil, char *eviler */ 55 FC_NEWNICK, 56 /* void *connection, void *clientstruct, char *nickname */ 57 FC_PASSCHANGED, 58 /* void *connection, void *clientstruct */ 59 FC_NEEDPASS, 60 /* void *connection, void *clientstruct, char *pass, int size */ 61 FC_PRESELECT, 62 /* void *connection, void *clientstruct */ 63 FC_POSTSELECT, 64 /* void *connection, void *clientstruct */ 65 FC_IM_IDLEINFO, 66 /* void *connection, void *clientstruct, char *nickname, long idletime */ 67 FC_IM_STATUSINFO, 68 /* void *connection, void *clientstruct, char *nickname, char *message */ 69 FC_IM_EVILINFO, 70 /* void *connection, void *clientstruct, char *nickname, long warnval */ 71 FC_IM_BUDDYADDED, 72 /* void *connection, void *clientstruct, char *nickname, char *group, char *friendly */ 73 FC_IM_BUDDYREMOVED, 74 /* void *connection, void *clientstruct, char *nickname */ 75 FC_IM_TYPINGINFO, 76 /* void *connection, void *clientstruct, char *nickname, int typing */ 77 FC_IM_CAPABILITIES, 78 /* void *connection, void *clientstruct, char *nickname, char *caps */ 79 FC_IM_GOTINFO, 80 /* void *connection, void *clientstruct, char *nickname, char *info, int warning, int online, int idle, int flags */ 81 FC_IM_USER_NICKCHANGED, 82 /* void *connection, void *clientstruct, char *oldnick, char *newnick */ 83 FC_IM_GOTCHANNELS, 84 FC_IM_GETMESSAGE, 85 /* void *connection, void *clientstruct, char *sender, int automessage_flag, char *message */ 86 FC_IM_GETACTION, 87 /* void *connection, void *clientstruct, char *sender, int automessage_flag, char *message */ 88 FC_IM_BUDDYONLINE, 89 /* void *connection, void *clientstruct, char *nickname */ 90 FC_IM_BUDDYOFFLINE, 91 /* void *connection, void *clientstruct, char *nickname */ 92 FC_IM_BUDDYAWAY, 93 /* void *connection, void *clientstruct, char *nickname */ 94 FC_IM_BUDDYUNAWAY, 95 /* void *connection, void *clientstruct, char *nickname */ 96 FC_IM_LISTBUDDY, 97 /* void *connection, void *clientstruct, char *nickname, char *group, char online, char away, long idletime */ 98 FC_CHAT_JOINED, 99 /* void *connection, void *clientstruct, char *room */ 100 FC_CHAT_LEFT, 101 /* void *connection, void *clientstruct, char *room */ 102 FC_CHAT_KICKED, 103 /* void *connection, void *clientstruct, char *room, char *by, char *reason */ 104 FC_CHAT_GETMESSAGE, 105 /* void *connection, void *clientstruct, char *room, char *from, int automessage_flag, char *message */ 106 FC_CHAT_GETACTION, 107 /* void *connection, void *clientstruct, char *room, char *from, int automessage_flag, char *message */ 108 FC_CHAT_INVITED, 109 /* void *connection, void *clientstruct, char *room, char *from, char *message */ 110 //#ifdef RAWIRCMODES 111 FC_CHAT_MODECHANGED, 112 /* void *connection, void *clientstruct, char *room, char *mode, char *by */ 113 //#endif 114 FC_CHAT_OPPED, 115 /* void *connection, void *clientstruct, char *room, char *by */ 116 FC_CHAT_DEOPPED, 117 /* void *connection, void *clientstruct, char *room, char *by */ 118 FC_CHAT_USER_JOINED, 119 /* void *connection, void *clientstruct, char *room, char *who */ 120 FC_CHAT_USER_LEFT, 121 /* void *connection, void *clientstruct, char *room, char *who, char *reason */ 122 FC_CHAT_GOTTOPIC, 123 /* void *connection, void *clientstruct, char *room, char *topic, char *author */ 124 FC_CHAT_USER_OPPED, 125 /* void *connection, void *clientstruct, char *room, char *who, char *by */ 126 FC_CHAT_USER_DEOPPED, 127 /* void *connection, void *clientstruct, char *room, char *who, char *by */ 128 FC_CHAT_USER_KICKED, 129 /* void *connection, void *clientstruct, char *room, char *who, char *by, char *reason */ 130 FC_CHAT_USER_NICKCHANGED, 131 /* void *connection, void *clientstruct, char *room, char *oldnick, char *newnick */ 132 FC_CHAT_KEYCHANGED, 133 /* void *connection, void *clientstruct, char *room, char *what, char *by */ 134 FC_CHAT_LISTMEMBER, 135 /* void *connection, vodi *clientstruct, char *room, char *membername, int opped */ 136 FC_CHAT_LIST_EXTENDED, 137 FC_CHAT_END_EXTENDED, 138 FC_CHAT_NAMES, 139 FC_FILE_OFFER, 140 /* void *connection, void *clientstruct, void *filehandle, char *from, char *filename, long size */ 141 FC_FILE_START, 142 /* void *connection, void *clientstruct, void *filehandle, void *clientfilestruct */ 143 FC_FILE_PROGRESS, 144 /* void *connection, void *clientstruct, void *filehandle, void *clientfilestruct, long bytes, long size */ 145 FC_FILE_FINISH, 146 /* void *connection, void *clientstruct, void *filehandle, void *clientfilestruct, long size */ 147 FC_FILE_ERROR, 148 /* void *connection, void *clientstruct, void *filehandle, void *clientfilestruct, int error */ 149 FC_MAX 150 /* tracking enum, don't hook this */ 151 }; 152 153 typedef enum { 154 FE_SUCCESS, 155 FE_CONNECT, 156 FE_NOMATCH, 157 FE_PACKET, 158 FE_RECONNECTING, 159 FE_BADUSERPASS, 160 FE_SEQUENCE, 161 FE_FRAMETYPE, 162 FE_PACKETSIZE, 163 FE_SERVER, 164 FE_UNKNOWN, 165 FE_BLOCKED, 166 FE_WEIRDPACKET, 167 FE_CALLBACKNUM, 168 FE_BADUSER, 169 FE_NOTFOUND, 170 FE_DISCONNECT, 171 FE_SOCKET, 172 FE_RESOLV, 173 FE_VERSION, 174 FE_USERUNAVAILABLE, 175 FE_USERINFOUNAVAILABLE, 176 FE_TOOFAST, 177 FE_ROOMUNAVAILABLE, 178 FE_INCOMINGERROR, 179 FE_USERDISCONNECT, 180 FE_INVALIDFORMAT, 181 FE_IDLEFAST, 182 FE_BADROOM, 183 FE_BADMESSAGE, 184 FE_MESSAGETRUNCATED, 185 FE_BADPROTO, 186 FE_NOTCONNECTED, 187 FE_BADCONNECTION, 188 FE_NOPERMS, 189 FE_NOCHANGEPASS, 190 FE_DUPEROOM, 191 FE_IOERROR, 192 FE_BADHANDLE, 193 FE_TIMEOUT 194 } fte_t; 195 196 197 198 /* Firetalk functions */ 199 int firetalk_find_protocol(const char *strprotocol); 200 const char *firetalk_strprotocol(const enum firetalk_protocol p); 201 const char *firetalk_strerror(const fte_t e); 202 firetalk_t firetalk_create_handle(const int protocol, void *clientstruct); 203 void firetalk_destroy_handle(firetalk_t conn); 204 enum firetalk_protocol firetalk_get_protocol(firetalk_t conn); 205 206 fte_t firetalk_disconnect(firetalk_t conn); 207 fte_t firetalk_signon(firetalk_t conn, const char *const server, const short port, const char *const username); 208 fte_t firetalk_register_callback(firetalk_t conn, const int type, void (*function)(firetalk_t, void *, ...)); 209 firetalk_t firetalk_find_clientstruct(void *clientstruct); 210 211 fte_t firetalk_im_add_buddy(firetalk_t conn, const char *const name, const char *const group, const char *const friendly); 212 fte_t firetalk_im_remove_buddy(firetalk_t conn, const char *const name); 213 fte_t firetalk_im_add_deny(firetalk_t conn, const char *const name); 214 fte_t firetalk_im_remove_deny(firetalk_t conn, const char *const name); 215 fte_t firetalk_im_upload_buddies(firetalk_t conn); 216 fte_t firetalk_im_upload_denies(firetalk_t conn); 217 fte_t firetalk_im_send_message(firetalk_t conn, const char *const dest, const char *const message, const int auto_flag); 218 fte_t firetalk_im_send_action(firetalk_t conn, const char *const dest, const char *const message, const int auto_flag); 219 fte_t firetalk_im_list_buddies(firetalk_t conn); 220 fte_t firetalk_im_evil(firetalk_t c, const char *const who); 221 fte_t firetalk_im_get_info(firetalk_t conn, const char *const nickname); 222 223 fte_t firetalk_chat_join(firetalk_t conn, const char *const room); 224 fte_t firetalk_chat_part(firetalk_t conn, const char *const room); 225 fte_t firetalk_chat_send_message(firetalk_t conn, const char *const room, const char *const message, const int auto_flag); 226 fte_t firetalk_chat_send_action(firetalk_t conn, const char *const room, const char *const message, const int auto_flag); 227 fte_t firetalk_chat_invite(firetalk_t conn, const char *const room, const char *const who, const char *const message); 228 fte_t firetalk_chat_set_topic(firetalk_t conn, const char *const room, const char *const topic); 229 fte_t firetalk_chat_op(firetalk_t conn, const char *const room, const char *const who); 230 fte_t firetalk_chat_deop(firetalk_t conn, const char *const room, const char *const who); 231 fte_t firetalk_chat_kick(firetalk_t conn, const char *const room, const char *const who, const char *const reason); 232 fte_t firetalk_chat_listmembers(firetalk_t conn, const char *const room); 233 234 fte_t firetalk_chat_requestextended(firetalk_t conn, const char * const room); 235 236 fte_t firetalk_im_searchemail(firetalk_t conn, const char * const email); 237 238 fte_t firetalk_im_internal_add_deny(firetalk_t conn, const char *const nickname); 239 fte_t firetalk_im_internal_remove_buddy(firetalk_t conn, const char *const nickname); 240 fte_t firetalk_im_internal_remove_deny(firetalk_t conn, const char *const nickname); 241 fte_t firetalk_subcode_send_reply(firetalk_t conn, const char *const to, const char *const command, const char *const args); 242 fte_t firetalk_subcode_send_request(firetalk_t conn, const char *const to, const char *const command, const char *const args); 243 244 fte_t firetalk_subcode_register_request_callback(firetalk_t conn, const char *const command, void (*callback)(firetalk_t, void *, const char *const, const char *const, const char *const)); 245 fte_t firetalk_subcode_register_request_reply(firetalk_t conn, const char *const command, const char *const reply); 246 fte_t firetalk_subcode_register_reply_callback(firetalk_t conn, const char *const command, void (*callback)(firetalk_t, void *, const char *const, const char *const, const char *const)); 247 248 fte_t firetalk_file_offer(firetalk_t conn, const char *const nickname, const char *const filename, void *clientfilestruct); 249 fte_t firetalk_file_accept(firetalk_t conn, void *filehandle, void *clientfilestruct, const char *const localfile); 250 fte_t firetalk_file_refuse(firetalk_t conn, void *filehandle); 251 fte_t firetalk_file_cancel(firetalk_t conn, void *filehandle); 252 253 fte_t firetalk_compare_nicks(firetalk_t conn, const char *const nick1, const char *const nick2); 254 fte_t firetalk_isprint(firetalk_t conn, const int c); 255 fte_t firetalk_set_info(firetalk_t conn, const char *const info); 256 fte_t firetalk_set_away(firetalk_t c, const char *const message, const int auto_flag); 257 const char *firetalk_chat_normalize(firetalk_t conn, const char *const room); 258 fte_t firetalk_set_nickname(firetalk_t conn, const char *const nickname); 259 fte_t firetalk_set_password(firetalk_t conn, const char *const oldpass, const char *const newpass); 260 fte_t firetalk_set_privacy(firetalk_t conn, const char *const mode); 261 fte_t firetalk_select(); 262 fte_t firetalk_select_custom(int n, fd_set *fd_read, fd_set *fd_write, fd_set *fd_except, struct timeval *timeout); 263 fte_t firetalk_getsockets(const int prot, int **r, int **w, int **e); 264 #ifndef FIRETALK 265 extern fte_t firetalkerror; 266 /* internal function, exported because dan reed is lazy */ 267 int firetalk_internal_connect_host(const char *const host, const int port); 268 #endif 269 270 #define FF_SUBSTANDARD 0x0001 271 #define FF_NORMAL 0x0002 272 #define FF_ADMIN 0x0004 273 274 #ifndef MSG_DONTWAIT 275 # define MSG_DONTWAIT 0 276 #endif 277 278 #ifndef MSG_NOSIGNAL 279 # define MSG_NOSIGNAL 0 280 #endif 281 282 #endif 283