summaryrefslogtreecommitdiff
path: root/src/sysdep.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2014-08-25 18:55:46 +0300
committerEli Zaretskii <eliz@gnu.org>2014-08-25 18:55:46 +0300
commit015ea0ffdb4f446e3bd263fe5e42b35aafdf1e5b (patch)
tree0242e9b0aa25996e40802ee33aa6929efc3effae /src/sysdep.c
parent8661ebaa6c0ef3f9517c5288855657b274c723d6 (diff)
downloademacs-015ea0ffdb4f446e3bd263fe5e42b35aafdf1e5b.tar.gz
Implement locale-sensitive string collation for MS-Windows. (Bug#18051)
src/w32proc.c (get_lcid_callback, get_lcid, w32_compare_strings): New functions. src/w32.h (w32_compare_strings): Add prototype. src/w32.c <g_b_init_compare_string_w>: New global flag. (globals_of_w32): Initialize it. src/sysdep.c (str_collate) [WINDOWSNT]: Implementation for MS-Windows. src/fns.c (Fstring_collate_lessp, Fstring_collate_equalp) [WINDOWSNT]: Call str_collate on MS-Windows. etc/NEWS: Mention that string-collate-* functions are supported on MS-Windows as well.
Diffstat (limited to 'src/sysdep.c')
-rw-r--r--src/sysdep.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index 856d668bb71..25bec264f46 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -3592,3 +3592,15 @@ str_collate (Lisp_Object s1, Lisp_Object s2)
return res;
}
#endif /* __STDC_ISO_10646__ */
+
+#ifdef WINDOWSNT
+ptrdiff_t
+str_collate (Lisp_Object s1, Lisp_Object s2)
+{
+ Lisp_Object lc_collate =
+ Fgetenv_internal (build_string ("LC_COLLATE"), Vprocess_environment);
+ char *loc = STRINGP (lc_collate) ? SSDATA (lc_collate) : NULL;
+
+ return w32_compare_strings (SDATA (s1), SDATA (s2), loc);
+}
+#endif /* WINDOWSNT */