/*
 * citlib.h -- global function and variable declarations for the Fnordadel
 *		library (all files in \citlib.)  Generated by `mkptypes'.
 *
 * 90Nov06 AA	Hacked up for gcc/ANSI stuff
 * 90Aug28 AA	Created.
 */

#ifndef _CITLIB_H
#define _CITLIB_H

#if defined(__STDC__) || defined(__cplusplus)
# define _P(s) s
#else
# define _P(s) ()
#endif

/* citlib\cd.c */
int cd _P((char path[]));

/* citlib\clock.c */
long upTime _P((void));
clock_t ticksSince _P((clock_t then));
void pause _P((int i));
long timeSince _P((clock_t x));
long timeLeft _P((long p));

/* citlib\congetyn.c */
int conGetYesNo _P((char *message));

/* citlib\conout.c */
void conout _P((int c));

/* citlib\crashout.c */
void crashout _P((char *fmt, ...));

/* citlib\crypte.c */
void crypte _P((register char *buf, register unsigned short count, register unsigned short seed));

/* citlib\ctdlfile.c */
char *ENDOFSTR _P((char *s));
void ctdlfile _P((char *dest, unsigned short dir, char *fmt, ...));

/* citlib\dskspace.c */
int diskSpaceLeft _P((char *path, long *sectors, long *bytes));

/* citlib\findmsg.c */
int findMessage _P((short loc, long id));

/* citlib\formroom.c */
char *formRoom _P((int roomno, int markprivate));

/* citlib\formtime.c */
char *tod _P((int stdTime));
char *formDate _P((void));
char *day_of_week _P((struct tm *clk));

/* citlib\fromdesk.c */
int fromdesk _P((void));
void hitkey _P((void));

/* citlib\getcd.c */
void getcd _P((PATHBUF path));

/* citlib\getdiren.c */
struct dirList *getdirentry _P((char *pattern));

/* citlib\getnet.c */
void getNet _P((int n));

/* citlib\getroom.c */
void getRoom _P((int rm));
void roomsanity _P((void));

/* citlib\getspool.c */
void getstrspool _P((FILE *spl, char *place, register int length));
int getspool _P((FILE *spl));

/* citlib\getyesno.c */
int coreGetYesNo _P((char *prompt, int def));
char getYesNo _P((char *prompt));
char getYes _P((char *prompt));
char getNo _P((char *prompt));

/* citlib\hangup.c */
void hangup _P((void));

/* citlib\hash.c */
short int hash _P((char *str));

/* citlib\io.c */
int KBReady _P((void));
int getch _P((void));
void putch _P((register int c));
int MIReady _P((void));
int getraw _P((void));
int getMod _P((void));
void modout _P((register int c));

/* citlib\labelcmp.c */
int labelcmp _P((char *p1, char *p2));

/* citlib\libarch.c */
char *findArchiveName _P((int room));
void initArchiveList _P((void));
int addArchiveList _P((int room, char *fn));

/* citlib\libevent.c */
int minutes _P((int *today));
void initEvent _P((void));
void setUpEvent _P((void));
void doEvent _P((void));

/* citlib\libfloor.c */
void updtfloor _P((void));
void loadfloor _P((void));

/* citlib\libroute.c */
int findnode _P((char *node, int *cost));
int parsepath _P((char *netpath, char *node, int edit));
void changeto _P((char *oldto, char *firstnode));

/* citlib\libtag.c */
int tagSetup _P((void));
void tagClose _P((void));
void putTag _P((char *fname, char *desc));
char *getTag _P((char *fname));
void rewindtag _P((void));

/* citlib\locking.c */
int makelock _P((int *p));
void wipelock _P((int *p));

/* citlib\modputs.c */
void modputs _P((char *s));

/* citlib\msgio.c */
int getmsgchar _P((void));
int getmsgstr _P((char *place, register int length));
int msgseek _P((int sector, int byte));
void wipemsgs _P((short oldsector, short oldchar, short newsector, short newchar));

/* citlib\msgio2.c */
void getmessage _P((void));

/* citlib\msgtime.c */
time_t msgtime _P((register char *date, register char *time));

/* citlib\netnmidx.c */
int netnmidx _P((char *name));

/* citlib\nnisok.c */
int NNisok _P((char *node));

