fish: Sort returned paths so the list is stable across multiple calls.
authorRichard Jones <rjones@redhat.com>
Tue, 25 May 2010 12:52:53 +0000 (13:52 +0100)
committerRichard Jones <rjones@redhat.com>
Tue, 25 May 2010 12:52:53 +0000 (13:52 +0100)
fish/destpaths.c

index 2908ba4..403fe7f 100644 (file)
@@ -71,6 +71,14 @@ free_words (struct word *words, size_t nr_words)
     free (words[i].name);
   free (words);
 }
     free (words[i].name);
   free (words);
 }
+
+static int
+compare_words (const void *vp1, const void *vp2)
+{
+  const struct word *w1 = (const struct word *) vp1;
+  const struct word *w2 = (const struct word *) vp2;
+  return strcmp (w1->name, w2->name);
+}
 #endif
 
 char *
 #endif
 
 char *
@@ -212,6 +220,9 @@ complete_dest_paths_generator (const char *text, int state)
   /* This inhibits ordinary (local filename) completion. */
   rl_attempted_completion_over = 1;
 
   /* This inhibits ordinary (local filename) completion. */
   rl_attempted_completion_over = 1;
 
+  /* Sort the words so the list is stable over multiple calls. */
+  qsort (words, nr_words, sizeof (struct word), compare_words);
+
   /* Complete the string. */
   while (index < nr_words) {
     struct word *word;
   /* Complete the string. */
   while (index < nr_words) {
     struct word *word;