Subversion Repositories HelenOS

Rev

Rev 3397 | Details | Compare with Previous | Last modification | View Log | RSS feed

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