int setDBDefaultLocale(sqlite3 * db, const char * const zLocale)
{
int rc;
sqlite3_stmt* stmt;
UErrorCode status = U_ZERO_ERROR;
UCollator *pUCollator= ucol_open(zLocale ? zLocale : uloc_getDefault(), &status);
if(!U_SUCCESS(status))
{
return SQLITE_ERROR;
}
// create the collation
if ((rc = sqlite3_create_collation_v2(db, "LOCALE", SQLITE_UTF16,
(void *)pUCollator, icuCollationColl, icuCollationDel)) != SQLITE_OK)
{
ucol_close(pUCollator);
return rc;
}
// set the default collating sequence to the locale collation
db->pDfltColl = sqlite3FindCollSeq(db, ENC(db), "LOCALE", 0);
return db->pDfltColl ? SQLITE_OK : SQLITE_ERROR;
}
aW50IHNldERCRGVmYXVsdExvY2FsZShzcWxpdGUzICogZGIsIGNvbnN0IGNoYXIgKiBjb25zdCB6TG9jYWxlKQp7CiAgaW50IHJjOwogIHNxbGl0ZTNfc3RtdCogc3RtdDsKICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICBVQ29sbGF0b3IgKnBVQ29sbGF0b3I9IHVjb2xfb3Blbih6TG9jYWxlID8gekxvY2FsZSA6IHVsb2NfZ2V0RGVmYXVsdCgpLCAmc3RhdHVzKTsKCiAgaWYoIVVfU1VDQ0VTUyhzdGF0dXMpKQogIHsKICAgIHJldHVybiBTUUxJVEVfRVJST1I7CiAgfQogIAogIC8vIGNyZWF0ZSB0aGUgY29sbGF0aW9uCiAgaWYgKChyYyA9IHNxbGl0ZTNfY3JlYXRlX2NvbGxhdGlvbl92MihkYiwgIkxPQ0FMRSIsIFNRTElURV9VVEYxNiwKICAodm9pZCAqKXBVQ29sbGF0b3IsIGljdUNvbGxhdGlvbkNvbGwsIGljdUNvbGxhdGlvbkRlbCkpICE9IFNRTElURV9PSykKICB7CiAgICB1Y29sX2Nsb3NlKHBVQ29sbGF0b3IpOwoKICAgIHJldHVybiByYzsKICB9CgogIC8vIHNldCB0aGUgZGVmYXVsdCBjb2xsYXRpbmcgc2VxdWVuY2UgdG8gdGhlIGxvY2FsZSBjb2xsYXRpb24KICBkYi0+cERmbHRDb2xsID0gc3FsaXRlM0ZpbmRDb2xsU2VxKGRiLCBFTkMoZGIpLCAiTE9DQUxFIiwgMCk7CgogIHJldHVybiBkYi0+cERmbHRDb2xsID8gU1FMSVRFX09LIDogU1FMSVRFX0VSUk9SOwp9