Far-reaching changes to make BitchX compatible with 64 bit architectures

like x86-64, where sizeof(int) != sizeof (void *).  This involves correctly
casting every function pointer from the global table to the correct
function type, which has the added benefit of allowing type-checking of
function arguments and return values.


git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@26 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
Kevin Easton
2008-04-30 13:57:56 +00:00
parent 7eac4a00ce
commit 3de93b1dbc
34 changed files with 660 additions and 710 deletions

View File

@@ -304,7 +304,7 @@ void toggle_aimwin (Window *win, char *unused, int onoff){
tmp->query_cmd = m_strdup("asay"); tmp->query_cmd = m_strdup("asay");
tmp->double_status = 0; tmp->double_status = 0;
tmp->absolute_size = 1; tmp->absolute_size = 1;
tmp->update_window_status = update_aim_window; tmp->update_status = update_aim_window;
tmp->server = -2; tmp->server = -2;
set_wset_string_var(tmp->wset, STATUS_FORMAT1_WSET, NULL); set_wset_string_var(tmp->wset, STATUS_FORMAT1_WSET, NULL);
set_wset_string_var(tmp->wset, STATUS_FORMAT2_WSET, NULL); set_wset_string_var(tmp->wset, STATUS_FORMAT2_WSET, NULL);

View File

@@ -1286,7 +1286,7 @@ Window *tmp;
tmp->query_cmd = m_strdup("nsay"); tmp->query_cmd = m_strdup("nsay");
tmp->double_status = 0; tmp->double_status = 0;
tmp->absolute_size = 1; tmp->absolute_size = 1;
tmp->update_window_status = update_napster_window; tmp->update_status = update_napster_window;
tmp->server = -2; tmp->server = -2;
set_wset_string_var(tmp->wset, STATUS_FORMAT1_WSET, NULL); set_wset_string_var(tmp->wset, STATUS_FORMAT1_WSET, NULL);
set_wset_string_var(tmp->wset, STATUS_FORMAT2_WSET, NULL); set_wset_string_var(tmp->wset, STATUS_FORMAT2_WSET, NULL);

View File

@@ -113,22 +113,20 @@
#define DCC_STATES 0xffffff00 #define DCC_STATES 0xffffff00
#define DCC_COMMAND(x) void x (char *command, char *args)
int check_dcc_list (char *); int check_dcc_list (char *);
int dcc_exempt_save (FILE *); int dcc_exempt_save (FILE *);
DCC_COMMAND(BX_dcc_filesend); void BX_dcc_filesend(char *, char *);
DCC_COMMAND(BX_dcc_resend); void BX_dcc_resend(char *, char *);
DCC_COMMAND(dcc_stats); void dcc_stats(char *, char *);
DCC_COMMAND(dcc_chat); void dcc_chat(char *, char *);
DCC_COMMAND(dcc_ftpopen); void dcc_ftpopen(char *, char *);
DCC_COMMAND(dcc_glist); void dcc_glist(char *, char *);
DCC_COMMAND(dcc_chatbot); void dcc_chatbot(char *, char *);
DCC_COMMAND(dcc_resume); void dcc_resume(char *, char *);
DCC_COMMAND(dcc_rename); void dcc_rename(char *, char *);
int BX_get_active_count(); int BX_get_active_count(void);
int dcc_ftpcommand(char *, char *); int dcc_ftpcommand(char *, char *);
void process_dcc(char *); void process_dcc(char *);
int dcc_activechat(char *); /* identify all active chat dcc's */ int dcc_activechat(char *); /* identify all active chat dcc's */

View File

@@ -138,7 +138,7 @@ char * urldecode (char *);
/* From words.c */ /* From words.c */
#define SOS -32767 #define SOS -32767
#define EOS 32767 #define EOS 32767
char *BX_search (register char *, char **, char *, int); char *BX_strsearch (register char *, char *, char *, int);
char *BX_move_to_abs_word (const register char *, char **, int); char *BX_move_to_abs_word (const register char *, char **, int);
char *BX_move_word_rel (const register char *, char **, int); char *BX_move_word_rel (const register char *, char **, int);
char *BX_extract (char *, int, int); char *BX_extract (char *, int, int);
@@ -197,16 +197,16 @@ int lame_resolv (const char *, struct sockaddr_foobar *);
((double)x/_1KB): (double)x)))) ) ((double)x/_1KB): (double)x)))) )
void *n_malloc (size_t, const char *, const char *, const int); void *n_malloc (size_t, const char *, const char *, const int);
void *n_realloc (void **, size_t, const char *, const char *, const int); void *n_realloc (void *, size_t, const char *, const char *, const int);
void *n_free (void **, const char *, const char *, const int); void *n_free (void *, const char *, const char *, const int);
#define MODULENAME NULL #define MODULENAME NULL
#define new_malloc(x) n_malloc(x, MODULENAME, __FILE__, __LINE__) #define new_malloc(x) n_malloc(x, MODULENAME, __FILE__, __LINE__)
#define new_free(x) n_free((void **)(x), MODULENAME, __FILE__, __LINE__) #define new_free(x) (*(x) = n_free(*(x), MODULENAME, __FILE__, __LINE__))
#define RESIZE(x, y, z) n_realloc ((void **)& (x), sizeof(y) * (z), MODULENAME, __FILE__, __LINE__) #define RESIZE(x, y, z) ((x) = n_realloc((x), sizeof(y) * (z), MODULENAME, __FILE__, __LINE__))
#define malloc_strcpy(x, y) n_malloc_strcpy((char **)x, (char *)y, MODULENAME, __FILE__, __LINE__) #define malloc_strcpy(x, y) n_malloc_strcpy((char **)x, (char *)y, MODULENAME, __FILE__, __LINE__)
#define malloc_strcat(x, y) n_malloc_strcat((char **)x, (char *)y, MODULENAME, __FILE__, __LINE__) #define malloc_strcat(x, y) n_malloc_strcat((char **)x, (char *)y, MODULENAME, __FILE__, __LINE__)
#define m_strdup(x) n_m_strdup(x, MODULENAME, __FILE__, __LINE__) #define m_strdup(x) n_m_strdup(x, MODULENAME, __FILE__, __LINE__)

View File

@@ -200,7 +200,7 @@ enum FUNCTION_VALUE
RANDOM_NUMBER, RANDOM_NUMBER,
/* words.c */ /* words.c */
SEARCH, STRSEARCH,
MOVE_TO_ABS_WORD, MOVE_TO_ABS_WORD,
MOVE_WORD_REL, MOVE_WORD_REL,
EXTRACT, EXTRACT,
@@ -504,9 +504,9 @@ enum FUNCTION_VALUE
STATUS_UPDATE, STATUS_UPDATE,
SET_PROMPT_BY_REFNUM, SET_PROMPT_BY_REFNUM,
GET_PROMPT_BY_REFNUM, GET_PROMPT_BY_REFNUM,
QUERY_NICK, QUERY_NICK, /* DEFUNCT */
QUERY_HOST, QUERY_HOST, /* DEFUNCT */
QUERY_CMD, QUERY_CMD, /* DEFUNCT */
GET_TARGET_BY_REFNUM, GET_TARGET_BY_REFNUM,
GET_TARGET_CMD_BY_REFNUM, GET_TARGET_CMD_BY_REFNUM,
GET_WINDOW_TARGET_BY_DESC, GET_WINDOW_TARGET_BY_DESC,
@@ -545,7 +545,7 @@ enum FUNCTION_VALUE
SCROLLBACK_BACKWARDS, SCROLLBACK_BACKWARDS,
SCROLLBACK_END, SCROLLBACK_END,
SCROLLBACK_START, SCROLLBACK_START,
HOLD_MODE, SET_HOLD_MODE,
UNHOLD_WINDOWS, UNHOLD_WINDOWS,
FUNC_UNSTOP_ALL_WINDOWS, FUNC_UNSTOP_ALL_WINDOWS,
RESET_LINE_CNT, RESET_LINE_CNT,

View File

