From: Kim Phillips Date: Mon, 4 Apr 2011 15:17:45 +0000 (+0000) Subject: env: fix env var autocompletion X-Git-Tag: v2011.06-rc1~126 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=af4d9074aa0ed7c0d62084af02a6967d69915de6;p=oweals%2Fu-boot.git env: fix env var autocompletion commit 560d424b6d7cd4205b062ad95f1b104bd4f8bcc3 "env: re-add support for auto-completion" fell short of its description - the 'used' logic in hmatch_r was reversed - 'used' is 0 if the hash table entry is not used, or -1 if deleted. This patch makes hmatch_r actually match on valid ('used') entries, instead of skipping them and failing to match anything. typing 'printenv tft' and hitting 'tab' now displays valid choices for variable names. Signed-off-by: Kim Phillips Cc: Mike Frysinger Tested-by: Mike Frysinger --- diff --git a/lib/hashtable.c b/lib/hashtable.c index fcdb53cd46..92eaa3881c 100644 --- a/lib/hashtable.c +++ b/lib/hashtable.c @@ -209,7 +209,7 @@ int hmatch_r(const char *match, int last_idx, ENTRY ** retval, size_t key_len = strlen(match); for (idx = last_idx + 1; idx < htab->size; ++idx) { - if (htab->table[idx].used > 0) + if (htab->table[idx].used <= 0) continue; if (!strncmp(match, htab->table[idx].entry.key, key_len)) { *retval = &htab->table[idx].entry;