socketmud/
socketmud/doc/
socketmud/help/
socketmud/players/
socketmud/scripts/
socketmud/scripts/brain_data/
socketmud/scripts/brain_data/base_brains/
socketmud/scripts/cmd_data/
socketmud/scripts/cmd_data/commands/
socketmud/scripts/home/
socketmud/scripts/home/LordLua/
#ifndef SCRIPTING_H_
#define SCRIPTING_H_

#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <errno.h>
#include "list.h"
#include "mud.h"

#define SCRIPT_DIR "../scripts"
/* Directories under scripts.*/
#define IMP_HOME_DIR "/home"

#define ESECURITY	0
#define VSECURITY	1
#define CSECURITY	2

extern lua_State * lua;
extern DIRFILE_ENTRY * dirfile_root;
extern LIST * dir_structure;

#define DIRFILE_TYPE_DIR 0
#define DIRFILE_TYPE_FILE 1



struct dirfile_entry
{
	DIRFILE_ENTRY * parent;
	char * name;
	char * creator;
	int vSecurity;
	int eSecurity;
	int cSecurity;
	int type;
	char * realpath;
	LIST * contents;
	BUFFER * data;
	bool  locked;
};

/* lua_base.c */
void stackDump(lua_State *l);
void init_lua();
void dMobile_to_lua(D_MOBILE *dMob, lua_State *l);
void register_dMobile(D_MOBILE *dMob);
void input_to_lua(D_MOBILE *dMob, char * command, char * arg);


/* lua_shell.c */
void init_dir_structure();
void load_code(LIST * target);
void cmd_ls(D_MOBILE *dMob, char *arg);
void cmd_touch(D_MOBILE *dMob, char *arg);
void cmd_cd(D_MOBILE *dMob, char *arg);
void cmd_view(D_MOBILE *dMob, char *arg);
void cmd_rm(D_MOBILE *dMob, char*arg);
void cmd_edit(D_MOBILE *dMob, char*arg);
void cmd_return(D_MOBILE *dMob, char*arg);
void cmd_mkdir(D_MOBILE *dMob, char*arg);
void cmd_rmdir(D_MOBILE *dMob, char*arg);
void cmd_reload(D_MOBILE *dMob, char * arg);
void cmd_promote(D_MOBILE *dMob, char * arg);
void cmd_demote(D_MOBILE *dMob, char * arg);
void cmd_chown(D_MOBILE *dMob, char * arg);
void cmd_chmod(D_MOBILE *dMob, char *arg);
void cmd_mkcore(D_MOBILE *dMob, char *arg);

void handle_file_editing(D_MOBILE *dMob, char *arg);
DIRFILE_ENTRY * get_dirfile_from_real_path(const char* path, D_MOBILE *dMob);



#endif /*SCRIPTING_H_*/