/********************************************************************\
* BitlBee -- An IRC to other IM-networks gateway *
* *
* Copyright 2002-2004 Wilmer van der Gaast and others *
\********************************************************************/
/* The big hairy IRCd part of the project */
/*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License with
the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL;
if not, write to the Free Software Foundation, Inc., 59 Temple Place,
Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _IRC_H
#define _IRC_H
#define IRC_MAX_LINE 512
#define IRC_MAX_ARGS 8
#define IRC_LOGIN_TIMEOUT 60
#define IRC_PING_STRING "PinglBee"
#define UMODES "ais"
#define CMODES "nt"
#define CMODE "t"
#define UMODE "s"
typedef enum
{
USTATUS_OFFLINE,
USTATUS_AUTHORIZED,
USTATUS_LOGGED_IN,
USTATUS_IDENTIFIED
} irc_status_t;
typedef struct channel
{
char *name;
} channel_t;
typedef struct irc
{
int fd;
irc_status_t status;
double last_pong;
int pinging;
char *sendbuffer;
char *readbuffer;
int quit;
int sentbytes;
time_t oldtime;
char *nick;
char *user;
char *host;
char *realname;
char *password;
char umode[8];
char *myhost;
char *mynick;
char *channel;
int c_id;
char is_private; /* Not too nice... */
char *last_target;
struct query *queries;
struct account *accounts;
struct __USER *users;
GHashTable *userhash;
GHashTable *watches;
struct __NICK *nicks;
struct help *help;
struct set *set;
GIOChannel *io_channel;
gint r_watch_source_id;
gint w_watch_source_id;
gint ping_source_id;
} irc_t;
#include "user.h"
#include "nick.h"
extern GSList *irc_connection_list;
irc_t *irc_new( int fd );
void irc_free( irc_t *irc );
int irc_exec( irc_t *irc, char **cmd );
int irc_process( irc_t *irc );
int irc_process_line( irc_t *irc, char *line );
void irc_vawrite( irc_t *irc, char *format, va_list params );
void irc_write( irc_t *irc, char *format, ... );
void irc_write_all( int now, char *format, ... );
void irc_reply( irc_t *irc, int code, char *format, ... );
G_MODULE_EXPORT int irc_usermsg( irc_t *irc, char *format, ... );
char **irc_tokenize( char *buffer );
void irc_login( irc_t *irc );
void irc_motd( irc_t *irc );
void irc_names( irc_t *irc, char *channel );
void irc_topic( irc_t *irc, char *channel );
void irc_umode_set( irc_t *irc, char *who, char *s );
void irc_who( irc_t *irc, char *channel );
void irc_spawn( irc_t *irc, user_t *u );
void irc_join( irc_t *irc, user_t *u, char *channel );
void irc_part( irc_t *irc, user_t *u, char *channel );
void irc_kick( irc_t *irc, user_t *u, char *channel, user_t *kicker );
void irc_kill( irc_t *irc, user_t *u );
void irc_invite( irc_t *irc, char *nick, char *channel );
void irc_whois( irc_t *irc, char *nick );
int irc_away( irc_t *irc, char *away );
int irc_send( irc_t *irc, char *nick, char *s, int flags );
int irc_privmsg( irc_t *irc, user_t *u, char *type, char *to, char *prefix, char *msg );
int irc_msgfrom( irc_t *irc, char *nick, char *msg );
int irc_noticefrom( irc_t *irc, char *nick, char *msg );
int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags );
#endif
syntax highlighted by Code2HTML, v. 0.9.1