]> git.ipfire.org Git - thirdparty/libvirt.git/commit
vshReadlineParse: Bring some variables into !state block
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 26 Jan 2021 08:18:21 +0000 (09:18 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 26 Jan 2021 15:46:41 +0000 (16:46 +0100)
commite19ecee54c09f328ca19e140548f92a8193c510e
treed1f86ab2eca0d5a374d801d3a85feac23000a5dc
parentdf9f1efc53818eee431c913aa02b9ea9fc3930ea
vshReadlineParse: Bring some variables into !state block

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
(@partial, @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@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
tools/vsh.c