00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _EGG_MOD_MODULE_H
00026 #define _EGG_MOD_MODULE_H
00027
00028
00029 #include "src/main.h"
00030 #include "modvals.h"
00031 #include "src/tandem.h"
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #undef nstrdup
00047 #undef nmalloc
00048 #undef nfree
00049 #undef nrealloc
00050 #undef feof
00051 #undef user_malloc
00052 #undef dprintf
00053 #undef get_data_ptr
00054 #undef wild_match
00055 #undef wild_match_per
00056 #undef wild_match_partial_case
00057 #undef maskhost
00058 #undef maskban
00059 #undef user_realloc
00060 #undef Context
00061 #undef ContextNote
00062 #undef Assert
00063
00064
00065 #ifdef egg_inet_aton
00066 # undef egg_inet_aton
00067 #endif
00068 #ifdef egg_vsnprintf
00069 # undef egg_vsnprintf
00070 #endif
00071 #ifdef egg_snprintf
00072 # undef egg_snprintf
00073 #endif
00074 #ifdef egg_memset
00075 # undef egg_memset
00076 #endif
00077 #ifdef egg_strcasecmp
00078 # undef egg_strcasecmp
00079 #endif
00080 #ifdef egg_strncasecmp
00081 # undef egg_strncasecmp
00082 #endif
00083 #ifdef egg_strdup
00084 # undef egg_strdup
00085 #endif
00086
00087 #if defined (__CYGWIN__) && !defined(STATIC)
00088 # define EXPORT_SCOPE __declspec(dllexport)
00089 #else
00090 # define EXPORT_SCOPE
00091 #endif
00092
00093
00094 #define EGG_IS_MIN_VER(ver) ((ver) <= EGG_VERSION)
00095 #define EGG_IS_MAX_VER(ver) ((ver) >= EGG_VERSION)
00096
00097
00098
00099
00100 #define nmalloc(x) (((void *(*)())global[0])((x),MODULE_NAME,__FILE__,__LINE__))
00101 #define nfree(x) (global[1]((x),MODULE_NAME,__FILE__,__LINE__))
00102 #ifdef DEBUG_CONTEXT
00103 # define Context (global[2](__FILE__, __LINE__, MODULE_NAME))
00104 #else
00105 # define Context do {} while (0)
00106 #endif
00107 #define module_rename ((int (*)(char *, char *))global[3])
00108
00109 #define module_register ((int (*)(char *, Function *, int, int))global[4])
00110 #define module_find ((module_entry * (*)(char *,int,int))global[5])
00111 #define module_depend ((Function *(*)(char *,char *,int,int))global[6])
00112 #define module_undepend ((int(*)(char *))global[7])
00113
00114 #define add_bind_table ((p_tcl_bind_list(*)(const char *,int,IntFunc))global[8])
00115 #define del_bind_table ((void (*) (p_tcl_bind_list))global[9])
00116 #define find_bind_table ((p_tcl_bind_list(*)(const char *))global[10])
00117 #define check_tcl_bind ((int (*) (p_tcl_bind_list,const char *,struct flag_record *,const char *, int))global[11])
00118
00119 #define add_builtins ((int (*) (p_tcl_bind_list, cmd_t *))global[12])
00120 #define rem_builtins ((int (*) (p_tcl_bind_list, cmd_t *))global[13])
00121 #define add_tcl_commands ((void (*) (tcl_cmds *))global[14])
00122 #define rem_tcl_commands ((void (*) (tcl_cmds *))global[15])
00123
00124 #define add_tcl_ints ((void (*) (tcl_ints *))global[16])
00125 #define rem_tcl_ints ((void (*) (tcl_ints *))global[17])
00126 #define add_tcl_strings ((void (*) (tcl_strings *))global[18])
00127 #define rem_tcl_strings ((void (*) (tcl_strings *))global[19])
00128
00129 #define base64_to_int ((int (*) (char *))global[20])
00130 #define int_to_base64 ((char * (*) (int))global[21])
00131 #define int_to_base10 ((char * (*) (int))global[22])
00132 #define simple_sprintf ((int (*)())global[23])
00133
00134 #define botnet_send_zapf ((void (*)(int, char *, char *, char *))global[24])
00135 #define botnet_send_zapf_broad ((void (*)(int, char *, char *, char *))global[25])
00136 #define botnet_send_unlinked ((void (*)(int, char *, char *))global[26])
00137 #define botnet_send_bye ((void(*)(void))global[27])
00138
00139 #define botnet_send_chat ((void(*)(int,char*,char*))global[28])
00140 #define botnet_send_filereject ((void(*)(int,char*,char*,char*))global[29])
00141 #define botnet_send_filesend ((void(*)(int,char*,char*,char*))global[30])
00142 #define botnet_send_filereq ((void(*)(int,char*,char*,char*))global[31])
00143
00144 #define botnet_send_join_idx ((void(*)(int,int))global[32])
00145 #define botnet_send_part_idx ((void(*)(int,char *))global[33])
00146 #define updatebot ((void(*)(int,char*,char,int))global[34])
00147 #define nextbot ((int (*)(char *))global[35])
00148
00149 #define zapfbot ((void (*)(int))global[36])
00150 #define n_free ((void (*)(void *,char *, int))global[37])
00151 #define u_pass_match ((int (*)(struct userrec *,char *))global[38])
00152 #define user_malloc(x) ((void *(*)(int,char *,int))global[39])(x,__FILE__,__LINE__)
00153
00154 #define get_user ((void *(*)(struct user_entry_type *,struct userrec *))global[40])
00155 #define set_user ((int(*)(struct user_entry_type *,struct userrec *,void *))global[41])
00156 #define add_entry_type ((int (*) ( struct user_entry_type * ))global[42])
00157 #define del_entry_type ((int (*) ( struct user_entry_type * ))global[43])
00158
00159 #define get_user_flagrec ((void (*)(struct userrec *, struct flag_record *, const char *))global[44])
00160 #define set_user_flagrec ((void (*)(struct userrec *, struct flag_record *, const char *))global[45])
00161 #define get_user_by_host ((struct userrec * (*)(char *))global[46])
00162 #define get_user_by_handle ((struct userrec *(*)(struct userrec *,char *))global[47])
00163
00164 #define find_entry_type ((struct user_entry_type * (*) ( char * ))global[48])
00165 #define find_user_entry ((struct user_entry * (*)( struct user_entry_type *, struct userrec *))global[49])
00166 #define adduser ((struct userrec *(*)(struct userrec *,char*,char*,char*,int))global[50])
00167 #define deluser ((int (*)(char *))global[51])
00168
00169 #define addhost_by_handle ((void (*) (char *, char *))global[52])
00170 #define delhost_by_handle ((int(*)(char *,char *))global[53])
00171 #define readuserfile ((int (*)(char *,struct userrec **))global[54])
00172 #define write_userfile ((void(*)(int))global[55])
00173
00174 #define geticon ((char (*) (int))global[56])
00175 #define clear_chanlist ((void (*)(void))global[57])
00176 #define reaffirm_owners ((void (*)(void))global[58])
00177 #define change_handle ((int(*)(struct userrec *,char*))global[59])
00178
00179 #define write_user ((int (*)(struct userrec *, FILE *,int))global[60])
00180 #define clear_userlist ((void (*)(struct userrec *))global[61])
00181 #define count_users ((int(*)(struct userrec *))global[62])
00182 #define sanity_check ((int(*)(int))global[63])
00183
00184 #define break_down_flags ((void (*)(const char *,struct flag_record *,struct flag_record *))global[64])
00185 #define build_flags ((void (*)(char *, struct flag_record *, struct flag_record *))global[65])
00186 #define flagrec_eq ((int(*)(struct flag_record*,struct flag_record *))global[66])
00187 #define flagrec_ok ((int(*)(struct flag_record*,struct flag_record *))global[67])
00188
00189 #define shareout (*(Function *)(global[68]))
00190 #define dprintf (global[69])
00191 #define chatout (global[70])
00192 #define chanout_but ((void(*)())global[71])
00193
00194 #define check_validity ((int (*) (char *,IntFunc))global[72])
00195 #define egg_list_delete ((int (*)( struct list_type **, struct list_type *))global[73])
00196 #define egg_list_append ((int (*) ( struct list_type **, struct list_type *))global[74])
00197 #define egg_list_contains ((int (*) (struct list_type *, struct list_type *))global[75])
00198
00199 #define answer ((int (*) (int,char *,unsigned long *,unsigned short *,int))global[76])
00200 #define getmyip ((IP (*) (void))global[77])
00201 #define neterror ((void (*) (char *))global[78])
00202 #define tputs ((void (*) (int, char *,unsigned int))global[79])
00203
00204 #define new_dcc ((int (*) (struct dcc_table *, int))global[80])
00205 #define lostdcc ((void (*) (int))global[81])
00206 #define getsock ((int (*) (int))global[82])
00207 #define killsock ((void (*) (int))global[83])
00208
00209 #define open_listen ((int (*) (int *))global[84])
00210 #define open_telnet_dcc ((int (*) (int,char *,char *))global[85])
00211 #define get_data_ptr(x) ((void *(*)(int,char*,int))global[86])(x,__FILE__,__LINE__)
00212 #define open_telnet ((int (*) (char *, int))global[87])
00213
00214 #define check_tcl_event ((void * (*) (const char *))global[88])
00215 #define my_memcpy ((void * (*) (void *, const void *, size_t))global[89])
00216 #define my_atoul ((IP(*)(char *))global[90])
00217 #define my_strcpy ((int (*)(char *, const char *))global[91])
00218
00219 #define dcc (*(struct dcc_t **)global[92])
00220 #define chanset (*(struct chanset_t **)(global[93]))
00221 #define userlist (*(struct userrec **)global[94])
00222 #define lastuser (*(struct userrec **)(global[95]))
00223
00224 #define global_bans (*(maskrec **)(global[96]))
00225 #define global_ign (*(struct igrec **)(global[97]))
00226 #define password_timeout (*(int *)(global[98]))
00227 #define share_greet (*(int *)global[99])
00228
00229 #define max_dcc (*(int *)global[100])
00230 #define require_p (*(int *)global[101])
00231 #define ignore_time (*(int *)(global[102]))
00232
00233
00234 #define reserved_port_min (*(int *)(global[104]))
00235 #define reserved_port_max (*(int *)(global[105]))
00236 #define raw_log (*(int *)(global[106]))
00237 #define noshare (*(int *)(global[107]))
00238
00239
00240 #define make_userfile (*(int*)global[109])
00241 #define default_flags (*(int*)global[110])
00242 #define dcc_total (*(int*)global[111])
00243
00244 #define tempdir ((char *)(global[112]))
00245 #define natip ((char *)(global[113]))
00246 #define hostname ((char *)(global[114]))
00247 #define origbotname ((char *)(global[115]))
00248
00249 #define botuser ((char *)(global[116]))
00250 #define admin ((char *)(global[117]))
00251 #define userfile ((char *)global[118])
00252 #define ver ((char *)global[119])
00253
00254 #define notify_new ((char *)global[120])
00255 #define helpdir ((char *)global[121])
00256 #define Version ((char *)global[122])
00257 #define botnetnick ((char *)global[123])
00258
00259 #define DCC_CHAT_PASS (*(struct dcc_table *)(global[124]))
00260 #define DCC_BOT (*(struct dcc_table *)(global[125]))
00261 #define DCC_LOST (*(struct dcc_table *)(global[126]))
00262 #define DCC_CHAT (*(struct dcc_table *)(global[127]))
00263
00264 #define interp (*(Tcl_Interp **)(global[128]))
00265 #define now (*(time_t*)global[129])
00266 #define findanyidx ((int (*)(int))global[130])
00267 #define findchan ((struct chanset_t *(*)(char *))global[131])
00268
00269 #define cmd_die (global[132])
00270 #define days ((void (*)(time_t,time_t,char *))global[133])
00271 #define daysago ((void (*)(time_t,time_t,char *))global[134])
00272 #define daysdur ((void (*)(time_t,time_t,char *))global[135])
00273
00274 #define ismember ((memberlist * (*) (struct chanset_t *, char *))global[136])
00275 #define newsplit ((char *(*)(char **))global[137])
00276 #define splitnick ((char *(*)(char **))global[138])
00277 #define splitc ((void (*)(char *,char *,char))global[139])
00278
00279 #define addignore ((void (*) (char *, char *, char *,time_t))global[140])
00280 #define match_ignore ((int (*)(char *))global[141])
00281 #define delignore ((int (*)(char *))global[142])
00282 #define fatal (global[143])
00283
00284 #define xtra_kill ((void (*)(struct user_entry *))global[144])
00285 #define xtra_unpack ((void (*)(struct userrec *, struct user_entry *))global[145])
00286 #define movefile ((int (*) (char *, char *))global[146])
00287 #define copyfile ((int (*) (char *, char *))global[147])
00288
00289 #define do_tcl ((void (*)(char *, char *))global[148])
00290 #define readtclprog ((int (*)(const char *))global[149])
00291 #define get_language ((char *(*)(int))global[150])
00292 #define def_get ((void *(*)(struct userrec *, struct user_entry *))global[151])
00293
00294 #define makepass ((void (*) (char *))global[152])
00295 #define wild_match ((int (*)(const char *, const char *))global[153])
00296 #define maskaddr ((void (*)(const char *, char *, int))global[154])
00297 #define show_motd ((void(*)(int))global[155])
00298
00299 #define tellhelp ((void(*)(int, char *, struct flag_record *, int))global[156])
00300 #define showhelp ((void(*)(char *, char *, struct flag_record *, int))global[157])
00301 #define add_help_reference ((void(*)(char *))global[158])
00302 #define rem_help_reference ((void(*)(char *))global[159])
00303
00304 #define touch_laston ((void (*)(struct userrec *,char *,time_t))global[160])
00305 #define add_mode ((void (*)(struct chanset_t *,char,char,char *))(*(Function**)(global[161])))
00306 #define rmspace ((void (*)(char *))global[162])
00307 #define in_chain ((int (*)(char *))global[163])
00308
00309 #define add_note ((int (*)(char *,char*,char*,int,int))global[164])
00310 #define del_lang_section ((int(*)(char *))global[165])
00311 #define detect_dcc_flood ((int (*) (time_t *,struct chat_info *,int))global[166])
00312 #define flush_lines ((void(*)(int,struct chat_info*))global[167])
00313
00314 #define expected_memory ((int(*)(void))global[168])
00315 #define tell_mem_status ((void(*)(char *))global[169])
00316 #define do_restart (*(int *)(global[170]))
00317 #define check_tcl_filt ((const char *(*)(int, const char *))global[171])
00318
00319 #define add_hook(a,b) (((void (*) (int, Function))global[172])(a,b))
00320 #define del_hook(a,b) (((void (*) (int, Function))global[173])(a,b))
00321 #define H_dcc (*(p_tcl_bind_list *)(global[174]))
00322 #define H_filt (*(p_tcl_bind_list *)(global[175]))
00323
00324 #define H_chon (*(p_tcl_bind_list *)(global[176]))
00325 #define H_chof (*(p_tcl_bind_list *)(global[177]))
00326 #define H_load (*(p_tcl_bind_list *)(global[178]))
00327 #define H_unld (*(p_tcl_bind_list *)(global[179]))
00328
00329 #define H_chat (*(p_tcl_bind_list *)(global[180]))
00330 #define H_act (*(p_tcl_bind_list *)(global[181]))
00331 #define H_bcst (*(p_tcl_bind_list *)(global[182]))
00332 #define H_bot (*(p_tcl_bind_list *)(global[183]))
00333
00334 #define H_link (*(p_tcl_bind_list *)(global[184]))
00335 #define H_disc (*(p_tcl_bind_list *)(global[185]))
00336 #define H_away (*(p_tcl_bind_list *)(global[186]))
00337 #define H_nkch (*(p_tcl_bind_list *)(global[187]))
00338
00339 #define USERENTRY_BOTADDR (*(struct user_entry_type *)(global[188]))
00340 #define USERENTRY_BOTFL (*(struct user_entry_type *)(global[189]))
00341 #define USERENTRY_HOSTS (*(struct user_entry_type *)(global[190]))
00342 #define USERENTRY_PASS (*(struct user_entry_type *)(global[191]))
00343
00344 #define USERENTRY_XTRA (*(struct user_entry_type *)(global[192]))
00345 #define user_del_chan ((void(*)(char *))(global[193]))
00346 #define USERENTRY_INFO (*(struct user_entry_type *)(global[194]))
00347 #define USERENTRY_COMMENT (*(struct user_entry_type *)(global[195]))
00348
00349 #define USERENTRY_LASTON (*(struct user_entry_type *)(global[196]))
00350 #define putlog (global[197])
00351 #define botnet_send_chan ((void(*)(int,char*,char*,int,char*))global[198])
00352 #define list_type_kill ((void(*)(struct list_type *))global[199])
00353
00354 #define logmodes ((int(*)(char *))global[200])
00355 #define masktype ((const char *(*)(int))global[201])
00356 #define stripmodes ((int(*)(char *))global[202])
00357 #define stripmasktype ((const char *(*)(int))global[203])
00358
00359 #define sub_lang ((void(*)(int,char *))global[204])
00360 #define online_since (*(int *)(global[205]))
00361 #define cmd_loadlanguage ((int (*)(struct userrec *,int,char *))global[206])
00362 #define check_dcc_attrs ((int (*)(struct userrec *,int))global[207])
00363
00364 #define check_dcc_chanattrs ((int (*)(struct userrec *,char *,int,int))global[208])
00365 #define add_tcl_coups ((void (*) (tcl_coups *))global[209])
00366 #define rem_tcl_coups ((void (*) (tcl_coups *))global[210])
00367 #define botname ((char *)(global[211]))
00368
00369
00370 #define check_tcl_chjn ((void (*) (const char *,const char *,int,char,int,const char *))global[213])
00371 #define sanitycheck_dcc ((int (*)(char *, char *, char *, char *))global[214])
00372 #define isowner ((int (*)(char *))global[215])
00373
00374
00375
00376 #define rfc_casecmp ((int(*)(char *, char *))(*(Function**)(global[218])))
00377 #define rfc_ncasecmp ((int(*)(char *, char *, int *))(*(Function**)(global[219])))
00378
00379 #define global_exempts (*(maskrec **)(global[220]))
00380 #define global_invites (*(maskrec **)(global[221]))
00381
00382
00383
00384 #define H_event (*(p_tcl_bind_list *)(global[224]))
00385 #define use_exempts (*(int *)(global[225]))
00386 #define use_invites (*(int *)(global[226]))
00387 #define force_expire (*(int *)(global[227]))
00388
00389 #define add_lang_section ((void(*)(char *))global[228])
00390 #define user_realloc(x,y) ((void *(*)(void *,int,char *,int))global[229])((x),(y),__FILE__,__LINE__)
00391 #define nrealloc(x,y) (((void *(*)())global[230])((x),(y),MODULE_NAME,__FILE__,__LINE__))
00392 #define xtra_set ((int(*)(struct userrec *,struct user_entry *, void *))global[231])
00393
00394 #ifdef DEBUG_CONTEXT
00395 # define ContextNote(note) (global[232](__FILE__, __LINE__, MODULE_NAME, note))
00396 #else
00397 # define ContextNote(note) do {} while (0)
00398 #endif
00399 #ifdef DEBUG_ASSERT
00400 # define Assert(expr) do { \
00401 if (!(expr)) \
00402 (global[233](__FILE__, __LINE__, MODULE_NAME)); \
00403 } while (0)
00404 #else
00405 # define Assert(expr) do {} while (0)
00406 #endif
00407 #define allocsock ((int(*)(int sock,int options))global[234])
00408 #define call_hostbyip ((void(*)(IP, char *, int))global[235])
00409
00410 #define call_ipbyhost ((void(*)(char *, IP, int))global[236])
00411 #define iptostr ((char *(*)(IP))global[237])
00412 #define DCC_DNSWAIT (*(struct dcc_table *)(global[238]))
00413 #define hostsanitycheck_dcc ((int(*)(char *, char *, IP, char *, char *))global[239])
00414
00415 #define dcc_dnsipbyhost ((void (*)(char *))global[240])
00416 #define dcc_dnshostbyip ((void (*)(IP))global[241])
00417 #define changeover_dcc ((void (*)(int, struct dcc_table *, int))global[242])
00418 #define make_rand_str ((void (*) (char *, int))global[243])
00419
00420 #define protect_readonly (*(int *)(global[244]))
00421 #define findchan_by_dname ((struct chanset_t *(*)(char *))global[245])
00422 #define removedcc ((void (*) (int))global[246])
00423 #define userfile_perm (*(int *)global[247])
00424
00425 #define sock_has_data ((int(*)(int, int))global[248])
00426 #define bots_in_subtree ((int (*)(tand_t *))global[249])
00427 #define users_in_subtree ((int (*)(tand_t *))global[250])
00428 #define egg_inet_aton ((int (*)(const char *cp, struct in_addr *addr))global[251])
00429
00430 #define egg_snprintf (global[252])
00431 #define egg_vsnprintf ((int (*)(char *, size_t, const char *, va_list))global[253])
00432 #define egg_memset ((void *(*)(void *, int, size_t))global[254])
00433 #define egg_strcasecmp ((int (*)(const char *, const char *))global[255])
00434
00435 #define egg_strncasecmp ((int (*)(const char *, const char *, size_t))global[256])
00436 #define is_file ((int (*)(const char *))global[257])
00437 #define must_be_owner (*(int *)(global[258]))
00438 #define tandbot (*(tand_t **)(global[259]))
00439
00440 #define party (*(party_t **)(global[260]))
00441 #define open_address_listen ((int (*)(IP addr, int *port))global[261])
00442 #define str_escape ((char *(*)(const char *, const char, const char))global[262])
00443 #define strchr_unescape ((char *(*)(char *, const char, register const char))global[263])
00444
00445 #define str_unescape ((void (*)(char *, register const char))global[264])
00446 #define egg_strcatn ((int (*)(char *dst, const char *src, size_t max))global[265])
00447 #define clear_chanlist_member ((void (*)(const char *nick))global[266])
00448 #define fixfrom ((char *(*)(char *))global[267])
00449
00450
00451
00452
00453
00454 #define socklist (*(struct sock_list **)global[268])
00455 #define sockoptions ((int (*)(int, int, int))global[269])
00456 #define flush_inbuf ((int (*)(int))global[270])
00457 #define kill_bot ((void (*)(char *, char *))global[271])
00458
00459 #define quit_msg ((char *)(global[272]))
00460 #define module_load ((char *(*)(char *))global[273])
00461 #define module_unload ((char *(*)(char *, char *))global[274])
00462 #define parties (*(int *)global[275])
00463
00464 #define tell_bottree ((void (*)(int, int))global[276])
00465 #define MD5_Init ((void (*)(MD5_CTX *))global[277])
00466 #define MD5_Update ((void (*)(MD5_CTX *, void *, unsigned long))global[278])
00467 #define MD5_Final ((void (*)(unsigned char *, MD5_CTX *))global[279])
00468
00469 #define wild_match_per ((int (*)(const char *, const char *))global[280])
00470 #define killtransfer ((void(*)(int))global[281])
00471 #define write_ignores ((int (*)(FILE *, int))global[282])
00472 #define copy_to_tmp (*(int *)(global[283]))
00473
00474 #define quiet_reject (*(int *)(global[284]))
00475 #define file_readable ((int (*) (char *))global[285])
00476
00477
00478
00479
00480 #define strip_mirc_codes ((void (*)(int, char *))global[289])
00481 #define check_ansi ((int (*) (char *))global[290])
00482 #define oatoi ((int (*) (const char *))global[291])
00483
00484 #define str_isdigit ((int (*) (const char *))global[292])
00485 #define remove_crlf ((void (*) (char **))global[293])
00486 #define addr_match ((int (*)(const char *, const char *, int, int))global[294])
00487 #define mask_match ((int (*)(const char *, const char *))global[295])
00488
00489 #define check_conflags ((int (*) (struct flag_record *, int))global[296])
00490 #define increase_socks_max ((int (*)(void))global[297])
00491 #define LOG_TS ((char *)(global[298]))
00492 #define nstrdup(x) (((char *(*)())global[299])((x),MODULE_NAME,__FILE__,__LINE__))
00493
00494
00495 #define maskhost(a,b) maskaddr((a),(b),3)
00496 #define maskban(a,b) maskaddr((a),(b),3)
00497
00498
00499 #define match_addr(a,b) addr_match((a),(b),0,0)
00500 #define cmp_masks(a,b) addr_match((a),(b),0,1)
00501
00502
00503
00504
00505 #ifndef MAKING_ENCRYPTION
00506 # define encrypt_string(a, b) \
00507 (((char *(*)(char *,char*))encryption_funcs[4])(a,b))
00508 # define decrypt_string(a, b) \
00509 (((char *(*)(char *,char*))encryption_funcs[5])(a,b))
00510 #endif
00511
00512 #endif