/* ************************************************************************
* 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__ */