/* ************************************************************************ * File: db.h Part of CircleMUD * * Usage: header file for database handling * * * * All rights reserved. See license.doc for complete information. * * * * Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University * * CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. * ************************************************************************ */ #ifndef __DB_H__ #define __DB_H__ /* arbitrary constants used by index_boot() (must be unique) */ #define DB_BOOT_HLP 0 #if defined(CIRCLE_MACINTOSH) #define ETC_ZONES ":zones:" #define ETC_TEXT ":text:" #define ETC_TEXT_HELP ":text:help:" #define ETC_MISC ":misc:" #define ETC_ETC ":etc:" #define ETC_PLRTEXT ":plrtext:" #define ETC_PLRITEMS ":plritems:" #define ETC_PLRALIAS ":plralias:" #define ETC_HOUSE ":house:" #define SLASH ":" #elif defined(CIRCLE_AMIGA) || defined(CIRCLE_UNIX) || defined(CIRCLE_WINDOWS) || defined(CIRCLE_ACORN) || defined(CIRCLE_VMS) #define ETC_ZONES "zones/" #define ETC_TEXT "text/" #define ETC_TEXT_HELP "text/help/" #define ETC_MISC "misc/" #define ETC_ETC "etc/" #define ETC_PLRTEXT "plrtext/" #define ETC_PLRITEMS "plritems/" #define ETC_PLRALIAS "plralias/" #define ETC_HOUSE "house/" #define SLASH "/" #else #error "Unknown path components." #endif #define SUF_ITEMS "items" #define SUF_TEXT "text" #define SUF_ALIAS "alias" #define SUF_ZONE "dao" #if defined(CIRCLE_AMIGA) #define FASTBOOT_FILE "/.fastboot" /* autorun: boot without sleep */ #define KILLSCRIPT_FILE "/.killscript" /* autorun: shut mud down */ #define PAUSE_FILE "/pause" /* autorun: don't restart mud */ #elif defined(CIRCLE_MACINTOSH) #define FASTBOOT_FILE "::.fastboot" /* autorun: boot without sleep */ #define KILLSCRIPT_FILE "::.killscript" /* autorun: shut mud down */ #define PAUSE_FILE "::pause" /* autorun: don't restart mud */ #else #define FASTBOOT_FILE "../.fastboot" /* autorun: boot without sleep */ #define KILLSCRIPT_FILE "../.killscript"/* autorun: shut mud down */ #define PAUSE_FILE "../pause" /* autorun: don't restart mud */ #endif /* names of various files and directories */ #define INDEX_FILE "index" /**< index of world files */ #define MINDEX_FILE "index.mini" /**< and for mini-mud-mode */ #define HLP_PREFIX ETC_TEXT"help"SLASH /**< for HELP <keyword> */ #define CREDITS_FILE ETC_TEXT"credits" /* for the 'credits' command */ #define NEWS_FILE ETC_TEXT"news" /* for the 'news' command */ #define MOTD_FILE ETC_TEXT"motd" /* messages of the day / mortal */ #define IMOTD_FILE ETC_TEXT"imotd" /* messages of the day / immort */ #define GREETINGS_FILE ETC_TEXT"greetings" /* The opening screen. */ #define HELP_PAGE_FILE ETC_TEXT_HELP"screen" /* for HELP <CR> */ #define INFO_FILE ETC_TEXT"info" /* for INFO */ #define WIZLIST_FILE ETC_TEXT"wizlist" /* for WIZLIST */ #define IMMLIST_FILE ETC_TEXT"immlist" /* for IMMLIST */ #define BACKGROUND_FILE ETC_TEXT"background"/* for the background story */ #define POLICIES_FILE ETC_TEXT"policies" /* player policies/rules */ #define HANDBOOK_FILE ETC_TEXT"handbook" /* handbook for new immorts */ #define IDEA_FILE ETC_MISC"ideas" /* for the 'idea'-command */ #define TYPO_FILE ETC_MISC"typos" /* 'typo' */ #define BUG_FILE ETC_MISC"bugs" /* 'bug' */ #define MESS_FILE ETC_MISC"messages" /* damage messages */ #define SOCMESS_FILE ETC_MISC"socials" /* messages for social acts */ #define XNAME_FILE ETC_MISC"xnames" /* invalid name substrings */ #define PLAYER_FILE ETC_ETC"players" /* the player database */ #define MAIL_FILE ETC_ETC"plrmail" /* for the mudmail system */ #define BAN_FILE ETC_ETC"badsites" /* for the siteban system */ #define HCONTROL_FILE ETC_ETC"hcontrol" /* for the house system */ #define TIME_FILE ETC_ETC"time" /* for calendar system */ #define COMMANDS_FILE ETC_ETC"commands.dao" /* for the commands table */ /* public procedures in db.c */ void boot_db(void); void destroy_db(void); int create_entry(char *name); void zone_update(void); char *fread_string(FILE *fl, const char *error); long get_id_by_name(const char *name); char *get_name_by_id(long id); void save_mud_time(timeInfoData_t *when); void free_extra_descriptions(extraDescData_t *edesc); void free_text_files(void); void free_player_index(void); void free_help(void); void char_to_store(charData_t *ch, pfileElement_t *st); void store_to_char(pfileElement_t *st, charData_t *ch); int load_char(const char *name, pfileElement_t *char_element); void save_char(charData_t *ch); void init_char(charData_t *ch); charData_t* create_char(void); int vnum_mobile(char *searchname, charData_t *ch); void clear_char(charData_t *ch); void reset_char(charData_t *ch); void free_char(charData_t *ch); charData_t *read_mobile(charData_t *mobProto) ; itemData_t *read_item(itemData_t *itemProto); itemData_t *create_obj(void); void clear_object(itemData_t *obj); void free_obj(itemData_t *obj); int vnum_object(char *searchname, charData_t *ch); #define REAL 0 #define VIRTUAL 1 /** * An alias for struct _playerIndex_t. * @typedef struct _playerIndex_t */ typedef struct _playerIndex_t playerIndex_t; struct _playerIndex_t { char *name; long id; }; /** * An alias for struct _helpData_t. * @typedef struct _helpData_t */ typedef struct _helpData_t helpData_t; struct _helpData_t { char *keyword; char *entry; int duplicate; }; /* don't change these */ #define BAN_NOT 0 #define BAN_NEW 1 #define BAN_SELECT 2 #define BAN_ALL 3 #define BANNED_SITE_LENGTH 50 /** * An alias for struct _siteBanData_t. * @typedef struct _siteBanData_t */ typedef struct _siteBanData_t siteBanData_t; struct _siteBanData_t { char site[BANNED_SITE_LENGTH+1]; int type; time_t date; char name[MAX_NAME_LENGTH+1]; siteBanData_t *next; }; /* global buffering system */ #ifndef __DB_C__ extern descriptorData_t *descriptor_list; extern charData_t *character_list; extern playerSpecials_t dummy_mob; extern indexData_t *mob_index; extern indexData_t *obj_index; extern itemData_t *object_list; extern struct _hashMap_t *zones; #endif #ifndef __CONFIG_C__ extern char *OK; extern char *NOPERSON; extern char *NOEFFECT; #endif #endif /* __DB_H__ */