Subversion Repositories HelenOS

Rev

Rev 3346 | 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 (int*)1
  23. #define CMD_SUCCESS 0
  24. #define CMD_VOID (void *)NULL
  25.  
  26. /* Types for module command entry and help */
  27. typedef int * (* mod_entry_t)(char **);
  28. typedef void * (* mod_help_t)(unsigned int);
  29.  
  30. /* Built-in commands need to be able to modify cliuser_t */
  31. typedef int * (* builtin_entry_t)(char **, cliuser_t *);
  32. typedef void * (* builtin_help_t)(unsigned int);
  33.  
  34. /* Module structure */
  35. typedef struct {
  36.     char *name;         /* Name of the command */
  37.     char *desc;         /* Description of the command */
  38.     mod_entry_t entry;  /* Command (exec) entry function */
  39.     mod_help_t help;    /* Command (help) entry function */
  40.     int restricted;     /* Restricts to interactive/non-interactive only */
  41. } module_t;
  42.  
  43. /* Builtin structure, same as modules except different types of entry points */
  44. typedef struct {
  45.     char *name;
  46.     char *desc;
  47.     builtin_entry_t entry;
  48.     builtin_help_t help;
  49.     int restricted;
  50. } builtin_t;
  51.  
  52. /* Declared in cmds/modules/modules.h and cmds/builtins/builtins.h
  53.  * respectively */
  54. extern module_t modules[];
  55. extern builtin_t builtins[];
  56.  
  57. /* Prototypes for module launchers */
  58. extern int module_is_restricted(int);
  59. extern int is_module(const char *);
  60. extern int is_module_alias(const char *);
  61. extern char * alias_for_module(const char *);
  62. extern int help_module(int, unsigned int);
  63. extern int run_module(int, char *[]);
  64.  
  65. /* Prototypes for builtin launchers */
  66. extern int builtin_is_restricted(int);
  67. extern int is_builtin(const char *);
  68. extern int is_builtin_alias(const char *);
  69. extern char * alias_for_builtin(const char *);
  70. extern int help_builtin(int, unsigned int);
  71. extern int run_builtin(int, char *[], cliuser_t *);
  72.  
  73. #endif
  74.