Hi! Thanks for the man pages.
There is none for uselocale(3), which is heavily referenced from these, nor do I find a prototype in /usr/include... so how does one use these? :) Thomas On Mon, Feb 15, 2021 at 09:35:04AM -0500, Christos Zoulas wrote: > Module Name: src > Committed By: christos > Date: Mon Feb 15 14:35:04 UTC 2021 > > Modified Files: > src/lib/libc/locale: Makefile.inc > Added Files: > src/lib/libc/locale: duplocale.3 freelocale.3 newlocale.3 > > Log Message: > Add missing man pages (from FreeBSD) > > > To generate a diff of this commit: > cvs rdiff -u -r1.64 -r1.65 src/lib/libc/locale/Makefile.inc > cvs rdiff -u -r0 -r1.1 src/lib/libc/locale/duplocale.3 \ > src/lib/libc/locale/freelocale.3 src/lib/libc/locale/newlocale.3 > > Please note that diffs are not public domain; they are subject to the > copyright notices on the relevant files. > > Modified files: > > Index: src/lib/libc/locale/Makefile.inc > diff -u src/lib/libc/locale/Makefile.inc:1.64 > src/lib/libc/locale/Makefile.inc:1.65 > --- src/lib/libc/locale/Makefile.inc:1.64 Sun Aug 18 16:03:48 2013 > +++ src/lib/libc/locale/Makefile.inc Mon Feb 15 09:35:04 2021 > @@ -1,5 +1,5 @@ > # from: @(#)Makefile.inc 5.1 (Berkeley) 2/18/91 > -# $NetBSD: Makefile.inc,v 1.64 2013/08/18 20:03:48 joerg Exp $ > +# $NetBSD: Makefile.inc,v 1.65 2021/02/15 14:35:04 christos Exp $ > > # locale sources > .PATH: ${ARCHDIR}/locale ${.CURDIR}/locale > @@ -21,7 +21,7 @@ CPPFLAGS.runetable.c+= -I${LIBCDIR}/cit > CPPFLAGS.multibyte_c90.c+= -I${LIBCDIR}/citrus > CPPFLAGS.multibyte_amd1.c+= -I${LIBCDIR}/citrus > > -MAN+= setlocale.3 nl_langinfo.3 > +MAN+= duplocale.3 freelocale.3 newlocale.3 setlocale.3 nl_langinfo.3 > > MAN+= mbtowc.3 mbstowcs.3 wctomb.3 wcstombs.3 mblen.3 \ > > > Added files: > > Index: src/lib/libc/locale/duplocale.3 > diff -u /dev/null src/lib/libc/locale/duplocale.3:1.1 > --- /dev/null Mon Feb 15 09:35:04 2021 > +++ src/lib/libc/locale/duplocale.3 Mon Feb 15 09:35:04 2021 > @@ -0,0 +1,80 @@ > +.\" $NetBSD: duplocale.3,v 1.1 2021/02/15 14:35:04 christos Exp $ > +.\" Copyright (c) 2011 The FreeBSD Foundation > +.\" All rights reserved. > +.\" > +.\" This documentation was written by David Chisnall under sponsorship from > +.\" the FreeBSD Foundation. > +.\" > +.\" Redistribution and use in source and binary forms, with or without > +.\" modification, are permitted provided that the following conditions > +.\" are met: > +.\" 1. Redistributions of source code must retain the above copyright > +.\" notice, this list of conditions and the following disclaimer. > +.\" 2. Redistributions in binary form must reproduce the above copyright > +.\" notice, this list of conditions and the following disclaimer in the > +.\" documentation and/or other materials provided with the distribution. > +.\" > +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND > +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE > +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > CONSEQUENTIAL > +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, > STRICT > +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > +.\" SUCH DAMAGE. > +.\" > +.\" $FreeBSD: head/lib/libc/locale/duplocale.3 281925 2015-04-24 10:17:55Z > theraven $ > +.\" > +.Dd September 17, 2011 > +.Dt DUPLOCALE 3 > +.Os > +.Sh NAME > +.Nm duplocale > +.Nd duplicate an locale > +.Sh LIBRARY > +.Lb libc > +.Sh SYNOPSIS > +.In locale.h > +.Ft locale_t > +.Fn duplocale "locale_t locale" > +.Sh DESCRIPTION > +Duplicates an existing > +.Fa locale_t > +returning a new > +.Fa locale_t > +that refers to the same locale values but has an independent internal state. > +Various functions, such as > +.Xr mblen 3 > +require a persistent state. > +These functions formerly used static variables and calls to them from > multiple > +threads had undefined behavior. > +They now use fields in the > +.Fa locale_t > +associated with the current thread by > +.Xr uselocale 3 . > +These calls are therefore only thread safe on threads with a unique > per-thread > +locale. > +The locale returned by this call must be freed with > +.Xr freelocale 3 . > +.Sh SEE ALSO > +.Xr freelocale 3 , > +.Xr localeconv 3 , > +.Xr newlocale 3 , > +.\" .Xr querylocale 3 , > +.Xr uselocale 3 , > +.\" .Xr xlocale 3 > +.Sh STANDARDS > +This function conforms to > +.St -p1003.1-2008 . > +.Sh BUGS > +Ideally, > +.Xr uselocale 3 > +should make a copy of the > +.Fa locale_t > +implicitly to ensure thread safety, > +and a copy of the global locale should be installed lazily on each thread. > +The FreeBSD implementation does not do this, > +for compatibility with Darwin. > Index: src/lib/libc/locale/freelocale.3 > diff -u /dev/null src/lib/libc/locale/freelocale.3:1.1 > --- /dev/null Mon Feb 15 09:35:04 2021 > +++ src/lib/libc/locale/freelocale.3 Mon Feb 15 09:35:04 2021 > @@ -0,0 +1,60 @@ > +.\" $NetBSD: freelocale.3,v 1.1 2021/02/15 14:35:04 christos Exp $ > +.\" Copyright (c) 2011 The FreeBSD Foundation > +.\" All rights reserved. > +.\" > +.\" This documentation was written by David Chisnall under sponsorship from > +.\" the FreeBSD Foundation. > +.\" > +.\" Redistribution and use in source and binary forms, with or without > +.\" modification, are permitted provided that the following conditions > +.\" are met: > +.\" 1. Redistributions of source code must retain the above copyright > +.\" notice, this list of conditions and the following disclaimer. > +.\" 2. Redistributions in binary form must reproduce the above copyright > +.\" notice, this list of conditions and the following disclaimer in the > +.\" documentation and/or other materials provided with the distribution. > +.\" > +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND > +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE > +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > CONSEQUENTIAL > +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, > STRICT > +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > +.\" SUCH DAMAGE. > +.\" > +.\" $FreeBSD: head/lib/libc/locale/freelocale.3 303495 2016-07-29 17:18:47Z > ed $ > +.Dd July 26, 2016 > +.Dt FREELOCALE 3 > +.Os > +.Sh NAME > +.Nm freelocale > +.Nd Frees a locale created with > +.Xr duplocale 3 > +or > +.Xr newlocale 3 > +.Sh LIBRARY > +.Lb libc > +.Sh SYNOPSIS > +.In locale.h > +.Ft void > +.Fn freelocale "locale_t locale" > +.Sh DESCRIPTION > +Frees a > +.Fa locale_t . > +This relinquishes any resources held exclusively by this locale. > +Note that locales share reference-counted components, > +so a call to this function is not guaranteed to free all of the components. > +.Sh SEE ALSO > +.Xr duplocale 3 , > +.Xr localeconv 3 , > +.Xr newlocale 3 , > +.\" .Xr querylocale 3 , > +.Xr uselocale 3 , > +.\" .Xr xlocale 3 > +.Sh STANDARDS > +This function conforms to > +.St -p1003.1-2008 . > Index: src/lib/libc/locale/newlocale.3 > diff -u /dev/null src/lib/libc/locale/newlocale.3:1.1 > --- /dev/null Mon Feb 15 09:35:04 2021 > +++ src/lib/libc/locale/newlocale.3 Mon Feb 15 09:35:04 2021 > @@ -0,0 +1,126 @@ > +.\" $NetBSD: newlocale.3,v 1.1 2021/02/15 14:35:04 christos Exp $ > +.\" Copyright (c) 2011 The FreeBSD Foundation > +.\" All rights reserved. > +.\" > +.\" This documentation was written by David Chisnall under sponsorship from > +.\" the FreeBSD Foundation. > +.\" > +.\" Redistribution and use in source and binary forms, with or without > +.\" modification, are permitted provided that the following conditions > +.\" are met: > +.\" 1. Redistributions of source code must retain the above copyright > +.\" notice, this list of conditions and the following disclaimer. > +.\" 2. Redistributions in binary form must reproduce the above copyright > +.\" notice, this list of conditions and the following disclaimer in the > +.\" documentation and/or other materials provided with the distribution. > +.\" > +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND > +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE > +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > CONSEQUENTIAL > +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, > STRICT > +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > +.\" SUCH DAMAGE. > +.\" > +.\" $FreeBSD: head/lib/libc/locale/newlocale.3 366375 2020-10-02 18:35:55Z > markj $ > +.Dd October 2, 2020 > +.Dt NEWLOCALE 3 > +.Os > +.Sh NAME > +.Nm newlocale > +.Nd Creates a new locale > +.Sh LIBRARY > +.Lb libc > +.Sh SYNOPSIS > +.In locale.h > +.Ft locale_t > +.Fn newlocale "int mask" "const char * locale" "locale_t base" > +.Sh DESCRIPTION > +Creates a new locale, inheriting some properties from an existing locale. > +The > +.Fa mask > +defines the components that the new locale will have set to the locale with > the > +name specified in the > +.Fa locale > +parameter. > +Any components not specified in > +.Fa mask > +will be inherited from the locale referenced by > +.Fa base , > +if > +.Fa base > +is not > +.Dv NULL . > +If the call is successful, the state of the locale referenced by > +.Fa base > +is unspecified, and it must not be accessed. > +The special locale > +.Dv LC_GLOBAL_LOCALE > +may not be specified for > +.Fa base . > +The > +.Fa mask > +is either > +.Fa LC_ALL_MASK , > +indicating all possible locale components, > +or the logical OR of some combination of the following: > +.Bl -tag -width "LC_MESSAGES_MASK" -offset indent > +.It LC_COLLATE_MASK > +The locale for string collation routines. > +This controls alphabetic ordering in > +.Xr strcoll 3 > +and > +.Xr strxfrm 3 . > +.It LC_CTYPE_MASK > +The locale for the > +.Xr ctype 3 > +and > +.Xr multibyte 3 > +functions. > +This controls recognition of upper and lower case, alphabetic or > +non-alphabetic characters, and so on. > +.It LC_MESSAGES_MASK > +Set a locale for message catalogs, see > +.Xr catopen 3 > +function. > +.It LC_MONETARY_MASK > +Set a locale for formatting monetary values; this affects > +the > +.Xr localeconv 3 > +function. > +.It LC_NUMERIC_MASK > +Set a locale for formatting numbers. > +This controls the formatting of decimal points in input and output of > floating > +point numbers in functions such as > +.Xr printf 3 > +and > +.Xr scanf 3 , > +as well as values returned by > +.Xr localeconv 3 . > +.It LC_TIME_MASK > +Set a locale for formatting dates and times using the > +.Xr strftime 3 > +function. > +.El > +This function uses the same rules for loading locale components as > +.Xr setlocale 3 . > +.Sh RETURN VALUES > +Returns a new, valid, > +.Fa locale_t > +or NULL if an error occurs. > +You must free the returned locale with > +.Xr freelocale 3 . > +.Sh SEE ALSO > +.Xr duplocale 3 , > +.Xr freelocale 3 , > +.Xr localeconv 3 , > +\" .Xr querylocale 3 , > +.Xr uselocale 3 , > +\" .Xr xlocale 3 > +.Sh STANDARDS > +This function conforms to > +.St -p1003.1-2008 . >