xref: /freebsd/lib/libc/locale/collcmp.c (revision 559a218c9b257775fb249b67945fe4a05b7a6b9f)
1d915a14eSPedro F. Giffuni /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3d915a14eSPedro F. Giffuni  *
42eecfbacSAndrey A. Chernov  * Copyright (C) 1996 by Andrey A. Chernov, Moscow, Russia.
52eecfbacSAndrey A. Chernov  * All rights reserved.
62eecfbacSAndrey A. Chernov  *
73c87aa1dSDavid Chisnall  * Copyright (c) 2011 The FreeBSD Foundation
85b5fa75aSEd Maste  *
93c87aa1dSDavid Chisnall  * Portions of this software were developed by David Chisnall
103c87aa1dSDavid Chisnall  * under sponsorship from the FreeBSD Foundation.
113c87aa1dSDavid Chisnall  *
122eecfbacSAndrey A. Chernov  * Redistribution and use in source and binary forms, with or without
132eecfbacSAndrey A. Chernov  * modification, are permitted provided that the following conditions
142eecfbacSAndrey A. Chernov  * are met:
152eecfbacSAndrey A. Chernov  * 1. Redistributions of source code must retain the above copyright
162eecfbacSAndrey A. Chernov  *    notice, this list of conditions and the following disclaimer.
172eecfbacSAndrey A. Chernov  * 2. Redistributions in binary form must reproduce the above copyright
182eecfbacSAndrey A. Chernov  *    notice, this list of conditions and the following disclaimer in the
192eecfbacSAndrey A. Chernov  *    documentation and/or other materials provided with the distribution.
202eecfbacSAndrey A. Chernov  *
212eecfbacSAndrey A. Chernov  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
222eecfbacSAndrey A. Chernov  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
232eecfbacSAndrey A. Chernov  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
242eecfbacSAndrey A. Chernov  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
252eecfbacSAndrey A. Chernov  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
262eecfbacSAndrey A. Chernov  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
272eecfbacSAndrey A. Chernov  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
282eecfbacSAndrey A. Chernov  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
292eecfbacSAndrey A. Chernov  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
302eecfbacSAndrey A. Chernov  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
312eecfbacSAndrey A. Chernov  * SUCH DAMAGE.
322eecfbacSAndrey A. Chernov  */
332eecfbacSAndrey A. Chernov 
342eecfbacSAndrey A. Chernov #include <string.h>
351daad8f5SAndrey A. Chernov #include <wchar.h>
36a9d25ab1SAndrey A. Chernov #include "collate.h"
37883a3266SAndrey A. Chernov 
38cb07d766SAndrey A. Chernov /*
398841d008SAndrey A. Chernov  * Compare two characters using collate
40cb07d766SAndrey A. Chernov  */
41cb07d766SAndrey A. Chernov 
__collate_range_cmp(char c1,char c2)4212eae8c8SAndrey A. Chernov int __collate_range_cmp(char c1, char c2)
433c2c0c04SPedro F. Giffuni {
443c2c0c04SPedro F. Giffuni 	char s1[2], s2[2];
453c2c0c04SPedro F. Giffuni 
463c2c0c04SPedro F. Giffuni 	s1[0] = c1;
473c2c0c04SPedro F. Giffuni 	s1[1] = '\0';
483c2c0c04SPedro F. Giffuni 	s2[0] = c2;
493c2c0c04SPedro F. Giffuni 	s2[1] = '\0';
5012eae8c8SAndrey A. Chernov 	return (strcoll(s1, s2));
511daad8f5SAndrey A. Chernov }
521daad8f5SAndrey A. Chernov 
__wcollate_range_cmp(wchar_t c1,wchar_t c2)5312eae8c8SAndrey A. Chernov int __wcollate_range_cmp(wchar_t c1, wchar_t c2)
541daad8f5SAndrey A. Chernov {
551daad8f5SAndrey A. Chernov 	wchar_t s1[2], s2[2];
561daad8f5SAndrey A. Chernov 
571daad8f5SAndrey A. Chernov 	s1[0] = c1;
581daad8f5SAndrey A. Chernov 	s1[1] = L'\0';
591daad8f5SAndrey A. Chernov 	s2[0] = c2;
601daad8f5SAndrey A. Chernov 	s2[1] = L'\0';
6112eae8c8SAndrey A. Chernov 	return (wcscoll(s1, s2));
622eecfbacSAndrey A. Chernov }
63