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 34333fc21eSDavid E. O'Brien #include <sys/cdefs.h> 35333fc21eSDavid E. O'Brien __FBSDID("$FreeBSD$"); 36333fc21eSDavid E. O'Brien 372eecfbacSAndrey A. Chernov #include <string.h> 381daad8f5SAndrey A. Chernov #include <wchar.h> 39a9d25ab1SAndrey A. Chernov #include "collate.h" 40883a3266SAndrey A. Chernov 41cb07d766SAndrey A. Chernov /* 428841d008SAndrey A. Chernov * Compare two characters using collate 43cb07d766SAndrey A. Chernov */ 44cb07d766SAndrey A. Chernov 4512eae8c8SAndrey A. Chernov int __collate_range_cmp(char c1, char c2) 463c2c0c04SPedro F. Giffuni { 473c2c0c04SPedro F. Giffuni char s1[2], s2[2]; 483c2c0c04SPedro F. Giffuni 493c2c0c04SPedro F. Giffuni s1[0] = c1; 503c2c0c04SPedro F. Giffuni s1[1] = '\0'; 513c2c0c04SPedro F. Giffuni s2[0] = c2; 523c2c0c04SPedro F. Giffuni s2[1] = '\0'; 5312eae8c8SAndrey A. Chernov return (strcoll(s1, s2)); 541daad8f5SAndrey A. Chernov } 551daad8f5SAndrey A. Chernov 5612eae8c8SAndrey A. Chernov int __wcollate_range_cmp(wchar_t c1, wchar_t c2) 571daad8f5SAndrey A. Chernov { 581daad8f5SAndrey A. Chernov wchar_t s1[2], s2[2]; 591daad8f5SAndrey A. Chernov 601daad8f5SAndrey A. Chernov s1[0] = c1; 611daad8f5SAndrey A. Chernov s1[1] = L'\0'; 621daad8f5SAndrey A. Chernov s2[0] = c2; 631daad8f5SAndrey A. Chernov s2[1] = L'\0'; 6412eae8c8SAndrey A. Chernov return (wcscoll(s1, s2)); 652eecfbacSAndrey A. Chernov } 66