/ string / FreeBSD / wcsxfrm.3
wcsxfrm.3
  1  .\" Copyright (c) 1990, 1991, 1993
  2  .\"	The Regents of the University of California.  All rights reserved.
  3  .\"
  4  .\" This code is derived from software contributed to Berkeley by
  5  .\" Chris Torek and the American National Standards Committee X3,
  6  .\" on Information Processing Systems.
  7  .\"
  8  .\" Redistribution and use in source and binary forms, with or without
  9  .\" modification, are permitted provided that the following conditions
 10  .\" are met:
 11  .\" 1. Redistributions of source code must retain the above copyright
 12  .\"    notice, this list of conditions and the following disclaimer.
 13  .\" 2. Redistributions in binary form must reproduce the above copyright
 14  .\"    notice, this list of conditions and the following disclaimer in the
 15  .\"    documentation and/or other materials provided with the distribution.
 16  .\" 4. Neither the name of the University nor the names of its contributors
 17  .\"    may be used to endorse or promote products derived from this software
 18  .\"    without specific prior written permission.
 19  .\"
 20  .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 21  .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 22  .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 23  .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 24  .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 25  .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 26  .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 27  .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 28  .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 29  .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 30  .\" SUCH DAMAGE.
 31  .\"
 32  .\"     @(#)strxfrm.3	8.1 (Berkeley) 6/4/93
 33  .\" FreeBSD: src/lib/libc/string/strxfrm.3,v 1.16 2002/09/06 11:24:06 tjr Exp
 34  .\" $FreeBSD: src/lib/libc/string/wcsxfrm.3,v 1.3 2007/01/09 00:28:12 imp Exp $
 35  .\"
 36  .Dd October 4, 2002
 37  .Dt WCSXFRM 3
 38  .Os
 39  .Sh NAME
 40  .Nm wcsxfrm ,
 41  .Nm wcsxfrm_l
 42  .Nd transform a wide string under locale
 43  .Sh LIBRARY
 44  .Lb libc
 45  .Sh SYNOPSIS
 46  .In wchar.h
 47  .Ft size_t
 48  .Fo wcsxfrm
 49  .Fa "wchar_t *restrict ws1"
 50  .Fa "const wchar_t *restrict ws2"
 51  .Fa "size_t n"
 52  .Fc
 53  .In wchar.h
 54  .In xlocale.h
 55  .Ft size_t
 56  .Fo wcsxfrm_l
 57  .Fa "wchar_t *restrict ws1"
 58  .Fa "const wchar_t *restrict ws2"
 59  .Fa "size_t n"
 60  .Fa "locale_t loc"
 61  .Fc
 62  .Sh DESCRIPTION
 63  The
 64  .Fn wcsxfrm
 65  function transforms a null-terminated wide character string pointed to by
 66  .Fa ws2 ,
 67  according to the current locale's collation order,
 68  then copies the transformed string into
 69  .Fa ws1 .
 70  No more than
 71  .Fa n
 72  wide characters are copied into
 73  .Fa ws1 ,
 74  including the terminating null character.
 75  If
 76  .Fa n
 77  is set to 0
 78  (it helps to determine an actual size needed
 79  for transformation),
 80  .Fa ws1
 81  is permitted to be a
 82  .Dv NULL
 83  pointer.
 84  .Pp
 85  Comparing two strings using
 86  .Fn wcscmp
 87  after
 88  .Fn wcsxfrm
 89  is equivalent to comparing
 90  two original strings with
 91  .Fn wcscoll .
 92  .Pp
 93  Although the
 94  .Fn wcsxfrm
 95  function uses the current locale, the
 96  .Fn wcsxfrm_l
 97  function may be passed a locale directly. See
 98  .Xr xlocale 3
 99  for more information.
100  .Sh RETURN VALUES
101  Upon successful completion,
102  .Fn wcsxfrm
103  returns the length of the transformed string not including
104  the terminating null character.
105  If this value is
106  .Fa n
107  or more, the contents of
108  .Fa ws1
109  are indeterminate.
110  .Sh SEE ALSO
111  .Xr setlocale 3 ,
112  .Xr strxfrm 3 ,
113  .Xr wcscmp 3 ,
114  .Xr wcscoll 3 ,
115  .Xr xlocale 3
116  .Sh STANDARDS
117  The
118  .Fn wcsxfrm
119  function
120  conforms to
121  .St -isoC-99 .
122  .Sh BUGS
123  The current implementation of
124  .Fn wcsxfrm
125  only works in single-byte
126  .Dv LC_CTYPE
127  locales, and falls back to using
128  .Fn wcsncpy
129  in locales with extended character sets.
130  .Pp
131  Comparing two strings using
132  .Fn wcscmp
133  after
134  .Fn wcsxfrm
135  is
136  .Em not
137  always equivalent to comparison with
138  .Fn wcscoll ;
139  .Fn wcsxfrm
140  only stores information about primary collation weights into
141  .Fa ws1 ,
142  whereas
143  .Fn wcscoll
144  compares characters using both primary and secondary weights.