@@ -84,7 +84,7 @@ extern Function_ptr *global;
#define MODULENAME _modname_ #define MODULENAME _modname_
#define check_module_version(x) ((int) (global[MODULE_VERSION_CHECK]((unsigned long)x))) #define check_module_version (*(int (*)(unsigned long))global[MODULE_VERSION_CHECK])
#define set_dll_name(x) malloc_strcpy(&_modname_, x) #define set_dll_name(x) malloc_strcpy(&_modname_, x)
#define set_global_func(x) global = x; #define set_global_func(x) global = x;
#define initialize_module(x) { \ #define initialize_module(x) { \
@@ -107,531 +107,537 @@ extern Function_ptr *global;
#define snprintf ((char * (*)())global[SNPRINTF]) #define snprintf ((char * (*)())global[SNPRINTF])
#endif #endif
/* Changed these to cast the function pointer rather than the arguments and result. The old method wasn't portable to
* some 64 bit platforms. Next step - change instances of global[XYZ] to &xyzfunc in the code.
*
* Should also think about standardising types (eg Screen instead of struct ScreenStru, get rid of u_char).
*/
/* ircaux.c */ /* ircaux.c */
#define new_malloc(x) ((void *)(global[NEW_MALLOC]((x),MODULENAME, __FILE__,__LINE__))) #define new_malloc(x) ((void * (*)(size_t, const char *, const char *, int))global[NEW_MALLOC])((x),MODULENAME, __FILE__,__LINE__)
#define new_free(x) ((void *)(global[NEW_FREE]((x),MODULENAME, __FILE__,__LINE__))) #define new_free(x) (*(x) = ((void * (*)(void *, const char *, const char *, int))global[NEW_FREE])(*(x),MODULENAME, __FILE__,__LINE__))
#define RESIZE(x, y, z) ((void *)(global[NEW_REALLOC]((void **)& (x), sizeof(y) * (z), MODULENAME, __FILE__, __LINE__))) #define RESIZE(x, y, z) ((x) = ((void * (*)(void *, size_t, const char *, const char *, int))global[NEW_REALLOC])((x), sizeof(y) * (z), MODULENAME, __FILE__, __LINE__))
#define malloc_strcpy(x, y) ((char *)(global[MALLOC_STRCPY]((char **)x, (char *)y, MODULENAME, __FILE__, __LINE__))) #define malloc_strcpy(x, y) ((char * (*)(char **, const char *, const char *, const char *, int))global[MALLOC_STRCPY])((x), (y), MODULENAME, __FILE__, __LINE__)
#define malloc_strcat(x, y) ((char *)(global[MALLOC_STRCAT]((char **)x, (char *)y, MODULENAME, __FILE__, __LINE__))) #define malloc_strcat(x, y) ((char * (*)(char **, const char *, const char *, const char *, int))global[MALLOC_STRCAT])((x), (y), MODULENAME, __FILE__, __LINE__)
#define malloc_str2cpy(x, y, z) ((char *)(global[MALLOC_STR2CPY]((char **)x, (char *)y, (char *)z))) #define malloc_str2cpy (*(char * (*)(char **, const char *, const char *))global[MALLOC_STR2CPY])
#define m_3dup(x, y, z) ((char *) (global[M_3DUP]((char *)x, (char *)y, (char *)z))) #define m_3dup (*(char * (*)(const char *, const char *, const char *))global[M_3DUP])
#define m_opendup ((char * (*)())global[M_OPENDUP]) #define m_opendup (*(char * (*)(const char *, ...))global[M_OPENDUP])
#define m_s3cat(x, y, z) ((char *)(global[M_S3CAT]((char **)x, (char *)y, (char *)z))) #define m_s3cat (*(char * (*)(char **, const char *, const char *))global[M_S3CAT])
#define m_s3cat_s(x, y, z) ((char *)(global[M_S3CAT_S]((char **)x, (char *)y, (char *)z))) #define m_s3cat_s (*(char * (*)(char **, const char *, const char *))global[M_S3CAT_S])
#define m_3cat(x, y, z) ((char *) (global[M_3CAT]((char **)x, (char *)y, (char *)z))) #define m_3cat (*(char * (*)(char **, const char *, const char *))global[M_3CAT])
#define m_2dup(x, y) ((char *)(global[M_2DUP]((char *)x, (char *)y))) #define m_2dup (*(char * (*)(const char *, const char *))global[M_2DUP])
#define m_e3cat(x, y, z) ((char *)(global[M_E3CAT]((char **)x, (char *)y, (char *)z))) #define m_e3cat (*(char * (*)(char **, const char *, const char *))global[M_E3CAT])
#define my_stricmp(x, y) ((int)(global[MY_STRICMP]((const unsigned char *)x, (const unsigned char *)y))) #define my_stricmp (*(int (*)(const unsigned char *, const unsigned char *))global[MY_STRICMP])
#define my_strnicmp(x, y, n) ((int)(global[MY_STRNICMP]((const unsigned char *)x, (const unsigned char *)y, (int)n))) #define my_strnicmp (*(int (*)(const unsigned char *, const unsigned char *, size_t))global[MY_STRNICMP])
#define my_strnstr(x, y, z) ((int) (global[MY_STRNSTR]((const unsigned char *)x, (const unsigned char *)y, (size_t)z))) #define my_strnstr (*(int (*)(const unsigned char *, const unsigned char *, size_t))global[MY_STRNSTR])
#define chop(x, n) ((char *) (global[CHOP]((char *)x, (int)n))) #define chop (*(char * (*)(char *, int))global[CHOP])
#define strmcpy(x, y, n) ((char *) (global[STRMCPY]((char *)x, (const char *)y, (int)n))) #define strmcpy (*(char * (*)(char *, const char *, int))global[STRMCPY])
#define strmcat(x, y, n) ((char *) (global[STRMCAT]((char *)x, (const char *)y, (int)n))) #define strmcat (*(char * (*)(char *, const char *, int))global[STRMCAT])
#define scanstr(x, y) ((int) (global[SCANSTR]((char *)x, (char *)y))) #define scanstr (*(int (*)(char *, char *))global[SCANSTR])
#define m_dupchar(c) ((char *) (global[M_DUPCHAR]((int)c))) #define m_dupchar (*(char * (*)(int))global[M_DUPCHAR])
#define streq(x, y) ((size_t) (global[STREQ]((const char *)x, (const char *)y))) #define streq (*(size_t (*)(const char *, const char *))global[STREQ])
#define strieq(x, y) ((size_t) (global[STRIEQ]((const char *)x, (const char *)y))) #define strieq (*(size_t (*)(const char *, const char *))global[STRIEQ])
#define strmopencat ((char * (*)())global[STRMOPENCAT]) #define strmopencat (*(char * (*)(char *, int , ...))global[STRMOPENCAT])
#define ov_strcpy(x, y) ((char *) (global[OV_STRCPY]((char *)x, (const char *)y))) #define ov_strcpy (*(char * (*)(char *, const char *))global[OV_STRCPY])
#define upper(x) ((char *) (global[UPPER]((char *)x))) #define upper (*(char * (*)(char *))global[UPPER])
#define lower(x) ((char *) (global[LOWER]((char *)x))) #define lower (*(char * (*)(char *))global[LOWER])
#define stristr(x, y) ((char *) (global[STRISTR]((const char *)x, (char *)y))) #define stristr (*(char * (*)(const char *, const char *))global[STRISTR])
#define rstristr(x, y) ((char *) (global[RSTRISTR]((char *)x, (char *)y))) #define rstristr (*(char * (*)(char *, char *))global[RSTRISTR])
#define word_count(x) ((int) (global[WORD_COUNT]((char *)x))) #define word_count (*(int (*)(char *))global[WORD_COUNT])
#define remove_trailing_spaces(x) ((char *) (global[REMOVE_TRAILING_SPACES]((char *)x))) #define remove_trailing_spaces (*(char * (*)(char *))global[REMOVE_TRAILING_SPACES])
#define expand_twiddle(x) ((char *) (global[EXPAND_TWIDDLE]((char *)x))) #define expand_twiddle (*(char * (*)(char *))global[EXPAND_TWIDDLE])
#define check_nickname(x) ((char *) (global[CHECK_NICKNAME]((char *)x))) #define check_nickname (*(char * (*)(char *))global[CHECK_NICKNAME])
#define sindex(x, y) ((char *) (global[SINDEX](( char *)x, (char *)y))) #define sindex (*(char * (*)(char *, char *))global[SINDEX])
#define rsindex(x, y, z, a) ((char *) (global[RSINDEX](( char *)x, (char *)y, (char *)z, (int)a))) #define rsindex (*(char * (*)(char *, char *, char *, int))global[RSINDEX])
#define is_number(x) ((int) (global[ISNUMBER]((char *)x))) #define is_number (*(int (*)(const char *))global[ISNUMBER])
#define rfgets(x, n, y) ((char *) (global[RFGETS]((char *)x, (int)n, (FILE *)y))) #define rfgets (*(char * (*)(char *, int , FILE *))global[RFGETS])
#define path_search(x, y) ((char *) (global[PATH_SEARCH]((char *)x, (char *)y))) #define path_search (*(char * (*)(char *, char *))global[PATH_SEARCH])
#define double_quote(x, y, z) ((char *) (global[DOUBLE_QUOTE]((const char *)x, (const char *)y, (char *)z))) #define double_quote (*(char * (*)(const char *, const char *, char *))global[DOUBLE_QUOTE])
#define ircpanic (global[IRCPANIC]) #define ircpanic (*(void (*)(char *, ...))global[IRCPANIC])
#define end_strcmp(x, y, n) ((int) (global[END_STRCMP]((const char *)x, (const char *)y, (int)n))) #define end_strcmp (*(int (*)(const char *, const char *, int))global[END_STRCMP])
#define beep_em(x) ((void) (global[BEEP_EM]((int)x))) #define beep_em (*(void (*)(int))global[BEEP_EM])
#define uzfopen(x, y, n) ((FILE *) (global[UZFOPEN]((char **)x, (char *)y, (int)n))) #define uzfopen (*(FILE * (*)(char **, char *, int))global[UZFOPEN])
#define get_time(x) ((global[FUNC_GET_TIME]((struct timeval *)x))) #define get_time (*(struct timeval (*)(struct timeval *))global[FUNC_GET_TIME])
#define time_diff(x, y) ((double) (global[TIME_DIFF]((struct timeval)x, (struct timeval)y))) #define time_diff (*(double (*)(struct timeval , struct timeval))global[TIME_DIFF])
#define time_to_next_minute (int (*)(void)global[TIME_TO_NEXT_MINUTE]) #define time_to_next_minute (*(int (*)(void))global[TIME_TO_NEXT_MINUTE])
#define plural(x) ((char *) (global[PLURAL]((int)x))) #define plural (*(char * (*)(int))global[PLURAL])
#define my_ctime(x) ((char *) (global[MY_CTIME]((time_t)x))) #define my_ctime (*(char * (*)(time_t))global[MY_CTIME])
#define ccspan(x, y) ((size_t) (global[CCSPAN]((char *)x, (int)y))) #define ccspan (*(size_t (*)(const char *, int))global[CCSPAN])
/* If we are in a module, undefine the previous define from ltoa to my_ltoa */ /* If we are in a module, undefine the previous define from ltoa to my_ltoa */
#ifdef ltoa #ifdef ltoa
#undef ltoa #undef ltoa
#endif #endif
#define ltoa(x) ((char *) (global[LTOA]((long)x))) #define ltoa (*(char *(*)(long ))global[LTOA])
#define strformat(x, y, n, z) ((char *) (global[STRFORMAT]((char *)x, (char *)y, (int)n, (char)z))) #define strformat (*(char *(*)(char *, const char *, int , char ))global[STRFORMAT])
#define MatchingBracket(x, y, z) ((char *) (global[MATCHINGBRACKET]((char *)x, ( char)y, (char)z))) #define MatchingBracket (*(char *(*)(char *, char , char ))global[MATCHINGBRACKET])
#define parse_number(x) ((int) (global[PARSE_NUMBER]((char **)x))) #define parse_number (*(int (*)(char **))global[PARSE_NUMBER])
#define splitw(x, y) ((int) (global[SPLITW]((char *)x, (char ***)y))) #define splitw (*(int (*)(char *, char ***))global[SPLITW])
#define unsplitw(x, y) ((char *) (global[UNSPLITW]((char ***)x, (char *)y))) #define unsplitw (*(char *(*)(char ***, int ))global[UNSPLITW])
#define check_val(x) ((int) (global[CHECK_VAL]((char *)x))) #define check_val (*(int (*)(char *))global[CHECK_VAL])
#define on_off(x) ((char *) (global[ON_OFF]((int)x))) #define on_off (*(char *(*)(int ))global[ON_OFF])
#define strextend(x, y, n) ((char *) (global[STREXTEND]((char *)x, (char)y, (int)n))) #define strextend (*(char *(*)(char *, char , int ))global[STREXTEND])
#define strfill(x, n) ((const char *) (global[STRFILL]((char)x, (int)n))) #define strfill (*(const char *(*)(char , int ))global[STRFILL])
#define empty(x) ((int) (global[EMPTY_FUNC]((const char *)x))) #define empty (*(int (*)(const char *))global[EMPTY_FUNC])
#define remove_brackets(x, y, n) ((char *) (global[REMOVE_BRACKETS]((char *)x, (char *)y, (int *)n))) #define remove_brackets (*(char *(*)(const char *, const char *, int *))global[REMOVE_BRACKETS])
#define my_atol(x) ((long) (global[MY_ATOL]((char *)x))) #define my_atol (*(long (*)(const char *))global[MY_ATOL])
#define strip_control(x, y) ((void) (global[STRIP_CONTROL]((const char *)x, (char *)y))) #define strip_control (*(void (*)(const char *, char *))global[STRIP_CONTROL])
#define figure_out_address(a, b, c, d, e, f) ((int) (global[FIGURE_OUT_ADDRESS]((char *)a, (char **)b, (char **)c, (char **)d, (char **)e, (int *)f))) #define figure_out_address (*(int (*)(char *, char **, char **, char **, char **, int *))global[FIGURE_OUT_ADDRESS])
#define strnrchr(x, y, n) ((char *) (global[STRNRCHR]((char *)x, (char)y, (int)n))) #define strnrchr (*(char *(*)(char *, char , int ))global[STRNRCHR])
#define mask_digits(x) ((void) (global[MASK_DIGITS]((char **)x))) #define mask_digits (*(void (*)(char **))global[MASK_DIGITS])
#define ccscpan(x, n) ((size_t) (global[CCSPAN]((const char *)x, (int)n))) #define ccscpan (*(size_t (*)(const char *, int))global[CCSPAN])
#define charcount(x, y) ((int) (global[CHARCOUNT]((const char *)x, (char)y))) #define charcount (*(int (*)(const char *, char ))global[CHARCOUNT])
#define strpcat ((char *) (global[STRPCAT])) #define strpcat (*(char *(*)(char *, const char *, ...))global[STRPCAT])
#define strcpy_nocolorcodes(x, y) ((u_char *) (global[STRCPY_NOCOLORCODES]((u_char *)x, (const u_char *)y))) #define strcpy_nocolorcodes (*(u_char *(*)(u_char *, const u_char *))global[STRCPY_NOCOLORCODES])
#define cryptit(x) ((char *) (global[CRYPTIT]((const char *)x))) #define cryptit (*(char *(*)(const char *))global[CRYPTIT])
#define stripdev(x) ((char *) (global[STRIPDEV]((char *)x))) #define stripdev (*(char *(*)(char *))global[STRIPDEV])
#define mangle_line(x, y, z) ((size_t) (global[MANGLE_LINE]((char *)x, (int)y, (size_t)z))) #define mangle_line (*(size_t (*)(char *, int, size_t))global[MANGLE_LINE])
#define m_strdup(x) ((char *)(global[M_STRDUP]((char *)x, MODULENAME, __FILE__, __LINE__))) #define m_strdup(x) (*(char *(*)(const char *, const char *, const char *, const int ))global[M_STRDUP])((x), MODULENAME, __FILE__, __LINE__)
#define m_strcat_ues(x, y, z) ((char *)(global[M_STRCAT_UES](x, y, z, MODULENAME, __FILE__, __LINE__))) #define m_strcat_ues(x, y, z) (*(char *(*)(char **, char *, int , const char *, const char *, const int ))global[M_STRCAT_UES])((x), (y), (z), MODULENAME, __FILE__, __LINE__)
#define m_strndup(x, y) ((char *)(global[M_STRNDUP](x, y, MODULENAME, __FILE__, __LINE__))) #define m_strndup(x, y) (*(char *(*)(const char *, size_t, const char *, const char *, const int ))global[M_STRNDUP])((x), (y), MODULENAME, __FILE__, __LINE__)
#define malloc_sprintf ((char * (*)())global[MALLOC_SPRINTF]) #define malloc_sprintf (*(char *(*)(char **, const char *, ...))global[MALLOC_SPRINTF])
#define m_sprintf ((char * (*)())global[M_SPRINTF]) #define m_sprintf (*(char *(*)(const char *, ...))global[M_SPRINTF])
#define next_arg(x, y) ((char *)(global[NEXT_ARG]((char *)x, (char **)y))) #define next_arg (*(char *(*)(char *, char **))global[NEXT_ARG])
#define new_next_arg(x, y) ((char *)(global[NEW_NEXT_ARG]((char *)x, (char **)y))) #define new_next_arg (*(char *(*)(char *, char **))global[NEW_NEXT_ARG])
#define new_new_next_arg(x, y, z) ((char *)(global[NEW_NEW_NEXT_ARG]((char *)x, (char **)y, (char *)z))) #define new_new_next_arg (*(char *(*)(char *, char **, char *))global[NEW_NEW_NEXT_ARG])
#define last_arg(x) ((char *)(global[LAST_ARG]((char **)x))) #define last_arg (*(char *(*)(char **))global[LAST_ARG])
#define next_in_comma_list(x, y) ((char *)(global[NEXT_IN_COMMA_LIST]((char *)x, (char **)y))) #define next_in_comma_list (*(char *(*)(char *, char **))global[NEXT_IN_COMMA_LIST])
#define random_number(x) ((unsigned long)(global[RANDOM_NUMBER]((unsigned long)x))) #define random_number (*(u_long (*)(u_long))global[RANDOM_NUMBER])
/* words.c reg.c */ /* words.c reg.c */
#define search(x, y, z, n) ((char *) (global[SEARCH]((char *)x, (char **)y, (char *)z, (int)n))) #define strsearch (*(char *(*)(char *, char *, char *, int ))global[STRSEARCH])
#define move_to_abs_word(x, y, n) ((char *) (global[MOVE_TO_ABS_WORD]((char *)x, (char **)y, (int)n))) #define move_to_abs_word (*(char *(*)(const char *, char **, int ))global[MOVE_TO_ABS_WORD])
#define move_word_rel(x, y, n) ((char *) (global[MOVE_WORD_REL]((char *)x, (char **)y, (int)n))) #define move_word_rel (*(char *(*)(const char *, char **, int ))global[MOVE_WORD_REL])
#define extract(x, y, n) ((char *) (global[EXTRACT]((char *)x, (int)y, (int)n))) #define extract (*(char *(*)(char *, int , int ))global[EXTRACT])
#define extract2(x, y, n) ((char *) (global[EXTRACT2]((char *)x, (int)y, (int)n))) #define extract2 (*(char *(*)(const char *, int , int ))global[EXTRACT2])
#define wild_match(x, y) ((int) (global[WILD_MATCH]((const unsigned char *)x, (const unsigned char *)y))) #define wild_match (*(int (*)(const unsigned char *, const unsigned char *))global[WILD_MATCH])
/* network.c */ /* network.c */
#define connect_by_number(a, b, c, d, e) ((int) (global[CONNECT_BY_NUMBER]((char *)a, (unsigned short *)b, (int)c, (int)d, (int)e))) #define connect_by_number (*(int (*)(char *, unsigned short *, int , int , int ))global[CONNECT_BY_NUMBER])
#define lookup_host(x) ((struct sockaddr_foobar *) (global[LOOKUP_HOST]((const char *)x))) #define lookup_host (*(struct sockaddr_foobar *(*)(const char *))global[LOOKUP_HOST])
#define resolv(x) ((struct sockaddr_foobar *) (global[LOOKUP_HOST]((const char *)x))) #define resolv (*(struct sockaddr_foobar *(*)(const char *))global[LOOKUP_HOST])
#define host_to_ip(x) ((char *) (global[HOST_TO_IP]((const char *)x))) #define host_to_ip (*(char *(*)(const char *))global[HOST_TO_IP])
#define ip_to_host(x) ((char *) (global[IP_TO_HOST]((const char *)x))) #define ip_to_host (*(char *(*)(const char *))global[IP_TO_HOST])
#define one_to_another(x) ((char *) (global[ONE_TO_ANOTHER]((const char *)x))) #define one_to_another (*(char *(*)(const char *))global[ONE_TO_ANOTHER])
#define set_blocking(x) ((int) (global[SET_BLOCKING]((int)x))) #define set_blocking (*(int (*)(int ))global[SET_BLOCKING])
#define set_non_blocking(x) ((int) (global[SET_NON_BLOCKING]((int)x))) #define set_non_blocking (*(int (*)(int ))global[SET_NON_BLOCKING])
/* list.c */ /* list.c */
#define add_to_list(x, y) ((void)(global[ADD_TO_LIST]((List **)x, (List *)y))) #define add_to_list (*(void (*)(List **, List *))global[ADD_TO_LIST])
#define add_to_list_ext(x, y, f) ((void) (global[ADD_TO_LIST_EXT]((List **)x, (List *)y, (int (*)(List *, List *))f ))) #define add_to_list_ext (*(void (*)(List **, List *, int (*)(List *, List *)))global[ADD_TO_LIST_EXT])
#define find_in_list(x, y, z) ((List *) (global[FIND_IN_LIST]((List **)x, (char *)y, (int)z))) #define find_in_list (*(List *(*)(List **, char *, int))global[FIND_IN_LIST])
#define find_in_list_ext(x, y, n, f) ((List *) (global[FIND_IN_LIST_EXT]((List **)x, (char *)y, (int)n, (int (*)(List *, char *))f ))) #define find_in_list_ext (*(List *(*)(List **, char *, int, int (*)(List *, char *)))global[FIND_IN_LIST_EXT])
#define remove_from_list(x, y) ((List *) (global[REMOVE_FROM_LIST_]((List **)x, (char *)y))) #define remove_from_list (*(List *(*)(List **, char *))global[REMOVE_FROM_LIST_])
#define remove_from_list_ext(x, y, f) ((List *) (global[REMOVE_FROM_LIST_EXT]((List **)x, (char *)y, (int (*)(List *, char *))f))) #define remove_from_list_ext (*(List *(*)(List **, char *, int (*)(List *, char *)))global[REMOVE_FROM_LIST_EXT])
#define removewild_from_list(x, y) ((List *) (global[REMOVEWILD_FROM_LIST]((List **)x, (char *)y))) #define removewild_from_list (*(List *(*)(List **, char *))global[REMOVEWILD_FROM_LIST])
#define list_lookup(x, y, z, n) ((List *) (global[LIST_LOOKUP]((List **)x, (char *)y, (int)z, (int)n))) #define list_lookup (*(List *(*)(List **, char *, int, int))global[LIST_LOOKUP])
#define list_lookup_ext(x, y, z, n, f) ((List *) (global[LIST_LOOKUP_EXT]((List **)x, (char *)y, (int)z, (int)n, (int (*)(List *, char *))f))) #define list_lookup_ext (*(List *(*)(List **, char *, int, int, int (*)(List *, char *)))global[LIST_LOOKUP_EXT])
/* alist.c */ /* alist.c */
#define add_to_array(x, y) ((Array_item *) (global[ADD_TO_ARRAY]((Array *)x, (Array_item *)y))) #define add_to_array (*(Array_item *(*)(Array *, Array_item *))global[ADD_TO_ARRAY])
#define remove_from_array(x, y) ((Array_item *) (global[REMOVE_FROM_ARRAY]((Array *)x, (char *)y))) #define remove_from_array (*(Array_item *(*)(Array *, char *))global[REMOVE_FROM_ARRAY])
#define array_pop(x, y) ((Array_item *) (global[ARRAY_POP]((Array *)x, (int)y))) #define array_pop (*(Array_item *(*)(Array *, int))global[ARRAY_POP])
#define remove_all_from_array(x, y) ((Array_item *) (global[REMOVE_ALL_FROM_ARRAY]((Array *)x, (char *)y))) #define remove_all_from_array (*(Array_item *(*)(Array *, char *))global[REMOVE_ALL_FROM_ARRAY])
#define array_lookup(x, y, z, a) ((Array_item *) (global[ARRAY_LOOKUP]((Array *)x, (char *)y, (int)z, (int)a))) #define array_lookup (*(Array_item *(*)(Array *, char *, int, int ))global[ARRAY_LOOKUP])
#define find_array_item(x, y, z, a) ((Array_item *) (global[FIND_ARRAY_ITEM]((Array *)x, (char *)y, (int *)z, (int *)a))) #define find_array_item (*(Array_item *(*)(Array *, char *, int *, int *))global[FIND_ARRAY_ITEM])
#define find_fixed_array_item(a, b, c, d, e, f) ((Array_item *) (global[FIND_FIXED_ARRAY_ITEM]((void *)a, (size_t)b, (int)c, (char *)d, (int *)e, (int *)f))) #define find_fixed_array_item (*(void *(*)(void *, size_t, int, char *, int *, int *))global[FIND_FIXED_ARRAY_ITEM])
/* output.c */ /* output.c */
#define put_it ((void (*)())global[PUT_IT]) #define put_it (*(void (*)(const char *, ...))global[PUT_IT])
#define bitchsay ((void (*)())global[BITCHSAY]) #define bitchsay (*(void (*)(const char *, ...))global[BITCHSAY])
#define yell ((void (*)())global[YELL]) #define yell (*(void (*)(const char *, ...))global[YELL])
#define add_to_screen(x) ((void) (global[ADD_TO_SCREEN]((unsigned char *)x))) #define add_to_screen (*(void (*)(unsigned char *))global[ADD_TO_SCREEN])
#define add_to_log(x, y, z, a) ((void) (global[ADD_TO_LOG]((FILE *)x, (time_t)y, (const char *)z, (int)a))) #define add_to_log (*(void (*)(FILE *, time_t, const char *, int ))global[ADD_TO_LOG])
#define bsd_glob(x, y, z, a) ((int) (global[BSD_GLOB]((char *)x, (int)y, (void *)z, (glob_t *)a))) #define bsd_glob (*(int (*)(const char *, int, int (*)(const char *, int), glob_t *))global[BSD_GLOB])
#define bsd_globfree(x) ((void) (global[BSD_GLOBFREE]((glob_t *)x))) #define bsd_globfree (*(void (*)(glob_t *))global[BSD_GLOBFREE])
/* misc commands */ /* misc commands */
#define my_encrypt(x, y, z) ((void) (global[MY_ENCRYPT]((char *)x, (int)y, (char *)z))) #define my_encrypt (*(void (*)(char *, int , char *))global[MY_ENCRYPT])
#define my_decrypt(x, y, z) ((void) (global[MY_DECRYPT]((char *)x, (int)y, (char *)z))) #define my_decrypt (*(void (*)(char *, int , char *))global[MY_DECRYPT])
#define prepare_command(x, y, z) ((ChannelList *)(global[PREPARE_COMMAND](x, y, z))) #define prepare_command (*(ChannelList *(*)(int *, char *, int))global[PREPARE_COMMAND])
#define convert_output_format ((char * (*)())global[CONVERT_OUTPUT_FORMAT]) #define convert_output_format (*(char *(*)(const char *, const char *, ...))global[CONVERT_OUTPUT_FORMAT])
#define userage(x, y) ((void) (global[USERAGE]((char *)x, (char *)y))) #define userage (*(void (*)(char *, char *))global[USERAGE])
#define send_text(x, y, z, a, b) ((void) (global[SEND_TEXT]((char *)x, (const char *)y, (char *)z, (int)a, (int)b))) #define send_text (*(void (*)(const char *, const char *, char *, int , int ))global[SEND_TEXT])
/* this needs to be worked out. it's passed in the IrcVariable * to _Init */ /* this needs to be worked out. it's passed in the IrcVariable * to _Init */
#define load(a, b, c, d) ((void) (global[FUNC_LOAD]((char *)a, (char *)b, (char *)c, (char *)d))) #define load (*(void (*)(char *, char *, char *, char *))global[FUNC_LOAD])
#define update_clock(x) ((char *)(global[UPDATE_CLOCK](x))) #define update_clock (*(char *(*)(int ))global[UPDATE_CLOCK])
#define PasteArgs(x, n) ((char *) (global[PASTEARGS]((char **)x, (int)n))) #define PasteArgs (*(char *(*)(char **, int ))global[PASTEARGS])
#define BreakArgs(x, y, z, n) ((int) (global[BREAKARGS]((char *)x, (char **)y, (char **)z, (int)n))) #define BreakArgs (*(int (*)(char *, char **, char **, int ))global[BREAKARGS])
#define set_lastlog_msg_level(x) ((unsigned long) (global[SET_LASTLOG_MSG_LEVEL]((unsigned long)x))) #define set_lastlog_msg_level (*(unsigned long (*)(unsigned long ))global[SET_LASTLOG_MSG_LEVEL])
#define split_CTCP(x, y, z) ((void) (global[SPLIT_CTCP]((char *)x, (char *)y, (char *)z))) #define split_CTCP (*(void (*)(char *, char *, char *))global[SPLIT_CTCP])
#define random_str(x, y) ((char *) (global[RANDOM_STR]((int)x, (int)y))) #define random_str (*(char *(*)(int , int ))global[RANDOM_STR])
#define dcc_printf ((int (*)())global[DCC_PRINTF]) #define dcc_printf (*(int (*)(int, char *, ...))global[DCC_PRINTF])
/* screen.c */ /* screen.c */
#define prepare_display(x, y, z, a) ((unsigned char **) (global[PREPARE_DISPLAY]((const unsigned char *)x, (int)y, (int *)z, (int)a))) #define prepare_display (*(unsigned char **(*)(const unsigned char *, int , int *, int ))global[PREPARE_DISPLAY])
#define add_to_window(x, y) ((void) (global[ADD_TO_WINDOW]((Window *)x, (const unsigned char *)y))) #define add_to_window (*(void (*)(Window *, const unsigned char *))global[ADD_TO_WINDOW])
#define skip_incoming_mirc(x) ((unsigned char *) (global[SKIP_INCOMING_MIRC]((unsigned char *)x))) #define skip_incoming_mirc (*(unsigned char *(*)(unsigned char *))global[SKIP_INCOMING_MIRC])
#define add_to_screen(x) ((void) (global[ADD_TO_SCREEN]((unsigned char *)x))) #define add_to_screen (*(void (*)(unsigned char *))global[ADD_TO_SCREEN])
#define split_up_line(x, y) ((unsigned char **) (global[SPLIT_UP_LINE]((const unsigned char *)x, (int)y))) #define split_up_line (*(unsigned char **(*)(const unsigned char *, int ))global[SPLIT_UP_LINE])
#define output_line(x) ((int) (global[OUTPUT_LINE]((const unsigned char *)x))) #define output_line (*(int (*)(const unsigned char *))global[OUTPUT_LINE])
#define output_with_count(x, y, z) ((int) (global[OUTPUT_WITH_COUNT]((const unsigned char *)x, (int)y, (int)z))) #define output_with_count (*(int (*)(const unsigned char *, int , int ))global[OUTPUT_WITH_COUNT])
#define scroll_window(x) ((void) (global[SCROLL_WINDOW]((Window *)x))) #define scroll_window (*(void (*)(Window *))global[SCROLL_WINDOW])
/* Previous broken definitions - yet it still seemed to work?
#define cursor_not_in_display(x) ((void) (global[CURSOR_IN_DISPLAY]((Screen *)x))) #define cursor_not_in_display(x) ((void) (global[CURSOR_IN_DISPLAY]((Screen *)x)))
#define cursor_in_display(x) ((void) (global[CURSOR_IN_DISPLAY]((Screen *)x))) #define cursor_in_display(x) ((void) (global[CURSOR_IN_DISPLAY]((Screen *)x)))
#define is_cursor_in_display(x) ((int) (global[IS_CURSOR_IN_DISPLAY]((Screen *)x))) */
#define repaint_window(x, y, z) ((void) (global[REPAINT_WINDOW]((Window *)x, (int)y, (int)z))) #define cursor_not_in_display (*(void (*)(Screen *))global[CURSOR_NOT_IN_DISPLAY])
#define cursor_in_display (*(void (*)(Window *))global[CURSOR_IN_DISPLAY])
#define is_cursor_in_display (*(int (*)(Screen *))global[IS_CURSOR_IN_DISPLAY])
#define repaint_window (*(void (*)(Window *, int, int))global[REPAINT_WINDOW])
#define kill_screen(x) ((void) (global[KILL_SCREEN]((Screen *)x))) #define kill_screen (*(void (*)(Screen *))global[KILL_SCREEN])
#define xterm_settitle ((void (*)(void)) global[XTERM_SETTITLE]) #define xterm_settitle (*(void (*)(void))global[XTERM_SETTITLE])
#define add_wait_prompt(a, b, c, d, e) ((void) (global[ADD_WAIT_PROMPT]((char *)a,(void (*) (char *, char *))b, (char *)c, (int)d, (int)e ))) #define add_wait_prompt (*(void (*)(char *, void (*)(char *, char *), char *, int , int ))global[ADD_WAIT_PROMPT])
#define skip_ctl_c_seq(a, b, c, d) ((const unsigned char *) (global[SKIP_CTL_C_SEQ]((const unsigned char *)a, (int *)b, (int *)c, (int)d))) #define skip_ctl_c_seq (*(const unsigned char *(*)(const unsigned char *, int *, int *, int ))global[SKIP_CTL_C_SEQ])
#define strip_ansi(x) ((unsigned char *) (global[STRIP_ANSI]((const unsigned char *)x))) #define strip_ansi (*(unsigned char *(*)(const unsigned char *))global[STRIP_ANSI])
#define create_new_screen ((Screen * (*)(void))global[CREATE_NEW_SCREEN]) #define create_new_screen ((Screen * (*)(void))global[CREATE_NEW_SCREEN])
#define create_additional_screen ((Window * (*)(void))global[CREATE_ADDITIONAL_SCREEN]) #define create_additional_screen ((Window * (*)(void))global[CREATE_ADDITIONAL_SCREEN])
/* window.c */ /* window.c */
#define free_formats(x) ((void) (global[FREE_FORMATS]((Window *)x))) #define free_formats (*(void (*)(Window *))global[FREE_FORMATS])
#define set_screens_current_window(x, y) ((void) (global[SET_SCREENS_CURRENT_WINDOW]((Screen *)x, (Window *)y))) #define set_screens_current_window (*(void (*)(Screen *, Window *))global[SET_SCREENS_CURRENT_WINDOW])
#define new_window(x) ((Window *) (global[NEW_WINDOW]((Screen *)x))) #define new_window (*(Window *(*)(struct ScreenStru *))global[NEW_WINDOW])
#define delete_window(x) ((void) (global[DELETE_WINDOW]((Window *)x))) #define delete_window (*(void (*)(Window *))global[DELETE_WINDOW])
#define traverse_all_windows(x) ((int) (global[TRAVERSE_ALL_WINDOWS]((Window **)x))) #define traverse_all_windows (*(int (*)(Window **))global[TRAVERSE_ALL_WINDOWS])
#define add_to_invisible_list(x) ((void) (global[ADD_TO_INVISIBLE_LIST]((Window *)x))) #define add_to_invisible_list (*(void (*)(Window *))global[ADD_TO_INVISIBLE_LIST])
#define remove_window_from_screen(x) ((void) (global[REMOVE_WINDOW_FROM_SCREEN]((Window *)x))) #define remove_window_from_screen (*(void (*)(Window *))global[REMOVE_WINDOW_FROM_SCREEN])
#define recalculate_window_positions(x) ((void) (global[RECALCULATE_WINDOW_POSITIONS]((Screen *)x))) #define recalculate_window_positions (*(void (*)(struct ScreenStru *))global[RECALCULATE_WINDOW_POSITIONS])
#define move_window(x, y) ((void) (global[MOVE_WINDOW]((Window *)x, (int)y))) #define move_window (*(void (*)(Window *, int))global[MOVE_WINDOW])
#define resize_window(x, y, z) ((void) (global[RESIZE_WINDOW]((int)x, (Window *)y, (int)z))) #define resize_window (*(void (*)(int, Window *, int))global[RESIZE_WINDOW])
#define redraw_all_windows ((void (*)(void)) global[REDRAW_ALL_WINDOWS]) #define redraw_all_windows (*(void (*)(void))global[REDRAW_ALL_WINDOWS])
#define rebalance_windows(x) ((void) (global[REBALANCE_WINDOWS]((Screen *)x))) #define rebalance_windows (*(void (*)(struct ScreenStru *))global[REBALANCE_WINDOWS])
#define recalculate_windows(x) ((void) (global[RECALCULATE_WINDOWS]((Screen *)x))) #define recalculate_windows (*(void (*)(struct ScreenStru *))global[RECALCULATE_WINDOWS])
#define update_all_windows ((void (*)(void))global[UPDATE_ALL_WINDOWS]) #define update_all_windows (*(void (*)(void))global[UPDATE_ALL_WINDOWS])
#define goto_window(x, y) ((void) (global[GOTO_WINDOW]((Screen *)x, (int)y))) /* Several of these are never used! */
#define hide_window(x) ((void) (global[HIDE_BX_WINDOW]((Window *)x))) #define goto_window (*(void (*)(Screen *, int))global[GOTO_WINDOW])
#define swap_last_window(x, y) ((void) (global[FUNC_SWAP_LAST_WINDOW]((char)x, (char *)y))) #define hide_window (*(void (*)(Window *))global[HIDE_BX_WINDOW])
#define swap_next_window(x, y) ((void) (global[FUNC_SWAP_NEXT_WINDOW]((char)x, (char *)y))) #define swap_last_window (*(void (*)(char , char *))global[FUNC_SWAP_LAST_WINDOW])
#define swap_previous_window(x, y) ((void) (global[FUNC_SWAP_PREVIOUS_WINDOW]((char)x, (char #define swap_next_window (*(void (*)(char , char *))global[FUNC_SWAP_NEXT_WINDOW])
#define show_window(x) ((void) (global[SHOW_WINDOW]((Window *)x))) #define swap_previous_window (*(void (*)(char , char *))global[FUNC_SWAP_PREVIOUS_WINDOW])
#define get_status_by_refnum(x, y) ((char *) (global[GET_STATUS_BY_REFNUM]((unsigned int)x, (unsigned int)y))) #define show_window (*(void (*)(Window *))global[SHOW_WINDOW])
#define get_visible_by_refnum(x) ((int) (global[GET_VISIBLE_BY_REFNUM]((char *)x))) #define get_status_by_refnum (*(char *(*)(unsigned , unsigned ))global[GET_STATUS_BY_REFNUM])
#define get_window_by_desc(x) ((Window *) (global[GET_WINDOW_BY_DESC]((unsigned int)x))) #define get_visible_by_refnum (*(int (*)(char *))global[GET_VISIBLE_BY_REFNUM])
#define get_window_by_refnum(x) ((Window *) (global[GET_WINDOW_BY_REFNUM]((unsigned int)x))) #define get_window_by_desc (*(Window *(*)(const char *))global[GET_WINDOW_BY_DESC])
#define get_window_by_name(x) ((Window *) (global[GET_WINDOW_BY_NAME]((char *)x))) #define get_window_by_refnum (*(Window *(*)(unsigned ))global[GET_WINDOW_BY_REFNUM])
#define next_window(x, y) ((void) (global[FUNC_NEXT_WINDOW]((char)x, (char *)y))) #define get_window_by_name (*(Window *(*)(const char *))global[GET_WINDOW_BY_NAME])
#define previous_window(x, y) ((void) (global[FUNC_PREVIOUS_WINDOW]((char)x, (char *)y))) #define next_window (*(void (*)(char , char *))global[FUNC_NEXT_WINDOW])
#define update_window_status(x, y) ((void) (global[UPDATE_WINDOW_STATUS]((Window *)x, (int)y))) #define previous_window (*(void (*)(char , char *))global[FUNC_PREVIOUS_WINDOW])
#define update_all_status(x, y, z) ((void) (global[UPDATE_ALL_STATUS]((Window *)x, (char *)y, (int) z))) #define update_window_status (*(void (*)(Window *, int ))global[UPDATE_WINDOW_STATUS])
#define update_window_status_all ((void (*)())global[UPDATE_WINDOW_STATUS_ALL]) #define update_all_status (*(void (*)(Window *, char *, int))global[UPDATE_ALL_STATUS])
#define status_update(x) ((int) (global[STATUS_UPDATE]((int)x))) #define update_window_status_all (*(void (*)(void ))global[UPDATE_WINDOW_STATUS_ALL])
#define status_update (*(int (*)(int ))global[STATUS_UPDATE])
#define set_prompt_by_refnum(x, y) ((void) (global[SET_PROMPT_BY_REFNUM]((unsigned int)x, (char *)y))) #define set_prompt_by_refnum (*(void (*)(unsigned , char *))global[SET_PROMPT_BY_REFNUM])
#define get_prompt_by_refnum(x) ((char *) (global[GET_PROMPT_BY_REFNUM]((unsigned int)x))) #define get_prompt_by_refnum (*(char *(*)(unsigned ))global[GET_PROMPT_BY_REFNUM])
#define query_nick() ((char *)(global[QUERY_NICK])()) #define get_target_by_refnum (*(char *(*)(unsigned ))global[GET_TARGET_BY_REFNUM])
#define query_host() ((char *)(global[QUERY_HOST])()) #define get_target_cmd_by_refnum (*(char *(*)(u_int))global[GET_TARGET_CMD_BY_REFNUM])
#define query_cmd() ((char *)(global[QUERY_CMD])()) #define get_window_target_by_desc (*(Window *(*)(char *))global[GET_WINDOW_TARGET_BY_DESC])
#define get_target_by_refnum(x) ((char *) (global[GET_TARGET_BY_REFNUM]((unsigned int)x))) #define is_current_channel (*(int (*)(char *, int , int ))global[IS_CURRENT_CHANNEL])
#define get_target_cmd_by_refnum(x) ((char *) (global[GET_TARGET_CMD_BY_REFNUM]((unsigned int)x))) #define set_current_channel_by_refnum (*(const char *(*)(unsigned , char *))global[SET_CURRENT_CHANNEL_BY_REFNUM])
#define get_window_target_by_desc(x) ((Window *) (global[GET_WINDOW_TARGET_BY_DESC]((char *)x))) #define get_current_channel_by_refnum (*(char *(*)(unsigned ))global[GET_CURRENT_CHANNEL_BY_REFNUM])
#define is_current_channel(x, y, z) ((int) (global[IS_CURRENT_CHANNEL]((char *)x, (int)y, (int)z))) #define get_refnum_by_window (*(char *(*)(const Window *))global[GET_REFNUM_BY_WINDOW])
#define set_current_channel_by_refnum(x, y) ((char *) (global[SET_CURRENT_CHANNEL_BY_REFNUM]((int)x, (char *)y))) #define is_bound_to_window (*(int (*)(const Window *, const char *))global[IS_BOUND_TO_WINDOW])
#define get_current_channel_by_refnum(x) ((char *) (global[GET_CURRENT_CHANNEL_BY_REFNUM]((int)x))) #define get_window_bound_channel (*(Window *(*)(const char *))global[GET_WINDOW_BOUND_CHANNEL])
#define get_refnum_by_window(x) ((char *) (global[GET_REFNUM_BY_WINDOW]((Window *)x))) #define is_bound_anywhere (*(int (*)(const char *))global[IS_BOUND_ANYWHERE])
#define is_bound_to_window(x, y) ((int) (global[IS_BOUND_TO_WINDOW]((Window *)x, (char *)y))) #define is_bound (*(int (*)(const char *, int ))global[IS_BOUND])
#define get_window_bound_channel(x) ((Window *) (global[GET_WINDOW_BOUND_CHANNEL]((char *)x))) #define unbind_channel (*(void (*)(const char *, int ))global[UNBIND_CHANNEL])
#define is_bound_anywhere(x) ((int) (global[IS_BOUND_ANYWHERE]((char *)x))) #define get_bound_channel (*(char *(*)(Window *))global[GET_BOUND_CHANNEL])
#define is_bound(x, y) ((int) (global[IS_BOUND]((char *)x, (int)y))) #define get_window_server (*(int (*)(unsigned ))global[GET_WINDOW_SERVER])
#define unbind_channel(x, y) ((void) (global[UNBIND_CHANNEL]((char *)x, (int)y))) #define set_window_server (*(void (*)(int , int , int ))global[SET_WINDOW_SERVER])
#define get_bound_channel(x) ((char *) (global[GET_BOUND_CHANNEL]((Window *)x))) #define window_check_servers (*(void (*)(int ))global[WINDOW_CHECK_SERVERS])
#define get_window_server(x) ((int) (global[GET_WINDOW_SERVER]((unsigned int)x))) #define change_window_server (*(void (*)(int , int ))global[CHANGE_WINDOW_SERVER])
#define set_window_server(x, y, z) ((void) (global[SET_WINDOW_SERVER]((int)x, (int)y, (int)z))) #define set_level_by_refnum (*(void (*)(unsigned , unsigned long ))global[SET_LEVEL_BY_REFNUM])
#define window_check_servers ((void (*)(int))global[WINDOW_CHECK_SERVERS]) #define message_to (*(void (*)(unsigned long ))global[MESSAGE_TO])
#define window_close_server ((void (*)(int))global[WINDOW_CHECK_SERVERS]) #define clear_window (*(void (*)(Window *))global[CLEAR_WINDOW])
#define change_window_server(x, y) ((void) (global[CHANGE_WINDOW_SERVER]((int)x, (int)y))) #define clear_all_windows (*(void (*)(int , int ))global[CLEAR_ALL_WINDOWS])
#define set_level_by_refnum(x, y) ((void) (global[SET_LEVEL_BY_REFNUM]((unsigned int)x, (int)y))) #define clear_window_by_refnum (*(void (*)(unsigned ))global[CLEAR_WINDOW_BY_REFNUM])
#define message_to(x) ((void) (global[MESSAGE_TO]((unsigned int)x))) #define unclear_window_by_refnum (*(void (*)(unsigned ))global[UNCLEAR_WINDOW_BY_REFNUM])
#define clear_window(x) ((void) (global[CLEAR_WINDOW]((Window *)x))) #define set_scroll_lines (*(void (*)(Window *, char *, int))global[SET_SCROLL_LINES])
#define clear_all_windows(x, y) ((void) (global[CLEAR_ALL_WINDOWS]((int)x, (int)y))) #define set_continued_lines (*(void (*)(Window *, char *, int))global[SET_CONTINUED_LINES])
#define clear_window_by_refnum(x) ((void) (global[CLEAR_WINDOW_BY_REFNUM]((unsigned int)x))) #define current_refnum (*(unsigned (*)(void ))global[CURRENT_REFNUM])
#define unclear_window_by_refnum(x) ((void) (global[UNCLEAR_WINDOW_BY_REFNUM]((unsigned int)x))) #define number_of_windows_on_screen (*(int (*)(Window *))global[NUMBER_OF_WINDOWS_ON_SCREEN])
#define set_scroll_lines(x, y, z) ((void) (global[SET_SCROLL_LINES]((Window *)x, (char *)y, (int)y))) #define set_scrollback_size (*(void (*)(Window *, char *, int))global[SET_SCROLLBACK_SIZE])
#define set_continued_lines(x, y, z) ((void) (global[SET_CONTINUED_LINES]((Window *)x, (char *)y, (int)y))) #define is_window_name_unique (*(int (*)(char *))global[IS_WINDOW_NAME_UNIQUE])
#define current_refnum ((int (*)())global[CURRENT_REFNUM]) #define get_nicklist_by_window (*(char *(*)(Window *))global[GET_NICKLIST_BY_WINDOW])
#define number_of_windows_on_screen(x) ((int) (global[NUMBER_OF_WINDOWS_ON_SCREEN]((Window *)x))) #define scrollback_backwards_lines (*(void (*)(int ))global[SCROLLBACK_BACKWARDS_LINES])
#define set_scrollback_size(x, y, z) ((void) (global[SET_SCROLLBACK_SIZE]((Window *)x, (char *)y, (int)y))) #define scrollback_forwards_lines (*(void (*)(int ))global[SCROLLBACK_FORWARDS_LINES])
#define is_window_name_unique(x) ((int) (global[IS_WINDOW_NAME_UNIQUE]((char *)x))) #define scrollback_forwards (*(void (*)(char , char *))global[SCROLLBACK_FORWARDS])
#define get_nicklist_by_window(x) ((char *) (global[GET_NICKLIST_BY_WINDOW]((Window *)x))) #define scrollback_backwards (*(void (*)(char , char *))global[SCROLLBACK_BACKWARDS])
#define scrollback_backwards_lines(x) ((void) (global[SCROLLBACK_BACKWARDS_LINES]((int)x))) #define scrollback_end (*(void (*)(char , char *))global[SCROLLBACK_END])
#define scrollback_forwards_lines(x) ((void) (global[SCROLLBACK_FORWARDS_LINES]((int)x))) #define scrollback_start (*(void (*)(char , char *))global[SCROLLBACK_START])
#define scrollback_forwards(x, y) ((void) (global[SCROLLBACK_FORWARDS]((char)x, (char *)y))) #define set_hold_mode (*(void (*)(Window *, int, int))global[SET_HOLD_MODE])
#define scrollback_backwards(x, y) ((void) (global[SCROLLBACK_BACKWARDS]((char)x, (char *)y))) #define unhold_windows (*(int (*)(void ))global[UNHOLD_WINDOWS])
#define scrollback_end(x, y) ((void) (global[SCROLLBACK_END]((char)x, (char *)y))) #define unstop_all_windows (*(void (*)(char , char *))global[FUNC_UNSTOP_ALL_WINDOWS])
#define scrollback_start(x, y) ((void) (global[SCROLLBACK_START]((char)x, (char *)y))) #define reset_line_cnt (*(void (*)(Window *, char *, int))global[RESET_LINE_CNT])
#define hold_mode(x, y, z) ((void) (global[HOLD_MODE]((Window *)x, (int)y, (int)z))) #define toggle_stop_screen (*(void (*)(char , char *))global[FUNC_TOGGLE_STOP_SCREEN])
#define unhold_windows ((int (*)())global[UNHOLD_WINDOWS]) #define flush_everything_being_held (*(void (*)(Window *))global[FLUSH_EVERYTHING_BEING_HELD])
#define unstop_all_windows(x, y) ((void) (global[FUNC_UNSTOP_ALL_WINDOWS]((char)x, (char *)y))) #define unhold_a_window (*(int (*)(Window *))global[UNHOLD_A_WINDOW])
#define reset_line_cnt(x, y, z) ((void) (global[RESET_LINE_CNT]((Window *)x, (char *)y, (int)z))) #define recalculate_window_cursor (*(void (*)(Window *))global[RECALCULATE_WINDOW_CURSOR])
#define toggle_stop_screen(x, y) ((void) (global[TOGGLE_STOP_SCREEN]((char)x, (char *)y))) #define make_window_current (*(void (*)(Window *))global[MAKE_WINDOW_CURRENT])
#define flush_everything_being_held(x) ((void) (global[FLUSH_EVERYTHING_BEING_HELD]((Window *)x))) #define clear_scrollback (*(void (*)(Window *))global[CLEAR_SCROLLBACK])
#define unhold_a_window(x) ((int) (global[UNHOLD_A_WINDOW]((Window *)x)))
#define recalculate_window_cursor(x) ((void) (global[RECALCULATE_WINDOW_CURSOR]((Screen *)x)))
#define make_window_current(x) ((void) (global[MAKE_WINDOW_CURRENT]((Window *)x)))
#define clear_scrollback(x) ((void) (global[CLEAR_SCROLLBACK]((Window *)x)))
#define set_display_target(x, y) ((void) (global[SET_DISPLAY_TARGET]((const char *)x,(unsigned long)y))) #define set_display_target (*(void (*)(const char *, unsigned long ))global[SET_DISPLAY_TARGET])
#define save_display_target(x, y) ((void) (global[SAVE_DISPLAY_TARGET]((const char **)x, (unsigned long *)y))) #define save_display_target (*(void (*)(const char **, unsigned long *))global[SAVE_DISPLAY_TARGET])
#define restore_display_target(x, y) ((void) (global[RESTORE_DISPLAY_TARGET]((const char *)x, (unsigned long)y))) #define restore_display_target (*(void (*)(const char *, unsigned long ))global[RESTORE_DISPLAY_TARGET])
#define reset_display_target ((void (*)())global[RESET_DISPLAY_TARGET]) #define reset_display_target (*(void (*)(void ))global[RESET_DISPLAY_TARGET])
#define build_status(x, y, z) ((void) (global[BUILD_STATUS]((Window *)x, (char *)y, (int)z))) #define build_status (*(void (*)(Window *, char *, int))global[BUILD_STATUS])
#define do_hook ((int (*)())global[HOOK]) #define do_hook (*(int (*)(int, char *, ...))global[HOOK])
/* input.c */ /* input.c */
#define update_input(x) ((void) (global[FUNC_UPDATE_INPUT]((int)x))) #define update_input (*(void (*)(int ))global[FUNC_UPDATE_INPUT])
#define cursor_to_input ((void (*)(void)) global[CURSOR_TO_INPUT]) #define cursor_to_input (*(void (*)(void ))global[CURSOR_TO_INPUT])
#define set_input(x) ((void) (global[SET_INPUT]((char *)x))) #define set_input (*(void (*)(char *))global[SET_INPUT])
#define get_input ((char * (*)(void)) (global[GET_INPUT])) #define get_input (*(char *(*)(void ))global[GET_INPUT])
#define get_input_prompt ((char * (*)(void)) (global[GET_INPUT_PROMPT])) #define get_input_prompt (*(char *(*)(void ))global[GET_INPUT_PROMPT])
#define set_input_prompt(x, y, z) ((void) (global[SET_INPUT_PROMPT]((Window *)x, (char *)y, (int)z))) #define set_input_prompt (*(void (*)(Window *, char *, int))global[SET_INPUT_PROMPT])
#define addtabkey(x, y, z) ((void) (global[ADDTABKEY]((char *)x, (char *)y, (int)z))) #define addtabkey (*(void (*)(char *, char *, int ))global[ADDTABKEY])
#define gettabkey(x, y, z) ((NickTab *) (global[GETTABKEY]((int)x, (int)y, (char *)z))) #define gettabkey (*(NickTab *(*)(int, int, char *))global[GETTABKEY])
#define getnextnick(x, y, z, a) ((NickTab *) (global[GETNEXTNICK]((int)x, (char *)y, (char *)z, (char *)a))) #define getnextnick (*(NickTab *(*)(int, char *, char *, char *))global[GETNEXTNICK])
#define getchannick(x, y) ((char *) (global[GETCHANNICK]((char *)x, (char *)y))) #define getchannick (*(char *(*)(char *, char *))global[GETCHANNICK])
#define lookup_nickcompletion(x, y) ((NickList *) (global[LOOKUP_NICKCOMPLETION]((ChannelList *)x, (char *)y))) #define lookup_nickcompletion (*(NickList *(*)(ChannelList *, char *))global[LOOKUP_NICKCOMPLETION])
#define add_completion_type(x, y, z) ((int) (global[ADD_COMPLETION_TYPE]((char *)x, (int)y, (enum completion)z))) #define add_completion_type (*(int (*)(char *, int , enum completion ))global[ADD_COMPLETION_TYPE])
/* names.c */ /* names.c */
#define is_channel(x) ((int) (global[IS_CHANNEL]((char *)x))) #define is_channel (*(int (*)(char *))global[IS_CHANNEL])
#define make_channel(x) ((char *) (global[MAKE_CHANNEL]((char *)x))) #define make_channel (*(char *(*)(char *))global[MAKE_CHANNEL])
#define is_chanop(x, y) ((int) (global[IS_CHANOP]((char *)x, (char *)y))) #define is_chanop (*(int (*)(char *, char *))global[IS_CHANOP])
#define im_on_channel(x, y) ((int) (global[IM_ON_CHANNEL]((char *)x, (int)y))) #define im_on_channel (*(int (*)(char *, int ))global[IM_ON_CHANNEL])
#define is_on_channel(x, y, z) ((int) (global[IS_ON_CHANNEL]((char *)x, (int)y, (char *)z))) #define is_on_channel (*(int (*)(char *, int , char *))global[IS_ON_CHANNEL])
#define add_channel(x, y, z) ((ChannelList *) (global[ADD_CHANNEL]((char *)x, (int)y, (int)z))) #define add_channel (*(ChannelList *(*)(char *, int, int))global[ADD_CHANNEL])
#define add_to_channel(a, b, c, d, e, f, g, h, i, j) ((ChannelList *) (global[ADD_TO_CHANNEL]((char *)a, (char *)b, (int)c, (int)d, (int)e, (char *)f, (char *)g, (char *)h, (int)i, (int)j))) #define add_to_channel (*(ChannelList *(*)(char *, char *, int, int, int, char *, char *, char *, int, int))global[ADD_TO_CHANNEL])
#define get_channel_key(x, y) ((char *) (global[GET_CHANNEL_KEY]((char *)x, (int)y))) #define get_channel_key (*(char *(*)(char *, int ))global[GET_CHANNEL_KEY])
#define recreate_mode(x) ((char *) (global[FUNC_RECREATE_MODE]((ChannelList *)x))) #define recreate_mode (*(char *(*)(ChannelList *))global[FUNC_RECREATE_MODE])
#define compress_modes(x, y, z, a) ((char *) (global[FUNC_COMPRESS_MODES]((ChannelList *)x, (int)y, (char *)z, (char *)a))) #define do_compress_modes (*(char *(*)(ChannelList *, int, char *, char *))global[FUNC_COMPRESS_MODES])
#define got_ops(x, y) ((int) (global[FUNC_GOT_OPS]((int)x, (ChannelList *)y))) #define got_ops (*(int (*)(int, ChannelList *))global[FUNC_GOT_OPS])
#define get_channel_bans(x, y, z) ((char *) (global[GET_CHANNEL_BANS]((char *)x, (int)y, (int)z))) #define get_channel_bans (*(char *(*)(char *, int , int ))global[GET_CHANNEL_BANS])
#define get_channel_mode(x, y) ((char *) (global[GET_CHANNEL_MODE]((char *)x, (int)y))) #define get_channel_mode (*(char *(*)(char *, int ))global[GET_CHANNEL_MODE])
#define clear_bans(x) ((void) (global[CLEAR_BANS]((ChannelList *)x))) #define clear_bans (*(void (*)(ChannelList *))global[CLEAR_BANS])
#define remove_channel(x, y) ((void) (global[REMOVE_CHANNEL]((char *)x, (int)y))) #define remove_channel (*(void (*)(char *, int ))global[REMOVE_CHANNEL])
#define remove_from_channel(a, b, c, d, e) ((void) (global[REMOVE_FROM_CHANNEL]((char *)a, (char *)b, (int)c, (int)d, (char *)e))) #define remove_from_channel (*(void (*)(char *, char *, int , int , char *))global[REMOVE_FROM_CHANNEL])
#define rename_nick(x, y, z) ((void) (global[RENAME_NICK]((char *)x, (char *)y, (int)z))) #define rename_nick (*(void (*)(char *, char *, int ))global[RENAME_NICK])
#define get_channel_oper(x, y) ((int) (global[GET_CHANNEL_OPER]((char *)x, (int)y))) #define get_channel_oper (*(int (*)(char *, int ))global[GET_CHANNEL_OPER])
#define get_channel_halfop(x, y) ((int) (global[GET_CHANNEL_HALFOP]((char *)x, (int)y))) #define get_channel_halfop (*(int (*)(char *, int ))global[GET_CHANNEL_HALFOP])
#define get_channel_voice(x, y) ((int) (global[GET_CHANNEL_VOICE]((char *)x, (int)y))) #define get_channel_voice (*(int (*)(char *, int ))global[GET_CHANNEL_VOICE])
#define fetch_userhost(x, y) ((char *) (global[FETCH_USERHOST]((int)x, (char *)y))) #define fetch_userhost (*(char *(*)(int , char *))global[FETCH_USERHOST])
#define create_channel_list(x) ((char *) (global[CREATE_CHANNEL_LIST]((Window *)x))) #define create_channel_list (*(char *(*)(Window *))global[CREATE_CHANNEL_LIST])
#define flush_channel_stats ((void (*)(void)) (global[FLUSH_CHANNEL_STATS])) #define flush_channel_stats (*(void (*)(void ))global[FLUSH_CHANNEL_STATS])
#define lookup_channel(x, y, z) ((ChannelList *) (global[LOOKUP_CHANNEL]((char *)x, (int)y, (int)z))) #define lookup_channel (*(ChannelList *(*)(char *, int, int))global[LOOKUP_CHANNEL])
/* hash.c */ /* hash.c */
#define find_nicklist_in_channellist(x, y, z) ((NickList *) (global[FIND_NICKLIST_IN_CHANNELLIST]((char *)x, (ChannelList *)y, (int)z))) #define find_nicklist_in_channellist (*(NickList *(*)(char *, ChannelList *, int))global[FIND_NICKLIST_IN_CHANNELLIST])
#define add_nicklist_to_channellist(x, y) ((void) (global[ADD_NICKLIST_TO_CHANNELLIST]((NickList *)x, (ChannelList *)y))) #define add_nicklist_to_channellist (*(void (*)(NickList *, ChannelList *))global[ADD_NICKLIST_TO_CHANNELLIST])
#define next_nicklist(x, y) ((NickList *) (global[NEXT_NICKLIST] ((ChannelList *)x, (NickList *)y))) #define next_nicklist (*(NickList *(*)(ChannelList *, NickList *))global[NEXT_NICKLIST])
#define next_namelist(x, y, z) ((List *) (global[NEXT_NAMELIST]((HashEntry *)x, (List *)y, (unsigned int)z))) #define next_namelist (*(List *(*)(HashEntry *, List *, unsigned int))global[NEXT_NAMELIST])
#define add_name_to_genericlist(x, y, z) ((void) (global[ADD_NAME_TO_GENERICLIST]((char *)x, (HashEntry *)y, (unsigned int)z))) #define add_name_to_genericlist (*(void (*)(char *, HashEntry *, unsigned int))global[ADD_NAME_TO_GENERICLIST])
#define find_name_in_genericlist(x, y, z, a) ((List *) (global[FIND_NAME_IN_GENERICLIST]((char *)x, (HashEntry *)y, (unsigned int)z, (int)a))) #define find_name_in_genericlist (*(List *(*)(char *, HashEntry *, unsigned int, int))global[FIND_NAME_IN_GENERICLIST])
#define add_whowas_userhost_channel(x, y) ((void) (global[ADD_WHOWAS_USERHOST_CHANNEL]((WhowasList *)x, (WhowasWrapList *)y))) #define add_whowas_userhost_channel (*(void (*)(WhowasList *, WhowasWrapList *))global[ADD_WHOWAS_USERHOST_CHANNEL])
#define find_userhost_channel(x, y, z, a) ((WhowasList *) (global[FIND_USERHOST_CHANNEL]((char *)x, (char *)y, (int)z, (WhowasWrapList *)a))) #define find_userhost_channel (*(WhowasList *(*)(char *, char *, int, WhowasWrapList *))global[FIND_USERHOST_CHANNEL])
#define next_userhost(x, y) ((WhowasList *) (global[NEXT_USERHOST]((WhowasWrapList *)x, (WhowasList *)y))) #define next_userhost (*(WhowasList *(*)(WhowasWrapList *, WhowasList *))global[NEXT_USERHOST])
#define sorted_nicklist(x, y) ((NickList *) (global[SORTED_NICKLIST]((ChannelList *)x, (int)y))) #define sorted_nicklist (*(NickList *(*)(ChannelList *, int))global[SORTED_NICKLIST])
#define clear_sorted_nicklist(x) ((void)(global[CLEAR_SORTED_NICKLIST](x))) #define clear_sorted_nicklist (*(void (*)(NickList **))global[CLEAR_SORTED_NICKLIST])
#define add_name_to_floodlist(a, b, c, d, e) ((Flooding *) (global[ADD_NAME_TO_FLOODLIST]((char *)a, (char *)b, (char *)c, (HashEntry *)d, (unsigned int)e))) #define add_name_to_floodlist (*(Flooding *(*)(char *, char *, char *, HashEntry *, unsigned int))global[ADD_NAME_TO_FLOODLIST])
#define find_name_in_floodlist(a, b, c, d, e) ((Flooding *) (global[FIND_NAME_IN_FLOODLIST]((char *)a, (char *)b, (HashEntry *)c, (unsigned int)d, (int)e))) #define find_name_in_floodlist (*(Flooding *(*)(char *, char *, HashEntry *, unsigned int, int))global[FIND_NAME_IN_FLOODLIST])
#define remove_oldest_whowas_hashlist(x, y, z) ((int) (global[REMOVE_OLDEST_WHOWAS_HASHLIST]((WhowasWrapList *)x, (time_t)y, (int)z))) #define remove_oldest_whowas_hashlist (*(int (*)(WhowasWrapList *, time_t, int))global[REMOVE_OLDEST_WHOWAS_HASHLIST])
/* cset.c fset.c vars.c set string and set int ops */ /* cset.c fset.c vars.c set string and set int ops */
#define fget_string_var(x) ((char *)(global[FGET_STRING_VAR]((int)x))) #define fget_string_var (*(char *(*)(enum FSET_TYPES ))global[FGET_STRING_VAR])
#define fset_string_var(x, y) ((void) (global[FSET_STRING_VAR]((int)x, (char *)y))) #define fset_string_var (*(void (*)(enum FSET_TYPES , char *))global[FSET_STRING_VAR])
#define get_wset_string_var(x, y) ((char *) (global[GET_WSET_STRING_VAR]((WSet *)x, (char *)y))) #define get_wset_string_var (*(char *(*)(WSet *, int))global[GET_WSET_STRING_VAR])
#define set_wset_string_var(x, y, z) ((void) (global[SET_WSET_STRING_VAR]((WSet *)x, (int)y, (char *)z))) #define set_wset_string_var (*(void (*)(WSet *, int, char *))global[SET_WSET_STRING_VAR])
#define get_cset_int_var(x, y) ((int) (global[GET_CSET_INT_VAR]((CSetList *)x, (int)y))) #define get_cset_int_var (*(int (*)(CSetList *, int))global[GET_CSET_INT_VAR])
#define set_cset_int_var(x, y, z) ((void) (global[SET_CSET_INT_VAR]((CSetList *)x, (int)y, (int)z))) #define set_cset_int_var (*(void (*)(CSetList *, int, int))global[SET_CSET_INT_VAR])
#define get_cset_str_var(x, y) ((char *) (global[GET_CSET_STR_VAR]((CSetList *)x, (int)y))) #define get_cset_str_var (*(char *(*)(CSetList *, int))global[GET_CSET_STR_VAR])
#define set_cset_str_var(x, y, z) ((void) (global[SET_CSET_STR_VAR]((CSetList *)x, (int)y, (char *)z))) #define set_cset_str_var (*(void (*)(CSetList *, int, char *))global[SET_CSET_STR_VAR])
#define get_dllint_var(x) ((int) (global[GET_DLLINT_VAR]((char *)x))) #define get_dllint_var (*(int (*)(char *))global[GET_DLLINT_VAR])
#define set_dllint_var(x, y) ((void) (global[SET_DLLINT_VAR]((char *)x, (unsigned int)y))) #define set_dllint_var (*(void (*)(char *, unsigned int ))global[SET_DLLINT_VAR])
#define get_dllstring_var(x) ((char *) (global[GET_DLLSTRING_VAR]((char *)x))) #define get_dllstring_var (*(char *(*)(char *))global[GET_DLLSTRING_VAR])
#define set_dllstring_var(x, y) ((void) (global[SET_DLLSTRING_VAR]((char *)x, (char *)y))) #define set_dllstring_var (*(void (*)(char *, char *))global[SET_DLLSTRING_VAR])
#define get_int_var(x) ((int) (global[GET_INT_VAR]((int)x))) #define get_int_var (*(int (*)(enum VAR_TYPES ))global[GET_INT_VAR])
#define set_int_var(x, y) ((void) (global[SET_INT_VAR]((int)x, (int)y))) #define set_int_var (*(void (*)(enum VAR_TYPES , unsigned int ))global[SET_INT_VAR])
#define get_string_var(x) ((char *) (global[GET_STRING_VAR]((int)x))) #define get_string_var (*(char *(*)(enum VAR_TYPES ))global[GET_STRING_VAR])
#define set_string_var(x, y) ((void) (global[SET_STRING_VAR]((int)x, (char *)y))) #define set_string_var (*(void (*)(enum VAR_TYPES , char *))global[SET_STRING_VAR])
/* module.c */ /* module.c */
#define add_module_proc(x, y, z, a, b, c, d, e) ((int)(global[ADD_MODULE_PROC](x, y, z, a, b, c, d, e))) #define add_module_proc (*(int (*)(unsigned int , char *, char *, char *, int , int , void *, void *))global[ADD_MODULE_PROC])
#define remove_module_proc(a, b, c, d) ((int) (global[REMOVE_MODULE_PROC]((int)a, (char *)b, (char *)c, (char *)d))) #define remove_module_proc (*(int (*)(unsigned int , char *, char *, char *))global[REMOVE_MODULE_PROC])
/* timer.c */ /* timer.c */
#define add_timer(x, y, z, n, f, a, b, w, c) ((char *) (global[ADD_TIMER]((int)x, (char *)y, (double)z, (long)n, (int (*) (void *))f, (char *)a, (char *)b, (Window *)w, (char *)c))) #define add_timer (*(char *(*)(int , char *, double , long , int (*)(void *, char *), char *, char *, int , char *))global[ADD_TIMER])
#define delete_timer(x) ((int) (global[DELETE_TIMER]((char *)x))) #define delete_timer (*(int (*)(char *))global[DELETE_TIMER])
#define delete_all_timers ((int (*)(void)) (global[DELETE_ALL_TIMERS])) #define delete_all_timers (*(void (*)(void ))global[DELETE_ALL_TIMERS])
/* server.c */ /* server.c */
#define send_to_server ((void (*)()) global[SEND_TO_SERVER]) #define send_to_server (*(void (*)(const char *, ...))global[SEND_TO_SERVER])
#define queue_send_to_server ((void (*)()) global[QUEUE_SEND_TO_SERVER]) #define queue_send_to_server (*(void (*)(int, const char *, ...))global[QUEUE_SEND_TO_SERVER])
#define my_send_to_server ((void (*)()) global[MY_SEND_TO_SERVER]) #define my_send_to_server (*(void (*)(int, const char *, ...))global[MY_SEND_TO_SERVER])
#define get_connected(x, y) ((void) (global[GET_CONNECTED]((int)x, (int)y))) #define get_connected (*(void (*)(int , int ))global[GET_CONNECTED])
#define connect_to_server_by_refnum(x, y) ((int) (global[CONNECT_TO_SERVER_BY_REFNUM]((int)x, (int)y))) #define connect_to_server_by_refnum (*(int (*)(int , int ))global[CONNECT_TO_SERVER_BY_REFNUM])
#define close_server(x, y) ((void) (global[CLOSE_SERVER]((int)x, (char *)y))) #define close_server (*(void (*)(int , char *))global[CLOSE_SERVER])
#define is_server_connected(x) ((int) (global[IS_SERVER_CONNECTED]((int)x))) #define is_server_connected (*(int (*)(int ))global[IS_SERVER_CONNECTED])
#define flush_server ((void (*)(void)) global[FLUSH_SERVER]) #define flush_server (*(void (*)(void ))global[FLUSH_SERVER])
#define server_is_connected(x, y) ((int) (global[SERVER_IS_CONNECTED]((int)x, (int)y))) #define server_is_connected (*(void (*)(int , int ))global[SERVER_IS_CONNECTED])
#define is_server_open(x) ((int) (global[IS_SERVER_OPEN]((int)x))) #define is_server_open (*(int (*)(int ))global[IS_SERVER_OPEN])
#define close_all_server ((void (*)(void)) global[CLOSE_ALL_SERVER]) #define close_all_server (*(void (*)(void ))global[CLOSE_ALL_SERVER])
#define read_server_file(x) ((int) (global[READ_SERVER_FILE]((char *)x))) #define read_server_file (*(int (*)(char *))global[READ_SERVER_FILE])
#define add_to_server_list(a, b, c, d, e, f, g) ((void) (global[ADD_TO_SERVER_LIST]((char *)a, (int)b, (char *)c, (char *)d, (char *)e, (int)f, (int)g))) #define add_to_server_list (*(void (*)(char *, int , char *, char *, char *, int , int ))global[ADD_TO_SERVER_LIST])
#define build_server_list(x) ((int) (global[BUILD_SERVER_LIST]((char *)x))) #define build_server_list (*(int (*)(char *))global[BUILD_SERVER_LIST])
#define display_server_list() ((void) (global[DISPLAY_SERVER_LIST]())) #define display_server_list (*(void (*)(void ))global[DISPLAY_SERVER_LIST])
#define create_server_list(x) ((char *) (global[CREATE_SERVER_LIST]((char *)x))) #define create_server_list (*(char *(*)(char *))global[CREATE_SERVER_LIST])
#define parse_server_info(a, b, c, d, e) ((void) (global[PARSE_SERVER_INFO]((char *)a, (char **)b, (char **)c, (char **)d, (char **)e))) #define parse_server_info (*(void (*)(char *, char **, char **, char **, char **))global[PARSE_SERVER_INFO])
#define server_list_size ((int (*)(void)) global[SERVER_LIST_SIZE]) #define server_list_size (*(int (*)(void ))global[SERVER_LIST_SIZE])
#define find_server_refnum(x, y) ((int) (global[FIND_SERVER_REFNUM]((char *)x, (char **)y))) #define find_server_refnum (*(int (*)(char *, char **))global[FIND_SERVER_REFNUM])
#define find_in_server_list(x, y) ((int) (global[FIND_IN_SERVER_LIST]((char *)x, (int)y))) #define find_in_server_list (*(int (*)(char *, int ))global[FIND_IN_SERVER_LIST])
#define parse_server_index(x) ((int) (global[PARSE_SERVER_INDEX]((char *)x))) #define parse_server_index (*(int (*)(char *))global[PARSE_SERVER_INDEX])
#define set_server_redirect(x, y) ((void) (global[SET_SERVER_REDIRECT]((int)x, (char *)y))) #define set_server_redirect (*(void (*)(int , const char *))global[SET_SERVER_REDIRECT])
#define get_server_redirect(x) ((char *) (global[GET_SERVER_REDIRECT]((int)x))) #define get_server_redirect (*(char *(*)(int ))global[GET_SERVER_REDIRECT])
#define check_server_redirect(x) ((int) (global[CHECK_SERVER_REDIRECT]((char *)x))) #define check_server_redirect (*(int (*)(char *))global[CHECK_SERVER_REDIRECT])
#define fudge_nickname(x, y) ((void) (global[FUDGE_NICKNAME]((int)x, (int)y))) #define fudge_nickname (*(void (*)(int , int ))global[FUDGE_NICKNAME])
#define reset_nickname(x) ((void) (global[RESET_NICKNAME]((int)x))) #define reset_nickname (*(void (*)(int ))global[RESET_NICKNAME])
#define set_server_cookie(x, y) ((void) (global[SET_SERVER_COOKIE]((int)x, (char *)y))) #define set_server_cookie (*(void (*)(int , char *))global[SET_SERVER_COOKIE])
#define set_server_flag(x, y, z) ((void) (global[SET_SERVER_FLAG]((int)x, (int)y, (int)z))) #define set_server_flag (*(void (*)(int , int , int ))global[SET_SERVER_FLAG])
#define set_server_motd(x, y) ((void) (global[SET_SERVER_MOTD]((int)x, (int)y))) #define set_server_motd (*(void (*)(int , int ))global[SET_SERVER_MOTD])
#define set_server_operator(x, y) ((void) (global[SET_SERVER_OPERATOR]((int)x, (int)y))) #define set_server_operator (*(void (*)(int , int ))global[SET_SERVER_OPERATOR])
#define set_server_itsname(x, y) ((void) (global[SET_SERVER_ITSNAME]((int)x, (char *)y))) #define set_server_itsname (*(void (*)(int , char *))global[SET_SERVER_ITSNAME])
#define set_server_version(x, y) ((void) (global[SET_SERVER_VERSION]((int)x, (int)y))) #define set_server_version (*(void (*)(int , int ))global[SET_SERVER_VERSION])
#define set_server_lag(x, y) ((void) (global[SET_SERVER_LAG]((int)x, (int)y))) #define set_server_lag (*(void (*)(int , int ))global[SET_SERVER_LAG])
#define set_server_password(x, y) ((char *) (global[SET_SERVER_PASSWORD]((int)x, (char *)y))) #define set_server_password (*(char *(*)(int , char *))global[SET_SERVER_PASSWORD])
#define set_server_nickname(x, y) ((void) (global[SET_SERVER_NICKNAME]((int)x, (char *)y))) #define set_server_nickname (*(void (*)(int , char *))global[SET_SERVER_NICKNAME])
#define set_server2_8(x, y) ((void) (global[SET_SERVER2_8]((int)x, (int)y))) #define set_server2_8 (*(void (*)(int , int ))global[SET_SERVER2_8])
#define set_server_away(x, y, z) ((void) (global[SET_SERVER_AWAY]((int)x, (char *)y, (int)z))) #define set_server_away (*(void (*)(int , char *, int ))global[SET_SERVER_AWAY])
#define get_server_cookie(x) ((char *) (global[GET_SERVER_COOKIE]((int)x))) #define get_server_cookie (*(char *(*)(int ))global[GET_SERVER_COOKIE])
#define get_server_nickname(x) ((char *) (global[GET_SERVER_NICKNAME]((int)x))) #define get_server_nickname (*(char *(*)(int ))global[GET_SERVER_NICKNAME])
#define get_server_name(x) ((char *) (global[GET_SERVER_NAME]((int)x))) #define get_server_name (*(char *(*)(int ))global[GET_SERVER_NAME])
#define get_server_itsname(x) ((char *) (global[GET_SERVER_ITSNAME]((int)x))) #define get_server_itsname (*(char *(*)(int ))global[GET_SERVER_ITSNAME])
#define get_server_motd(x) ((int) (global[GET_SERVER_MOTD]((int)x))) #define get_server_motd (*(int (*)(int ))global[GET_SERVER_MOTD])
#define get_server_operator(x) ((int) (global[GET_SERVER_OPERATOR]((int)x))) #define get_server_operator (*(int (*)(int ))global[GET_SERVER_OPERATOR])
#define get_server_version(x) ((int) (global[GET_SERVER_VERSION]((int)x))) #define get_server_version (*(int (*)(int ))global[GET_SERVER_VERSION])
#define get_server_flag(x, y) ((int) (global[GET_SERVER_FLAG]((int)x, (int)y))) #define get_server_flag (*(int (*)(int , int ))global[GET_SERVER_FLAG])
#define get_possible_umodes(x) ((char *) (global[GET_POSSIBLE_UMODES]((int)x))) #define get_possible_umodes (*(char *(*)(int ))global[GET_POSSIBLE_UMODES])
#define get_server_port(x) ((int) (global[GET_SERVER_PORT]((int)x))) #define get_server_port (*(int (*)(int ))global[GET_SERVER_PORT])
#define get_server_lag(x) ((int) (global[GET_SERVER_LAG]((int)x))) #define get_server_lag (*(int (*)(int ))global[GET_SERVER_LAG])
#define get_server2_8(x) ((int) (global[GET_SERVER2_8]((int)x))) #define get_server2_8 (*(int (*)(int ))global[GET_SERVER2_8])
#define get_umode(x) ((char *) (global[GET_UMODE]((int)x))) #define get_umode (*(char *(*)(int ))global[GET_UMODE])
#define get_server_away(x) ((char *) (global[GET_SERVER_AWAY]((int)x))) #define get_server_away (*(char *(*)(int ))global[GET_SERVER_AWAY])
#define get_server_network(x) ((char *) (global[GET_SERVER_NETWORK]((int)x))) #define get_server_network (*(char *(*)(int ))global[GET_SERVER_NETWORK])
#define get_pending_nickname(x) ((char *) (global[GET_PENDING_NICKNAME]((int)x))) #define get_pending_nickname (*(char *(*)(int ))global[GET_PENDING_NICKNAME])
#define server_disconnect(x, y) ((void) (global[SERVER_DISCONNECT]((int)x, (char *)y))) #define server_disconnect (*(void (*)(int , char *))global[SERVER_DISCONNECT])
#define get_server_list ((Server * (*)(void)) global[GET_SERVER_LIST]) #define get_server_list (*(Server *(*)(void))global[GET_SERVER_LIST])
#define get_server_channels(x) ((ChannelList *) (global[GET_SERVER_CHANNELS]((int) x))) #define get_server_channels (*(ChannelList *(*)(int))global[GET_SERVER_CHANNELS])
#define set_server_last_ctcp_time(x, y) ((void) (global[SET_SERVER_LAST_CTCP_TIME]((int)x, (time_t)y))) #define set_server_last_ctcp_time (*(void (*)(int , time_t))global[SET_SERVER_LAST_CTCP_TIME])
#define get_server_last_ctcp_time(x) ((time_t) (global[GET_SERVER_LAST_CTCP_TIME]((int)x))) #define get_server_last_ctcp_time (*(time_t (*)(int))global[GET_SERVER_LAST_CTCP_TIME])
#define set_server_trace_flag(x, y) ((void) (global[SET_SERVER_TRACE_FLAG]((int)x, (int)y))) #define set_server_trace_flag (*(void (*)(int , int ))global[SET_SERVER_TRACE_FLAG])
#define get_server_trace_flag(x) ((int) (global[GET_SERVER_TRACE_FLAG]((int)x))) #define get_server_trace_flag (*(int (*)(int ))global[GET_SERVER_TRACE_FLAG])
#define get_server_read(x) ((int) (global[GET_SERVER_READ]((int)x))) #define get_server_read (*(int (*)(int ))global[GET_SERVER_READ])
#define get_server_linklook(x) ((int) (global[GET_SERVER_LINKLOOK]((int)x))) #define get_server_linklook (*(int (*)(int ))global[GET_SERVER_LINKLOOK])
#define set_server_linklook(x, y) ((void) (global[SET_SERVER_LINKLOOK]((int)x, (int)y))) #define set_server_linklook (*(void (*)(int , int ))global[SET_SERVER_LINKLOOK])
#define get_server_stat_flag(x) ((int) (global[GET_SERVER_STAT_FLAG]((int)x))) #define get_server_stat_flag (*(int (*)(int ))global[GET_SERVER_STAT_FLAG])
#define set_server_stat_flag(x, y) ((void) (global[SET_SERVER_STAT_FLAG]((int)x, (int)y))) #define set_server_stat_flag (*(void (*)(int , int ))global[SET_SERVER_STAT_FLAG])
#define get_server_linklook_time(x) ((time_t) (global[GET_SERVER_LINKLOOK_TIME]((int)x))) #define get_server_linklook_time (*(time_t (*)(int ))global[GET_SERVER_LINKLOOK_TIME])
#define set_server_linklook_time(x, y) ((void) (global[SET_SERVER_LINKLOOK_TIME]((int)x, (time_t)y))) #define set_server_linklook_time (*(void (*)(int , time_t))global[SET_SERVER_LINKLOOK_TIME])
#define get_server_trace_kill(x) ((int) (global[GET_SERVER_TRACE_KILL]((int)x))) #define get_server_trace_kill (*(int (*)(int ))global[GET_SERVER_TRACE_KILL])
#define set_server_trace_kill(x, y) ((void) (global[SET_SERVER_TRACE_KILL]((int)x, (int)y))) #define set_server_trace_kill (*(void (*)(int , int ))global[SET_SERVER_TRACE_KILL])
#define add_server_channels(x, y) ((void) (global[ADD_SERVER_CHANNELS]((int)x, (ChannelList *)y))) #define add_server_channels (*(void (*)(int, ChannelList *))global[ADD_SERVER_CHANNELS])
#define set_server_channels(x, y) ((void) (global[SET_SERVER_CHANNELS]((int)x, (ChannelList *)y))) #define set_server_channels (*(void (*)(int, ChannelList *))global[SET_SERVER_CHANNELS])
#define send_msg_to_channels(x, y, z) ((void) (global[SEND_MSG_TO_CHANNELS]((ChannelList *)x, (int)y, (char *)z))) #define send_msg_to_channels (*(void (*)(ChannelList *, int, char *))global[SEND_MSG_TO_CHANNELS])
#define send_msg_to_nicks(x, y, z) ((void) (global[SEND_MSG_TO_CHANNELS]((NickList *)x, (int)y, (char *)z))) #define send_msg_to_nicks (*(void (*)(ChannelList *, int, char *))global[SEND_MSG_TO_NICKS])
#define is_server_queue() ((int) (global[IS_SERVER_QUEUE]())) #define is_server_queue (*(int (*)(void ))global[IS_SERVER_QUEUE])
/* sockets */ /* sockets */
#define add_socketread(a, b, c, d, x, y) ((int) (global[ADD_SOCKETREAD]((int)a, (int)b, (unsigned long)c, (char *)d, (void *)x, (void *)y))) #define add_socketread (*(int (*)(int, int, unsigned long, char *, void (*)(int), void (*)(int)))global[ADD_SOCKETREAD])
#define add_sockettimeout(x, y, z) ((int) (global[ADD_SOCKETTIMEOUT]((int)x, (time_t)y, (void *)z))) #define add_sockettimeout (*(void (*)(int , time_t, void *))global[ADD_SOCKETTIMEOUT])
#define close_socketread(x) ((void) (global[CLOSE_SOCKETREAD]((int)x))) #define close_socketread (*(void (*)(int ))global[CLOSE_SOCKETREAD])
#define get_socket(x) ((SocketList *) (global[GET_SOCKET]((int)x))) #define get_socket (*(SocketList *(*)(int ))global[GET_SOCKET])
#define set_socketflags(x, y) ((void) (global[SET_SOCKETFLAGS]((int)x, (unsigned long)y))) #define set_socketflags (*(unsigned long (*)(int , unsigned long ))global[SET_SOCKETFLAGS])
#define get_socketflags(x) ((unsigned long) (global[GET_SOCKETFLAGS]((int)x))) #define get_socketflags (*(unsigned long (*)(int ))global[GET_SOCKETFLAGS])
#define check_socket(x) ((int) (global[CHECK_SOCKET]((int)x))) #define check_socket (*(int (*)(int ))global[CHECK_SOCKET])
#define read_sockets(x, y, z) ((int) (global[READ_SOCKETS]((int)x, (char *)y, (int)z))) #define read_sockets (*(int (*)(int , unsigned char *, int ))global[READ_SOCKETS])
#define write_sockets(x, y, z, a) ((int) (global[WRITE_SOCKETS]((int)x, (char *)y, (int)z, (int)a))) #define write_sockets (*(int (*)(int , unsigned char *, int , int ))global[WRITE_SOCKETS])
#define get_max_fd() ((int) (global[GET_MAX_FD]())) #define get_max_fd (*(int (*)(void ))global[GET_MAX_FD])
#define new_close(x) ((int) (global[NEW_CLOSE]((int)x))) #define new_close (*(int (*)(int ))global[NEW_CLOSE])
#define new_open(x) ((int) (global[NEW_OPEN]((int)x))) #define new_open (*(int (*)(int ))global[NEW_OPEN])
#define dgets(x, y, z, l, m) ((int) (global[DGETS]((char *)x, (int)y, (int)z, (int)l, (void *)m))) #define dgets (*(int (*)(char *, int , int , int , void *))global[DGETS])
#define get_socketinfo(a) ((void *) (global[GET_SOCKETINFO]((int)a))) #define get_socketinfo (*(void *(*)(int ))global[GET_SOCKETINFO])
#define set_socketinfo(a, b) ((void) (global[SET_SOCKETINFO]((int)a, (void *)b))) #define set_socketinfo (*(void (*)(int , void *))global[SET_SOCKETINFO])
#define set_socket_write(a) ((int) (global[SET_SOCKETWRITE]((int)a))) #define set_socket_write (*(int (*)(int ))global[SET_SOCKETWRITE])
/* flood.c */ /* flood.c */
#define is_other_flood(x, y, z, a) ((int) (global[IS_OTHER_FLOOD]((ChannelList *)x, (NickList *)y, (int)z, (int *)a))) #define is_other_flood (*(int (*)(ChannelList *, NickList *, int, int *))global[IS_OTHER_FLOOD])
#define check_flooding(x, y, z, a) ((int) (global[CHECK_FLOODING]((char *)x, (int)y, (char *)z, (char *)a))) #define check_flooding (*(int (*)(char *, int , char *, char *))global[CHECK_FLOODING])
#define flood_prot(x, y, z, a, b, c) ((int) (global[FLOOD_PROT]((char *)x, (char *)y, (char *)z, (int)a, (int)b, (char *)c))) #define flood_prot (*(int (*)(char *, char *, char *, int , int , char *))global[FLOOD_PROT])
/* expr.c */ /* expr.c */
#define next_unit(a, b, c, d) ((char *) (global[NEXT_UNIT]((char *)a, (char *)b, (int *)c, (int)d))) #define next_unit (*(char *(*)(char *, const char *, int *, int ))global[NEXT_UNIT])
#define parse_inline(x, y, z) ((char *) (global[PARSE_INLINE]((char *)x, (char *)y, (int *)z))) #define parse_inline (*(char *(*)(char *, const char *, int *))global[PARSE_INLINE])
#define expand_alias(a, b, c, d) ((char *) (global[EXPAND_ALIAS]((char *)a, (char *)b, (int *)c, (char **)d))) #define expand_alias (*(char *(*)(const char *, const char *, int *, char **))global[EXPAND_ALIAS])
#define alias_special_char(a, b, c, d, e) ((char *) (global[ALIAS_SPECIAL_CHAR]((char **)a, (char *)b, (char *)c, (char *)d, (int *)e))) #define alias_special_char (*(char *(*)(char **, char *, const char *, char *, int *))global[ALIAS_SPECIAL_CHAR])
#define parse_line(a, b, c, e, f, g) ((void) (global[PARSE_LINE]((char *)a, (char *)b, (char *)c, (int)e, (int)f, (int)g))) #define parse_line (*(void (*)(const char *, char *, const char *, int , int , int ))global[PARSE_LINE])
#define parse_command(a, b, c) ((void) (global[PARSE_COMMAND_FUNC]((char *)a, (int)b, (char *)c))) #define parse_command (*(int (*)(char *, int , char *))global[PARSE_COMMAND_FUNC])
#define make_local_stack(a) ((void) (global[MAKE_LOCAL_STACK]((char *)a))) #define make_local_stack (*(void (*)(char *))global[MAKE_LOCAL_STACK])
#define destroy_local_stack() ((void (*)(void)) (global[DESTROY_LOCAL_STACK]))() #define destroy_local_stack (*(void (*)(void ))global[DESTROY_LOCAL_STACK])
/* dcc.c */ /* dcc.c */
#define dcc_create(a, b, c, d, e, f, g, h) ((DCC_int *) (global[DCC_CREATE_FUNC]((char *)a, (char *)b, (char *)c, (unsigned long)d, (int)e, (int)f, (unsigned long)g, (void (*) (int))h))) #define dcc_create (*(DCC_int *(*)(char *, char *, char *, unsigned long, int, int, unsigned long, void (*)(int)))global[DCC_CREATE_FUNC])
#define find_dcc(a, b, c, d, e, f, g) ((SocketList *) (global[FIND_DCC_FUNC]((char *)a, (char *)b, (char *)c, (int)d, (int)e, (int)f, (int)g))) #define find_dcc (*(SocketList *(*)(char *, char *, char *, int, int, int, int))global[FIND_DCC_FUNC])
#define erase_dcc_info ((void (*)()) global[ERASE_DCC_INFO]) #define erase_dcc_info (*(void (*)(int, int, char *, ...))global[ERASE_DCC_INFO])
#define add_dcc_bind(a, x, b, c, d, e, f) ((int) (global[ADD_DCC_BIND]((char *)a, (char *)x, (void *)b,(void *)c,(void *)d,(void *)e,(void *)f))) #define add_dcc_bind (*(int (*)(char *, char *, void *, void *, void *, void *, void *))global[ADD_DCC_BIND])
#define remove_dcc_bind(x, y) ((int) (global[REMOVE_DCC_BIND]((char *)x, (int)y))) #define remove_dcc_bind (*(int (*)(char *, int ))global[REMOVE_DCC_BIND])
#define remove_all_dcc_binds(x) ((int) (global[REMOVE_ALL_DCC_BINDS])((char *)x)) #define remove_all_dcc_binds (*(int (*)(char *))global[REMOVE_ALL_DCC_BINDS])
#define get_active_count ((int (*)(void)) (global[GET_ACTIVE_COUNT])) #define get_active_count (*(int (*)(void ))global[GET_ACTIVE_COUNT])
#define get_num_queue ((int (*)(void)) (global[GET_NUM_QUEUE])) #define get_num_queue (*(int (*)(void ))global[GET_NUM_QUEUE])
#define add_to_queue(x, y, z) ((int) (global[ADD_TO_QUEUE]((char *)x, (char *)y, (pack *)z))) #define add_to_queue (*(int (*)(char *, char *, pack *))global[ADD_TO_QUEUE])
#define dcc_filesend(x, y) ((void) (global[DCC_FILESEND]((char *)x, (char *)y))) #define dcc_filesend (*(void (*)(char *, char *))global[DCC_FILESEND])
#define dcc_resend(x, y) ((void) (global[DCC_RESEND]((char *)x, (char *)y))) #define dcc_resend (*(void (*)(char *, char *))global[DCC_RESEND])
/* irc.c */ /* irc.c */
#define irc_exit ((void (*)()) (global[IRC_EXIT_FUNC])) #define irc_exit (*(void (*)(int, char *, char *, ...))global[IRC_EXIT_FUNC])
#define io(x) ((void) (global[IRC_IO_FUNC]((char *)x))) #define io (*(void (*)(const char *))global[IRC_IO_FUNC])
/* commands.c */ /* commands.c */
#define find_command(x, y) ( (IrcCommand *)(global[FIND_COMMAND_FUNC]((char *)x, (int *)y))) #define find_command (*(IrcCommand *(*)(char *, int *))global[FIND_COMMAND_FUNC])
#define lock_stack_frame() ((void (*)(void)) (global[LOCK_STACK_FRAME]))() #define lock_stack_frame (*(void (*)(void ))global[LOCK_STACK_FRAME])
#define unlock_stack_frame() ((void (*) (void)) (global[UNLOCK_STACK_FRAME]))() #define unlock_stack_frame (*(void (*)(void ))global[UNLOCK_STACK_FRAME])
/* who.c */ /* who.c */
#define userhostbase ((void (*)())global[USERHOSTBASE]) #define userhostbase (*(void (*)(char *, void (*)(UserhostItem *, char *, char *), int, char *, ...))global[USERHOSTBASE])
#define isonbase ((void (*)())global[ISONBASE]) #define isonbase (*(void (*)(char *, void (*)(char *, char *)))global[ISONBASE])
#define whobase ((void (*)())global[WHOBASE]) #define whobase (*(void (*)(char *, void (*)(WhoEntry *, char *, char **), void (*)(WhoEntry *, char *, char **), char *, ...))global[WHOBASE])
#define add_to_window_list(x, y) ((int) (global[ADD_TO_WINDOW_LIST]((struct ScreenStru *)x, (Window *)y))) #define add_to_window_list (*(Window *(*)(struct ScreenStru *, Window *))global[ADD_TO_WINDOW_LIST])
/* /*
* Rest of these are all variables of various sorts. * Rest of these are all variables of various sorts.

View File

@@ -74,7 +74,7 @@ void move_window_channels (Window *);
void reassign_window_channels (Window *); void reassign_window_channels (Window *);
void check_channel_limits(); void check_channel_limits();
void BX_clear_bans(ChannelList *); void BX_clear_bans(ChannelList *);
char *BX_compress_modes(ChannelList *, int, char *, char*); char *BX_do_compress_modes(ChannelList *, int, char *, char*);
int BX_got_ops(int, ChannelList *); int BX_got_ops(int, ChannelList *);
void BX_flush_channel_stats (void); void BX_flush_channel_stats (void);
char *BX_get_channel_bans(char *, int, int); char *BX_get_channel_bans(char *, int, int);

View File

@@ -709,7 +709,7 @@ typedef struct WindowStru
int in_more; int in_more;
int save_hold_mode; int save_hold_mode;
int mangler; int mangler;
void (*update_window_status) (struct WindowStru *); void (*update_status) (struct WindowStru *);
void (*update_input) (struct WindowStru *); void (*update_input) (struct WindowStru *);
} Window; } Window;
@@ -939,7 +939,7 @@ typedef struct channel_stru
int limit; /* max users for the channel */ int limit; /* max users for the channel */
time_t limit_time; /* time of last limit set */ time_t limit_time; /* time of last limit set */
char *key; /* key for this channel */ char *key; /* key for this channel */
char chop; /* true if you are chop */ char have_op; /* true if you are a channel op */
char hop; /* true if you are a half op */ char hop; /* true if you are a half op */
char voice; /* true if you are voice */ char voice; /* true if you are voice */
char bound; /* true if channel is bound */ char bound; /* true if channel is bound */