/* citlib\normalis.c */
void normalise _P((char *s));
void copystring _P((char *s1, char *s2, int size));

/* citlib\noteroom.c */
void noteRoom _P((void));
void update_mail _P((void));

/* citlib\output.c */
int getnoecho _P((void));
void retfmt _P((void));
void doCR _P((void));
void doNL _P((char c));
void oChar _P((char c));

/* citlib\printmsg.c */
void putheader _P((int leftover));
void doPrintMsg _P((int slot));
void prtHdr _P((int slot));
void prtBody _P((void));

/* citlib\putnet.c */
void putNet _P((int n));

/* citlib\putroom.c */
void putRoom _P((int rm));

/* citlib\readtabl.c */
int readSysTab _P((int kill));

/* citlib\receive.c */
int receive _P((int seconds));

/* citlib\rmalias.c */
struct alias *load_alias _P((char *where));
char *chk_alias _P((struct alias *tab, int sys, char *name));
char *chk_name _P((struct alias *tab, int sys, char *alias));

/* citlib\sgetword.c */
int sgetword _P((char *dest, char *source, int offset, int lim));

/* citlib\stricmp.c */
int stricmp _P((char *str1, char *str2));

/* citlib\strnicmp.c */
int strnicmp _P((char *str1, char *str2, int limit));

/* citlib\strupr.c */
char *strupr _P((char *string));

/* citlib\timeis.c */
struct tm *timeis _P((struct tm *clk));

/* citlib\timers.c */
void startTimer _P((void));
long chkTimeSince _P((void));

/* citlib\version.c */

/* citlib\writetbl.c */
int writeSysTab _P((void));

/* citlib\xfuncs.c */
int xopen _P((char *filename));
void *xmalloc _P((unsigned int size));
char *xstrdup _P((char *string));

#undef _P


/* global variables declared in the library */

/* conout.c */
extern char seemodem;		/* See what the modemed user is typing?	*/
extern char onConsole;		/* input coming from the console?	*/

/* formtime.c */
extern char *monthTab[];
extern struct tm now;		/* global clock used by all clock routines */
extern char *_day[];
extern char *_alt_day[];

/* getlog.c */
extern struct logBuffer logBuf;		/* Log buffer of a person	*/
extern struct logBuffer origlogBuf;	/* logBuf at start of this call	*/
extern int logindex;			/* The userlog slot of user	*/
extern long highlogin;			/* Highest message at login	*/

/* getnet.c */
extern struct netBuffer netBuf;
extern int thisNet;
extern int netfl;

/* getroom.c */
extern struct aRoom roomBuf;		/* Room buffer			*/
extern int roomfl;			/* Room file descriptor 	*/
extern int thisRoom;			/* Current room 		*/

/* io.c */
extern int active;

/* libevent.c */
extern struct evt_type *nextEvt;	/* next event to execute	*/
extern int evtRunning;		/* an event is waiting			*/
extern char forceOut;		/* next event is preemptive		*/
extern long evtClock;		/* time when next event takes place	*/
extern long evtTrig;		/* timeLeft trigger for warnings	*/
extern char evtChar[];

/* libfloor.c */
extern struct flTab *floorTab;		/* floor table			*/
extern int thisFloor;			/* current floor		*/

/* libroute.c */
extern NETADDR route;			/* if path aliased, use this route */
extern char howto;			/* how the node was found	*/

/* locking.c */
extern char LOCKFILE[];

/* msgio.c */
extern struct msgB msgBuf;	/* The -sole- message buffer		*/
extern int msgfl;		/* file descriptor for the msg file	*/
extern int pullMLoc;
extern long pullMId;
extern short mbindex;
extern short mboffset;
extern char mbsector[];

/* output.c */
extern char prevchar;
extern char *CRfill;
extern void (*CRftn)();

/* readtabl.c */
extern struct config cfg;
extern struct lTable *logTab;
extern struct netTable *netTab;
extern struct rTable *roomTab;
extern struct evt_type *evtTab;
extern struct poll_t *pollTab;
extern struct zaphash *zap;
extern struct archiver *archTab;
extern char *indextable;

/* version.c */
extern char VERSION[];
extern char MACHINE[];

#endif /* _CITLIB_H */
