From 560d424b6d7cd4205b062ad95f1b104bd4f8bcc3 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 17 Dec 2010 16:51:59 -0500 Subject: env: re-add support for auto-completion Currently, only basic completion is supported (no globs), but this is what we had previously. Signed-off-by: Mike Frysinger --- lib/hashtable.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/hashtable.c') diff --git a/lib/hashtable.c b/lib/hashtable.c index b47f3b69b0..9f069c0769 100644 --- a/lib/hashtable.c +++ b/lib/hashtable.c @@ -202,6 +202,26 @@ void hdestroy_r(struct hsearch_data *htab) * example for functions like hdelete(). */ +int hmatch_r(const char *match, int last_idx, ENTRY ** retval, + struct hsearch_data *htab) +{ + unsigned int idx; + size_t key_len = strlen(match); + + for (idx = last_idx + 1; idx < htab->size; ++idx) { + if (!htab->table[idx].used) + continue; + if (!strncmp(match, htab->table[idx].entry.key, key_len)) { + *retval = &htab->table[idx].entry; + return idx; + } + } + + __set_errno(ESRCH); + *retval = NULL; + return 0; +} + int hsearch_r(ENTRY item, ACTION action, ENTRY ** retval, struct hsearch_data *htab) { -- cgit v1.2.3