View File

@@ -62,7 +62,6 @@
void BX_set_prompt_by_refnum (unsigned, char *); void BX_set_prompt_by_refnum (unsigned, char *);
char *BX_get_prompt_by_refnum (unsigned); char *BX_get_prompt_by_refnum (unsigned);
char *BX_get_target_by_refnum (unsigned); char *BX_get_target_by_refnum (unsigned);
const char *BX_query_nick (void);
void BX_set_query_nick (char *, char *, char *); void BX_set_query_nick (char *, char *, char *);
int BX_is_current_channel (char *, int, int); int BX_is_current_channel (char *, int, int);
const char *BX_set_current_channel_by_refnum (unsigned, char *); const char *BX_set_current_channel_by_refnum (unsigned, char *);
@@ -76,7 +75,6 @@ const char *BX_set_current_channel_by_refnum (unsigned, char *);
int BX_get_window_server (unsigned); int BX_get_window_server (unsigned);
void BX_set_window_server (int, int, int); void BX_set_window_server (int, int, int);
int windows_connected_to_server (int); int windows_connected_to_server (int);
void window_close_server (int);
void BX_set_level_by_refnum (unsigned, unsigned long); void BX_set_level_by_refnum (unsigned, unsigned long);
void BX_message_to (unsigned long); void BX_message_to (unsigned long);
@@ -108,7 +106,7 @@ const char *BX_set_current_channel_by_refnum (unsigned, char *);
void BX_scrollback_forwards (char, char *); void BX_scrollback_forwards (char, char *);
void BX_scrollback_end (char, char *); void BX_scrollback_end (char, char *);
void BX_scrollback_start (char, char *); void BX_scrollback_start (char, char *);
void BX_hold_mode (Window *, int, int); void BX_set_hold_mode (Window *, int, int);
void BX_unstop_all_windows (char, char *); void BX_unstop_all_windows (char, char *);
void BX_reset_line_cnt (Window *, char *, int); void BX_reset_line_cnt (Window *, char *, int);
void BX_toggle_stop_screen (char, char *); void BX_toggle_stop_screen (char, char *);
@@ -126,7 +124,6 @@ const char *BX_set_current_channel_by_refnum (unsigned, char *);
Window *BX_get_window_by_desc (const char *); Window *BX_get_window_by_desc (const char *);
char *BX_get_nicklist_by_window (Window *); /* XXX */ char *BX_get_nicklist_by_window (Window *); /* XXX */
void BX_set_scrollback_size (Window *, char *, int); void BX_set_scrollback_size (Window *, char *, int);
void BX_make_window_current (Window *);
Window *window_query (Window *, char **, char *); Window *window_query (Window *, char **, char *);
int BX_unhold_windows (void); int BX_unhold_windows (void);
void free_window (Window *); void free_window (Window *);
@@ -135,7 +132,6 @@ const char *BX_set_current_channel_by_refnum (unsigned, char *);
char *BX_get_status_by_refnum (unsigned , unsigned); char *BX_get_status_by_refnum (unsigned , unsigned);
void BX_unclear_window_by_refnum (unsigned); void BX_unclear_window_by_refnum (unsigned);
void BX_set_screens_current_window (Screen *, Window *);
void BX_clear_scrollback (Window *); void BX_clear_scrollback (Window *);
void BX_clear_window (Window *window); void BX_clear_window (Window *window);
void BX_repaint_window (Window *, int, int); void BX_repaint_window (Window *, int, int);
@@ -146,8 +142,6 @@ const char *BX_set_current_channel_by_refnum (unsigned, char *);
void BX_free_formats (Window *); void BX_free_formats (Window *);
void BX_goto_window (Screen *, int); void BX_goto_window (Screen *, int);
void BX_update_window_status_all (void); void BX_update_window_status_all (void);
const char *BX_query_host (void);
const char *BX_query_cmd (void);
void BX_window_check_servers (int); void BX_window_check_servers (int);
int windows_connected_to_server (int); int windows_connected_to_server (int);
void window_change_server (int, int); void window_change_server (int, int);

