/*
 * This work is part of the White Rabbit project
 *
 * Released according to the GNU GPL, version 2 or any later version.
 */
#ifndef __SHELL_H
#define __SHELL_H

#define UI_SHELL_MODE 0
#define UI_GUI_MODE 1

extern int wrc_ui_mode;
extern int wrc_stat_running;

void decode_mac(const char *str, unsigned char *mac);
char *format_mac(char *s, const unsigned char *mac);
void decode_ip(const char *str, unsigned char *ip);
char *format_ip(char *s, const unsigned char *ip);

struct wrc_shell_cmd {
	char *name;
	int (*exec) (const char *args[]);
};

/* Put the structures in their own section */
#define DEFINE_WRC_COMMAND(_name) \
	const struct wrc_shell_cmd __wrc_cmd_ ## _name 

char *env_get(const char *var);
int env_set(const char *var, const char *value);
void env_init(void);

int shell_exec(const char *buf);
int shell_interactive(void);
extern int shell_is_interacting;

void shell_boot_script(void);
void shell_show_build_init(void);
void shell_register_command( struct wrc_shell_cmd* cmd );
void shell_list_cmds(void);
void shell_register_commands(void);
void shell_activate_ui_command( int (*callback)(void) );

#endif
