1178355Ssam/* 2178355Ssam** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved. 3178355Ssam** Distributed under the terms of the MIT License. 4178355Ssam*/ 5178355Ssam 6178355Ssam#include <errno_private.h> 7178355Ssam#include <LocaleBackend.h> 8178355Ssam#include <wchar_private.h> 9178355Ssam 10178355Ssam 11178355Ssamusing BPrivate::Libroot::GetCurrentLocaleBackend; 12178355Ssamusing BPrivate::Libroot::LocaleBackend; 13178355Ssamusing BPrivate::Libroot::LocaleBackendData; 14178355Ssam 15178355Ssam 16178355Ssamextern "C" int 17178355Ssam__wcscoll(const wchar_t* wcs1, const wchar_t* wcs2) 18178355Ssam{ 19178355Ssam LocaleBackend* backend = GetCurrentLocaleBackend(); 20178355Ssam 21178355Ssam if (backend != NULL) { 22178355Ssam int result = 0; 23178355Ssam status_t status = backend->Wcscoll(wcs1, wcs2, result); 24178355Ssam 25178355Ssam if (status != B_OK) 26178355Ssam __set_errno(EINVAL); 27178355Ssam 28178355Ssam return result; 29178355Ssam } 30178355Ssam 31178355Ssam return wcscmp(wcs1, wcs2); 32178355Ssam} 33178355Ssam 34178355Ssam 35178355SsamB_DEFINE_WEAK_ALIAS(__wcscoll, wcscoll); 36178355Ssam 37178355Ssam 38178355Ssamextern "C" int 39178355Ssam__wcscoll_l(const wchar_t* wcs1, const wchar_t* wcs2, locale_t l) 40178355Ssam{ 41178355Ssam LocaleBackendData* locale = (LocaleBackendData*)l; 42178355Ssam LocaleBackend* backend = locale->backend; 43178355Ssam 44178355Ssam if (backend != NULL) { 45178355Ssam int result = 0; 46178355Ssam status_t status = backend->Wcscoll(wcs1, wcs2, result); 47178355Ssam 48178355Ssam if (status != B_OK) 49178355Ssam __set_errno(EINVAL); 50178355Ssam 51178355Ssam return result; 52178355Ssam } 53178355Ssam 54178355Ssam return wcscmp(wcs1, wcs2); 55178355Ssam} 56178355Ssam 57178355Ssam 58178355SsamB_DEFINE_WEAK_ALIAS(__wcscoll_l, wcscoll_l); 59178355Ssam