return 0;
}
+
+char* msg_mgr_clean_country_code(char *src)
+{
+ int ret = 1;
+
+ switch (src[ret++]-'0') {
+ case 1:
+ case 7:
+ break;
+ case 2:
+ switch (src[ret++]-'0') {
+ case 0:
+ case 7:
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ ret += 1;
+ break;
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ break;
+ }
+ break;
+ case 3:
+ switch (src[ret++]-'0') {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 6:
+ case 9:
+ break;
+ case 5:
+ case 7:
+ case 8:
+ ret += 1;
+ break;
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ break;
+ }
+ break;
+ case 4:
+ switch (src[ret++]-'0') {
+ case 0:
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ break;
+ case 2:
+ ret += 1;
+ break;
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ break;
+ }
+ break;
+ case 5:
+ switch (src[ret++]-'0') {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ break;
+ case 0:
+ case 9:
+ ret += 1;
+ break;
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ break;
+ }
+ break;
+ case 6:
+ switch (src[ret++]-'0') {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ break;
+ case 7:
+ case 8:
+ case 9:
+ ret += 1;
+ break;
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ break;
+ }
+ break;
+ case 8:
+ switch (src[ret++]-'0') {
+ case 1:
+ case 2:
+ case 4:
+ case 6:
+ break;
+ case 0:
+ case 3:
+ case 5:
+ case 7:
+ case 8:
+ case 9:
+ ret += 1;
+ break;
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ break;
+ }
+ break;
+ case 9:
+ switch (src[ret++]-'0') {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 8:
+ break;
+ case 6:
+ case 7:
+ case 9:
+ ret += 1;
+ break;
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ break;
+ }
+ break;
+ case 0:
+ default:
+ MSG_MGR_DEBUG("The parameter(src:%s) has invalid character set", src);
+ return src;
+ }
+
+ return &src[ret];
+}
+
+
+char* msg_mgr_normalize_number(char *src)
+{
+ char *normalized_number;
+
+ if ('+' == src[0])
+ normalized_number = msg_mgr_clean_country_code(src);
+ else if ('0' == src[0])
+ normalized_number = src+1;
+ else
+ normalized_number = src;
+
+ MSG_MGR_DEBUG("src = %s, normalized = %s", src, normalized_number);
+
+ return normalized_number;
+}
#include <notification_internal.h>
#include <notification_status.h>
#include <package_manager.h>
-#include <phone_number.h>
#include <vconf.h>
#include <msg.h>
bool isExistAddressInReportTable(const char *addr)
{
char sqlQuery[MAX_QUERY_LEN+1];
- char *normal_addr = NULL;
int rowCnt = 0, colCnt = 0;
char **db_res = NULL;
int msg_err = 0;
- int ret = phone_number_get_normalized_number(addr, &normal_addr);
- if (ret != PHONE_NUMBER_ERROR_NONE) {
- MSG_MGR_ERR("phone_number_get_normalized_number() failed [%d]", ret);
- return false;
- }
+ char *normal_addr = msg_mgr_normalize_number((char *)addr);
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "* FROM %s WHERE ADDRESS_VAL LIKE '%%%%%s'", MSGFW_SMS_REPORT_TABLE_NAME, normal_addr);
msg_err = msg_db_select_with_query(msg_handle, sqlQuery, &db_res, &rowCnt, &colCnt);
if (msg_err != MSG_SUCCESS) {
MSG_MGR_ERR("msg_db_select_with_query() failed [%d]", msg_err);
- g_free(normal_addr);
return false;
}
msg_err = msg_db_free(msg_handle, db_res);
if (msg_err != MSG_SUCCESS) {
MSG_MGR_ERR("msg_db_free() failed [%d]", msg_err);
- g_free(normal_addr);
return false;
}
- if (rowCnt > 0) {
- g_free(normal_addr);
+ if (rowCnt > 0)
return true;
- }
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "* FROM %s WHERE ADDRESS_VAL LIKE '%%%%%s'", MSGFW_REPORT_TABLE_NAME, normal_addr);
- g_free(normal_addr);
-
msg_err = msg_db_select_with_query(msg_handle, sqlQuery, &db_res, &rowCnt, &colCnt);
if (msg_err != MSG_SUCCESS) {
MSG_MGR_ERR("msg_db_select_with_query() failed [%d]", msg_err);
MSG_MGR_DEBUG("notification with priv_id [%d] is NULL", info->priv_id);
isDelete = true;
} else {
- phone_number_get_normalized_number(info->addressVal, &normalAddr);
+ normalAddr = msg_mgr_normalize_number(info->addressVal);
if (normalAddr) {
MSG_MGR_SEC_DEBUG("normalized number = %s", normalAddr);
MSG_MGR_DEBUG("delete notification failed");
}
}
-
- g_free(normalAddr);
- normalAddr = NULL;
}
notification_free(noti_h);
report_status_type = MSG_REPORT_TYPE_DELIVERY;
}
- char *normalNum = NULL;
- if (msg_info->addressVal[0] != '\0')
- phone_number_get_normalized_number(msg_info->addressVal, &normalNum);
-
snprintf(sqlQuery, sizeof(sqlQuery),
"STATUS "
"FROM %s "
"WHERE MSG_ID=%d AND STATUS_TYPE=%d AND ADDRESS_VAL LIKE '%%%s';",
- MSGFW_REPORT_TABLE_NAME, msg_info->msgId, report_status_type, normalNum);
+ MSGFW_REPORT_TABLE_NAME, msg_info->msgId, report_status_type, msg_mgr_normalize_number(msg_info->addressVal));
MSG_MGR_DEBUG("sqlQuery = [%s]", sqlQuery);
- if (normalNum)
- g_free(normalNum);
-
char **db_res = NULL;
int row_cnt = 0, col_cnt = 0;