Subversion Repositories HelenOS

Rev

Rev 3425 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3425 Rev 4377
1
#ifndef CMDS_H
1
#ifndef CMDS_H
2
#define CMDS_H
2
#define CMDS_H
3
 
3
 
4
#include "config.h"
4
#include "config.h"
5
#include "scli.h"
5
#include "scli.h"
6
 
6
 
7
/* Temporary to store strings */
7
/* Temporary to store strings */
8
#define EXT_HELP      "extended"
8
#define EXT_HELP      "extended"
9
#define SHORT_HELP    "short"
9
#define SHORT_HELP    "short"
10
#define TEST_ANNOUNCE "Hello, this is :"
10
#define TEST_ANNOUNCE "Hello, this is :"
11
 
11
 
12
/* Simple levels of help displays */
12
/* Simple levels of help displays */
13
#define HELP_SHORT 0
13
#define HELP_SHORT 0
14
#define HELP_LONG  1
14
#define HELP_LONG  1
15
 
15
 
16
/* Acceptable buffer sizes (for strn functions) */
16
/* Acceptable buffer sizes (for strn functions) */
17
/* TODO: Move me, other files duplicate these needlessly */
17
/* TODO: Move me, other files duplicate these needlessly */
18
#define BUFF_LARGE  1024
18
#define BUFF_LARGE  1024
19
#define BUFF_SMALL  255
19
#define BUFF_SMALL  255
20
 
20
 
21
/* Return macros for int type entry points */
21
/* Return macros for int type entry points */
22
#define CMD_FAILURE 1
22
#define CMD_FAILURE 1
23
#define CMD_SUCCESS 0
23
#define CMD_SUCCESS 0
24
 
24
 
25
/* Types for module command entry and help */
25
/* Types for module command entry and help */
26
typedef int (* mod_entry_t)(char **);
26
typedef int (* mod_entry_t)(char **);
27
typedef void (* mod_help_t)(unsigned int);
27
typedef void (* mod_help_t)(unsigned int);
28
 
28
 
29
/* Built-in commands need to be able to modify cliuser_t */
29
/* Built-in commands need to be able to modify cliuser_t */
30
typedef int (* builtin_entry_t)(char **, cliuser_t *);
30
typedef int (* builtin_entry_t)(char **, cliuser_t *);
31
typedef void (* builtin_help_t)(unsigned int);
31
typedef void (* builtin_help_t)(unsigned int);
32
 
32
 
33
/* Module structure */
33
/* Module structure */
34
typedef struct {
34
typedef struct {
35
    char *name;         /* Name of the command */
35
    char *name;         /* Name of the command */
36
    char *desc;         /* Description of the command */
36
    char *desc;         /* Description of the command */
37
    mod_entry_t entry;  /* Command (exec) entry function */
37
    mod_entry_t entry;  /* Command (exec) entry function */
38
    mod_help_t help;    /* Command (help) entry function */
38
    mod_help_t help;    /* Command (help) entry function */
39
    int restricted;     /* Restricts to interactive/non-interactive only */
-
 
40
} module_t;
39
} module_t;
41
 
40
 
42
/* Builtin structure, same as modules except different types of entry points */
41
/* Builtin structure, same as modules except different types of entry points */
43
typedef struct {
42
typedef struct {
44
    char *name;
43
    char *name;
45
    char *desc;
44
    char *desc;
46
    builtin_entry_t entry;
45
    builtin_entry_t entry;
47
    builtin_help_t help;
46
    builtin_help_t help;
48
    int restricted;
47
    int restricted;
49
} builtin_t;
48
} builtin_t;
50
 
49
 
51
/* Declared in cmds/modules/modules.h and cmds/builtins/builtins.h
50
/* Declared in cmds/modules/modules.h and cmds/builtins/builtins.h
52
 * respectively */
51
 * respectively */
53
extern module_t modules[];
52
extern module_t modules[];
54
extern builtin_t builtins[];
53
extern builtin_t builtins[];
55
 
54
 
56
/* Prototypes for module launchers */
55
/* Prototypes for module launchers */
57
extern int module_is_restricted(int);
56
extern int module_is_restricted(int);
58
extern int is_module(const char *);
57
extern int is_module(const char *);
59
extern int is_module_alias(const char *);
58
extern int is_module_alias(const char *);
60
extern char * alias_for_module(const char *);
59
extern char * alias_for_module(const char *);
61
extern int help_module(int, unsigned int);
60
extern int help_module(int, unsigned int);
62
extern int run_module(int, char *[]);
61
extern int run_module(int, char *[]);
63
 
62
 
64
/* Prototypes for builtin launchers */
63
/* Prototypes for builtin launchers */
65
extern int builtin_is_restricted(int);
64
extern int builtin_is_restricted(int);
66
extern int is_builtin(const char *);
65
extern int is_builtin(const char *);
67
extern int is_builtin_alias(const char *);
66
extern int is_builtin_alias(const char *);
68
extern char * alias_for_builtin(const char *);
67
extern char * alias_for_builtin(const char *);
69
extern int help_builtin(int, unsigned int);
68
extern int help_builtin(int, unsigned int);
70
extern int run_builtin(int, char *[], cliuser_t *);
69
extern int run_builtin(int, char *[], cliuser_t *);
71
 
70
 
72
#endif
71
#endif
73
 
72