| [GetOpt] |
| ##################### |
| |
| Origin: |
| [Lattera FreeBSD] |
| [https://github.com/lattera/freebsd/blob/master/lib/libc/stdlib/getopt.c] |
| |
| Status: |
| [So far Zephyr samples were using getopt implementation from: argtable3.c.] |
| |
| Purpose: |
| [Shell users would like to parse options passed to the command handler.] |
| |
| Description: |
| [This library is going to be used by the shell module. Some shell users |
| are not satisfied with subcommands alone and need to use the options for |
| commands as well. A library is needed that allows the developer to parse |
| the arguments string, looking for supported options. Typically, this task |
| is accomplished by the getopt function. |
| |
| For this purpose I decided to port the getopt library available |
| in the FreeBSD project. I had to modify it so that it could be used |
| by all instances of the shell at the same time. |
| |
| Originally this function was using global variables which were defining |
| its state. In my implementation I put those variables in a structure |
| and a pointer to that structure is passed as an additional parameter |
| to getopt function. In proposed implementation each shell backend has its |
| own getopt function state structure which it uses. |
| |
| This module is intended to be used inside the shell command handler |
| by the abstraction layer "SHELL_GETOPT". For example: |
| while ((char c = shell_getopt(shell, argc, argv, "abhc:")) != -1) { |
| /* some code */ |
| } |
| ] |
| |
| Dependencies: |
| [This package does not depend on any other component. |
| |
| Zephyr project will only need this component if the user configures a shell |
| module: SHELL_GETOPT.] |
| |
| URL: |
| [https://github.com/lattera/freebsd] |
| |
| commit: |
| [324e4c082c14aebf00f8dbee0fb7ad285393756a] |
| |
| Maintained-by: |
| [External] |
| |
| License: |
| [BSD 3-Clause "New" or "Revised" License] |
| |
| License Link: |
| [BSD 3-Clause used in getopt: https://spdx.org/licenses/BSD-3-Clause.html] |
| [Project license: https://github.com/lattera/freebsd/blob/master/COPYRIGHT] |