#include "db-util-debug.h"
#include <vconf.h>
-#define DB_UTIL_RETV_IF(cond,ret) \
- do {\
- if(cond) {\
- DB_UTIL_TRACE_WARNING("\x1b[33m[%s()][RET_IF]\x1b[0m",__FUNCTION__);\
- return ret;\
- }\
- }while(0)
+#define DB_UTIL_RETV_IF(cond, ret) \
+ do { \
+ if (cond) { \
+ DB_UTIL_TRACE_WARNING("\x1b[33m[%s()][RET_IF]\x1b[0m", __FUNCTION__); \
+ return ret; \
+ } \
+ } while (0)
#define DB_UTIL_RET_IF(cond) \
- do {\
- if(cond) {\
- DB_UTIL_TRACE_WARNING("\x1b[33m[%s()][RET_IF]\x1b[0m",__FUNCTION__);\
- return;\
- }\
- }while(0)
+ do { \
+ if (cond) { \
+ DB_UTIL_TRACE_WARNING("\x1b[33m[%s()][RET_IF]\x1b[0m", __FUNCTION__); \
+ return; \
+ } \
+ } while (0)
#define DB_UTIL_ERR_COL_FUNC_RET DB_UTIL_ERROR
#define ICU_FUNC_CNT 8
-typedef UCollator* (*ICU_UCOL_OPEN)(const char *, UErrorCode *);
+typedef UCollator *(*ICU_UCOL_OPEN)(const char *, UErrorCode *);
typedef void (*ICU_UCOL_CLOSE)(UCollator *);
typedef void (*ICU_UCOL_SETSTRENGTH)(UCollator *, UCollationStrength);
typedef UCollationResult (*ICU_UCOL_STRCOLL)(const UCollator *, const UChar *, int32_t, const UChar *, int32_t);
"uloc_getDefault"
};
- if(g_dl_icu_handle == NULL) {
+ if (g_dl_icu_handle == NULL) {
g_dl_icu_handle = dlopen(ICUI18N_LIBPATH, RTLD_LAZY | RTLD_GLOBAL);
- if(g_dl_icu_handle == NULL) {
+ if (g_dl_icu_handle == NULL) {
DB_UTIL_TRACE_WARNING("dlopen icu so fail");
return DB_UTIL_ERR_DLOPEN;
}
(const UChar *) str2, str2_len);
#ifdef DB_UTIL_ENABLE_DEVDEBUG
- if(utf8_v1)
+ if (utf8_v1)
free(utf8_v1);
- if(utf8_v2)
+ if (utf8_v2)
free(utf8_v2);
if (result == UCOL_LESS) {
DB_UTIL_TRACE_DEBUG("v1(%d) : %s\n", str1_len, utf8_v1);
DB_UTIL_TRACE_DEBUG("v2(%d) : %s\n", str2_len, utf8_v2);
- if(utf8_v1)
+ if (utf8_v1)
free(utf8_v1);
- if(utf8_v2)
+ if (utf8_v2)
free(utf8_v2);
#endif
DB_UTIL_RETV_IF(icu_symbol.icu_ucol_strcoll == NULL, DB_UTIL_ERR_COL_FUNC_RET);
- if(str1_len> str2_len) {
- for(i=0;i<str2_len;i=i+2) {
+ if (str1_len > str2_len) {
+ for (i = 0; i < str2_len; i = i+2) {
str_to++;
}
- while((int)(str_to-(UChar*)str1) <= str1_len) {
+ while ((int)(str_to-(UChar*)str1) <= str1_len) {
result = icu_symbol.icu_ucol_strcoll(
(UCollator *) ucol,
(UChar *) str_from, str_to-str_from,
(const UChar *) str2, str2_len);
- if (result == UCOL_EQUAL)
- {
+ if (result == UCOL_EQUAL) {
#ifdef DB_UTIL_ENABLE_DEVDEBUG
DB_UTIL_TRACE_DEBUG("equal \n");
#endif
&uiter1,
&uiter2,
&error);
- if(U_FAILURE(error)) {
+ if (U_FAILURE(error)) {
DB_UTIL_TRACE_ERROR("__db_util_collate_icu_8 ucol_strcollIter error: %d\n", error);
return DB_UTIL_ERR_COL_FUNC_RET;
}
icu_symbol.icu_uiter_setUTF8(&uiter2, (const char *) str2, str2_len);
- v1_char_len = g_utf8_strlen((gchar *)str1,-1);
- v2_char_len = g_utf8_strlen((gchar *)str2,-1);
+ v1_char_len = g_utf8_strlen((gchar *)str1, -1);
+ v2_char_len = g_utf8_strlen((gchar *)str2, -1);
- if(v1_char_len > v2_char_len) {
- for(i=0;i<v2_char_len;i++) {
+ if (v1_char_len > v2_char_len) {
+ for (i = 0; i < v2_char_len; i++) {
str_to = g_utf8_next_char(str_to);
}
- while((int)(str_to-(char*)str1) <= str1_len) {
+ while ((int)(str_to-(char*)str1) <= str1_len) {
icu_symbol.icu_uiter_setUTF8(
&uiter1,
(const char *) str_from,
return DB_UTIL_ERR_COL_FUNC_RET;
}
- if(result == UCOL_EQUAL)
+ if (result == UCOL_EQUAL)
#ifdef DB_UTIL_ENABLE_DEVDEBUG
{
DB_UTIL_TRACE_DEBUG("equal \n");
str_to = g_utf8_next_char(str_to);
str_from = g_utf8_next_char(str_from);
}
- }
- else
- {
+ } else {
icu_symbol.icu_uiter_setUTF8(
&uiter1,
(const char *) str1,
}
#ifdef DB_UTIL_ENABLE_DEVDEBUG
- if (result == UCOL_LESS)
- {
+ if (result == UCOL_LESS) {
DB_UTIL_TRACE_DEBUG("less \n");
- }
- else if (result == UCOL_GREATER)
- {
+ } else if (result == UCOL_GREATER) {
DB_UTIL_TRACE_DEBUG("greater \n");
- }
- else if(result == UCOL_EQUAL)
- {
+ } else if (result == UCOL_EQUAL) {
DB_UTIL_TRACE_DEBUG("equal \n");
- }
- else
- {
+ } else {
DB_UTIL_TRACE_DEBUG("compare error : %d\n", result);
}
#endif
static void __db_util_collate_icu_close(void* ucol)
{
DB_UTIL_TRACE_DEBUG("close icu collator\n");
-
DB_UTIL_RET_IF(icu_symbol.icu_ucol_close == NULL);
-
- icu_symbol.icu_ucol_close((UCollator *) ucol);
+ icu_symbol.icu_ucol_close((UCollator *) ucol);
}
static int __db_util_collation_create(sqlite3* db_handle, char* locale, char* collator_name, UCollationStrength ucol_strength_value, int utf_type, int cmp_type)
DB_UTIL_RETV_IF(icu_symbol.icu_ucol_setStrength == NULL, DB_UTIL_ERR_DLSYM);
UCollator* ucol = icu_symbol.icu_ucol_open(locale, &status);
- if(status == U_USING_DEFAULT_WARNING) {
+ if (status == U_USING_DEFAULT_WARNING) {
DB_UTIL_TRACE_ERROR("ucol_open success with default collate option\n");
} else if (U_FAILURE(status)) {
DB_UTIL_TRACE_ERROR("ucol_open fail : %d \n", status);
return DB_UTIL_ERR_ICU;
}
#ifdef DB_UTIL_ENABLE_DEVDEBUG
- else
- {
+ else {
DB_UTIL_TRACE_DEBUG("ucol_open success : %d \n", status);
}
#endif
DB_UTIL_TRACE_DEBUG("ucol_setStrength success \n");
}
- if(utf_type == DB_UTIL_COL_UTF8) {
- if(cmp_type == DB_UTIL_CMP_LC) {
+ if (utf_type == DB_UTIL_COL_UTF8) {
+ if (cmp_type == DB_UTIL_CMP_LC) {
err = sqlite3_create_collation_v2(db_handle, collator_name, SQLITE_UTF8, ucol,
- __db_util_collate_icu_8_lc, (void(*)(void*))__db_util_collate_icu_close);
+ __db_util_collate_icu_8_lc, (void(*)(void*))__db_util_collate_icu_close);
} else {
err = sqlite3_create_collation_v2(db_handle, collator_name, SQLITE_UTF8, ucol,
- __db_util_collate_icu_8, (void(*)(void*))__db_util_collate_icu_close);
+ __db_util_collate_icu_8, (void(*)(void*))__db_util_collate_icu_close);
}
- } else if(utf_type == DB_UTIL_COL_UTF16) {
- if(cmp_type == DB_UTIL_CMP_LC) {
+ } else if (utf_type == DB_UTIL_COL_UTF16) {
+ if (cmp_type == DB_UTIL_CMP_LC) {
err = sqlite3_create_collation_v2(db_handle, collator_name, SQLITE_UTF16, ucol,
- __db_util_collate_icu_16_lc, (void(*)(void*))__db_util_collate_icu_close);
+ __db_util_collate_icu_16_lc, (void(*)(void*))__db_util_collate_icu_close);
} else {
err = sqlite3_create_collation_v2(db_handle, collator_name, SQLITE_UTF16, ucol,
- __db_util_collate_icu_16, (void(*)(void*))__db_util_collate_icu_close);
+ __db_util_collate_icu_16, (void(*)(void*))__db_util_collate_icu_close);
}
} else {
DB_UTIL_TRACE_ERROR("wrong utf_type param value : %d\n", utf_type);
UErrorCode status = U_ZERO_ERROR;
const char* locale = NULL;
- if ( (!db_handle) || (!col_name) ) {
+ if ((!db_handle) || (!col_name)) {
DB_UTIL_TRACE_ERROR("wrong input param");
return DB_UTIL_ERROR;
}
return DB_UTIL_ERROR;
}
locale = icu_symbol.icu_uloc_getDefault();
- if(locale == NULL) {
+ if (locale == NULL) {
DB_UTIL_TRACE_WARNING("Fail to get current locale : %d", DB_UTIL_ERR_ENV);
return DB_UTIL_ERROR;
}
DB_UTIL_TRACE_DEBUG("locale : %s", locale);
#ifdef ENABLE_COL_KO_IC
- if((db_util_collate_type == DB_UTIL_COL_KO_IC) ||
+ if ((db_util_collate_type == DB_UTIL_COL_KO_IC) ||
(db_util_collate_type == DB_UTIL_COL_KO_IC_LC)) {
- if(strncmp(locale, "ko", 2) != 0) {
+ if (strncmp(locale, "ko", 2) != 0) {
DB_UTIL_TRACE_WARNING("collate type is not match with current locale : %d", DB_UTIL_ERR_ENV);
return DB_UTIL_ERROR;
}
}
#endif
- switch(type) {
- case DB_UTIL_COL_UCA :
- ret = __db_util_collation_create(db_handle, NULL, col_name, UCOL_SECONDARY, text_type, DB_UTIL_CMP_SC);
- break;
- case DB_UTIL_COL_LS_AS_CI :
- ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_SECONDARY, text_type, DB_UTIL_CMP_SC);
- break;
- case DB_UTIL_COL_LS_AI_CI :
- ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_SC);
- break;
- case DB_UTIL_COL_LS_AI_CI_LC :
- ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_LC);
- break;
+ switch (type) {
+ case DB_UTIL_COL_UCA:
+ ret = __db_util_collation_create(db_handle, NULL, col_name, UCOL_SECONDARY, text_type, DB_UTIL_CMP_SC);
+ break;
+ case DB_UTIL_COL_LS_AS_CI:
+ ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_SECONDARY, text_type, DB_UTIL_CMP_SC);
+ break;
+ case DB_UTIL_COL_LS_AI_CI:
+ ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_SC);
+ break;
+ case DB_UTIL_COL_LS_AI_CI_LC:
+ ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_LC);
+ break;
#ifdef ENABLE_COL_KO_IC
- case DB_UTIL_COL_KO_IC :
- ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_SC);
- break;
- case DB_UTIL_COL_KO_IC_LC :
- ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_LC);
- break;
+ case DB_UTIL_COL_KO_IC:
+ ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_SC);
+ break;
+ case DB_UTIL_COL_KO_IC_LC:
+ ret = __db_util_collation_create(db_handle, (char*)locale, col_name, UCOL_PRIMARY, text_type, DB_UTIL_CMP_LC);
+ break;
#endif
- default :
- DB_UTIL_TRACE_WARNING("wrong collate input type");
- ret = DB_UTIL_ERROR;
+ default:
+ DB_UTIL_TRACE_WARNING("wrong collate input type");
+ ret = DB_UTIL_ERROR;
}
- if(ret != DB_UTIL_OK)
+ if (ret != DB_UTIL_OK)
ret = DB_UTIL_ERROR;
return ret;