readline: Sort completions before printing them.
authorHani Benhabiles <kroosec@gmail.com>
Thu, 1 May 2014 14:26:42 +0000 (15:26 +0100)
committerMichael Tokarev <mjt@tls.msk.ru>
Wed, 7 May 2014 17:00:44 +0000 (21:00 +0400)
Signed-off-by: Hani Benhabiles <hani@linux.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
util/readline.c

index a3fd2cb4669e0e3bcb0577cba35b0eda048c5242..8baec555097f11ccb011447dae5f04846085ada4 100644 (file)
@@ -272,6 +272,11 @@ void readline_set_completion_index(ReadLineState *rs, int index)
     rs->completion_index = index;
 }
 
+static int completion_comp(const void *a, const void *b)
+{
+    return strcmp(*(const char **) a, *(const char **) b);
+}
+
 static void readline_completion(ReadLineState *rs)
 {
     int len, i, j, max_width, nb_cols, max_prefix;
@@ -295,6 +300,8 @@ static void readline_completion(ReadLineState *rs)
         if (len > 0 && rs->completions[0][len - 1] != '/')
             readline_insert_char(rs, ' ');
     } else {
+        qsort(rs->completions, rs->nb_completions, sizeof(char *),
+              completion_comp);
         rs->printf_func(rs->opaque, "\n");
         max_width = 0;
         max_prefix = 0;