aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--com32/elflink/ldlinux/cli.c21
-rw-r--r--com32/elflink/ldlinux/readconfig.c11
-rw-r--r--com32/elflink/modules/menu.h2
3 files changed, 34 insertions, 0 deletions
diff --git a/com32/elflink/ldlinux/cli.c b/com32/elflink/ldlinux/cli.c
index 172a9f68..08845252 100644
--- a/com32/elflink/ldlinux/cli.c
+++ b/com32/elflink/ldlinux/cli.c
@@ -18,6 +18,7 @@
#include "getkey.h"
#include "menu.h"
#include "cli.h"
+#include "config.h"
static jmp_buf timeout_jump;
@@ -394,6 +395,26 @@ const char *edit_cmdline(const char *input, int top /*, int width */ ,
redraw = 1;
}
break;
+ case KEY_TAB:
+ {
+ const char *p;
+ size_t len;
+
+ /* Label completion enabled? */
+ if (nocomplete)
+ break;
+
+ p = cmdline;
+ len = 0;
+ while(*p && !my_isspace(*p)) {
+ p++;
+ len++;
+ }
+
+ print_labels(cmdline, len);
+ redraw = 1;
+ break;
+ }
default:
if (key >= ' ' && key <= 0xFF && len < MAX_CMDLINE_LEN - 1) {
diff --git a/com32/elflink/ldlinux/readconfig.c b/com32/elflink/ldlinux/readconfig.c
index e13d6d47..a29c6c60 100644
--- a/com32/elflink/ldlinux/readconfig.c
+++ b/com32/elflink/ldlinux/readconfig.c
@@ -420,6 +420,17 @@ static struct menu *end_submenu(void)
return current_menu->parent ? current_menu->parent : current_menu;
}
+void print_labels(const char *prefix, size_t len)
+{
+ struct menu_entry *me;
+
+ printf("\n");
+ for (me = all_entries; me; me = me->next ) {
+ if (!strncmp(prefix, me->label, len))
+ printf(" %s\n", me->label);
+ }
+}
+
static struct menu_entry *find_label(const char *str)
{
const char *p;
diff --git a/com32/elflink/modules/menu.h b/com32/elflink/modules/menu.h
index 90b54a54..8041fc97 100644
--- a/com32/elflink/modules/menu.h
+++ b/com32/elflink/modules/menu.h
@@ -184,6 +184,8 @@ extern const int message_base_color, menu_color_table_size;
int mygetkey(clock_t timeout);
int show_message_file(const char *filename, const char *background);
+extern void print_labels(const char *prefix, size_t len);
+
/* passwd.c */
int passwd_compare(const char *passwd, const char *entry);