ackmud/
ackmud/area/imc/
ackmud/npcs/a/
ackmud/npcs/c/
ackmud/npcs/d/
ackmud/npcs/e/
ackmud/npcs/f/
ackmud/npcs/h/
ackmud/npcs/i/
ackmud/npcs/k/
ackmud/npcs/l/
ackmud/npcs/n/
ackmud/npcs/o/
ackmud/npcs/p/
ackmud/npcs/r/
ackmud/npcs/s/
ackmud/npcs/w/
ackmud/player/c/
ackmud/player/s/
ackmud/player/z/
/*
 * All of the global linked lists, in one clump.  Declarations here,
 * actual variables in lists.c
 * -- Altrag
 */
extern	AREA_DATA *		first_area;
extern	AREA_DATA *		last_area;
extern	BAN_DATA *		first_ban;
extern	BAN_DATA *		last_ban;
extern	CHAR_DATA *		first_char;
extern	CHAR_DATA *		last_char;
extern	DESCRIPTOR_DATA *	first_desc;
extern	DESCRIPTOR_DATA *	last_desc;
extern	HELP_DATA *		first_help;
extern	HELP_DATA *		last_help;
extern	NOTE_DATA *		first_note;
extern	NOTE_DATA *		last_note;
extern	OBJ_DATA *		first_obj;
extern	OBJ_DATA *		last_obj;
extern	SHOP_DATA *		first_shop;
extern	SHOP_DATA *		last_shop;
extern	CORPSE_DATA *		first_corpse;
extern	CORPSE_DATA *		last_corpse;
extern	MARK_LIST_MEMBER *	first_mark_list;
extern	MARK_LIST_MEMBER *	last_mark_list;
extern	CONTROL_LIST	*	first_control_list;
extern	CONTROL_LIST	*	last_control_list;
extern	QUEUED_INTERACT_LIST *	first_queued_interact;
extern	QUEUED_INTERACT_LIST *	first_queued_interact;
extern	INFLUENCE_LIST	*	first_influence_list;
extern	INFLUENCE_LIST	*	last_influence_list;
extern	RULER_LIST	*	first_ruler_list;
extern	RULER_LIST	*	last_ruler_list;
extern	DL_LIST		*	first_brand;
extern	DL_LIST		*	last_brand;



extern	PORTAL_DATA *		portal_free;
extern	AFFECT_DATA *		affect_free;
extern	ROOM_AFFECT_DATA *	raffect_free;
extern	AREA_DATA *		area_free;
extern	BAN_DATA *		ban_free;
extern	CHAR_DATA *		char_free;
extern	DESCRIPTOR_DATA *	desc_free;
extern	EXIT_DATA *		exit_free;
extern	EXTRA_DESCR_DATA *	exdesc_free;
extern	HELP_DATA *		help_free;
extern	MOB_INDEX_DATA *	mid_free;
extern	NOTE_DATA *		note_free;
extern	OBJ_DATA *		obj_free;
extern	OBJ_INDEX_DATA *	oid_free;
extern	PC_DATA *		pcd_free;
extern	RESET_DATA *		reset_free;
extern	ROOM_INDEX_DATA *	rid_free;
extern	SHOP_DATA *		shop_free;
extern	MPROG_DATA *		mprog_free;
extern	MPROG_ACT_LIST *	mpact_free;
extern	BUILD_DATA_LIST *	build_free;
extern	MAGIC_SHIELD *		shield_free;
extern	MEMBER_DATA * 		member_free;
extern	CORPSE_DATA *		corpse_free;
extern	MARK_DATA *		mark_free;
extern	MARK_LIST_MEMBER *	mark_list_free;
extern  INTERACT_DATA *		interact_free;
extern  INFLUENCE_DATA	*	influence_free;
extern  RULER_DATA	*	ruler_data_free;
extern  CONTROL_DATA	*	control_data_free;
extern  CONTROL_LIST	*	control_list_free;
extern  QUEUED_INTERACT_LIST *	queued_interact_free;
extern  INFLUENCE_LIST	*	influence_list_free;
extern  RULER_LIST	*	ruler_list_free;
extern	DL_LIST *		dl_list_free;
extern	BRAND_DATA *		brand_data_free;




extern  bool			booting_up;

extern char *  const   dir_name        []; 
extern char *  const   rev_name        []; 

#define GET_FREE(item, freelist) \
do { \
  if ( !(freelist) ) \
    (item) = getmem(sizeof(*(item))); \
  else { \
    if ( !(freelist)->is_free ) { \
      bug("GET_FREE: freelist head is NOT FREE!  Hanging...", 0); \
      for (;;); \
    } \
    (item) = (freelist); \
    (freelist) = (item)->next; \
    memset((item), 0, sizeof(*(item))); /* This clears is_free flag */ \
  } \
} while(0)

#define PUT_FREE(item, freelist) \
do { \
  if ( (item)->is_free ) { \
    bug("PUT_FREE: item is ALREADY FREE!  Hanging...", 0); \
    for (;;); \
  } \
  (item)->next = (freelist); \
  (item)->is_free = TRUE; /* This sets is_free flag */ \
  (freelist) = (item); \
} while(0)