1/* 2** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved. 3** Distributed under the terms of the MIT License. 4*/ 5 6#include <errno_private.h> 7#include <LocaleBackend.h> 8#include <wchar_private.h> 9 10 11using BPrivate::Libroot::GetCurrentLocaleBackend; 12using BPrivate::Libroot::LocaleBackend; 13using BPrivate::Libroot::LocaleBackendData; 14 15 16extern "C" int 17__wcscoll(const wchar_t* wcs1, const wchar_t* wcs2) 18{ 19 LocaleBackend* backend = GetCurrentLocaleBackend(); 20 21 if (backend != NULL) { 22 int result = 0; 23 status_t status = backend->Wcscoll(wcs1, wcs2, result); 24 25 if (status != B_OK) 26 __set_errno(EINVAL); 27 28 return result; 29 } 30 31 return wcscmp(wcs1, wcs2); 32} 33 34 35B_DEFINE_WEAK_ALIAS(__wcscoll, wcscoll); 36 37 38extern "C" int 39__wcscoll_l(const wchar_t* wcs1, const wchar_t* wcs2, locale_t l) 40{ 41 LocaleBackendData* locale = (LocaleBackendData*)l; 42 LocaleBackend* backend = locale->backend; 43 44 if (backend != NULL) { 45 int result = 0; 46 status_t status = backend->Wcscoll(wcs1, wcs2, result); 47 48 if (status != B_OK) 49 __set_errno(EINVAL); 50 51 return result; 52 } 53 54 return wcscmp(wcs1, wcs2); 55} 56 57 58B_DEFINE_WEAK_ALIAS(__wcscoll_l, wcscoll_l); 59