Frameworks/libpurple.framework/Versions/0.6.2/Headers/irc.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 1739 Frameworks/libpurple.framework/Versions/0.6.0/Headers/irc.h@8b0daad9656c
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
zacw@1300
     1
/**
zacw@1300
     2
 * @file irc.h
zacw@1300
     3
 *
zacw@1300
     4
 * purple
zacw@1300
     5
 *
zacw@1300
     6
 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu>
zacw@1300
     7
 *
zacw@1300
     8
 * This program is free software; you can redistribute it and/or modify
zacw@1300
     9
 * it under the terms of the GNU General Public License as published by
zacw@1300
    10
 * the Free Software Foundation; either version 2 of the License, or
zacw@1300
    11
 * (at your option) any later version.
zacw@1300
    12
 *
zacw@1300
    13
 * This program is distributed in the hope that it will be useful,
zacw@1300
    14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
zacw@1300
    15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
zacw@1300
    16
 * GNU General Public License for more details.
zacw@1300
    17
 *
zacw@1300
    18
 * You should have received a copy of the GNU General Public License
zacw@1300
    19
 * along with this program; if not, write to the Free Software
zacw@1300
    20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
zacw@1300
    21
 */
zacw@1300
    22
zacw@1300
    23
#ifndef _PURPLE_IRC_H
zacw@1300
    24
#define _PURPLE_IRC_H
zacw@1300
    25
zacw@1300
    26
#include <glib.h>
zacw@1300
    27
zacw@1300
    28
#include "circbuffer.h"
zacw@1300
    29
#include "ft.h"
zacw@1300
    30
#include "roomlist.h"
zacw@1300
    31
#include "sslconn.h"
zacw@1300
    32
zacw@1300
    33
#define IRC_DEFAULT_SERVER "irc.freenode.net"
zacw@1300
    34
#define IRC_DEFAULT_PORT 6667
zacw@1300
    35
#define IRC_DEFAULT_SSL_PORT 994
zacw@1300
    36
zacw@1300
    37
#define IRC_DEFAULT_CHARSET "UTF-8"
zacw@1300
    38
#define IRC_DEFAULT_AUTODETECT FALSE
zacw@1300
    39
#define IRC_DEFAULT_ALIAS "purple"
zacw@1300
    40
zacw@1300
    41
#define IRC_DEFAULT_QUIT "Leaving."
zacw@1300
    42
zacw@1300
    43
#define IRC_INITIAL_BUFSIZE 1024
zacw@1300
    44
zacw@1300
    45
#define IRC_NAMES_FLAG "irc-namelist"
zacw@1300
    46
zacw@1300
    47
zacw@1300
    48
enum { IRC_USEROPT_SERVER, IRC_USEROPT_PORT, IRC_USEROPT_CHARSET };
zacw@1300
    49
enum irc_state { IRC_STATE_NEW, IRC_STATE_ESTABLISHED };
zacw@1300
    50
zacw@1300
    51
struct irc_conn {
zacw@1300
    52
	PurpleAccount *account;
zacw@1300
    53
	GHashTable *msgs;
zacw@1300
    54
	GHashTable *cmds;
zacw@1300
    55
	char *server;
zacw@1300
    56
	int fd;
zacw@1300
    57
	guint timer;
zacw@1300
    58
	GHashTable *buddies;
zacw@1300
    59
zacw@1300
    60
	gboolean ison_outstanding;
zacw@1300
    61
zacw@1300
    62
	char *inbuf;
zacw@1300
    63
	int inbuflen;
zacw@1300
    64
	int inbufused;
zacw@1300
    65
zacw@1300
    66
	GString *motd;
zacw@1300
    67
	GString *names;
zacw@1300
    68
	struct _whois {
zacw@1300
    69
		char *nick;
zacw@1300
    70
		char *away;
zacw@1300
    71
		char *userhost;
zacw@1300
    72
		char *name;
zacw@1300
    73
		char *server;
zacw@1300
    74
		char *serverinfo;
zacw@1300
    75
		char *channels;
zacw@1300
    76
		int ircop;
zacw@1300
    77
		int identified;
zacw@1300
    78
		int idle;
zacw@1300
    79
		time_t signon;
zacw@1300
    80
	} whois;
zacw@1300
    81
	PurpleRoomlist *roomlist;
zacw@1300
    82
	PurpleSslConnection *gsc;
zacw@1300
    83
zacw@1300
    84
	gboolean quitting;
zacw@1300
    85
zacw@1300
    86
	PurpleCircBuffer *outbuf;
zacw@1300
    87
	guint writeh;
zacw@1300
    88
zacw@1300
    89
	time_t recv_time;
zacw@1300
    90
zacw@1300
    91
	char *mode_chars;
zacw@1300
    92
	char *reqnick;
zacw@1300
    93
	gboolean nickused;
zacw@1300
    94
};
zacw@1300
    95
