rm6/
rm6/clans/
rm6/councils/
rm6/deity/
rm6/doc/mudprogs/
rm6/exchange/
rm6/gods/
rm6/homes/
rm6/nations/
rm6/player/
rm6/player/a/
rm6/src/RCS/
rm6/src/dmalloc/
rm6/src/dmalloc/bin/
rm6/src/dmalloc/include/
rm6/src/dmalloc/lib/
rm6/src/scripts/
rm6/src/utils/
/*****************************************************
**     _________       __                           **
**     \_   ___ \_____|__| _____  ________  ___     **
**      /    \  \/_  __ \ |/     \/  ___/_ \/   \   **
**      \     \___|  | \/ |  | |  \___ \  / ) |  \  **
**       \______  /__| |__|__|_|  /____ \__/__|  /  **
**         ____\/____ _        \/ ___ \/      \/    **
**         \______   \ |_____  __| _/___            **
**          |    |  _/ |\__  \/ __ | __ \           **
**          |    |   \ |_/ __ \  / | ___/_          **
**          |_____  /__/____  /_  /___  /           **
**               \/Antipode\/  \/    \/             **
******************************************************
**         Crimson Blade Codebase (CbC)             **
**     (c) 2000-2002 John Bellone (Noplex)          **
**           Coders: Noplex, Krowe                  **
**        http://www.crimsonblade.org               **
*****************************************************/

/*
 * File: news.h
 * Name: Extended News (v3.03)
 * Author: John 'Noplex' Bellone (jbellone@comcast.net)
 * Terms:
 * If this file is to be re-disributed; you must send an email
 * to the author. All headers above the #include calls must be
 * kept intact. All license requirements must be met. License
 * can be found in the included license.txt document or on the
 * website.
 * Description:
 * This is Crimson Blade's extended news module. It allows for news
 * cataglories to be created; each having it's own different filesystem
 * where news can be posted. It also allows for each to be specified a
 * specific path and filename where the news-textdump of HTML can be
 * sent to.
 * The news commands are tied directly into the command interpreter; so
 * news-types are instantaniously added; removed; and edited.
 */

#define NEWS_VERSION "v3.03"
#define NEWS_FILE "news.dat"
#define NEWS_TOP "&G&Y[&W&uRm2  News&g&Y]&g\r\n"
#define NEWS_HEADER "&G&Y[ &W#&Y] [&WPoster&Y]  [&WDate&Y]       [&WSubject&Y]&g\r\n"
#define NEWS_VIEW               15
#define NEWS_MAX_TYPES          10
#define NEWS_HTML_DIR           "/home/badas/public_html/"
#define MAX_POSTERS             20

DECLARE_DO_FUN( do_editnews );

typedef struct news_data NEWS;
struct news_data
{
   NEWS *next;
   NEWS *prev;
   void *temp;
   int number;
   int type;
   char *title;
   char *name;
   char *post;
   char *date;
};

typedef struct news_type NEWS_TYPE;
struct news_type
{
   NEWS *first_news;
   NEWS *last_news;
   NEWS_TYPE *next;
   NEWS_TYPE *prev;
   int vnum;
   int org_type;
   int post_level;
   int view_level;
   int html_max_view;
   char *owner;
   char *header;
   char *cmd_name;
   char *name;
   char *posters[MAX_POSTERS];
   char *org_name;
   char *html_news_path;
   char *html_txt_fname;
   bool locked;
};

NEWS_TYPE *first_news_type;
NEWS_TYPE *last_news_type;

/* news.c */
NEWS *grab_news args( ( NEWS_TYPE * type, char *str ) );
NEWS_TYPE *figure_type args( ( char *str ) );
void display_news args( ( CHAR_DATA * ch, NEWS * news, NEWS_TYPE * type ) );
void renumber_news args( ( void ) );
void save_news args( ( void ) );
void load_news args( ( void ) );
void fread_news args( ( NEWS * news, FILE * fp ) );
char *stamp_time args( ( void ) );
void html_news args( ( void ) );
void snarf_news args( ( FILE * fp, NEWS_TYPE * type ) );
void display_news_type args( ( CHAR_DATA * ch, NEWS_TYPE * type, char *argument ) );
void fread_news_type args( ( NEWS_TYPE * type, FILE * fp ) );
bool news_cmd_hook args( ( CHAR_DATA * ch, char *cmd, char *argument ) );
void link_news_to_type args( ( NEWS * news ) );
bool can_post_news args( ( CHAR_DATA * ch, NEWS_TYPE * type ) );
bool can_read_news args( ( CHAR_DATA * ch, NEWS_TYPE * type ) );