dtstyle: Alphabetically sort the backdrops in the backdrop list.
authorPeter Howkins <flibble@users.sourceforge.net>
Tue, 3 Sep 2013 13:34:11 +0000 (14:34 +0100)
committerPeter Howkins <flibble@users.sourceforge.net>
Tue, 3 Sep 2013 13:34:11 +0000 (14:34 +0100)
cde/programs/dtstyle/Backdrop.c

index 33c48e1d9bdb31bb9ffa382b6fc2542c9349bfe7..0760cfb8c5d21d85dad743ecbca0c53abbf011f3 100644 (file)
@@ -42,6 +42,8 @@
 /* include files                         */
 /*+++++++++++++++++++++++++++++++++++++++*/
 #include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
 #include <sys/types.h>
 
 #if defined(_AIX) || defined(__apollo)
@@ -538,6 +540,17 @@ MoreBitmaps( void )
     backdrops.maxNumBitmaps += 100;
 }
 
+/************************************************************************
+ * cmpstringp()
+ * qsort() sort function, used for sorting bitmap names into alphabetical order
+ * can't use strcmp() due to char** rather than char*
+ ************************************************************************/
+static int
+cmpstringp(const void *p1, const void *p2)
+{
+  return strcmp(*(char * const *) p1, *(char * const *) p2);
+}
+
 /************************************************************************
  *   ReadBitmaps()
  *   Create an array of bitmaps by reading backdrop directories in the
@@ -595,6 +608,9 @@ static
       free_dirList(backdrops.dirList, backdrops.dirCount);
       return 0;
     }
+
+  /* Sort the list into alphanetical order */
+  qsort(backdrops.tmpBitmapNames, backdrops.tmpNumBitmaps, sizeof(char *), cmpstringp);
   
   /* get the fg/bg colors from Dtwm */
   if (backdrops.newColors)