TinyMAZE/
TinyMAZE/config/
TinyMAZE/doc/
TinyMAZE/run/msgs/
TinyMAZE/src/
TinyMAZE/src/db/
TinyMAZE/src/ident/
TinyMAZE/src/io/
TinyMAZE/src/prog/
TinyMAZE/src/softcode/
TinyMAZE/src/util/
#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 *));