zacw@1300
    96
struct irc_buddy {
zacw@1300
    97
	char *name;
zacw@1300
    98
	gboolean online;
zacw@1300
    99
	gboolean flag;
zacw@1300
   100
};
zacw@1300
   101
zacw@1300
   102
typedef int (*IRCCmdCallback) (struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   103
zacw@1300
   104
int irc_send(struct irc_conn *irc, const char *buf);
zacw@1300
   105
gboolean irc_blist_timeout(struct irc_conn *irc);
zacw@1300
   106
zacw@1300
   107
char *irc_escape_privmsg(const char *text, gssize length);
zacw@1300
   108
zacw@1300
   109
char *irc_mirc2html(const char *string);
zacw@1300
   110
char *irc_mirc2txt(const char *string);
zacw@1300
   111
zacw@1300
   112
const char *irc_nick_skip_mode(struct irc_conn *irc, const char *string);
zacw@1300
   113
zacw@1300
   114
gboolean irc_ischannel(const char *string);
zacw@1300
   115
zacw@1300
   116
void irc_register_commands(void);
zacw@1300
   117
void irc_msg_table_build(struct irc_conn *irc);
zacw@1300
   118
void irc_parse_msg(struct irc_conn *irc, char *input);
zacw@1300
   119
char *irc_parse_ctcp(struct irc_conn *irc, const char *from, const char *to, const char *msg, int notice);
zacw@1300
   120
char *irc_format(struct irc_conn *irc, const char *format, ...);
zacw@1300
   121
zacw@1300
   122
void irc_msg_default(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   123
void irc_msg_away(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   124
void irc_msg_badmode(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   125
void irc_msg_badnick(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   126
void irc_msg_ban(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   127
void irc_msg_banfull(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   128
void irc_msg_banned(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   129
void irc_msg_chanmode(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   130
void irc_msg_endwhois(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   131
void irc_msg_features(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   132
void irc_msg_invite(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   133
void irc_msg_inviteonly(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   134
void irc_msg_ison(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   135
void irc_msg_join(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   136
void irc_msg_kick(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   137
void irc_msg_list(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   138
void irc_msg_luser(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   139
void irc_msg_mode(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   140
void irc_msg_motd(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   141
void irc_msg_names(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   142
void irc_msg_nick(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   143
void irc_msg_nickused(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   144
void irc_msg_nochan(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   145
void irc_msg_nonick(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   146
void irc_msg_nochangenick(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   147
void irc_msg_nosend(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   148
void irc_msg_notice(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   149
void irc_msg_notinchan(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   150
void irc_msg_notop(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   151
void irc_msg_part(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   152
void irc_msg_ping(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   153
void irc_msg_pong(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   154
void irc_msg_privmsg(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   155
void irc_msg_quit(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   156
void irc_msg_regonly(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   157
void irc_msg_time(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   158
void irc_msg_topic(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   159
void irc_msg_unavailable(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   160
void irc_msg_unknown(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   161
void irc_msg_wallops(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   162
void irc_msg_whois(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   163
zacw@1300
   164
void irc_msg_ignore(struct irc_conn *irc, const char *name, const char *from, char **args);
zacw@1300
   165
zacw@1300
   166
void irc_cmd_table_build(struct irc_conn *irc);
zacw@1300
   167
zacw@1300
   168
int irc_cmd_default(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   169
int irc_cmd_away(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   170
int irc_cmd_ctcp(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   171
int irc_cmd_ctcp_action(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   172
int irc_cmd_ctcp_version(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   173
int irc_cmd_invite(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   174
int irc_cmd_join(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   175
int irc_cmd_kick(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   176
int irc_cmd_list(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   177
int irc_cmd_mode(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   178
int irc_cmd_names(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   179
int irc_cmd_nick(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   180
int irc_cmd_op(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   181
int irc_cmd_privmsg(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   182
int irc_cmd_part(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   183
int irc_cmd_ping(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   184
int irc_cmd_quit(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   185
int irc_cmd_quote(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   186
int irc_cmd_query(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   187
int irc_cmd_remove(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   188
int irc_cmd_service(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   189
int irc_cmd_time(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   190
int irc_cmd_topic(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   191
int irc_cmd_wallops(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   192
int irc_cmd_whois(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   193
int irc_cmd_whowas(struct irc_conn *irc, const char *cmd, const char *target, const char **args);
zacw@1300
   194
zacw@1300
   195
PurpleXfer *irc_dccsend_new_xfer(PurpleConnection *gc, const char *who);
zacw@1300
   196
void irc_dccsend_send_file(PurpleConnection *gc, const char *who, const char *file);
zacw@1300
   197
void irc_dccsend_recv(struct irc_conn *irc, const char *from, const char *msg);
zacw@1300
   198
#endif /* _PURPLE_IRC_H */