2021-01-15 21:01:12 +08:00
|
|
|
[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:
|
2023-04-14 00:59:37 +08:00
|
|
|
while ((char c = shell_getopt(sh, argc, argv, "abhc:")) != -1) {
|
2021-01-15 21:01:12 +08:00
|
|
|
/* 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]
|