aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/locale/querylocale.3
diff options
context:
space:
mode:
authorThomas Munro <tmunro@FreeBSD.org>2020-11-08 02:50:34 +0000
committerThomas Munro <tmunro@FreeBSD.org>2020-11-08 02:50:34 +0000
commitcc7edd258c2564fe9e3c4a0dc839acc4a71caff9 (patch)
tree713e7f140bcc509d153f6843f0c0c4e93cf43991 /lib/libc/locale/querylocale.3
parentd2799054f0d29c33a1f2ab87ee4d88970ec36d91 (diff)
downloadsrc-cc7edd258c2564fe9e3c4a0dc839acc4a71caff9.tar.gz
src-cc7edd258c2564fe9e3c4a0dc839acc4a71caff9.zip
Add collation version support to querylocale(3).
Provide a way to ask for an opaque version string for a locale_t, so that potential changes in sort order can be detected. Similar to ICU's ucol_getVersion() and Windows' GetNLSVersionEx(), this API is intended to allow databases to detect when text order-based indexes might need to be rebuilt. The CLDR version is extracted from CLDR source data by the Makefile under tools/tools/locale, written into the machine-generated Makefile under shared/colldef, passed to localedef -V, and then written into LC_COLLATE file headers. The initial version is 34.0. tools/tools/locale was recently updated to pull down 35.0, but the output hasn't been committed under share/colldef yet, so that will provide the first observable change when it happens. Other versioning schemes are possible in future, because the format is unspecified. Reviewed by: bapt, 0mp, kib, yuripv (albeit a long time ago) Differential Revision: https://reviews.freebsd.org/D17166
Notes
Notes: svn path=/head/; revision=367476
Diffstat (limited to 'lib/libc/locale/querylocale.3')
-rw-r--r--lib/libc/locale/querylocale.332
1 files changed, 26 insertions, 6 deletions
diff --git a/lib/libc/locale/querylocale.3 b/lib/libc/locale/querylocale.3
index d1bb688ed907..ecafee49a712 100644
--- a/lib/libc/locale/querylocale.3
+++ b/lib/libc/locale/querylocale.3
@@ -27,12 +27,12 @@
.\"
.\" $FreeBSD$
.\"
-.Dd May 3, 2013
+.Dd November 8, 2020
.Dt QUERYLOCALE 3
.Os
.Sh NAME
.Nm querylocale
-.Nd Look up the locale name for a specified category
+.Nd Look up the locale name or version for a specified category
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
@@ -40,11 +40,22 @@
.Ft const char *
.Fn querylocale "int mask" "locale_t locale"
.Sh DESCRIPTION
-Returns the name of the locale for the category specified by
+Returns the name or version of the locale for the category specified by
.Fa mask .
-This possible values for the mask are the same as those in
-.Xr newlocale 3 .
-If more than one bit in the mask is set, the returned value is undefined.
+The possible values for the mask are the same as those in
+.Xr newlocale 3 ,
+when requesting the locale name.
+Specify the bitwise OR of
+.Fa LC_VERSION_MASK
+and another mask value to request a version string.
+Version strings can be compared to detect changes to the locale's definition.
+The structure of the version string is unspecified.
+Currently, version information is only available for
+.Fa LC_COLLATE_MASK ,
+and an empty string is returned for other categories.
+If more than one bit in the mask is set, not counting
+.Fa LC_VERSION_MASK ,
+the returned value is undefined.
.Sh SEE ALSO
.Xr duplocale 3 ,
.Xr freelocale 3 ,
@@ -52,3 +63,12 @@ If more than one bit in the mask is set, the returned value is undefined.
.Xr newlocale 3 ,
.Xr uselocale 3 ,
.Xr xlocale 3
+.Sh HISTORY
+The
+.Fn querylocale
+function first appeared in
+.Fx 9.1 ,
+and is based on the function of the same name in Darwin.
+.Fa LC_VERSION_MASK
+first appeared in
+.Fx 13.0 .