View File

@@ -743,7 +743,7 @@ void destroy_arglist (ArgList *arglist)
new_free(&arglist->vars[i]); new_free(&arglist->vars[i]);
new_free(&arglist->defaults[i]); new_free(&arglist->defaults[i]);
} }
new_free((char **)&arglist); new_free(&arglist);
} }
void prepare_alias_call (void *al, char **stuff) void prepare_alias_call (void *al, char **stuff)
@@ -1707,7 +1707,7 @@ char ** glob_cmd_alias (char *name, int *howmany)
len = strlen(name); len = strlen(name);
*howmany = 0; *howmany = 0;
matches = RESIZE(matches, char *, matches_size); RESIZE(matches, char *, matches_size);
for (cnt = 0; cnt < cmd_alias.max; cnt++) for (cnt = 0; cnt < cmd_alias.max; cnt++)
{ {
@@ -1749,7 +1749,7 @@ char ** glob_assign_alias (char *name, int *howmany)
len = strlen(name); len = strlen(name);
*howmany = 0; *howmany = 0;
matches = RESIZE(matches, char *, matches_size); RESIZE(matches, char *, matches_size);
for (cnt = 0; cnt < var_alias.max; cnt++) for (cnt = 0; cnt < var_alias.max; cnt++)
{ {
@@ -1790,7 +1790,7 @@ char ** pmatch_cmd_alias (char *name, int *howmany)
len = strlen(name); len = strlen(name);
*howmany = 0; *howmany = 0;
matches = RESIZE(matches, char *, matches_size); RESIZE(matches, char *, matches_size);
for (cnt = 0; cnt < cmd_alias.max; cnt++) for (cnt = 0; cnt < cmd_alias.max; cnt++)
{ {
@@ -1826,7 +1826,7 @@ char ** pmatch_assign_alias (char *name, int *howmany)
len = strlen(name); len = strlen(name);
*howmany = 0; *howmany = 0;
matches = RESIZE(matches, char *, matches_size); RESIZE(matches, char *, matches_size);
for (cnt = 0; cnt < var_alias.max; cnt++) for (cnt = 0; cnt < var_alias.max; cnt++)
{ {
@@ -1873,7 +1873,7 @@ char ** get_subarray_elements (char *root, int *howmany, int type)
len = strlen(root); len = strlen(root);
*howmany = 0; *howmany = 0;
matches = RESIZE(matches, char *, matches_size); RESIZE(matches, char *, matches_size);
for (cnt = 0; cnt < as->max; cnt++) for (cnt = 0; cnt < as->max; cnt++)
{ {
len2 = strlen(as->list[cnt]->name); len2 = strlen(as->list[cnt]->name);

View File

@@ -280,21 +280,21 @@ extern void move_index (an_array *array, long oldindex, long newindex)
*/ */
extern long find_index (an_array *array, long item) extern long find_index (an_array *array, long item)
{ {
long search = 0; long i = 0;
if (array->size >= ARRAY_THRESHOLD) if (array->size >= ARRAY_THRESHOLD)
{ {
search = find_item(*array, array->item[item]); i = find_item(*array, array->item[item]);
while (search >= 0 && !strcmp(array->item[array->index[search]], array->item[item])) while (i >= 0 && !strcmp(array->item[array->index[i]], array->item[item]))
search--; i--;
search++; i++;
} }
while(array->index[search] != item && search < array->size) while(array->index[i] != item && i < array->size)
search++; i++;
if (search == array->size) if (i == array->size)
say("ERROR in find_index()"); say("ERROR in find_index()");
return search; return i;
} }
/* /*
@@ -350,7 +350,7 @@ extern void delete_array (char *name)
} }
array_info.item = (char**)RESIZE(array_info.item, char *, array_info.size); array_info.item = (char**)RESIZE(array_info.item, char *, array_info.size);
array_info.index = (long *)RESIZE(array_info.index, long, array_info.size); array_info.index = (long *)RESIZE(array_info.index, long, array_info.size);
array_array = (an_array *)RESIZE(array_array, an_array, array_info.size); RESIZE(array_array, an_array, array_info.size);
} }
else else
{ {
@@ -680,7 +680,7 @@ BUILT_IN_FUNCTION(function_setitem)
if (item == 0) if (item == 0)
{ {
if (array_info.size) if (array_info.size)
array_array = (an_array*)RESIZE(array_array, an_array, (array_info.size + 1)); RESIZE(array_array, an_array, (array_info.size + 1));
else else
array_array = (an_array*)new_malloc(sizeof(an_array)); array_array = (an_array*)new_malloc(sizeof(an_array));
array = &array_array[array_info.size]; array = &array_array[array_info.size];

View File

@@ -776,7 +776,7 @@ DCC_int *n;
ch = lookup_channel(chan, from_server, 0); ch = lookup_channel(chan, from_server, 0);
else else
ch = lookup_channel(get_current_channel_by_refnum(0), from_server, 0); ch = lookup_channel(get_current_channel_by_refnum(0), from_server, 0);
if (!nick || !ch || !ch->chop) { dcc_printf(idx, "No Nick specified or not on that channel or not chop\n"); return TCL_ERROR; } if (!nick || !ch || !ch->have_op) { dcc_printf(idx, "No Nick specified, not on that channel or not channel op\n"); return TCL_ERROR; }
while ((n1 = next_in_comma_list(nick, &nick))) while ((n1 = next_in_comma_list(nick, &nick)))
{ {
if (!n1 || !*n1) break; if (!n1 || !*n1) break;

View File

@@ -1128,7 +1128,7 @@ BUILT_IN_COMMAND(my_clear)
if (scrollback) if (scrollback)
clear_scrollback(get_window_by_refnum(0)); clear_scrollback(get_window_by_refnum(0));
if (unhold) if (unhold)
hold_mode(NULL, OFF, 1); set_hold_mode(NULL, OFF, 1);
clear_window_by_refnum(0); clear_window_by_refnum(0);
} }
#if defined(WINNT) || defined(__EMX__) #if defined(WINNT) || defined(__EMX__)
@@ -3393,7 +3393,7 @@ extern int MODE_TOPIC;
my_send_to_server(server, "TOPIC %s :", chan->channel); my_send_to_server(server, "TOPIC %s :", chan->channel);
return; return;
} }
if (arg && (!(chan->mode & MODE_TOPIC) || chan->chop)) if (arg && (!(chan->mode & MODE_TOPIC) || chan->have_op))
{ {
if (is_channel(arg)) if (is_channel(arg))
{ {
@@ -3429,7 +3429,7 @@ BUILT_IN_COMMAND(do_mtopic)
int count = 0; int count = 0;
for (chan = get_server_channels(from_server); chan; chan = chan->next) for (chan = get_server_channels(from_server); chan; chan = chan->next)
{ {
if (!chan->chop) if (!chan->have_op)
continue; continue;
send_to_server("TOPIC %s :%s", chan->channel, args ? args : empty_string); send_to_server("TOPIC %s :%s", chan->channel, args ? args : empty_string);
count++; count++;
@@ -5020,7 +5020,7 @@ BUILT_IN_COMMAND(sendlinecmd)
void irc_clear_screen(char key, char *ptr) void irc_clear_screen(char key, char *ptr)
{ {
hold_mode(NULL, OFF, 1); set_hold_mode(NULL, OFF, 1);
my_clear(NULL, empty_string, empty_string, NULL); my_clear(NULL, empty_string, empty_string, NULL);
} }
@@ -5117,7 +5117,7 @@ BUILT_IN_COMMAND(me)
} }
else if (!my_stricmp(command, "qme")) else if (!my_stricmp(command, "qme"))
{ {
target = (char *)query_nick(); target = current_window->query_nick;
if (!target) if (!target)
{ {
Window *tmp = NULL; Window *tmp = NULL;

View File

@@ -406,7 +406,7 @@ char buffer[BIG_BUFFER_SIZE+1];
} }
modelock++; modelock++;
} }
if (chan && chan->chop && buffer) if (chan && chan->have_op && buffer)
send_to_server("MODE %s %s", chan->channel, buffer); send_to_server("MODE %s %s", chan->channel, buffer);
new_free(&save); new_free(&save);
new_free(&save1); new_free(&save1);

View File

@@ -1267,7 +1267,7 @@ void set_channel_limit(ChannelList *channel, int currentlimit, int add, int numu
void check_channel_limit(ChannelList *chan) void check_channel_limit(ChannelList *chan)
{ {
if (chan && chan->csets && chan->csets->set_auto_limit && chan->chop) if (chan && chan->csets && chan->csets->set_auto_limit && chan->have_op)
{ {
int count = 0; int count = 0;
NickList *nick; NickList *nick;

View File

@@ -598,7 +598,7 @@ int server;
return NULL; return NULL;
} }
sprintf(ban, "%s!%s", from, FromUserHost); sprintf(ban, "%s!%s", from, FromUserHost);
if (chan && chan->chop) if (chan && chan->have_op)
{ {
if ((b = ban_is_on_channel(ban, chan))) if ((b = ban_is_on_channel(ban, chan)))
{ {

View File

@@ -198,28 +198,28 @@ typedef struct
DCC_dllcommands *dcc_dllcommands = NULL; DCC_dllcommands *dcc_dllcommands = NULL;
DCC_COMMAND(dcc_chat); void dcc_chat(char *command, char *args);
DCC_COMMAND(BX_dcc_filesend); void BX_dcc_filesend(char *command, char *args);
DCC_COMMAND(BX_dcc_resend); void BX_dcc_resend(char *command, char *args);
DCC_COMMAND(dcc_getfile); void dcc_getfile(char *command, char *args);
DCC_COMMAND(dcc_regetfile); void dcc_regetfile(char *command, char *args);
DCC_COMMAND(dcc_glist); void dcc_glist(char *command, char *args);
DCC_COMMAND(dcc_resume); void dcc_resume(char *command, char *args);
DCC_COMMAND(dcc_rename); void dcc_rename(char *command, char *args);
DCC_COMMAND(dcc_show_active); void dcc_show_active(char *command, char *args);
DCC_COMMAND(dcc_set_quiet); void dcc_set_quiet(char *command, char *args);
DCC_COMMAND(dcc_set_paths); void dcc_set_paths(char *command, char *args);
DCC_COMMAND(dcc_tog_rename); void dcc_tog_rename(char *command, char *args);
DCC_COMMAND(dcc_tog_resume); void dcc_tog_resume(char *command, char *args);
DCC_COMMAND(dcc_overwrite_toggle); void dcc_overwrite_toggle(char *command, char *args);
DCC_COMMAND(dcc_tog_auto); void dcc_tog_auto(char *command, char *args);
DCC_COMMAND(dcc_stats); void dcc_stats(char *command, char *args);
DCC_COMMAND(dcc_close); void dcc_close(char *command, char *args);
DCC_COMMAND(dcc_closeall); void dcc_closeall(char *command, char *args);
DCC_COMMAND(dcc_help1); void dcc_help1(char *command, char *args);
DCC_COMMAND(dcc_exempt); void dcc_exempt(char *command, char *args);
DCC_COMMAND(dcc_ftpopen); void dcc_ftpopen(char *command, char *args);
DCC_commands dcc_commands[] = DCC_commands dcc_commands[] =
{ {
@@ -1516,7 +1516,7 @@ char *user = NULL;
return user; return user;
} }
DCC_COMMAND(dcc_chat) void dcc_chat(char *command, char *args)
{ {
char *user; char *user;
char *nick; char *nick;
@@ -2005,7 +2005,7 @@ void real_file_send(char *nick, char *filename, char *passwd, char *port, int td
new->blocksize = blocksize; new->blocksize = blocksize;
} }
DCC_COMMAND(BX_dcc_filesend) void BX_dcc_filesend(char *command, char *args)
{ {
char *user; char *user;
char *nick; char *nick;
@@ -2044,7 +2044,7 @@ DCC_COMMAND(BX_dcc_filesend)
doing_multi = 0; doing_multi = 0;
} }
DCC_COMMAND(BX_dcc_resend) void BX_dcc_resend(char *command, char *args)
{ {
char *user; char *user;
char *nick; char *nick;
@@ -2205,7 +2205,7 @@ char *nick;
} }
} }
DCC_COMMAND(dcc_getfile) void dcc_getfile(char *command, char *args)
{ {
char *user; char *user;
@@ -2284,7 +2284,7 @@ char *nick;
} }
} }
DCC_COMMAND(dcc_regetfile) void dcc_regetfile(char *command, char *args)
{ {
char *user; char *user;
char *passwd = NULL; char *passwd = NULL;
@@ -2354,7 +2354,7 @@ static char *_dcc_offer[12] = {"%K
} }
DCC_COMMAND(dcc_glist) void dcc_glist(char *command, char *args)
{ {
char *dformat = char *dformat =
"#$[3]0 $[6]1%Y$2%n $[11]3 $[25]4 $[7]5 $6-"; "#$[3]0 $[6]1%Y$2%n $[11]3 $[25]4 $[7]5 $6-";
@@ -2985,7 +2985,7 @@ BUILT_IN_COMMAND(chat)
} }
DCC_COMMAND(dcc_exempt) void dcc_exempt(char *command, char *args)
{ {
int remove; int remove;
List *nptr = NULL; List *nptr = NULL;
@@ -3314,7 +3314,7 @@ unsigned long flags;
return; return;
} }
DCC_COMMAND(dcc_close) void dcc_close(char *command, char *args)
{ {
char *type; char *type;
char *file; char *file;
@@ -3413,7 +3413,7 @@ int num = -1;
return; return;
} }
DCC_COMMAND(dcc_closeall) void dcc_closeall(char *command, char *args)
{ {
close_all_dcc(); close_all_dcc();
} }
@@ -3499,7 +3499,7 @@ struct stat sb;
new_free(&tmp); new_free(&tmp);
} }
DCC_COMMAND(dcc_resume) void dcc_resume(char *command, char *args)
{ {
char *user, *nick; char *user, *nick;
char *filename = NULL; char *filename = NULL;
@@ -3596,7 +3596,7 @@ int blocksize = 0;
} }
#endif #endif
DCC_COMMAND(dcc_help1) void dcc_help1(char *command, char *args)
{ {
char *comm; char *comm;
int i, c; int i, c;
@@ -4061,7 +4061,7 @@ FILE *f;
return dir ? m_strdup(dir) : NULL; return dir ? m_strdup(dir) : NULL;
} }
DCC_COMMAND(dcc_ftpopen) void dcc_ftpopen(char *command, char *args)
{ {
char u[] = "anonymous"; char u[] = "anonymous";
char p[] = "- bxuser@"; char p[] = "- bxuser@";
@@ -4155,7 +4155,7 @@ SocketList *s;
} }
DCC_COMMAND(dcc_rename) void dcc_rename(char *command, char *args)
{ {
DCC_List *tmp; DCC_List *tmp;
DCC_int *n; DCC_int *n;

View File

@@ -6,6 +6,8 @@
* See the COPYRIGHT file, or do a HELP IRCII COPYRIGHT * See the COPYRIGHT file, or do a HELP IRCII COPYRIGHT
*/ */
#define _GNU_SOURCE /* Needed for strsignal from string.h on GLIBC systems */
#include "irc.h" #include "irc.h"
static char cvsrevision[] = "$Id$"; static char cvsrevision[] = "$Id$";
CVS_REVISION(exec_c) CVS_REVISION(exec_c)
@@ -86,7 +88,7 @@ extern char *next_expr (char **, char);
/* /*
* A nice array of the possible signals. Used by the coredump trapping * A nice array of the possible signals. Used by the coredump trapping
* routines and in the exec.c package * routines and in the exec.c package.
*/ */
#if !defined(SYS_SIGLIST_DECLARED) && !defined(_SYS_SIGLIST_DECLARED) && !defined(__QNX__) #if !defined(SYS_SIGLIST_DECLARED) && !defined(_SYS_SIGLIST_DECLARED) && !defined(__QNX__)
#if defined(WINNT) || defined(__EMX__) #if defined(WINNT) || defined(__EMX__)
@@ -96,7 +98,7 @@ char *sys_siglist[] = { "ZERO", "SIGINT", "SIGKILL", "SIGPIPE", "SIGFPE",
"SIGBUS", "SIGLOST", "SIGSTOP", "SIGABRT", "SIGUSR1", "SIGBUS", "SIGLOST", "SIGSTOP", "SIGABRT", "SIGUSR1",
"SIGUSR2", "SIGCHLD", "SIGTTOU", "SIGTTIN", "SIGCONT" }; "SIGUSR2", "SIGCHLD", "SIGTTOU", "SIGTTIN", "SIGCONT" };
#elif defined(__GLIBC__) #elif defined(__GLIBC__)
#define _GNU_SOURCE #define USING_STRSIGNAL
/* use strsignal() from <string.h> */ /* use strsignal() from <string.h> */
#include <string.h> #include <string.h>
#else #else
@@ -432,7 +434,7 @@ BUILT_IN_COMMAND(execcmd)
*/ */
for (sig = 1; sig < NSIG-1; sig++) for (sig = 1; sig < NSIG-1; sig++)
{ {
#if defined(_GNU_SOURCE) #if defined(USING_STRSIGNAL)
if (strsignal(sig) && !my_strnicmp(strsignal(sig), flag, len)) if (strsignal(sig) && !my_strnicmp(strsignal(sig), flag, len))
#else #else
if (sys_siglist[sig] && !my_strnicmp(sys_siglist[sig], flag, len)) if (sys_siglist[sig] && !my_strnicmp(sys_siglist[sig], flag, len))
@@ -1162,7 +1164,7 @@ static void cleanup_dead_processes (void)
if (dead->termsig > 0 && dead->termsig < NSIG) if (dead->termsig > 0 && dead->termsig < NSIG)
say("Process %d (%s) terminated with signal %s (%d)", say("Process %d (%s) terminated with signal %s (%d)",
dead->index, dead->name, dead->index, dead->name,
#if defined(_GNU_SOURCE) #if defined(USING_STRSIGNAL)
strsignal(dead->termsig), strsignal(dead->termsig),
#else #else
sys_siglist[dead->termsig], sys_siglist[dead->termsig],
@@ -1260,7 +1262,7 @@ void kill_process (int kill_index, int sig)
} }
say("Sending signal %s (%d) to process %d: %s", say("Sending signal %s (%d) to process %d: %s",
#if defined(_GNU_SOURCE) #if defined(USING_STRSIGNAL)
strsignal(sig), strsignal(sig),
#else #else
sys_siglist[sig], sys_siglist[sig],

View File

@@ -1518,9 +1518,7 @@ char *BX_alias_special_char(char **buffer, char *ptr, const char *args, char *qu
pad_char = 0; pad_char = 0;
register unsigned char c; register unsigned char c;
int upper, int length;
lower,
length;
length = 0; length = 0;
if ((c = *ptr) == LEFT_BRACKET) if ((c = *ptr) == LEFT_BRACKET)
@@ -1723,6 +1721,8 @@ register unsigned char c;
*/ */
if (isdigit(c) || (c == '-') || c == '~') if (isdigit(c) || (c == '-') || c == '~')
{ {
int first, last;
*args_flag = 1; *args_flag = 1;
/* /*
@@ -1731,7 +1731,7 @@ register unsigned char c;
*/ */
if (c == '~') if (c == '~')
{ {
lower = upper = EOS; first = last = EOS;
ptr++; ptr++;
} }
@@ -1748,10 +1748,10 @@ register unsigned char c;
*/ */
else if (c == '-') else if (c == '-')
{ {
lower = SOS; first = SOS;
ptr++; ptr++;
upper = parse_number(&ptr); last = parse_number(&ptr);
if (upper == -1) if (last == -1)
return empty_string; /* error */ return empty_string; /* error */
} }
@@ -1761,16 +1761,16 @@ register unsigned char c;
*/ */
else else
{ {
lower = parse_number(&ptr); first = parse_number(&ptr);
if (*ptr == '-') if (*ptr == '-')
{ {
ptr++; ptr++;
upper = parse_number(&ptr); last = parse_number(&ptr);
if (upper == -1) if (last == -1)
upper = EOS; last = EOS;
} }
else else
upper = lower; last = first;
} }
/* /*
@@ -1785,7 +1785,7 @@ register unsigned char c;
if (!args) if (!args)
tmp2 = m_strdup(empty_string); tmp2 = m_strdup(empty_string);
else else
tmp2 = extract2(args, lower, upper); tmp2 = extract2(args, first, last);
TruncateAndQuote(buffer, tmp2, length, quote_em, pad_char); TruncateAndQuote(buffer, tmp2, length, quote_em, pad_char);
new_free(&tmp2); new_free(&tmp2);

View File

@@ -460,7 +460,7 @@ ChannelList *chan = NULL;
for (chan = get_server_channels(from_server); chan; chan = chan->next) for (chan = get_server_channels(from_server); chan; chan = chan->next)
if ((Nick = find_nicklist_in_channellist(nick, chan, 0))) if ((Nick = find_nicklist_in_channellist(nick, chan, 0)))
break; break;
if (chan && chan->chop && get_cset_int_var(chan->csets, CTCP_FLOOD_BAN_CSET) && Nick) if (chan && chan->have_op && get_cset_int_var(chan->csets, CTCP_FLOOD_BAN_CSET) && Nick)
{ {
if (!Nick->userlist || (Nick->userlist && !(Nick->userlist->flags & ADD_FLOOD))) if (!Nick->userlist || (Nick->userlist && !(Nick->userlist->flags & ADD_FLOOD)))
{ {
@@ -509,7 +509,7 @@ int kick_on_flood = 1;
kick_on_flood = get_cset_int_var(chan->csets, PUBFLOOD_CSET); kick_on_flood = get_cset_int_var(chan->csets, PUBFLOOD_CSET);
if (kick_on_flood && (Nick = find_nicklist_in_channellist(nick, chan, 0))) if (kick_on_flood && (Nick = find_nicklist_in_channellist(nick, chan, 0)))
{ {
if (chan->chop && (!Nick->userlist || (Nick->userlist && !(Nick->userlist->flags & ADD_FLOOD)))) if (chan->have_op && (!Nick->userlist || (Nick->userlist && !(Nick->userlist->flags & ADD_FLOOD))))
if (!nick_isop(Nick) || get_cset_int_var(chan->csets, KICK_OPS_CSET)) if (!nick_isop(Nick) || get_cset_int_var(chan->csets, KICK_OPS_CSET))
send_to_server("KICK %s %s :\002%s\002 flooder", chan->channel, nick, type); send_to_server("KICK %s %s :\002%s\002 flooder", chan->channel, nick, type);
} }
@@ -524,7 +524,7 @@ int kick_on_flood = 1;
{ {
for (chan = get_server_channels(from_server); chan; chan = chan->next) for (chan = get_server_channels(from_server); chan; chan = chan->next)
{ {
if (chan->chop && (Nick = find_nicklist_in_channellist(nick, chan, 0))) if (chan->have_op && (Nick = find_nicklist_in_channellist(nick, chan, 0)))
{ {
if ((!Nick->userlist || (Nick->userlist && !(Nick->userlist->flags & ADD_FLOOD)))) if ((!Nick->userlist || (Nick->userlist && !(Nick->userlist->flags & ADD_FLOOD))))
if (!nick_isop(Nick) || get_cset_int_var(chan->csets, KICK_OPS_CSET)) if (!nick_isop(Nick) || get_cset_int_var(chan->csets, KICK_OPS_CSET))

View File

@@ -1021,13 +1021,15 @@ IrcVariable *return_fset_var(int nummer)
} }
#endif #endif
/* This is a horrible hack so that the standard List functions can be used
* for the numeric list.
*/
int compare_number(List *item1, List *item2) int compare_number(List *item1, List *item2)
{ {
if ((int)item1->name == (int)(item2->name)) FsetNumber *real1 = (FsetNumber *)item1;
return 0; FsetNumber *real2 = (FsetNumber *)item2;
else if ((int)item1->name > (int)(item2->name))
return 1; return real1->numeric - real2->numeric;
return -1;
} }
char *find_numeric_fset(int numeric) char *find_numeric_fset(int numeric)

View File

@@ -954,7 +954,7 @@ BuiltInDllFunctions *dll = NULL;
len = strlen(name); len = strlen(name);
*cnt = 0; *cnt = 0;
matches = RESIZE(matches, char *, matches_size); RESIZE(matches, char *, matches_size);
while (built_in_functions[i].func && i <= NUMBER_OF_FUNCTIONS) while (built_in_functions[i].func && i <= NUMBER_OF_FUNCTIONS)
{ {
if (strncmp(name, built_in_functions[i].name, len) == 0) if (strncmp(name, built_in_functions[i].name, len) == 0)
@@ -965,7 +965,7 @@ BuiltInDllFunctions *dll = NULL;
if (++(*cnt) == matches_size) if (++(*cnt) == matches_size)
{ {
matches_size += 5; matches_size += 5;
matches = (char **) RESIZE(matches, char *, matches_size); RESIZE(matches, char *, matches_size);
} }
} }
else if (*cnt) else if (*cnt)
@@ -1173,7 +1173,7 @@ static char *alias_serverport (void)
static char *alias_query_nick (void) static char *alias_query_nick (void)
{ {
char *tmp; char *tmp;
return m_strdup((tmp = (char *)query_nick()) ? tmp : empty_string); return m_strdup((tmp = current_window->query_nick) ? tmp : empty_string);
} }
static char *alias_target (void) static char *alias_target (void)
@@ -1950,7 +1950,7 @@ BUILT_IN_FUNCTION(function_before, word)
if (numint < 0 && strlen(word)) if (numint < 0 && strlen(word))
pointer = word + strlen(word) - 1; pointer = word + strlen(word) - 1;
pointer = search(word, &pointer, chars, numint); pointer = strsearch(word, pointer, chars, numint);
if (!pointer) if (!pointer)
RETURN_EMPTY; RETURN_EMPTY;
@@ -1985,7 +1985,7 @@ BUILT_IN_FUNCTION(function_after, word)
if (numint < 0 && strlen(word)) if (numint < 0 && strlen(word))
pointer = word + strlen(word) - 1; pointer = word + strlen(word) - 1;
pointer = search(word, &pointer, chars, numint); pointer = strsearch(word, pointer, chars, numint);
if (!pointer || !*pointer) if (!pointer || !*pointer)
RETURN_EMPTY; RETURN_EMPTY;

View File

@@ -1189,7 +1189,7 @@ BUILT_IN_KEYBINDING(send_line)
if (!(cmdchar = get_string_var(CMDCHARS_VAR))) if (!(cmdchar = get_string_var(CMDCHARS_VAR)))
cmdchar = "/"; cmdchar = "/";
malloc_strcpy(&tmp, line); malloc_strcpy(&tmp, line);
if (line && (*line != *cmdchar) && get_int_var(NICK_COMPLETION_VAR) && !query_nick()) if (line && (*line != *cmdchar) && get_int_var(NICK_COMPLETION_VAR) && !current_window->query_nick)
{ {
char auto_comp_char; char auto_comp_char;
char *p; char *p;
@@ -1319,7 +1319,7 @@ BUILT_IN_KEYBINDING(type_text)
*/ */
BUILT_IN_KEYBINDING(clear_screen) BUILT_IN_KEYBINDING(clear_screen)
{ {
hold_mode(NULL, OFF, 1); set_hold_mode(NULL, OFF, 1);
clear_window_by_refnum(0); clear_window_by_refnum(0);
} }
@@ -1721,7 +1721,7 @@ BUILT_IN_KEYBINDING(cpu_saver_on)
BUILT_IN_KEYBINDING(input_unclear_screen) BUILT_IN_KEYBINDING(input_unclear_screen)
{ {
hold_mode(NULL, OFF, 1); set_hold_mode(NULL, OFF, 1);
unclear_window_by_refnum(0); unclear_window_by_refnum(0);
} }
@@ -2702,7 +2702,7 @@ do_more_tab:
{ {
char **completes = NULL; char **completes = NULL;
int c = 0, matches = count; int c = 0, matches = count;
completes = RESIZE(completes, char *, count+1); RESIZE(completes, char *, count+1);
if (wcount > 1) if (wcount > 1)
{ {
if (!got_space) if (!got_space)

View File

@@ -93,13 +93,13 @@ void * n_malloc (size_t size, const char *module, const char *file, const int li
/* /*
* new_free: Why do this? Why not? Saves me a bit of trouble here and there * new_free: Why do this? Why not? Saves me a bit of trouble here and there
*/ */
void * n_free(void **ptr, const char *module, const char *file, const int line) void * n_free(void *ptr, const char *module, const char *file, const int line)
{ {
if (*ptr) if (ptr)
{ {
#ifdef FREE_DEBUG #ifdef FREE_DEBUG
/* Check to make sure its not been freed before */ /* Check to make sure its not been freed before */
if (alloc_size(*ptr) == FREED_VAL) if (alloc_size(ptr) == FREED_VAL)
{ {
yell("free()ing a already free'd pointer, giving up!"); yell("free()ing a already free'd pointer, giving up!");
putlog(LOG_ALL, "*", "*** failed free %s %s (%d)", module?module:empty_string, file, line); putlog(LOG_ALL, "*", "*** failed free %s %s (%d)", module?module:empty_string, file, line);
@@ -107,42 +107,41 @@ void * n_free(void **ptr, const char *module, const char *file, const int line)
exit(1); exit(1);
} }
#endif #endif
alloc_size(*ptr) = FREED_VAL; alloc_size(ptr) = FREED_VAL;
#ifdef MEM_DEBUG #ifdef MEM_DEBUG
_free_leap(file, line, (void *)alloc_start(*ptr)); _free_leap(file, line, (void *)alloc_start(ptr));
#else #else
free((void *)alloc_start(*ptr)); free((void *)alloc_start(ptr));
#endif #endif
*ptr = NULL; ptr = NULL;
} }
return (*ptr); return ptr;
} }
void * n_realloc (void **ptr, size_t size, const char *module, const char *file, const int line) void * n_realloc (void *ptr, size_t size, const char *module, const char *file, const int line)
{ {
char *ptr2 = NULL; char *ptr2 = NULL;
if (*ptr) if (ptr)
{ {
if (size) if (size)
{ {
size_t msize = alloc_size(*ptr); size_t msize = alloc_size(ptr);
if (msize >= size) if (msize >= size)
return *ptr; return ptr;
ptr2 = n_malloc(size, module, file, line); ptr2 = n_malloc(size, module, file, line);
memmove(ptr2, *ptr, msize); memmove(ptr2, ptr, msize);
n_free(ptr, module, file, line); n_free(ptr, module, file, line);
return ((*ptr = ptr2)); return ptr2;
} }
n_free(ptr, module, file, line); return n_free(ptr, module, file, line);
return NULL;
} }
else if (size) else if (size)
ptr2 = n_malloc(size, module, file, line); ptr2 = n_malloc(size, module, file, line);
return ((*ptr = ptr2)); return ptr2;
} }
/* /*
@@ -155,14 +154,14 @@ void * n_realloc (void **ptr, size_t size, const char *module, const char *file,
char * n_malloc_strcpy (char **ptr, const char *src, const char *module, const char *file, const int line) char * n_malloc_strcpy (char **ptr, const char *src, const char *module, const char *file, const int line)
{ {
if (!src) if (!src)
return n_free((void **)ptr, module, file, line); return *ptr = n_free(*ptr, module, file, line);
if (ptr && *ptr) if (ptr && *ptr)
{ {
if (*ptr == src) if (*ptr == src)
return *ptr; return *ptr;
if (alloc_size(*ptr) > strlen(src)) if (alloc_size(*ptr) > strlen(src))
return strcpy(*ptr, src); return strcpy(*ptr, src);
n_free((void **)ptr, module, file, line); *ptr = n_free(*ptr, module, file, line);
} }
*ptr = n_malloc(strlen(src) + 1, module, file, line); *ptr = n_malloc(strlen(src) + 1, module, file, line);
return strcpy(*ptr, src); return strcpy(*ptr, src);
@@ -179,7 +178,7 @@ char * n_malloc_strcat (char **ptr, const char *src, const char *module, const c
if (!src) if (!src)
return *ptr; return *ptr;
msize = strlen(*ptr) + strlen(src) + 1; msize = strlen(*ptr) + strlen(src) + 1;
n_realloc((void **)ptr, sizeof(char)*msize, module, file, line); *ptr = n_realloc(*ptr, sizeof(char)*msize, module, file, line);
return strcat(*ptr, src); return strcat(*ptr, src);
} }
return (*ptr = n_m_strdup(src, module, file, line)); return (*ptr = n_m_strdup(src, module, file, line));
@@ -867,7 +866,7 @@ char * n_m_strcat_ues(char **dest, char *src, int unescape, const char *module,
total_length += strlen(src); total_length += strlen(src);
/* RESIZE(*dest, char, total_length + 2);*/ /* RESIZE(*dest, char, total_length + 2);*/
n_realloc((void **)dest, sizeof(char) * (total_length + 2), module, file, line); *dest = n_realloc(*dest, sizeof(char) * (total_length + 2), module, file, line);
if (z == 0) if (z == 0)
**dest = 0; **dest = 0;

View File

@@ -288,7 +288,7 @@ int kick_count = 0;
UserList *user = NULL; UserList *user = NULL;
if (channel && (tmp = lookup_channel(channel, from_server, CHAN_NOUNLINK)) && tmp->chop && tmp->max_idle && tmp->check_idle) if (channel && (tmp = lookup_channel(channel, from_server, CHAN_NOUNLINK)) && tmp->have_op && tmp->max_idle && tmp->check_idle)
{ {
NickList *nick; NickList *nick;
for (nick = next_nicklist(tmp, NULL); nick; nick = next_nicklist(tmp, nick)) for (nick = next_nicklist(tmp, NULL); nick; nick = next_nicklist(tmp, nick))
@@ -738,7 +738,7 @@ int t = 0;
} }
if (!splitter) if (!splitter)
{ {
if (chan->chop && is_other_flood(chan, nick, JOIN_FLOOD, &t)) if (chan->have_op && is_other_flood(chan, nick, JOIN_FLOOD, &t))
{ {
if (get_cset_int_var(chan->csets, JOINFLOOD_CSET) && get_cset_int_var(chan->csets, KICK_ON_JOINFLOOD_CSET) && !nick->kickcount++) if (get_cset_int_var(chan->csets, JOINFLOOD_CSET) && get_cset_int_var(chan->csets, KICK_ON_JOINFLOOD_CSET) && !nick->kickcount++)
{ {
@@ -816,7 +816,7 @@ int t = 0;
if (nick) nick->stat_dops++; if (nick) nick->stat_dops++;
} }
if (chan->chop && is_other_flood(chan, nick, DEOP_FLOOD, &t)) if (chan->have_op && is_other_flood(chan, nick, DEOP_FLOOD, &t))
{ {
if (get_cset_int_var(chan->csets, DEOP_ON_DEOPFLOOD_CSET) < get_cset_int_var(chan->csets, KICK_ON_DEOPFLOOD_CSET)) if (get_cset_int_var(chan->csets, DEOP_ON_DEOPFLOOD_CSET) < get_cset_int_var(chan->csets, KICK_ON_DEOPFLOOD_CSET))
send_to_server("MODE %s -o %s", chan->channel, nick->nick); send_to_server("MODE %s -o %s", chan->channel, nick->nick);
@@ -2184,7 +2184,6 @@ static int ar_remrequest(struct reslist *old)
{ {
for (; *s; s++) for (; *s; s++)
new_free(s); new_free(s);
new_free(&rptr->re_he.h_aliases);
} }
if (rptr->re_rinfo.ri_ptr) if (rptr->re_rinfo.ri_ptr)
new_free(&rptr->re_rinfo.ri_ptr); new_free(&rptr->re_rinfo.ri_ptr);
@@ -4794,7 +4793,7 @@ ChannelList *chan = NULL;
} }
return NULL; return NULL;
} }
if (need_op == NEED_OP && chan && !chan->chop && !chan->hop) if (need_op == NEED_OP && chan && !chan->have_op && !chan->hop)
{ {
set_display_target(chan->channel, LOG_CRAP); set_display_target(chan->channel, LOG_CRAP);
error_not_opped(chan->channel); error_not_opped(chan->channel);

View File

@@ -202,7 +202,7 @@ static int already_done = 0;
global_table[RANDOM_NUMBER] = (Function_ptr) BX_random_number; global_table[RANDOM_NUMBER] = (Function_ptr) BX_random_number;
/* words.c reg.c */ /* words.c reg.c */
global_table[SEARCH] = (Function_ptr) BX_search; global_table[STRSEARCH] = (Function_ptr) BX_strsearch;
global_table[MOVE_TO_ABS_WORD] = (Function_ptr) BX_move_to_abs_word; global_table[MOVE_TO_ABS_WORD] = (Function_ptr) BX_move_to_abs_word;
global_table[MOVE_WORD_REL] = (Function_ptr) BX_move_word_rel; global_table[MOVE_WORD_REL] = (Function_ptr) BX_move_word_rel;
global_table[EXTRACT] = (Function_ptr) BX_extract; global_table[EXTRACT] = (Function_ptr) BX_extract;
@@ -364,7 +364,6 @@ static int already_done = 0;
global_table[TRAVERSE_ALL_WINDOWS] = (Function_ptr) BX_traverse_all_windows; global_table[TRAVERSE_ALL_WINDOWS] = (Function_ptr) BX_traverse_all_windows;
global_table[ADD_TO_INVISIBLE_LIST] = (Function_ptr) BX_add_to_invisible_list; global_table[ADD_TO_INVISIBLE_LIST] = (Function_ptr) BX_add_to_invisible_list;
global_table[ADD_TO_WINDOW_LIST] = (Function_ptr) BX_add_to_window_list; global_table[ADD_TO_WINDOW_LIST] = (Function_ptr) BX_add_to_window_list;
global_table[REMOVE_WINDOW_FROM_SCREEN] = (Function_ptr) BX_remove_window_from_screen;
global_table[RECALCULATE_WINDOW_POSITIONS]= (Function_ptr) BX_recalculate_window_positions; global_table[RECALCULATE_WINDOW_POSITIONS]= (Function_ptr) BX_recalculate_window_positions;
global_table[MOVE_WINDOW] = (Function_ptr) BX_move_window; global_table[MOVE_WINDOW] = (Function_ptr) BX_move_window;
global_table[REDRAW_ALL_WINDOWS] = (Function_ptr) BX_redraw_all_windows; global_table[REDRAW_ALL_WINDOWS] = (Function_ptr) BX_redraw_all_windows;
@@ -388,9 +387,9 @@ static int already_done = 0;
global_table[STATUS_UPDATE] = (Function_ptr) BX_status_update; global_table[STATUS_UPDATE] = (Function_ptr) BX_status_update;
global_table[SET_PROMPT_BY_REFNUM] = (Function_ptr) BX_set_prompt_by_refnum; global_table[SET_PROMPT_BY_REFNUM] = (Function_ptr) BX_set_prompt_by_refnum;
global_table[GET_PROMPT_BY_REFNUM] = (Function_ptr) BX_get_prompt_by_refnum; global_table[GET_PROMPT_BY_REFNUM] = (Function_ptr) BX_get_prompt_by_refnum;
global_table[QUERY_NICK] = (Function_ptr) BX_query_nick; global_table[QUERY_NICK] = (Function_ptr) null_function; /* DEFUNCT */
global_table[QUERY_HOST] = (Function_ptr) BX_query_host; global_table[QUERY_HOST] = (Function_ptr) null_function; /* DEFUNCT */
global_table[QUERY_CMD] = (Function_ptr) BX_query_cmd; global_table[QUERY_CMD] = (Function_ptr) null_function; /* DEFUNCT */
global_table[GET_TARGET_BY_REFNUM] = (Function_ptr) BX_get_target_by_refnum; global_table[GET_TARGET_BY_REFNUM] = (Function_ptr) BX_get_target_by_refnum;
global_table[GET_TARGET_CMD_BY_REFNUM] = (Function_ptr) BX_get_target_cmd_by_refnum; global_table[GET_TARGET_CMD_BY_REFNUM] = (Function_ptr) BX_get_target_cmd_by_refnum;
global_table[GET_WINDOW_TARGET_BY_DESC] = (Function_ptr) BX_get_window_target_by_desc; global_table[GET_WINDOW_TARGET_BY_DESC] = (Function_ptr) BX_get_window_target_by_desc;
@@ -425,7 +424,7 @@ static int already_done = 0;
global_table[SCROLLBACK_BACKWARDS] = (Function_ptr) BX_scrollback_backwards; global_table[SCROLLBACK_BACKWARDS] = (Function_ptr) BX_scrollback_backwards;
global_table[SCROLLBACK_END] = (Function_ptr) BX_scrollback_end; global_table[SCROLLBACK_END] = (Function_ptr) BX_scrollback_end;
global_table[SCROLLBACK_START] = (Function_ptr) BX_scrollback_start; global_table[SCROLLBACK_START] = (Function_ptr) BX_scrollback_start;
global_table[HOLD_MODE] = (Function_ptr) BX_hold_mode; global_table[SET_HOLD_MODE] = (Function_ptr) BX_set_hold_mode;
global_table[UNHOLD_WINDOWS] = (Function_ptr) BX_unhold_windows; global_table[UNHOLD_WINDOWS] = (Function_ptr) BX_unhold_windows;
global_table[FUNC_UNSTOP_ALL_WINDOWS] = (Function_ptr) BX_unstop_all_windows; global_table[FUNC_UNSTOP_ALL_WINDOWS] = (Function_ptr) BX_unstop_all_windows;
global_table[RESET_LINE_CNT] = (Function_ptr) BX_reset_line_cnt; global_table[RESET_LINE_CNT] = (Function_ptr) BX_reset_line_cnt;
@@ -504,7 +503,7 @@ static int already_done = 0;
global_table[GET_CHANNEL_KEY] = (Function_ptr) BX_get_channel_key; global_table[GET_CHANNEL_KEY] = (Function_ptr) BX_get_channel_key;
global_table[FUNC_RECREATE_MODE] = (Function_ptr) BX_recreate_mode; global_table[FUNC_RECREATE_MODE] = (Function_ptr) BX_recreate_mode;
#ifdef COMPRESS_MODES #ifdef COMPRESS_MODES
global_table[FUNC_COMPRESS_MODES] = (Function_ptr) BX_compress_modes; global_table[FUNC_COMPRESS_MODES] = (Function_ptr) BX_do_compress_modes;
#endif #endif
global_table[FUNC_GOT_OPS] = (Function_ptr) BX_got_ops; global_table[FUNC_GOT_OPS] = (Function_ptr) BX_got_ops;
global_table[GET_CHANNEL_BANS] = (Function_ptr) BX_get_channel_bans; global_table[GET_CHANNEL_BANS] = (Function_ptr) BX_get_channel_bans;
@@ -674,7 +673,7 @@ static int already_done = 0;
global_table[DLL_CTCP] = (Function_ptr) &dll_ctcp; global_table[DLL_CTCP] = (Function_ptr) &dll_ctcp;
#endif #endif
global_table[WINDOW_DISPLAY] = (Function_ptr) &window_display; global_table[WINDOW_DISPLAY] = (Function_ptr) &window_display;
global_table[STATUS_UPDATE_FLAG] = (Function_ptr) status_update_flag; global_table[STATUS_UPDATE_FLAG] = (Function_ptr) &status_update_flag;
global_table[TABKEY_ARRAY] = (Function_ptr) &tabkey_array; global_table[TABKEY_ARRAY] = (Function_ptr) &tabkey_array;
global_table[AUTOREPLY_ARRAY] = (Function_ptr) &autoreply_array; global_table[AUTOREPLY_ARRAY] = (Function_ptr) &autoreply_array;
global_table[IDENTD_SOCKET] = (Function_ptr) &identd; global_table[IDENTD_SOCKET] = (Function_ptr) &identd;

View File

@@ -260,7 +260,7 @@ ChannelList * BX_add_channel(char *channel, int server, int refnum)
get_time(&new->join_time); get_time(&new->join_time);
add_server_channels(server, new); add_server_channels(server, new);
} }
new->chop = 0; new->have_op = 0;
new->voice = 0; new->voice = 0;
new->hop = 0; new->hop = 0;
@@ -351,7 +351,7 @@ ChannelList *BX_add_to_channel(char *channel, char *nick, int server, int oper,
if (!my_stricmp(nick, get_server_nickname(server))) if (!my_stricmp(nick, get_server_nickname(server)))
{ {
check_mode_list_join(channel, server); check_mode_list_join(channel, server);
chan->chop = 1; chan->have_op = 1;
} }
} }
if (!(new = find_nicklist_in_channellist(nick, chan, 0))) if (!(new = find_nicklist_in_channellist(nick, chan, 0)))
@@ -549,7 +549,7 @@ typedef struct _UserChanModes {
* *
* Written by Jordy (jordy@wserv.com) * Written by Jordy (jordy@wserv.com)
*/ */
char *BX_compress_modes(ChannelList *chan, int server, char *channel, char *modes) { char *BX_do_compress_modes(ChannelList *chan, int server, char *channel, char *modes) {
int add = 0, int add = 0,
isbanned = 0, isbanned = 0,
isopped = 0, isopped = 0,
@@ -821,13 +821,13 @@ NickList *tnl = NULL;
int BX_got_ops(int add, ChannelList *channel) int BX_got_ops(int add, ChannelList *channel)
{ {
int chop = 0; int have_op = 0;
register NickList *tmp; register NickList *tmp;
int in_join = 0; int in_join = 0;
in_join = in_join_list(channel->channel, from_server); in_join = in_join_list(channel->channel, from_server);
if (add && add != channel->chop && !in_join) if (add && add != channel->have_op && !in_join)
{ {
chop = channel->chop = add; have_op = channel->have_op = add;
#ifdef WANT_USERLIST #ifdef WANT_USERLIST
for(tmp = next_nicklist(channel, NULL); tmp; tmp = next_nicklist(channel, tmp)) for(tmp = next_nicklist(channel, NULL); tmp; tmp = next_nicklist(channel, tmp))
check_auto(channel->channel,tmp, channel); check_auto(channel->channel,tmp, channel);
@@ -835,19 +835,19 @@ int in_join = 0;
if ((get_server_version(from_server) == Server2_8hybrid6)) if ((get_server_version(from_server) == Server2_8hybrid6))
send_to_server("MODE %s e", channel->channel); send_to_server("MODE %s e", channel->channel);
} }
else if (!add && add != channel->chop && !in_join) else if (!add && add != channel->have_op && !in_join)
{ {
for(tmp = next_nicklist(channel, NULL); tmp; tmp = next_nicklist(channel, tmp)) for(tmp = next_nicklist(channel, NULL); tmp; tmp = next_nicklist(channel, tmp))
tmp->sent_reop = tmp->sent_deop = tmp->sent_voice = 0; tmp->sent_reop = tmp->sent_deop = tmp->sent_voice = 0;
} }
return chop; return have_op;
} }
/* /*
* decifer_mode: This will figure out the mode string as returned by mode * decifer_mode: This will figure out the mode string as returned by mode
* commands and convert that mode string into a one byte bit map of modes * commands and convert that mode string into a one byte bit map of modes
*/ */
static int decifer_mode(char *from, char *mode_str, ChannelList **channel, unsigned long *mode, char *chop, char *voice, char **key) static int decifer_mode(char *from, char *mode_str, ChannelList **channel, unsigned long *mode, char *have_op, char *voice, char **key)
{ {
char *limit = 0; char *limit = 0;
@@ -951,8 +951,8 @@ static int decifer_mode(char *from, char *mode_str, ChannelList **channel, unsig
person = get_server_nickname(from_server); person = get_server_nickname(from_server);
if (!my_stricmp(person, get_server_nickname(from_server))) if (!my_stricmp(person, get_server_nickname(from_server)))
{ {
*chop = (char)got_ops(add, *channel); *have_op = (char)got_ops(add, *channel);
(*channel)->chop = add; (*channel)->have_op = add;
if (add) if (add)
do_hook(CHANOP_LIST, "%s", (*channel)->channel); do_hook(CHANOP_LIST, "%s", (*channel)->channel);
} }
@@ -973,7 +973,7 @@ static int decifer_mode(char *from, char *mode_str, ChannelList **channel, unsig
ThisNick->sent_deop--; ThisNick->sent_deop--;
} }
if (!its_me && (*channel)->chop) if (!its_me && (*channel)->have_op)
{ {
if (add && splitter) if (add && splitter)
check_hack(person, *channel, ThisNick, from); check_hack(person, *channel, ThisNick, from);
@@ -1052,7 +1052,7 @@ static int decifer_mode(char *from, char *mode_str, ChannelList **channel, unsig
malloc_strcpy(&new->setby, from?from:get_server_name(from_server)); malloc_strcpy(&new->setby, from?from:get_server_name(from_server));
new->time = now; new->time = now;
#ifdef WANT_USERLIST #ifdef WANT_USERLIST
if (!its_me && (*channel)->chop) if (!its_me && (*channel)->have_op)
check_prot(from, person, *channel, new, ThisNick); check_prot(from, person, *channel, new, ThisNick);
#endif #endif
} }
@@ -1169,7 +1169,7 @@ void update_channel_mode(char *from, char *channel, int server, char *mode, Chan
if (tmp || (channel && (tmp = lookup_channel(channel, server, CHAN_NOUNLINK)))) if (tmp || (channel && (tmp = lookup_channel(channel, server, CHAN_NOUNLINK))))
{ {
if ((limit = decifer_mode(from, mode, &(tmp), &(tmp->mode), &(tmp->chop), &(tmp->voice), &(tmp->key))) != -1) if ((limit = decifer_mode(from, mode, &(tmp), &(tmp->mode), &(tmp->have_op), &(tmp->voice), &(tmp->key))) != -1)
tmp->limit = limit; tmp->limit = limit;
} }
} }
@@ -1368,7 +1368,7 @@ void BX_rename_nick(char *old_nick, char *new_nick, int server)
if ((tmp = find_nicklist_in_channellist(old_nick, chan, REMOVE_FROM_LIST))) if ((tmp = find_nicklist_in_channellist(old_nick, chan, REMOVE_FROM_LIST)))
{ {
tmp->stat_nicks++; tmp->stat_nicks++;
if (chan->chop && !isme(new_nick)) if (chan->have_op && !isme(new_nick))
{ {
if (is_other_flood(chan, tmp, NICK_FLOOD, &t)) if (is_other_flood(chan, tmp, NICK_FLOOD, &t))
handle_nickflood(old_nick, new_nick, tmp, chan, t); handle_nickflood(old_nick, new_nick, tmp, chan, t);
@@ -1684,7 +1684,7 @@ int BX_get_channel_oper(char *channel, int server)
if ((chan = lookup_channel(channel, server, CHAN_NOUNLINK))) if ((chan = lookup_channel(channel, server, CHAN_NOUNLINK)))
return chan->chop; return chan->have_op;
return 1; return 1;
} }
@@ -2062,7 +2062,7 @@ ChannelList *chan;
{ {
for (chan = get_server_channels(i); chan; chan = chan->next) for (chan = get_server_channels(i); chan; chan = chan->next)
{ {
if (!chan->chop || !chan->csets || !chan->csets->set_auto_limit) if (!chan->have_op || !chan->csets || !chan->csets->set_auto_limit)
continue; continue;
if (chan->totalnicks + chan->csets->set_auto_limit != chan->limit) if (chan->totalnicks + chan->csets->set_auto_limit != chan->limit)
my_send_to_server(i, "MODE %s +l %d", chan->channel, chan->totalnicks + chan->csets->set_auto_limit); my_send_to_server(i, "MODE %s +l %d", chan->channel, chan->totalnicks + chan->csets->set_auto_limit);

View File

@@ -378,7 +378,7 @@ UserList *tmp = NULL;
{ {
NickList *n = NULL; NickList *n = NULL;
n = find_nicklist_in_channellist(nick, chan, 0); n = find_nicklist_in_channellist(nick, chan, 0);
if (!n && chan->chop && get_cset_int_var(chan->csets, AINV_CSET) && (tmp->flags & ADD_INVITE) && get_cset_int_var(chan->csets, AINV_CSET)) if (!n && chan->have_op && get_cset_int_var(chan->csets, AINV_CSET) && (tmp->flags & ADD_INVITE) && get_cset_int_var(chan->csets, AINV_CSET))
{ {
bitchsay("Auto-inviting %s to %s", nick, chan->channel); bitchsay("Auto-inviting %s to %s", nick, chan->channel);
send_to_server("NOTICE %s :Auto-invite from %s", nick, get_server_nickname(from_server)); send_to_server("NOTICE %s :Auto-invite from %s", nick, get_server_nickname(from_server));

View File

@@ -248,8 +248,6 @@ void display_msg(char *from, char **ArgList)
char *ptr, char *ptr,
*s, *s,
*rest; *rest;
int drem;
rest = PasteArgs(ArgList, 0); rest = PasteArgs(ArgList, 0);
if ((s = find_numeric_fset(-current_numeric))) if ((s = find_numeric_fset(-current_numeric)))
@@ -266,16 +264,14 @@ void display_msg(char *from, char **ArgList)
else else
ptr = NULL; ptr = NULL;
drem = (int)(from) /*&& (!get_int_var(SUPPRESS_FROM_REMOTE_SERVER))*/;
put_it("%s %s%s%s%s%s%s", put_it("%s %s%s%s%s%s%s",
numeric_banner(), numeric_banner(),
strlen(rest) ? rest : empty_string, strlen(rest) ? rest : empty_string,
strlen(rest) ? space : empty_string, strlen(rest) ? space : empty_string,
ptr ? ptr : empty_string, ptr ? ptr : empty_string,
drem ? "(from " : empty_string, from ? "(from " : empty_string,
drem ? from : empty_string, from ? from : empty_string,
drem ? ")" : empty_string from ? ")" : empty_string
); );
} }

View File

@@ -1049,7 +1049,7 @@ static void p_channel(char *from, char **ArgList)
else else
put_it("%s",convert_output_format(fget_string_var(FORMAT_JOIN_FSET), "%s %s %s %s %s",update_clock(GET_TIME),from,FromUserHost?FromUserHost:"UnKnown",channel, extra)); put_it("%s",convert_output_format(fget_string_var(FORMAT_JOIN_FSET), "%s %s %s %s %s",update_clock(GET_TIME),from,FromUserHost?FromUserHost:"UnKnown",channel, extra));
if (!its_me && chan && chan->chop) if (!its_me && chan && chan->have_op)
{ {
char lame_chars[] = "\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a"; char lame_chars[] = "\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a";
register char *p; register char *p;
@@ -1367,7 +1367,7 @@ char *n = NULL;
time_t right_now; time_t right_now;
if (!from || !chan || (chan && (!get_cset_int_var(chan->csets, BITCH_CSET) || !chan->chop))) if (!from || !chan || (chan && (!get_cset_int_var(chan->csets, BITCH_CSET) || !chan->have_op)))
return; return;
if (!get_int_var(HACK_OPS_VAR) && wild_match("%.%", from)) if (!get_int_var(HACK_OPS_VAR) && wild_match("%.%", from))
return; return;
@@ -1442,7 +1442,7 @@ static void p_mode(char *from, char **ArgList)
chan = (ChannelList *)find_in_list((List **)&chan2, channel, 0); chan = (ChannelList *)find_in_list((List **)&chan2, channel, 0);
if (chan && get_cset_int_var(chan->csets, COMPRESS_MODES_CSET)) if (chan && get_cset_int_var(chan->csets, COMPRESS_MODES_CSET))
{ {
tmpbuf = compress_modes(chan, from_server, channel, line); tmpbuf = do_compress_modes(chan, from_server, channel, line);
if (tmpbuf) if (tmpbuf)
strcpy(line, tmpbuf); strcpy(line, tmpbuf);
else else
@@ -1653,7 +1653,7 @@ static void p_kick(char *from, char **ArgList)
if (!itsme) if (!itsme)
{ {
f_nick = find_nicklist_in_channellist(who, chan, 0); f_nick = find_nicklist_in_channellist(who, chan, 0);
if (chan->chop && tmpnick && is_other_flood(chan, tmpnick, KICK_FLOOD, &t)) if (chan->have_op && tmpnick && is_other_flood(chan, tmpnick, KICK_FLOOD, &t))
{ {
if (get_cset_int_var(chan->csets, KICK_ON_KICKFLOOD_CSET) > get_cset_int_var(chan->csets, DEOP_ON_KICKFLOOD_CSET)) if (get_cset_int_var(chan->csets, KICK_ON_KICKFLOOD_CSET) > get_cset_int_var(chan->csets, DEOP_ON_KICKFLOOD_CSET))
send_to_server("MODE %s -o %s", chan->channel, from); send_to_server("MODE %s -o %s", chan->channel, from);

View File

@@ -97,7 +97,7 @@ static LookupStruct channel_struct[] = {
{ "LIMIT", offsetof(ChannelList, limit), INT_TYPE_VAR, VAR_READ_ONLY }, { "LIMIT", offsetof(ChannelList, limit), INT_TYPE_VAR, VAR_READ_ONLY },
{ "KEY", offsetof(ChannelList, key), STR_TYPE_VAR, VAR_READ_ONLY }, { "KEY", offsetof(ChannelList, key), STR_TYPE_VAR, VAR_READ_ONLY },
{ "CHOP", offsetof(ChannelList, chop), INT_TYPE_VAR, VAR_READ_ONLY }, { "CHOP", offsetof(ChannelList, have_op), INT_TYPE_VAR, VAR_READ_ONLY },
{ "HOP", offsetof(ChannelList, hop), INT_TYPE_VAR, VAR_READ_ONLY }, { "HOP", offsetof(ChannelList, hop), INT_TYPE_VAR, VAR_READ_ONLY },
{ "VOICE", offsetof(ChannelList, voice), INT_TYPE_VAR, VAR_READ_ONLY }, { "VOICE", offsetof(ChannelList, voice), INT_TYPE_VAR, VAR_READ_ONLY },
{ "BOUND", offsetof(ChannelList, bound), INT_TYPE_VAR, VAR_READ_ONLY }, { "BOUND", offsetof(ChannelList, bound), INT_TYPE_VAR, VAR_READ_ONLY },

View File

@@ -970,7 +970,7 @@ char *p = (char *) arg; /* original args unmodified so we can free them */
if ((serv_num = next_arg(args, &args))) if ((serv_num = next_arg(args, &args)))
this_server = my_atol(serv_num); this_server = my_atol(serv_num);
chan = lookup_channel(channel, this_server, 0); chan = lookup_channel(channel, this_server, 0);
if (chan && is_on_channel(channel, this_server, from) && chan->chop) if (chan && is_on_channel(channel, this_server, from) && chan->have_op)
{ {
NickList *nick; NickList *nick;
for (nick = next_nicklist(chan, NULL); nick; nick = next_nicklist(chan, nick)) for (nick = next_nicklist(chan, NULL); nick; nick = next_nicklist(chan, nick))
@@ -1077,7 +1077,7 @@ char *ban;
if (!chan_ptr) if (!chan_ptr)
return NULL; return NULL;
if (!chan_ptr->chop) if (!chan_ptr->have_op)
return nicklist; return nicklist;
userptr = nicklist->userlist; userptr = nicklist->userlist;
shitptr = nicklist->shitlist; shitptr = nicklist->shitlist;
@@ -1254,7 +1254,7 @@ char *nick = NULL, *userhost = NULL, *p;
} }
} }
if (get_cset_int_var(chan->csets, USERLIST_CSET) && chan->chop && ((n && n->userlist) || if (get_cset_int_var(chan->csets, USERLIST_CSET) && chan->have_op && ((n && n->userlist) ||
(tmp && tmp->userlist))) (tmp && tmp->userlist)))
{ {
UserList *user = NULL; UserList *user = NULL;
@@ -1352,7 +1352,7 @@ char *nick = NULL, *userhost = NULL, *p;
void check_shit(ChannelList *chan) void check_shit(ChannelList *chan)
{ {
ShitList *Bans; ShitList *Bans;
if (!chan || !chan->chop || !shitlist_list || chan->server <= -1 || !get_cset_int_var(chan->csets, SHITLIST_CSET)) if (!chan || !chan->have_op || !shitlist_list || chan->server <= -1 || !get_cset_int_var(chan->csets, SHITLIST_CSET))
return; return;
if (!check_channel_match(get_string_var(PROTECT_CHANNELS_VAR), chan->channel)) if (!check_channel_match(get_string_var(PROTECT_CHANNELS_VAR), chan->channel))
return; return;

View File

@@ -116,6 +116,7 @@ Window *BX_new_window(Screen *screen)
new = (Window *) new_malloc(sizeof(Window)); new = (Window *) new_malloc(sizeof(Window));
new->output_func = default_output_function; new->output_func = default_output_function;
new->update_status = NULL;
tmp = NULL; tmp = NULL;
while ((traverse_all_windows(&tmp))) while ((traverse_all_windows(&tmp)))
@@ -1028,8 +1029,8 @@ void BX_update_all_windows()
if (full_window || fast_window) if (full_window || fast_window)
repaint_window(tmp, tmp->repaint_start, tmp->repaint_end); repaint_window(tmp, tmp->repaint_start, tmp->repaint_end);
if (tmp->update_window_status) if (tmp->update_status)
(tmp->update_window_status)(tmp); (tmp->update_status)(tmp);
else if (r_status) else if (r_status)
update_window_status(tmp, 1); update_window_status(tmp, 1);
else if (u_status) else if (u_status)
@@ -1443,24 +1444,6 @@ char *BX_get_prompt_by_refnum(unsigned int refnum)
return (empty_string); return (empty_string);
} }
/* query_nick: Returns the query nick for the current channel */
const char * BX_query_nick (void)
{
return (current_window->query_nick);
}
/* query_nick: Returns the query nick for the current channel */
const char * BX_query_host (void)
{
return (current_window->query_host);
}
const char * BX_query_cmd (void)
{
return (current_window->query_cmd);
}
/* /*
* get_target_by_refnum: returns the target for the window with the given * get_target_by_refnum: returns the target for the window with the given
* refnum (or for the current window). The target is either the query nick * refnum (or for the current window). The target is either the query nick
@@ -1882,34 +1865,6 @@ void BX_window_check_servers(int unused)
cursor_to_input(); cursor_to_input();
} }
/*
* window_close_server: this is like window_check_servers but it gets called
* with old_server as the refnum of a server that just got closed. It marks
* every window that used to be connected to old_server as WINDOW_SERVER_CLOSED
* and sets last_server for those windows. It doesn't touch windows that
* already had no server.
*/
void BX_window_close_server(int old_server)
{
Window *tmp;
tmp = NULL;
if (old_server < 0)
return;
while ((traverse_all_windows(&tmp)))
{
if (tmp->server < 0)
continue;
if (tmp->server == old_server)
{
close_server(tmp->server, NULL);
tmp->server = WINDOW_SERVER_CLOSED;
tmp->last_server = old_server;
}
}
}
/* /*
* Changes any windows that are currently using "old_server" to instead * Changes any windows that are currently using "old_server" to instead
* use "new_server". * use "new_server".
@@ -2382,7 +2337,7 @@ void BX_clear_all_windows(int unhold, int scrollback)
while (traverse_all_windows(&tmp)) while (traverse_all_windows(&tmp))
{ {
if (unhold) if (unhold)
hold_mode(tmp, OFF, 1); set_hold_mode(tmp, OFF, 1);
if (scrollback) if (scrollback)
clear_scrollback(tmp); clear_scrollback(tmp);
clear_window(tmp); clear_window(tmp);
@@ -2434,7 +2389,7 @@ void unclear_all_windows (int unhold, int visible, int hidden)
continue; continue;
if (unhold) if (unhold)
hold_mode(tmp, OFF, 1); set_hold_mode(tmp, OFF, 1);
unclear_window(tmp); unclear_window(tmp);
} }
} }
@@ -3759,7 +3714,7 @@ Window *window_query (Window *window, char **args, char *usage)
} }
if ((nick = window->query_nick)) if ((nick = window->query_nick))
{ {
say("Ending conversation with %s", query_nick()); say("Ending conversation with %s", current_window->query_nick);
window->update |= UPDATE_STATUS; window->update |= UPDATE_STATUS;
while ((ptr = next_in_comma_list(nick, &nick))) while ((ptr = next_in_comma_list(nick, &nick)))
{ {
@@ -4692,7 +4647,7 @@ void BX_scrollback_start (char dumb, char *dumber)
* this will also update the status line, if needed, to display the hold mode * this will also update the status line, if needed, to display the hold mode
* state. If update is false, only the internal flag is set. * state. If update is false, only the internal flag is set.
*/ */
void BX_hold_mode (Window *window, int flag, int update) void BX_set_hold_mode (Window *window, int flag, int update)
{ {
if (window == NULL) if (window == NULL)
window = current_window; window = current_window;
@@ -4752,7 +4707,7 @@ void BX_unstop_all_windows (char dumb, char *dumber)
Window *tmp = NULL; Window *tmp = NULL;
while (traverse_all_windows(&tmp)) while (traverse_all_windows(&tmp))
hold_mode(tmp, OFF, 1); set_hold_mode(tmp, OFF, 1);
} }
/* /*
@@ -4770,7 +4725,7 @@ void BX_reset_line_cnt (Window *win, char *unused, int value)
/* toggle_stop_screen: the BIND function TOGGLE_STOP_SCREEN */ /* toggle_stop_screen: the BIND function TOGGLE_STOP_SCREEN */
void BX_toggle_stop_screen (char unused, char *not_used) void BX_toggle_stop_screen (char unused, char *not_used)
{ {
hold_mode(NULL, TOGGLE, 1); set_hold_mode(NULL, TOGGLE, 1);
update_all_windows(); update_all_windows();
} }
@@ -4818,7 +4773,7 @@ void BX_flush_everything_being_held (Window *window)
ircpanic("erf. fix this."); ircpanic("erf. fix this.");
window->holding_something = 0; window->holding_something = 0;
hold_mode(window, OFF, 1); set_hold_mode(window, OFF, 1);
} }
@@ -4908,8 +4863,8 @@ void BX_set_screens_current_window (Screen *screen, Window *window)
void BX_make_window_current (Window *window) void BX_make_window_current (Window *window)
{ {
Window *old_current_window = current_window; Window *old_current_window = current_window;
int old_screen, old_window; int old_screen, old_win;
int new_screen, new_window; int new_screen, new_win;
if (!window) if (!window)
current_window = last_input_screen->current_window; current_window = last_input_screen->current_window;
@@ -4922,22 +4877,22 @@ void BX_make_window_current (Window *window)
return; return;
if (!old_current_window) if (!old_current_window)
old_screen = old_window = -1; old_screen = old_win = -1;
else if (!old_current_window->screen) else if (!old_current_window->screen)
old_screen = -1, old_window = old_current_window->refnum; old_screen = -1, old_win = old_current_window->refnum;
else else
old_screen = old_current_window->screen->screennum, old_screen = old_current_window->screen->screennum,
old_window = old_current_window->refnum; old_win = old_current_window->refnum;
new_window = current_window->refnum; new_win = current_window->refnum;
if (!current_window->screen) if (!current_window->screen)
new_screen = -1; new_screen = -1;
else else
new_screen = current_window->screen->screennum; new_screen = current_window->screen->screennum;
do_hook(WINDOW_FOCUS_LIST, "%d %d %d %d", do_hook(WINDOW_FOCUS_LIST, "%d %d %d %d",
old_screen, old_window, old_screen, old_win,
new_screen, new_window); new_screen, new_win);
} }
void BX_clear_scrollback(Window *window) void BX_clear_scrollback(Window *window)
@@ -4960,10 +4915,10 @@ void BX_clear_scrollback(Window *window)
void make_to_window_by_desc (char *desc) void make_to_window_by_desc (char *desc)
{ {
Window *new_window = get_window_by_desc(desc); Window *new_win = get_window_by_desc(desc);
if (new_window) if (new_win)
target_window = new_window; target_window = new_win;
else else
say("Window [%s] doesn't exist any more. Punting.", desc); say("Window [%s] doesn't exist any more. Punting.", desc);
} }
@@ -4985,23 +4940,23 @@ int get_winref_by_desc (const char *desc)
void make_window_current_by_desc (char *desc) void make_window_current_by_desc (char *desc)
{ {
Window *new_window = get_window_by_desc(desc); Window *new_win = get_window_by_desc(desc);
if (new_window) if (new_win)
make_window_current(new_window); make_window_current(new_win);
else else
say("Window [%s] doesn't exist any more. Punting.", desc); say("Window [%s] doesn't exist any more. Punting.", desc);
} }
void make_window_current_by_winref (int refnum) void make_window_current_by_winref (int refnum)
{ {
Window *new_window; Window *new_win;
if (refnum == -1) if (refnum == -1)
return; return;
if ((new_window = get_window_by_refnum(refnum))) if ((new_win = get_window_by_refnum(refnum)))
make_window_current(new_window); make_window_current(new_win);
else else
say("Window [%d] doesn't exist any more. Punting.", refnum); say("Window [%d] doesn't exist any more. Punting.", refnum);
} }

View File

@@ -18,25 +18,25 @@ CVS_REVISION(words_c)
/* /*
* search() looks for a character forward or backward from mark * search() looks for a character forward or backward from mark
*/ */
extern char *BX_search(register char *start, char **mark, char *chars, int how) extern char *BX_strsearch(register char *start, char *mark, char *chars, int how)
{ {
if (!mark || !*mark) if (!mark)
*mark = start; mark = start;
if (how > 0) /* forward search */ if (how > 0) /* forward search */
{ {
*mark = sindex(*mark, chars); mark = sindex(mark, chars);
how--; how--;
for (;(how > 0) && *mark && **mark;how--) for (; how > 0 && mark && *mark; how--)
*mark = sindex(*mark+1, chars); mark = sindex(mark + 1, chars);
} }
else if (how == 0) else if (how == 0)
return (char *) 0; return NULL;
else /* how < 0 */ else /* how < 0 */
{ {
*mark = rsindex(*mark, start, chars, -how); mark = rsindex(mark, start, chars, -how);
#if 0 #if 0
how++; how++;
for (;(how < 0) && *mark && **mark;how++) for (;(how < 0) && *mark && **mark;how++)
@@ -44,7 +44,7 @@ extern char *BX_search(register char *start, char **mark, char *chars, int how)
#endif #endif
} }
return *mark; return mark;
} }
/* Move to an absolute word number from start */ /* Move to an absolute word number from start */