Rev 3386 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3386 | Rev 4153 | ||
---|---|---|---|
Line 55... | Line 55... | ||
55 | return a value. Help entry points are void *, no return value is expected. |
55 | return a value. Help entry points are void *, no return value is expected. |
56 | 56 | ||
57 | They are typed as such (from cmds.h): |
57 | They are typed as such (from cmds.h): |
58 | 58 | ||
59 | /* Types for module command entry and help */ |
59 | /* Types for module command entry and help */ |
60 | typedef int * (* mod_entry_t)(char **); |
60 | typedef int (* mod_entry_t)(char **); |
61 | typedef void * (* mod_help_t)(unsigned int); |
61 | typedef void (* mod_help_t)(unsigned int); |
62 | 62 | ||
63 | /* Built-in commands need to be able to modify cliuser_t */ |
63 | /* Built-in commands need to be able to modify cliuser_t */ |
64 | typedef int * (* builtin_entry_t)(char **, cliuser_t *); |
64 | typedef int (* builtin_entry_t)(char **, cliuser_t *); |
65 | typedef void * (* builtin_help_t)(unsigned int); |
65 | typedef void (* builtin_help_t)(unsigned int); |
66 | 66 | ||
67 | As you can see, both modular and builtin commands expect an array of |
67 | As you can see, both modular and builtin commands expect an array of |
68 | arguments, however bulitins also expect to be pointed to cliuser_t. |
68 | arguments, however bulitins also expect to be pointed to cliuser_t. |
69 | 69 | ||
70 | Both are defined with the same simple structure: |
70 | Both are defined with the same simple structure: |
Line 151... | Line 151... | ||
151 | 151 | ||
152 | 1: Use mknewcmd to generate the skeletal files. |
152 | 1: Use mknewcmd to generate the skeletal files. |
153 | 153 | ||
154 | 2: Change your "usage()" command as shown: |
154 | 2: Change your "usage()" command as shown: |
155 | -- void usage(...) |
155 | -- void usage(...) |
156 | ++ void * help_cmd_foo(unsigned int level) |
156 | ++ void help_cmd_foo(unsigned int level) |
157 | -- return; |
- | |
158 | ++ retrn CMD_VOID; |
- | |
159 | 157 | ||
160 | 'level' is either 0 or 1, indicating the level of help requested. |
158 | 'level' is either 0 or 1, indicating the level of help requested. |
161 | If the help / usage function currently exits based on how it is |
159 | If the help / usage function currently exits based on how it is |
162 | called, you'll need to change it. |
160 | called, you'll need to change it. |
163 | 161 | ||
164 | 3: Change the programs "main()" as shown: |
162 | 3: Change the programs "main()" as shown: |
165 | -- int main(int argc, char **argv) |
163 | -- int main(int argc, char **argv) |
166 | ++ int * cmd_foo(char **argv) |
164 | ++ int cmd_foo(char **argv) |
167 | -- return 1; |
165 | -- return 1; |
168 | ++ return CMD_FAILURE; |
166 | ++ return CMD_FAILURE; |
169 | -- return 0; |
167 | -- return 0; |
170 | ++ return CMD_SUCCESS; |
168 | ++ return CMD_SUCCESS; |
171 | 169 | ||
172 | If main() returns an int that is not 1 or 0 (e.g. 127), cast it as |
- | |
173 | such: |
- | |
174 | - | ||
175 | -- return 127; |
- | |
176 | ++ return (int *) 127; |
- | |
177 | - | ||
178 | NOTE: _ONLY_ the main and help entry points need to return int * or |
- | |
179 | void *, respectively. Also take note that argc has changed. The type |
- | |
180 | for entry points may soon change. |
- | |
181 | - | ||
182 | NOTE: If main is void, you'll need to change it and ensure that its |
170 | NOTE: If main is void, you'll need to change it and ensure that its |
183 | expecting an array of arguments, even if they'll never be read or |
171 | expecting an array of arguments, even if they'll never be read or |
184 | used. I.e.: |
172 | used. I.e.: |
185 | 173 | ||
186 | -- void main(void) |
174 | -- void main(void) |
187 | ++ int * cmd_foo(char **argv) |
175 | ++ int cmd_foo(char **argv) |
188 | - | ||
189 | Similararly, do not try to return CMD_VOID within the modules main |
- | |
190 | entry point. If somehow you escape the compiler yelling at you, you |
- | |
191 | will surely see pretty blue and yellow fireworks once its reached. |
- | |
192 | 176 | ||
193 | 4: Don't expose more than the entry and help points: |
177 | 4: Don't expose more than the entry and help points: |
194 | -- void my_function(int n) |
178 | -- void my_function(int n) |
195 | ++ static void my_function(int n) |
179 | ++ static void my_function(int n) |
196 | 180 |