On a Tuesday in 2021, Michal Privoznik wrote:
On readline completion vshReadlineCompletion() is called which does nothing more than calling rl_completion_matches() with vshReadlineParse() as a callback. This means, that vshReadlineParse() is called repeatedly, each time returning next completion candidate, until it returns NULL which is interpreted as the end of the list of candidates. The function takes two parameters: @text which is a portion of input line around cursor when TAB was pressed, and @state. The @state is an integer that is zero on the very first call and non-zero on each subsequent call (in fact, readline does @state++ on each call). Anyway, the idea is that the callback gets the whole list of candidates on @state == 0 and returns one candidate at each call. And this is what vshReadlineParse() is doing but some variables (@parital,
* partial Also, the commit message could use some newlines. Jano
@cmd and @opt) are really used only in the @state == 0 case but declared for whole function. We can limit their scope by declaring them inside the @state == 0 body which also means that they don't have to be static anymore. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- tools/vsh.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)
Attachment:
signature.asc
Description: PGP signature