#include <stdlib.h> #include <unistd.h> #include "db.h" #include "net.h" #include <sys/time.h> #ifndef SOCK_STREAM #include <sys/socket.h> #endif #ifndef S_IFMT #include <sys/stat.h> #endif #define P(x) x #ifdef GLIBC2 #include <crypt.h> #endif /* GLIBC2 */ #ifndef FD_SETSIZE #include <sys/types.h> #endif #ifdef NeXT #include <sys/wait.h> #endif #include "log.h" #include "com.h" #include "softcode.h" #include "commands.h" #include "filelist.h" #include "subcommand.h" #include "plugins.h" #if defined(ultrix) || defined(linux) #define void_signal_type #endif #ifdef void_signal_type #define signal_type void #else #define signal_type int #endif extern time_t game_time; struct timed_reboot_struct { time_t when; char reboot; char *arg; }; /* Shortcut for string allocation */ #define SET(x, y) (x = stack_string_alloc(y, 1)) /* From ansi.c */ extern char *color P((char *, bool)); extern int my_is_color P((char *)); /* From admin.c */ extern void do_pbreak P((OBJ *)); extern void do_force P((OBJ *, char *, char *)); extern void do_su P((OBJ *, char *, char *)); extern void do_boot P((OBJ *, char *, char *)); extern void do_dboot P((OBJ *, char *, char *)); extern void do_chownall P((OBJ *, char *, char *)); extern void do_newpassword P((OBJ *, char *, char *)); extern void do_stats P((OBJ *, char *)); extern void do_wipeout P((OBJ *, char *, char *)); extern void do_gethost P((OBJ *, char *)); extern void do_listconnections P((OBJ *)); extern void do_botspot P((OBJ *, char *)); extern void do_admin P((OBJ *)); /* From attrib.c */ extern ATTR *find_attr P((char *)); extern ATTR *find_attr_by_num P((int)); extern ALIST *find_attr_on_obj P((OBJ *, ATTR *)); extern void atr_clr P((OBJ *, char *)); extern void atr_clr_a P((OBJ *, ATTR *)); extern void atr_add P((OBJ *, char *, char *)); extern void atr_add_a P((OBJ *, ATTR *, char *)); extern void my_atr_add P((OBJ *, char *, long)); extern char *atr_get P((OBJ *, char *)); extern char *atr_get_a P((OBJ *, ATTR *)); extern void atr_free P((OBJ *)); extern int parse_attrib P((OBJ *, char *, OBJ **, ATTR **)); extern char *unparse_atr_flags P((unsigned long int)); extern char *unparse_attr P((ALIST *)); extern void do_cpattr P((OBJ *, char *, char *)); /* From branch.c */ extern void sc_do_if P((char *, char *)); extern void sc_do_else P((void)); extern void sc_do_endif P((void)); extern void sc_do_for P((char *, char *)); extern void sc_do_next P((void)); extern void sc_do_wait P((char *)); extern void sc_do_end P((void)); extern void sc_do_goto P((char *)); extern void sc_do_gosub P((char *)); extern void sc_do_return P((void)); /* From bsd.c */ extern void flush_all_output P((void)); extern bool process_output P((DDATA *)); extern time_t now; extern const char *NullFile; extern float get_input P((DDATA *)); extern float get_output P((DDATA *)); extern int check_password P((OBJ *, char *)); extern void announce_connect P((DDATA *)); extern void announce_disconnect P((DDATA *)); extern void show_file P((DDATA *, char *)); extern int boot_off P((OBJ *)); extern void emergency_shutdown P((void)); extern void queue_string P((DDATA *, char *, bool)); extern void raw_notify P((OBJ *, char *, bool)); extern void shutdownsock P((DDATA *)); extern void info_io P((OBJ *)); extern void chk_hostname_update P((void)); /* From class.c */ extern int get_class P((OBJ *)); extern char *type_to_name P((int)); extern char *class_to_name P((int)); extern char *public_class_to_name P((int)); extern char *short_class_to_name P((int)); extern char *short_public_class_to_name P((int)); extern int name_to_class P((char *)); extern int class_to_list_pos P((int)); /* From code.c */ extern void add_new_prog P((OBJ *, OBJ *, char *)); extern void add_new_prog_line P((OBJ *, OBJ *, char *)); extern void do_code P((OBJ *, char *, char *)); extern struct program_struct *find_prog P((OBJ *, char *)); extern struct program_struct *new_program P((OBJ *)); extern void del_prog_line P((struct program_struct *, int)); extern void add_prog_line P((struct program_struct *, int, char *)); extern int next_line_num P((struct program_struct *)); extern void free_progs P((OBJ *)); /* From com.c */ extern void load_com_db P((void)); extern void save_com_db P((void)); extern COM *find_channel P((OBJ *, char *)); extern void do_join_channel P((OBJ *, char *)); extern void do_channel P((OBJ *, char *, char *)); extern void com_send P((char *, OBJ *, char *)); extern void do_com P((OBJ *, char *, char *)); extern COM_P *is_on_channel P((OBJ *, COM *, char)); extern char *unparse_com_alias P((OBJ *, char *)); extern void do_cquota P((OBJ *, char *, char *)); extern void rem_from_channels P((OBJ *)); extern void free_channels P((void)); /* From commands.c */ extern int parse_output P((char *, char *)); extern char *is_string P((char *)); extern void sc_do_print P((char *, char *)); extern void sc_do_let P((char *, char *)); extern void sc_do_input P((char *, char *)); extern int check_softcode_input P((OBJ *, char *)); /* From config.c */ extern void read_global_config_file P((void)); extern void do_config P((OBJ *, char *, char *)); extern void free_global_config P((void)); /* From create.c */ extern void do_create P((OBJ *, char *)); extern void check_spoofobj P((OBJ *, OBJ *)); extern void do_dig P((OBJ *, char *, char *)); extern void do_link P((OBJ *, char *, char *)); extern void do_openexit P((OBJ *, char *, char *, OBJ *)); /* From db.c */ extern OBJ *getloc P((OBJ *)); extern int Wizard P((OBJ *)); extern int Guest P((OBJ *)); extern int Typeof P((OBJ *)); extern OBJ *find_object P((int)); extern int get_free_dbref P((void)); extern void db_set_read P((FILE *)); extern void getstring P((FILE *, char **)); extern void load_db P((void)); extern void free_database P((void)); extern void db_write P((FILE *)); extern OBJ *new_object P((int, int)); extern void do_dump P((OBJ *)); extern void info_db P((OBJ *)); /* From destroy.c */ extern void do_destroy P((OBJ *, char *)); extern void destroy_obj P((OBJ *)); extern void do_dbck P((OBJ *)); extern void do_disconnected P((OBJ *, char *)); extern int mem_usage P((OBJ *)); /* From email.c */ extern void poll_pending_email P((void)); extern int is_valid_email P((char *)); extern void do_email P((OBJ *, char *, char *)); /* From eval.c */ extern int fun_stripcolor P((char *, char *[], OBJ *)); extern int fun_descriptor P((char *, char *[], OBJ *)); extern int fun_haspow P((char *, char *[], OBJ *)); extern int fun_sort P((char *, char *[], OBJ *)); extern int fun_rand P((char *, char *[], OBJ *)); extern int fun_get P((char *, char *[], OBJ *)); extern int fun_time P((char *, char *[], OBJ *, int)); extern int fun_xtime P((char *, char *[], OBJ *, int)); extern int fun_stripcolor P((char *, char *[], OBJ *)); extern int fun_objmem P((char *, char *[], OBJ *)); extern int fun_playmem P((char *, char *[], OBJ *)); extern int fun_mid P((char *, char *[], OBJ *)); extern int fun_truth P((char *, char *[], OBJ *)); extern int fun_denied P((char *, char *[], OBJ *)); extern int fun_huh P((char *, char *[], OBJ *)); extern int fun_base P((char *, char *[], OBJ *)); extern int fun_roman P((char *, char *[], OBJ *)); extern int fun_sgn P((char *, char *[], OBJ *)); extern int fun_sqrt P((char *, char *[], OBJ *)); extern int fun_abs P((char *, char *[], OBJ *)); extern int fun_first P((char *, char *[], OBJ *)); extern int fun_last P((char *, char *[], OBJ *)); extern int fun_rest P((char *, char *[], OBJ *)); extern int fun_flags P((char *, char *[], OBJ *)); extern int fun_mtime P((char *, char *[], OBJ *)); extern int fun_ctime P((char *, char *[], OBJ *)); extern int fun_money P((char *, char *[], OBJ *)); extern int fun_quota_left P((char *, char *[], OBJ *)); extern int fun_hasgoal P((char *, char *[], OBJ *)); extern int fun_mazename P((char *, char *[], OBJ *)); extern int fun_quota P((char *, char *[], OBJ *)); extern int fun_strlen P((char *, char *[], OBJ *)); extern int fun_comp P((char *, char *[], OBJ *)); extern int fun_scomp P((char *, char *[], OBJ *)); extern int fun_num P((char *, char *[], OBJ *)); extern int fun_loc P((char *, char *[], OBJ *)); extern int fun_room P((char *, char *[], OBJ *)); extern int fun_link P((char *, char *[], OBJ *)); extern int fun_linkup P((char *, char *[], OBJ *)); extern int fun_class P((char *, char *[], OBJ *)); extern int fun_rank P((char *, char *[], OBJ *)); extern int fun_has P((char *, char *[], OBJ *)); extern int fun_owner P((char *, char *[], OBJ *)); extern int fun_name P((char *, char *[], OBJ *)); extern int fun_unparse P((char *, char *[], OBJ *)); extern int fun_pos P((char *, char *[], OBJ *)); extern int fun_delete P((char *, char *[], OBJ *)); extern int fun_remove P((char *, char *[], OBJ *)); extern int fun_extract P((char *, char *[], OBJ *)); extern int fun_wmatch P((char *, char *[], OBJ *)); extern int fun_strcat P((char *, char *[], OBJ *)); extern int fun_controls P((char *, char *[], OBJ *)); extern int fun_entrances P((char *, char *[], OBJ *)); extern int fun_fsgn P((char *, char *[], OBJ *)); extern int fun_fsqrt P((char *, char *[], OBJ *)); extern int fun_fabs P((char *, char *[], OBJ *)); extern int fun_fcomp P((char *, char *[], OBJ *)); extern int fun_exp P((char *, char *[], OBJ *)); extern int fun_log P((char *, char *[], OBJ *)); extern int fun_ln P((char *, char *[], OBJ *)); extern int fun_arctan P((char *, char *[], OBJ *)); extern int fun_arccos P((char *, char *[], OBJ *)); extern int fun_arcsin P((char *, char *[], OBJ *)); extern int fun_tan P((char *, char *[], OBJ *)); extern int fun_cos P((char *, char *[], OBJ *)); extern int fun_sin P((char *, char *[], OBJ *)); extern int fun_eq P((char *, char *[], OBJ *)); extern int fun_gt P((char *, char *[], OBJ *)); extern int fun_lt P((char *, char *[], OBJ *)); extern int fun_gteq P((char *, char *[], OBJ *)); extern int fun_lteq P((char *, char *[], OBJ *)); extern int fun_randclr P((char *, char *[], OBJ *)); extern int fun_find P((char *, char *[], OBJ *)); extern int fun_float P((char *, char *[], OBJ *)); extern int fun_nspc P((char *, char *[], OBJ *)); extern int fun_wcount P((char *, char *[], OBJ *)); extern int fun_lwho P((char *, char *[], OBJ *)); extern int fun_spc P((char *, char *[], OBJ *)); extern int fun_flip P((char *, char *[], OBJ *)); extern int fun_lnum P((char *, char *[], OBJ *)); extern int fun_string P((char *, char *[], OBJ *)); extern int fun_cjust P((char *, char *[], OBJ *)); extern int fun_ljust P((char *, char *[], OBJ *)); extern int fun_rjust P((char *, char *[], OBJ *)); extern int fun_lattrdef P((char *, char *[], OBJ *)); extern int fun_lattr P((char *, char *[], OBJ *)); extern int fun_type P((char *, char *[], OBJ *)); extern int fun_idle P((char *, char *[], OBJ *)); extern int fun_onfor P((char *, char *[], OBJ *)); extern int fun_port P((char *, char *[], OBJ *)); extern int fun_host P((char *, char *[], OBJ *)); extern int fun_tmfrmt P((char *, char *[], OBJ *, int)); extern int fun_comma P((char *, char *[], OBJ *)); extern int fun_players P((char *, char *[], OBJ *)); extern int fun_start P((char *, char *[], OBJ *)); extern int fun_end P((char *, char *[], OBJ *)); extern int fun_strchr P((char *, char *[], OBJ *)); extern int fun_hasstr P((char *, char *[], OBJ *)); extern int fun_anum P((char *, char *[], OBJ *)); extern int fun_dtoc P((char *, char *[], OBJ *)); extern int fun_dtof P((char *, char *[], OBJ *)); extern int fun_randword P((char *, char *[], OBJ *)); extern int fun_chr P((char *, char *[], OBJ *)); extern int fun_isdigit P((char *, char *[], OBJ *)); extern int fun_contype P((char *, char *[], OBJ *)); extern void info_funcs P((OBJ *)); extern OBJ *match_thing P((OBJ *, char *)); extern char *parse_up P((char **, int)); extern struct fun *lookup_func P((char *)); /* From eventrefs.c */ extern void do_eventref P((OBJ *, char *, char *)); extern int chk_event_ref P((OBJ *, OBJ *)); extern void add_event_ref P((OBJ *, OBJ *)); extern void del_event_ref P((OBJ *, OBJ *)); /* From fileutils.c */ extern char *get_next_line P((FILE *)); extern int getref P((FILE *)); extern void putref P((FILE *, int)); extern unsigned long file_size P((char *)); extern FILELIST *get_filelist P((char *, int)); /* From funcs.c */ extern void do_function P((OBJ *, char *, char *)); extern void save_sc_funcs P((void)); extern void load_sc_funcs P((void)); extern void free_sc_funcs P((void)); extern int chk_user_func P((OBJ *, char *, char *)); /* From game.c */ extern void do_noop P((void)); extern void do_reboot P((OBJ *, char *, char *)); extern void do_shutdown P((OBJ *, char *, char *)); extern char *bad_cmd_mesg P((void)); extern char *perm_denied P((void)); extern char *guest_fail P((OBJ *, OBJ *, char *)); extern void exit_nicely P((int)); extern void dump_database P((void)); extern void fork_and_dump P((void)); extern int init_game P((char *)); extern void panic P((char *)); extern CS *match_command P((struct descriptor_data *, OBJ *, char *)); extern void process_command P((struct descriptor_data *, OBJ *, char *, OBJ *)); extern void report P((void)); /* From glob.c */ extern bool wildcard_match P((char *, char *, char ***)); /* From hash.c */ extern void add_hash P((struct descriptor_data *, CS *)); extern void do_hash P((struct descriptor_data *, OBJ *)); extern CS *match_hash P((struct descriptor_data *, char *)); extern void free_hashtable P((struct descriptor_data *)); extern void add_comm_alias P((OBJ *, char *, char *)); extern CS *match_comm_alias P((OBJ *, char *)); extern struct comm_alias *find_comm_alias P((OBJ *, struct command_struct *)); extern void do_calias P((OBJ *, char *, char *)); extern void free_caliases P((OBJ *)); /* From help.c */ extern void do_help P((OBJ *, char *, char *)); extern void do_news P((OBJ *, char *)); /* From ident.c */ extern char *ident_id P((int, int)); /* From info.c */ extern void do_info P((OBJ *, char *)); extern void do_whois P((OBJ *, char *)); extern void write_loginstats P((void)); extern void read_loginstats P((void)); extern void do_loginstats P((OBJ *)); extern void add_login P((OBJ *)); extern void do_commands P((OBJ *)); /* From input.c */ extern void query P((DDATA *, char *)); extern int check_input P((DDATA *, char *)); /* From inventory.c */ extern void do_inventory P((OBJ *, char *)); /* From lockout.c */ extern void read_host_lockouts P((void)); extern void write_host_lockouts P((void)); extern bool chk_host_lockout P((int, char *)); extern void do_hostlockout P((OBJ *, char *, char *)); /* From locks.c */ extern int eval_boolexp P((OBJ *, OBJ *, char *)); extern char *process_lock P((OBJ *, char *)); extern char *unprocess_lock P((OBJ *, char *)); /* From log.c */ extern void muse_log P((struct log *, char *)); extern void close_logs P((void)); extern struct log *logs[]; /* From look.c */ extern char *pseudo_exit_name P((OBJ *, char *)); extern char *flag_description P((OBJ *)); extern void look_atr P((OBJ *, OBJ *, ATTR *)); extern void do_examine P((OBJ *, char *)); extern void do_find P((OBJ *, char *)); extern void do_laston P((OBJ *, char *)); extern void do_look_around P((OBJ *)); extern void do_look_at P((OBJ *, char *)); extern void do_whereis P((OBJ *, char *)); extern void look_room P((OBJ *, OBJ *)); /* From mail.c */ extern void check_mail P((OBJ *, int)); extern void do_mailcmd P((OBJ *, char *, char *)); extern void do_mail P((OBJ *, char *, char *, int)); extern void write_mail P((void)); extern void read_mail P((void)); extern int mail_size P((OBJ *)); extern void clear_old_mail P((void)); extern void do_mlist P((OBJ *, char *, char *)); extern void free_mail P((OBJ *)); extern void load_maillists P((void)); extern void save_maillists P((void)); extern void remove_from_mlists P((OBJ *)); extern void do_dirmail P((OBJ *, char *)); extern void do_massmail P((OBJ *, char *)); extern void free_mlists P((void)); /* From match.c */ extern OBJ *match_dbref P((char *, int)); extern OBJ *match_player P((OBJ *, char *)); extern OBJ *match_object P((OBJ *, char *, int)); extern OBJ *match_contents P((OBJ *, char *, int)); extern char *no_match P((char *)); extern char *name P((OBJ *)); extern char *poss P((OBJ *)); /* From math.c */ extern int is_sign P((char)); extern char *is_math P((char *)); extern int parse_statement P((char *, char *)); /* From (comm/)move.c */ extern void do_teleport P((OBJ *, char *, char *)); extern void do_join P((OBJ *, char *)); extern void do_summon P((OBJ *, char *)); /* From (maze/)move.c */ extern int can_move P((OBJ *, char *)); extern void do_drop P((OBJ *, char *)); extern void do_enter P((OBJ *, char *)); extern void do_get P((OBJ *, char *)); extern void do_leave P((OBJ *)); extern void do_move P((OBJ *, char *)); extern int enter_room P((OBJ *, OBJ *)); extern int moveto P((OBJ *, OBJ *)); extern void safe_tel P((OBJ *, OBJ *)); extern OBJ *get_room P((OBJ *)); extern int bad_direction P((char *)); /* From notify.c */ extern void notify P((OBJ *, char *)); extern void notify_in P((OBJ *, OBJ *, char *)); extern void notify_in2 P((OBJ *, OBJ *, OBJ *, char *)); extern void notify_all P((char *, OBJ *)); extern void notify_all2 P((char *, OBJ *)); extern void notify_except_flag P((char *, OBJ *, unsigned long)); /* From page.c */ extern void do_page P((OBJ *, char *, char *)); extern void free_pages P((void)); /* From paste.c */ extern struct paste_struct *find_paste P((DDATA *)); extern char is_pasting P((DDATA *)); extern void remove_paste P((DDATA *)); extern void do_paste P((DDATA *, char *, char *)); extern void add_more_paste P((DDATA *, char *)); extern void do_pastestats P((OBJ *, char *)); /* From pcmds.c */ extern char *format_time P((time_t)); extern char *get_version P((void)); extern void do_as P((OBJ *, char *, char *)); extern void do_version P((OBJ *)); extern void do_uptime P((OBJ *)); extern void do_evaluate P((OBJ *, char *)); /* From player.c */ extern void do_empower P((OBJ *, char *, char *)); extern OBJ *connect_player P((char *, char *)); extern OBJ *create_guest P((char *, char *, char *)); extern OBJ *create_player P((char *, char *, int, OBJ *)); extern void destroy_guest P((OBJ *)); extern int owns_stuff P((OBJ *)); extern void do_class P((OBJ *, char *, char *)); extern void do_nuke P((OBJ *, char *, char *)); extern void do_password P((OBJ *, char *, char *)); extern char *create_random_password P((void)); extern void do_pcreate P((OBJ *, char *, char *)); extern void do_quota P((OBJ *, char *, char *)); extern void do_inactive P((OBJ *)); extern void do_complain P((OBJ *, char *, char *)); /* From plugins.c */ extern void plugin_add P((char *, void (*)(), PLUGIN_F *)); extern void plugin_funcs_init P((PLUGIN_F *)); extern void plugin_init P((void)); extern void plugin_startup P((void)); extern void plugin_shutdown P((void)); extern void plugin_timed P((void)); extern void plugin_login P((DDATA *)); extern void plugin_logout P((DDATA *)); extern void plugin_create P((OBJ *)); extern void plugin_destroy P((OBJ *)); extern void plugin_command_match P((char *, CS ***, int *)); extern void do_plugins P((OBJ *)); /* From powers.c */ extern int get_pow P((OBJ *, int)); extern int has_pow P((OBJ *, OBJ *, int)); extern int controls P((OBJ *, OBJ *, int)); extern void set_pow P((OBJ *, int, int)); extern int name_to_pow P((char *)); extern char *pow_to_name P((int)); extern void do_powcount P((OBJ *, char *)); extern void do_powers P((OBJ *, char *)); extern void do_powlist P((OBJ *)); /* From predicates.c */ extern int IS P((OBJ *, int, unsigned long)); extern int is_root P((OBJ *)); extern int neighbors P((OBJ *, OBJ *)); extern int can_see_atr P((OBJ *, OBJ *, ATTR *)); extern int can_set_atr P((OBJ *, OBJ *, ATTR *)); extern int inf_mon P((OBJ *)); extern void add_quota P((OBJ *, int)); extern int can_see P((OBJ *, OBJ *, int)); extern int controls P((OBJ *, OBJ *, int)); extern OBJ *def_owner P((OBJ *)); extern int could_doit P((OBJ *, OBJ *, char *)); extern void did_it P((OBJ *, OBJ *, char *, char *, char *)); extern void giveto P((OBJ *, int)); extern DDATA *is_idle P((OBJ *)); extern int my_is_vowel P((char)); extern int ok_object_name P((OBJ *, char *)); extern int ok_room_name P((char *)); extern int ok_exit_name P((char *)); extern int ok_thing_name P((char *)); extern int ok_player_name P((OBJ *, char *, char *)); extern int ok_password P((char *)); extern int payfor P((OBJ *, int)); extern int power P((OBJ *, int)); extern char *main_exit_name P((OBJ *)); extern int is_dark P((OBJ *)); extern void SET P((char **, char *)); extern DDATA *is_connected_raw P((OBJ *)); extern DDATA *is_connected P((OBJ *, OBJ *)); extern int is_coding P((OBJ *)); extern char *tprintf P((char *, ...)); /* From queue.c */ extern void do_haltall P((OBJ *)); extern void do_halt P((OBJ *, char *)); extern void do_ps P((OBJ *)); extern void do_cmdav P((OBJ *)); extern void inc_cmdav P((void)); extern void free_cmdav P((void)); /* From reference.c */ extern void reference_db P((void)); extern void add_content P((OBJ *, OBJ *)); extern void remove_content P((OBJ *, OBJ *)); extern void add_exit P((OBJ *, OBJ *)); extern void remove_exit P((OBJ *, OBJ *)); extern void remove_refs P((OBJ *)); /* From give.c */ extern void do_giveto P((OBJ *, char *, char *)); extern void do_give P((OBJ *, char *, char *)); extern void do_money P((OBJ *, char *)); /* From run.c */ extern void show_line_and_end P((void)); extern int is_running P((struct program_struct *)); extern void syntax_error P((void)); extern void end_program P((struct program_struct *, int)); extern char *get_command P((char *)); extern void run_softcode P((void)); extern void do_run P((OBJ *, char *, char *)); extern void do_kill P((OBJ *, char *)); extern void show_softcode_queue P((OBJ *)); extern int check_softcode_match P((OBJ *, char *)); /* From search.c */ extern void do_grep P((OBJ *, char *, char *)); extern void do_getalias P((OBJ *, char *)); extern void do_search P((OBJ *, char *, char *)); /* From (comm/)set.c */ extern void do_chown P((OBJ *, char *, char *)); extern void do_describe P((OBJ *, char *, char *)); extern void do_edit P((OBJ *, char *, char *)); extern void do_name P((OBJ *, char *, char *)); extern unsigned long match_flag P((OBJ *, OBJ *, char *, int *)); extern unsigned long match_flag2 P((OBJ *, OBJ *, char *, int *)); extern void do_set P((OBJ *, char *, char *)); extern int test_set P((OBJ *, char *, char *, char *)); extern void do_ansi P((OBJ *, char *)); /* From (softcode/)set.c */ extern void sc_do_set P((char *, char *)); /* From speech.c */ extern char *reconstruct_message P((char *, char *)); extern void do_say P((OBJ *, char *, char *)); extern void do_pose P((OBJ *, char *, char *)); extern void do_poss P((OBJ *, char *, char *)); extern void do_echo P((OBJ *, char *, char *)); extern void do_necho P((OBJ *, char *)); extern void do_announce P((OBJ *, char *, char *)); extern void do_broadcast P((OBJ *, char *, char *)); extern void do_emit P((OBJ *, char *, char *)); extern void do_oemit P((OBJ *, char *, char *)); extern void do_pemit P((OBJ *, char *, char *)); extern void do_remit P((OBJ *, char *, char *)); extern void do_nemit P((OBJ *, char *)); extern void do_noemit P((OBJ *, char *, char *)); extern void do_npemit P((OBJ *, char *, char *)); extern void do_gripe P((OBJ *, char *, char *)); extern void do_cemit P((OBJ *, char *, char *)); extern void do_wemit P((OBJ *, char *, char *)); extern void do_dpage P((OBJ *, char *, char *)); extern void do_to P((OBJ *, char *, char *)); extern void do_think P((OBJ *, char *)); extern int unparse_tothink P((OBJ *, char *, char *, int, int)); /* From stack.c */ extern void *stack_alloc2 P((char *, int, unsigned long, bool, bool)); extern void *stack_realloc2 P((char *, int, void *, unsigned long, bool)); extern void stack_free2 P((char *, int, void *, bool)); extern void stack_unalloc P((void)); extern char *stack_string_alloc2 P((char *, int, char *, bool)); extern char *stack_string_realloc2 P((char *, int, char *, char *, bool)); extern void info_stack P((OBJ *)); extern void stack_report P((void)); /* From state.c */ extern STATE *find_state P((int)); extern void set_state P((DDATA *, int)); extern int check_state P((DDATA *, int)); extern int do_state_waitconnect P((DDATA *, char *)); extern int do_state_waitlogin P((DDATA *, char *)); extern int do_state_waitpass P((DDATA *, char *)); extern int do_state_waitplayername P((DDATA *, char *)); extern int do_state_waitplayerpass P((DDATA *, char *)); extern int do_state_waitpassverify P((DDATA *, char *)); extern int do_state_waitplayeremail P((DDATA *, char *)); /* From stringutil.c */ extern char *str_index P((char *, int)); extern int string_compare P((char *, char *)); extern char *string_match P((char *, char *)); extern int string_prefix P((char *, char *)); extern int str_colorlen P((char *)); extern char *strip_color P((char *)); extern char *comma P((char *)); extern char *my_ljust P((char *, int)); extern char *my_rjust P((char *, int)); extern char *my_center P((char *, int)); extern char *my_string P((char *, int)); extern char *box_header P((char *, char *, int)); extern void extract_char P((char *)); extern char *check_plural P((int, char *, char *)); extern void del_whitespace P((char **)); extern char *first_word P((char *)); extern char *rest P((char *)); extern char *last_char P((char *)); extern SUBCOMMAND *subcommand_match P((OBJ *, char *, SUBCOMMAND *, int *)); extern void subcommand_print P((OBJ *, char *, SUBCOMMAND *)); /* From timer.c */ extern void init_timer P((void)); extern void dispatch P((void)); /* From todomotd.c */ extern void save_todomotd P((bool)); extern void load_todomotd P((bool)); extern void do_todo P((OBJ *, char *, char *)); extern void do_motd P((OBJ *, char *, char *)); extern void free_todomotd P((void)); /* From unparse.c */ extern unsigned long str_to_flags P((OBJ *, char *)); extern char *unparse_flags P((OBJ *)); extern char *unparse_object P((OBJ *, OBJ *)); /* From utils.c */ long mkxtime P((char *, OBJ *, char *)); extern char *mktm P((time_t, char *, OBJ *)); extern char *make_human_time P((int)); extern char *time_format P((time_t, int)); extern unsigned int my_rand P((void)); /* From var.c */ extern char *cvar_val P((char *)); extern SCVAR *new_scvar P((struct code_struct *, char *, bool)); extern int ivar_val P((char *)); extern SCVAR *find_var P((char *, bool)); extern bool get_varname P((char *, char *)); /* From who.c */ extern void do_who P((OBJ *, char *, char *)); extern void do_whocolor P((OBJ *, char *)); extern void do_swlm P((OBJ *, char *));