From 9f47569a364c21373979b6f80a6041bcca0556b6 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Mon, 17 May 2004 20:58:06 +0000
Subject: [PATCH] Added str_list sorting functions.

---
 src/xpdev/str_list.c | 42 +++++++++++++++++++++++++++++++++++++++++-
 src/xpdev/str_list.h |  5 +++++
 2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/src/xpdev/str_list.c b/src/xpdev/str_list.c
index e4ba52caf5..ff7379acd9 100644
--- a/src/xpdev/str_list.c
+++ b/src/xpdev/str_list.c
@@ -35,7 +35,7 @@
  * Note: If this box doesn't appear square, then you need to fix your tabs.	*
  ****************************************************************************/
 
-#include <stdlib.h>		/* malloc */
+#include <stdlib.h>		/* malloc and qsort */
 #include "str_list.h"
 
 str_list_t strListAlloc()
@@ -85,6 +85,46 @@ str_list_t strListAdd(str_list_t* list, char* str)
 	return strListAddAt(list,str,strListCount(*list));
 }
 
+static int strListCompareAlpha(const void *arg1, const void *arg2)
+{
+   return stricmp(*(char**)arg1, *(char**)arg2);
+}
+
+static int strListCompareAlphaReverse(const void *arg1, const void *arg2)
+{
+   return stricmp(*(char**)arg2, *(char**)arg1);
+}
+
+static int strListCompareAlphaCase(const void *arg1, const void *arg2)
+{
+   return strcmp(*(char**)arg1, *(char**)arg2);
+}
+
+static int strListCompareAlphaCaseReverse(const void *arg1, const void *arg2)
+{
+   return strcmp(*(char**)arg2, *(char**)arg1);
+}
+
+void strListSortAlpha(str_list_t list)
+{
+	qsort(list,strListCount(list),sizeof(char*),strListCompareAlpha);
+}
+
+void strListSortAlphaReverse(str_list_t list)
+{
+	qsort(list,strListCount(list),sizeof(char*),strListCompareAlphaReverse);
+}
+
+void strListSortAlphaCase(str_list_t list)
+{
+	qsort(list,strListCount(list),sizeof(char*),strListCompareAlphaCase);
+}
+
+void strListSortAlphaCaseReverse(str_list_t list)
+{
+	qsort(list,strListCount(list),sizeof(char*),strListCompareAlphaCaseReverse);
+}
+
 void strListFree(str_list_t* list)
 {
 	size_t i;
diff --git a/src/xpdev/str_list.h b/src/xpdev/str_list.h
index 8d10bd9c48..a538915826 100644
--- a/src/xpdev/str_list.h
+++ b/src/xpdev/str_list.h
@@ -62,6 +62,11 @@ str_list_t	strListAddAt(str_list_t* list, char* str, size_t index);
 /* Count the number of strings in the list and returns the count */
 size_t		strListCount(str_list_t list);
 
+void		strListSortAlpha(str_list_t list);
+void		strListSortAlphaReverse(str_list_t list);
+void		strListSortAlphaCase(str_list_t list);
+void		strListSortAlphaCaseReverse(str_list_t list);
+
 #if defined(__cplusplus)
 }
 #endif
-- 
GitLab