You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/12/12 10:25:39 UTC

svn commit: r889902 - in /commons/sandbox/runtime/trunk/src/main/native: include/acr.h include/acr_string.h shared/string.c

Author: mturk
Date: Sat Dec 12 09:25:38 2009
New Revision: 889902

URL: http://svn.apache.org/viewvc?rev=889902&view=rev
Log:
Add functions for array sorting. Used for sorting the environment blocks

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/acr.h
    commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h
    commons/sandbox/runtime/trunk/src/main/native/shared/string.c

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr.h?rev=889902&r1=889901&r2=889902&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr.h Sat Dec 12 09:25:38 2009
@@ -253,7 +253,9 @@
 /* Define synonims for some common posix functions */
 #define snprintf            _snprintf
 #define strcasecmp          _stricmp
+#define wcscasecmp          _wcsicmp
 #define strncasecmp         _strnicmp
+#define wcsncasecmp         _wcsnicmp
 #define vsnprintf           _vsnprintf
 
 typedef  ptrdiff_t          acr_ssize_t;

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h?rev=889902&r1=889901&r2=889902&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h Sat Dec 12 09:25:38 2009
@@ -439,8 +439,21 @@
  */
 ACR_DECLARE(size_t) ACR_StrTokenize(char *s, char **args, size_t maxargs);
 
+/**
+ * Sort the array of string using case insensitive order
+ * @param pointer to char array to sort.
+ */
+ACR_DECLARE(void) ACR_StrSortA(char ***args);
+
+/**
+ * Sort the array of wide string using case insensitive order
+ * @param pointer to the wide char array to sort.
+ */
+ACR_DECLARE(void) ACR_StrSortW(wchar_t ***args);
+
 #ifdef __cplusplus
 }
 #endif
 
 #endif /* _ACR_STRING_H */
+

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/string.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/string.c?rev=889902&r1=889901&r2=889902&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/string.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/string.c Sat Dec 12 09:25:38 2009
@@ -2031,3 +2031,36 @@
 
     return nargs;
 }
+
+static int _strcompare(const void *arg1, const void *arg2)
+{
+    /* Compare all of both strings: */
+    return strcasecmp(*(char **)arg1, *(char **)arg2);
+}
+
+static int _wcscompare(const void *arg1, const void *arg2)
+{
+    /* Compare all of both strings: */
+    return wcscasecmp(*(wchar_t **)arg1, *(wchar_t **)arg2);
+}
+
+ACR_DECLARE(void) ACR_StrSortA(char ***args)
+{
+    size_t len = 0;
+    char  **sa = *args;
+
+    while (sa[len])
+        len++;
+    qsort((void *)&args, len, sizeof(char *), _strcompare);
+}
+
+ACR_DECLARE(void) ACR_StrSortW(wchar_t ***args)
+{
+    size_t   len = 0;
+    wchar_t **sa = *args;
+
+    while (sa[len])
+        len++;
+    qsort((void *)&args, len, sizeof(wchar_t *), _wcscompare);
+}
+