fbmuck-6.05/auto/
fbmuck-6.05/contrib/jresolver/
fbmuck-6.05/contrib/jresolver/org/
fbmuck-6.05/contrib/jresolver/org/fuzzball/
fbmuck-6.05/docs/devel/
fbmuck-6.05/game/
fbmuck-6.05/game/logs/
fbmuck-6.05/game/muf/
fbmuck-6.05/scripts/
fbmuck-6.05/src_docs/
#ifndef _MESGPARSE_H
#define _MESGPARSE_H

#define MAX_MFUN_NAME_LEN 16
#define MAX_MFUN_LIST_LEN 512
#define MPI_MAX_VARIABLES 32
#define MPI_MAX_FUNCTIONS 32

#define MFUN_LITCHAR '`'
#define MFUN_LEADCHAR '{'
#define MFUN_ARGSTART ':'
#define MFUN_ARGSEP ','
#define MFUN_ARGEND '}'

#define UNKNOWN ((dbref)-88)
#define PERMDENIED ((dbref)-89)

#undef WIZZED_DELAY


int Wizperms(dbref what);

int safeputprop(dbref obj, dbref perms, char *buf, char *val, int mesgtyp);
const char *safegetprop(dbref player, dbref what, dbref perms, const char *inbuf, int mesgtyp, int* blessed);
const char *safegetprop_strict(dbref player, dbref what, dbref perms, const char *inbuf, int mesgtyp, int* blessed);
int safeblessprop(dbref obj, dbref perms, char *buf, int mesgtyp, int set_p);

char *stripspaces(char *buf, char *in);
char *string_substitute(const char *str, const char *oldstr, const char *newstr, char *buf,

						int maxlen);
char *cr2slash(char *buf, int buflen, const char *in);

int get_list_count(dbref trig, dbref what, dbref perms, const char *listname, int mesgtyp, int* blessed);
const char *get_list_item(dbref trig, dbref what, dbref perms, const char *listname, int itemnum, int mesgtyp, int* blessed);
char *get_concat_list(dbref player, dbref what, dbref perms, dbref obj, const char *listname,
					  char *buf, int maxchars, int mode, int mesgtyp, int* blessed);

int isneighbor(dbref d1, dbref d2);
int mesg_read_perms(dbref player, dbref perms, dbref obj, int mesgtyp);
int mesg_local_perms(dbref player, dbref perms, dbref obj, int mesgtyp);

dbref mesg_dbref_raw(int descr, dbref player, dbref what, dbref perms, const char *buf);
dbref mesg_dbref(int descr, dbref player, dbref what, dbref perms, char *buf, int mesgtyp);
dbref mesg_dbref_strict(int descr, dbref player, dbref what, dbref perms, char *buf, int mesgtyp);
dbref mesg_dbref_local(int descr, dbref player, dbref what, dbref perms, char *buf, int mesgtyp);

char *ref2str(dbref obj, char *buf, size_t buflen);
int truestr(char *buf);

int check_mvar_overflow(int count);
int new_mvar(const char *varname, char *buf);
char *get_mvar(const char *varname);
int free_top_mvar(void);

int new_mfunc(const char *funcname, const char *buf);
const char *get_mfunc(const char *funcname);
int free_mfuncs(int downto);



#define MFUNARGS int descr, dbref player, dbref what, dbref perms, int argc, \
                argv_typ argv, char *buf, int mesgtyp

#define CHECKRETURN(vari,funam,num) if (!vari) { snprintf(buf, BUFFER_LEN, "%s %c%s%c (%s)", get_mvar("how"), MFUN_LEADCHAR, funam, MFUN_ARGEND, num);  notify_nolisten(player, buf, 1);  return NULL; }

#define ABORT_MPI(funam,mesg) { snprintf(buf, BUFFER_LEN, "%s %c%s%c: %s", get_mvar("how"), MFUN_LEADCHAR, funam, MFUN_ARGEND, mesg);  notify_nolisten(player, buf, 1);  return NULL; }

typedef char **argv_typ;

#define MesgParse(in,out) mesg_parse(descr, player, what, perms, (in), (out), BUFFER_LEN, mesgtyp)

#endif /* _MESGPARSE_H */