Subversion Repositories HelenOS

Rev

Rev 3346 | Rev 3809 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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 */
  22. #define CMD_FAILURE 1
  23. #define CMD_SUCCESS 0
  24.  
  25. /* Types for module command entry and help */
  26. typedef int (* mod_entry_t)(char **);
  27. typedef void (* mod_help_t)(unsigned int);
  28.  
  29. /* Built-in commands need to be able to modify cliuser_t */
  30. typedef int (* builtin_entry_t)(char **, cliuser_t *);
  31. typedef void (* builtin_help_t)(unsigned int);
  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
  73.