aboutsummaryrefslogtreecommitdiffstats
path: root/src/sysdep.c
diff options
context:
space:
mode:
authorEli Zaretskii2014-08-25 18:55:46 +0300
committerEli Zaretskii2014-08-25 18:55:46 +0300
commit015ea0ffdb4f446e3bd263fe5e42b35aafdf1e5b (patch)
tree0242e9b0aa25996e40802ee33aa6929efc3effae /src/sysdep.c
parent8661ebaa6c0ef3f9517c5288855657b274c723d6 (diff)
downloademacs-015ea0ffdb4f446e3bd263fe5e42b35aafdf1e5b.tar.gz
emacs-015ea0ffdb4f446e3bd263fe5e42b35aafdf1e5b.zip
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)
3592 return res; 3592 return res;
3593} 3593}
3594#endif /* __STDC_ISO_10646__ */ 3594#endif /* __STDC_ISO_10646__ */
3595
3596#ifdef WINDOWSNT
3597ptrdiff_t
3598str_collate (Lisp_Object s1, Lisp_Object s2)
3599{
3600 Lisp_Object lc_collate =
3601 Fgetenv_internal (build_string ("LC_COLLATE"), Vprocess_environment);
3602 char *loc = STRINGP (lc_collate) ? SSDATA (lc_collate) : NULL;
3603
3604 return w32_compare_strings (SDATA (s1), SDATA (s2), loc);
3605}
3606#endif /* WINDOWSNT */