bitchx/include/irc.h

344 lines
7.5 KiB
C

/*
* irc.h: header file for all of ircII!
*
* Written By Michael Sandrof
* Copyright(c) 1990
*
* See the COPYRIGHT file, or do a HELP IRCII COPYRIGHT
*
* @(#)$Id$
*/
#ifndef __irc_h
#define __irc_h
#define IRCII_COMMENT "\002 Keep it to yourself!\002"
#define FSET 1
#ifndef __irc_c
extern const char irc_version[];
extern const char internal_version[];
#endif
extern char *thing_ansi;
extern char thing_star[4];
/*
* Here you can set the in-line quote character, normally backslash, to
* whatever you want. Note that we use two backslashes since a backslash is
* also C's quote character. You do not need two of any other character.
*/
#define QUOTE_CHAR '\\'
#include "defs.h"
#include "config.h"
#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/param.h>
#ifdef __EMX__
# ifdef __EMXPM__
# define AVIO_BUFFER 2048
# define INCL_GPI
# define INCL_AVIO
# define INCL_DOS
# endif
#define INCL_WIN /* Window Manager Functions */
#define INCL_BASE
#define INCL_VIO
#include <os2.h>
#elif defined(WINNT)
# include <windows.h>
# ifdef SOUND
# include <mmsystem.h>
# endif
#elif defined(GTK)
# include <gtk/gtk.h>
# include <gtk/gtkmenu.h>
#endif
#include <sys/socket.h>
#include <netinet/in.h>
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#ifdef TIME_WITH_SYS_TIME
#include <sys/time.h>
#include <time.h>
#else
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif /* HAVE_SYS_TIME_H */
#endif /* TIME_WITH_SYS_TIME */
#ifdef HAVE_SYS_FCNTL_H
# include <sys/fcntl.h>
#else
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif /* HAVE_FCNTL_H */
#endif
#include <stdarg.h>
#include <unistd.h>
#ifdef __EMX__
#include <sys/select.h>
#endif
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#include "bsdglob.h"
#include "irc_std.h"
#include "debug.h"
#include "newio.h"
/* these define what characters do, inverse, underline, bold and all off */
#define REV_TOG '\026' /* ^V */
#define REV_TOG_STR "\026"
#define UND_TOG '\037' /* ^_ */
#define UND_TOG_STR "\037"
#define BOLD_TOG '\002' /* ^B */
#define BOLD_TOG_STR "\002"
#define ALL_OFF '\017' /* ^O */
#define ALL_OFF_STR "\017"
#define BLINK_TOG '\006' /* ^F (think flash) */
#define BLINK_TOG_STR "\006"
#define ROM_CHAR '\022' /* ^R */
#define ROM_CHAR_STR "\022"
#define ALT_TOG '\005' /* ^E (think Extended) */
#define ALT_TOG_STR "\005"
#define ND_SPACE '\023' /* ^S */
#define ND_SPACE_STR "\023"
#define IRCD_BUFFER_SIZE 512
#define BIG_BUFFER_SIZE (4 * IRCD_BUFFER_SIZE)
#define MAX_PROTOCOL_SIZE (IRCD_BUFFER_SIZE - 2)
#ifndef INPUT_BUFFER_SIZE
#define INPUT_BUFFER_SIZE (IRCD_BUFFER_SIZE - 20)
#endif
#define REFNUM_MAX 10
#ifndef RAND_MAX
#define RAND_MAX 2147483647
#endif
#define NICKNAME_LEN 30
#define NAME_LEN 80
#define REALNAME_LEN 50
#define PATH_LEN 1024
#ifndef MIN
#define MIN(a,b) ((a < b) ? (a) : (b))
#endif
#ifndef MAX
#define MAX(a,b) ((a > b) ? (a) : (b))
#endif
/* This section is for keeping track internally
* the CVS revision info of the running client.
* Since so many people are using CVS versions
* for debugging purposes it's good to know what
* file revisions they are running.
*/
#define CVS_REVISION(id) \
void id (char *buf) \
{ \
strcpy(buf, cvsrevision); \
}
void alias_c(char *);
void alist_c(char *);
void array_c(char *);
void banlist_c(char *);
void botlink_c(char *);
void cdcc_c(char *);
void chelp_c(char *);
void commands_c(char *);
void commands2_c(char *);
void cset_c(char *);
void ctcp_c(char *);
void dcc_c(char *);
void debug_c(char *);
void encrypt_c(char *);
void exec_c(char *);
void files_c(char *);
void flood_c(char *);
void fset_c(char *);
void functions_c(char *);
void funny_c(char *);
void hash_c(char *);
void help_c(char *);
void history_c(char *);
void hook_c(char *);
void if_c(char *);
void ignore_c(char *);
void input_c(char *);
void irc_c(char *);
void ircaux_c(char *);
void keys_c(char *);
void lastlog_c(char *);
void list_c(char *);
void log_c(char *);
void mail_c(char *);
void misc_c(char *);
void modules_c(char *);
void names_c(char *);
void network_c(char *);
void newio_c(char *);
void notice_c(char *);
void notify_c(char *);
void numbers_c(char *);
void output_c(char *);
void parse_c(char *);
void queue_c(char *);
void readlog_c(char *);
void reg_c(char *);
void screen_c(char *);
void server_c(char *);
void stack_c(char *);
void status_c(char *);
void struct_c(char *);
void tcl_public_c(char *);
void term_c(char *);
void timer_c(char *);
void translat_c(char *);
void user_c(char *);
void userlist_c(char *);
void vars_c(char *);
void who_c(char *);
void whowas_c(char *);
void window_c(char *);
void words_c(char *);
/*
* declared in irc.c
*/
extern int current_numeric;
extern char *cut_buffer;
extern char oper_command;
extern int irc_port;
extern int current_on_hook;
extern int use_flow_control;
extern char *joined_nick;
extern char *public_nick;
extern char empty_string[];
extern char zero[];
extern char one[];
extern char on[];
extern char off[];
extern char space[];
extern char space_plus[];
extern char space_minus[];
extern char dot[];
extern char star[];
extern char comma[];
extern char nickname[];
extern char *ircrc_file;
extern char *bircrc_file;
extern char *LocalHostName;
extern char hostname[];
extern char userhost[];
extern char realname[];
extern char username[];
extern char *send_umode;
extern char *last_notify_nick;
extern int away_set;
extern int background;
extern char *my_path;
extern char *irc_path;
extern char *irc_lib;
extern char *args_str;
extern char *invite_channel;
extern int who_mask;
extern char *who_name;
extern char *who_host;
extern char *who_server;
extern char *who_file;
extern char *who_nick;
extern char *who_real;
extern int dumb_mode;
extern int use_input;
extern time_t idle_time;
extern time_t now;
extern time_t start_time;
extern int waiting_out;
extern int waiting_in;
extern char wait_nick[];
extern char whois_nick[];
extern char lame_wait_nick[];
extern char **environ;
extern int cuprent_numeric;
extern int quick_startup;
extern char version[];
extern fd_set readables, writables;
extern int strip_ansi_in_echo;
extern int loading_global;
extern const unsigned long bitchx_numver;
extern const char *unknown_userhost;
extern char *forwardnick;
extern int inhibit_logging;
extern char MyHostName[];
extern struct sockaddr_foobar MyHostAddr;
extern struct sockaddr_foobar LocalHostAddr;
extern int cpu_saver;
extern struct sockaddr_foobar local_ip_address;
int BX_is_channel (char *);
void BX_irc_exit (int, char *, char *, ...);
void BX_beep_em (int);
void got_initial_version (char *);
void parse_notice (char *, char **);
void irc_quit (char, char *);
char get_a_char (void);
void load_scripts (void);
void clear_whowas (void);
void clear_variables (void);
void clear_fset (void);
void start_memdebug (void);
void dump_load_stack (int); /* XXX command.c */
const char * current_filename (void); /* XXX command.c */
int current_line (void); /* XXX command.c */
char *getenv (const char *);
void get_line_return (char, char *);
void get_line (char *, int, void (*)(char, char *));
void BX_io (const char *);
#ifdef NEED_OSPEED
/* We need this for broken linux systems. */
extern short ospeed;
#endif
void reattach_tty(char *, char *);
int create_ipc_socket(void);
void init_socketpath(void);
void kill_attached_if_needed(int);
void setup_pid();
#ifdef CLOAKED
void initsetproctitle(int, char **, char **);
void setproctitle(const char *, ...);
#endif
#endif /* __irc_h */