diff options
Diffstat (limited to 'mapi')
-rwxr-xr-x | mapi/CMakeLists.txt | 4 | ||||
-rwxr-xr-x | mapi/msg_control.cpp | 8 | ||||
-rwxr-xr-x | mapi/msg_filter.cpp | 105 | ||||
-rwxr-xr-x | mapi/msg_message.cpp | 60 | ||||
-rwxr-xr-x | mapi/msg_mms.cpp | 301 | ||||
-rwxr-xr-x | mapi/msg_setting.cpp | 461 | ||||
-rwxr-xr-x | mapi/msg_storage.cpp | 1348 | ||||
-rwxr-xr-x | mapi/msg_svc.cpp | 333 | ||||
-rwxr-xr-x | mapi/msg_transport.cpp | 198 |
9 files changed, 1347 insertions, 1471 deletions
diff --git a/mapi/CMakeLists.txt b/mapi/CMakeLists.txt index 7f9b391..a835dee 100755 --- a/mapi/CMakeLists.txt +++ b/mapi/CMakeLists.txt @@ -10,7 +10,7 @@ IF("${CMAKE_BUILD_TYPE}" STREQUAL "") ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") -SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -O0 -g -Wall") +SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -O2 -g -Wall") ########################################################## # Define MAPI @@ -41,7 +41,7 @@ FOREACH(flag ${mapi_pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) -SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") diff --git a/mapi/msg_control.cpp b/mapi/msg_control.cpp index 8116e05..a396014 100755 --- a/mapi/msg_control.cpp +++ b/mapi/msg_control.cpp @@ -29,11 +29,11 @@ ==================================================================================================*/ EXPORT_API int msg_open_msg_handle(msg_handle_t *handle) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -78,11 +78,11 @@ EXPORT_API int msg_open_msg_handle(msg_handle_t *handle) EXPORT_API int msg_close_msg_handle(msg_handle_t *handle) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } diff --git a/mapi/msg_filter.cpp b/mapi/msg_filter.cpp index 4871163..86f60c2 100755 --- a/mapi/msg_filter.cpp +++ b/mapi/msg_filter.cpp @@ -28,29 +28,24 @@ ==================================================================================================*/ EXPORT_API int msg_add_filter(msg_handle_t handle, const msg_struct_t msg_struct_handle) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - // TODO : check NULL in msg_struct_handle - msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; - - if (handle == NULL || msg_struct == NULL) + if (handle == NULL || msg_struct_handle == NULL) { return MSG_ERR_INVALID_PARAMETER; } - if(msg_struct->type != MSG_STRUCT_FILTER) - { - return MSG_ERR_INVALID_PARAMETER; - } + msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; + MSG_TYPE_CHECK(msg_struct->type, MSG_STRUCT_FILTER); MsgHandle* pHandle = (MsgHandle*)handle; @@ -70,30 +65,24 @@ EXPORT_API int msg_add_filter(msg_handle_t handle, const msg_struct_t msg_struct EXPORT_API int msg_update_filter(msg_handle_t handle, const msg_struct_t msg_struct_handle) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - // TODO : check NULL in msg_struct_handle - msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; - - if (handle == NULL || msg_struct == NULL) + if (handle == NULL || msg_struct_handle == NULL) { return MSG_ERR_INVALID_PARAMETER; } - - if(msg_struct->type != MSG_STRUCT_FILTER) - { - return MSG_ERR_INVALID_PARAMETER; - } + msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; + MSG_TYPE_CHECK(msg_struct->type, MSG_STRUCT_FILTER); MsgHandle* pHandle = (MsgHandle*)handle; @@ -113,13 +102,13 @@ EXPORT_API int msg_update_filter(msg_handle_t handle, const msg_struct_t msg_str EXPORT_API int msg_delete_filter(msg_handle_t handle, msg_filter_id_t filter_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -147,13 +136,13 @@ EXPORT_API int msg_delete_filter(msg_handle_t handle, msg_filter_id_t filter_id) EXPORT_API int msg_get_filter_list(msg_handle_t handle, msg_struct_list_s *filter_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -181,13 +170,13 @@ EXPORT_API int msg_get_filter_list(msg_handle_t handle, msg_struct_list_s *filte EXPORT_API int msg_set_filter_operation(msg_handle_t handle, bool set_flag) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -215,18 +204,18 @@ EXPORT_API int msg_set_filter_operation(msg_handle_t handle, bool set_flag) EXPORT_API int msg_get_filter_operation(msg_handle_t handle, bool *set_flag) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || set_flag == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -249,13 +238,13 @@ EXPORT_API int msg_get_filter_operation(msg_handle_t handle, bool *set_flag) EXPORT_API int msg_set_filter_active(msg_handle_t handle, msg_filter_id_t filter_id, bool active) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -281,72 +270,72 @@ EXPORT_API int msg_set_filter_active(msg_handle_t handle, msg_filter_id_t filter } -bool msg_get_filter_info_bool(void *filter, int field) +int msg_get_filter_info_bool(void *filter, int field, bool *value) { if (!filter) return MSG_ERR_NULL_POINTER; - int ret = 0; + int ret = MSG_SUCCESS; MSG_FILTER_S *filter_data = (MSG_FILTER_S *)filter; switch (field) { case MSG_FILTER_ACTIVE_BOOL : - ret = filter_data->bActive; + *value = filter_data->bActive; break; default : - return MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; + break; } return ret; } -int msg_get_filter_info_int(void *filter, int field) +int msg_get_filter_info_int(void *filter, int field, int *value) { if (!filter) return MSG_ERR_NULL_POINTER; - int ret = 0; + int ret = MSG_SUCCESS; MSG_FILTER_S *filter_data = (MSG_FILTER_S *)filter; switch (field) { case MSG_FILTER_ID_INT : - ret = filter_data->filterId; + *value = filter_data->filterId; break; case MSG_FILTER_TYPE_INT : - ret = filter_data->filterType; + *value = filter_data->filterType; break; default : - return MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; + break; } return ret; } -char *msg_get_filter_info_str(void *filter, int field) +int msg_get_filter_info_str(void *filter, int field, char *value, int size) { if (!filter) - return NULL; - - char *ret_str = NULL; + return MSG_ERR_NULL_POINTER; MSG_FILTER_S *filter_data = (MSG_FILTER_S *)filter; switch (field) { case MSG_FILTER_VALUE_STR : - ret_str = filter_data->filterValue; + strncpy(value, filter_data->filterValue, size); break; default : - return NULL; + return MSG_ERR_INVALID_PARAMETER; } - return ret_str; + return MSG_SUCCESS; } int msg_set_filter_info_bool(void *filter, int field, bool value) @@ -354,7 +343,7 @@ int msg_set_filter_info_bool(void *filter, int field, bool value) if (!filter) return MSG_ERR_NULL_POINTER; - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; MSG_FILTER_S *filter_data = (MSG_FILTER_S *)filter; switch (field) @@ -374,7 +363,7 @@ int msg_set_filter_info_int(void *filter, int field, int value) if (!filter) return MSG_ERR_NULL_POINTER; - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; MSG_FILTER_S *filter_data = (MSG_FILTER_S *)filter; switch (field) @@ -397,7 +386,7 @@ int msg_set_filter_info_str(void *filter, int field, char *value, int size) if (!filter || !value) return MSG_ERR_NULL_POINTER; - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; MSG_FILTER_S *filter_data = (MSG_FILTER_S *)filter; switch (field) diff --git a/mapi/msg_message.cpp b/mapi/msg_message.cpp index c4c8978..d46941a 100755 --- a/mapi/msg_message.cpp +++ b/mapi/msg_message.cpp @@ -85,16 +85,19 @@ void msg_message_create_struct(msg_struct_s *msg_struct) msg_struct_list_s *addr_list = (msg_struct_list_s *)new msg_struct_list_s; addr_list->nCount = 0; - addr_list->msg_struct_info = (msg_struct_t *)calloc(MAX_TO_ADDRESS_CNT, sizeof(MSG_ADDRESS_INFO_S *)); - - msg_struct_s *pTmp = NULL; - - for (int i = 0; i < MAX_TO_ADDRESS_CNT; i++) { - addr_list->msg_struct_info[i] = (msg_struct_t)new msg_struct_s; - pTmp = (msg_struct_s *)addr_list->msg_struct_info[i]; - pTmp->type = MSG_STRUCT_ADDRESS_INFO; - pTmp->data = new MSG_ADDRESS_INFO_S; - memset(pTmp->data, 0x00, sizeof(MSG_ADDRESS_INFO_S)); + addr_list->msg_struct_info = (msg_struct_t *)calloc(MAX_TO_ADDRESS_CNT, sizeof(msg_struct_s *)); + + if (addr_list->msg_struct_info != NULL) { + msg_struct_s *pTmp = NULL; + + for (int i = 0; i < MAX_TO_ADDRESS_CNT; i++) { + addr_list->msg_struct_info[i] = (msg_struct_t)new msg_struct_s; + pTmp = (msg_struct_s *)addr_list->msg_struct_info[i]; + memset(pTmp, 0x00, sizeof(msg_struct_s)); + pTmp->type = MSG_STRUCT_ADDRESS_INFO; + pTmp->data = new MSG_ADDRESS_INFO_S; + memset(pTmp->data, 0x00, sizeof(MSG_ADDRESS_INFO_S)); + } } msg->addr_list = addr_list; @@ -221,6 +224,7 @@ int msg_message_get_int_value(void *data, int field, int *value) break; default : *value = MSG_TYPE_SMS; + break; } } else if (msg_data->mainType == MSG_MMS_TYPE) @@ -335,9 +339,6 @@ int msg_message_get_str_value(void *data, int field, char *value, int size) case MSG_MESSAGE_SUBJECT_STR : strncpy(value, msg_data->subject, size); break; - case MSG_MESSAGE_THUMBNAIL_PATH_STR : - strncpy(value, msg_data->thumbPath, size); - break; case MSG_MESSAGE_SMS_DATA_STR : case MSG_MESSAGE_MMS_TEXT_STR : if (msg_data->pData) @@ -540,9 +541,6 @@ int msg_message_set_str_value(void *data, int field, char *value, int size) case MSG_MESSAGE_SUBJECT_STR : snprintf(msg_data->subject, sizeof(msg_data->subject), "%s",value); break; - case MSG_MESSAGE_THUMBNAIL_PATH_STR : - snprintf(msg_data->thumbPath, sizeof(msg_data->thumbPath), "%s",value); - break; case MSG_MESSAGE_SMS_DATA_STR : { if (msg_data->pData) @@ -771,18 +769,18 @@ EXPORT_API int msg_get_mms_struct(msg_struct_t msg_struct_handle, msg_struct_t m CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); //TODO :: check message type is MMS int ret = MSG_SUCCESS; - msg_struct_s *msg_struct = (msg_struct_s *)msg_struct_handle; - msg_struct_s *mms_struct = (msg_struct_s *)mms_struct_handle; - if (msg_struct == NULL || mms_struct == NULL) { + if (msg_struct_handle == NULL || mms_struct_handle == NULL) { return MSG_ERR_INVALID_PARAMETER; } - if (msg_struct->data == NULL || mms_struct->data == NULL) { - return MSG_ERR_INVALID_PARAMETER; - } + msg_struct_s *msg_struct = (msg_struct_s *)msg_struct_handle; + msg_struct_s *mms_struct = (msg_struct_s *)mms_struct_handle; + + MSG_TYPE_CHECK(msg_struct->type, MSG_STRUCT_MESSAGE_INFO); + MSG_TYPE_CHECK(mms_struct->type, MSG_STRUCT_MMS); - if (msg_struct->type != MSG_STRUCT_MESSAGE_INFO || mms_struct->type != MSG_STRUCT_MMS) { + if (msg_struct->data == NULL || mms_struct->data == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -812,24 +810,26 @@ EXPORT_API int msg_set_mms_struct(msg_struct_t msg_struct_handle, msg_struct_t m CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); //TODO :: check message type is MMS int ret = MSG_SUCCESS; - msg_struct_s *msg_struct = (msg_struct_s *)msg_struct_handle; - msg_struct_s *mms_struct = (msg_struct_s *)mms_struct_handle; - if (msg_struct == NULL || mms_struct == NULL) { + if (msg_struct_handle == NULL || mms_struct_handle == NULL) { return MSG_ERR_INVALID_PARAMETER; } - if (msg_struct->data == NULL || mms_struct->data == NULL) { - return MSG_ERR_INVALID_PARAMETER; - } + msg_struct_s *msg_struct = (msg_struct_s *)msg_struct_handle; + msg_struct_s *mms_struct = (msg_struct_s *)mms_struct_handle; + + MSG_TYPE_CHECK(msg_struct->type, MSG_STRUCT_MESSAGE_INFO); + MSG_TYPE_CHECK(mms_struct->type, MSG_STRUCT_MMS); - if (msg_struct->type != MSG_STRUCT_MESSAGE_INFO || mms_struct->type != MSG_STRUCT_MMS) { + if (msg_struct->data == NULL || mms_struct->data == NULL) { return MSG_ERR_INVALID_PARAMETER; } MSG_MESSAGE_HIDDEN_S *msg_data = (MSG_MESSAGE_HIDDEN_S *)msg_struct->data; MMS_DATA_S *mms_data = MsgMmsCreate(); + if (mms_data == NULL) + return MSG_ERR_MEMORY_ERROR; convert_from_hidden_mmsdata(mms_struct, mms_data); diff --git a/mapi/msg_mms.cpp b/mapi/msg_mms.cpp index 78815ce..1ffe9ab 100755 --- a/mapi/msg_mms.cpp +++ b/mapi/msg_mms.cpp @@ -16,6 +16,7 @@ #include <stdio.h> #include <string.h> +#include <sys/stat.h> #include <MsgHandle.h> #include <MsgException.h> @@ -23,6 +24,7 @@ #include "MsgMmsTypes.h" #include "MsgMmsMessage.h" #include "MsgDebug.h" +#include "MsgUtilFile.h" #include "msg.h" #include "msg_private.h" @@ -69,6 +71,7 @@ static void __msg_mms_release_attach(msg_struct_s *attach_struct); static void __msg_mms_release_transition(msg_struct_s *transition_struct); static void __msg_mms_release_meta(msg_struct_s *meta_struct); static void __msg_mms_release_multipart(msg_struct_s *multipart_struct); + /*================================================================================================== FUNCTION IMPLEMENTATION ==================================================================================================*/ @@ -720,7 +723,7 @@ int msg_mms_get_str_value(msg_struct_s *msg_struct, int field, char *value, int break; default : - err = MSG_ERR_INVALID_PARAMETER; + err = MSG_ERR_INVALID_PARAMETER; break; } return err; @@ -1053,9 +1056,9 @@ int msg_mms_set_str_value(msg_struct_s *msg_struct, int field, char *value, int else if (field == MSG_MMS_MEDIA_DRM_FULLPATH_STR) strncpy(mms_media_data->szDrm2FullPath, value, MSG_FILEPATH_LEN_MAX); else if (field == MSG_MMS_MEDIA_CONTENT_LOCATION_STR) - strncpy(mms_media_data->szContentLocation, value, MSG_FILEPATH_LEN_MAX); + strncpy(mms_media_data->szContentLocation, value, MSG_MSG_ID_LEN); else if (field == MSG_MMS_MEDIA_CONTENT_TYPE_STR) - strncpy(mms_media_data->szContentType, value, MSG_FILEPATH_LEN_MAX); + strncpy(mms_media_data->szContentType, value, MSG_MSG_ID_LEN); else err = MSG_ERR_INVALID_PARAMETER; } @@ -1090,7 +1093,7 @@ int msg_mms_set_str_value(msg_struct_s *msg_struct, int field, char *value, int } else if (field == MSG_MMS_ATTACH_DRM_FULLPATH_STR) { strncpy(mms_attach_data->szDrm2FullPath, value, MSG_FILEPATH_LEN_MAX); } else if (field == MSG_MMS_ATTACH_CONTENT_TYPE_STR) { - strncpy(mms_attach_data->szContentType, value, MSG_FILEPATH_LEN_MAX); + strncpy(mms_attach_data->szContentType, value, MSG_MSG_ID_LEN); } else { err = MSG_ERR_INVALID_PARAMETER; } @@ -1183,9 +1186,10 @@ int msg_mms_set_str_value(msg_struct_s *msg_struct, int field, char *value, int break; default : - err = MSG_ERR_INVALID_PARAMETER; + err = MSG_ERR_INVALID_PARAMETER; break; } + return err; } @@ -1266,44 +1270,6 @@ int msg_mms_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s return err; } -int msg_mms_set_list_handle(msg_struct_s *msg_struct, int field, msg_list_handle_t value) -{ - msg_error_t err = MSG_SUCCESS; - - switch(msg_struct->type) { - case MSG_STRUCT_MMS: - { - MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data; - if (field == MSG_MMS_PAGE_LIST_HND) - mms_data->pagelist = (GList *)value; - else if (field == MSG_MMS_REGION_LIST_HND) - mms_data->regionlist = (GList *)value; - else if (field == MSG_MMS_ATTACH_LIST_HND) - mms_data->attachlist = (GList *)value; - else if (field == MSG_MMS_TRANSITION_LIST_HND) - mms_data->transitionlist = (GList *)value; - else if (field == MSG_MMS_META_LIST_HND) - mms_data->metalist = (GList *)value; - else - err = MSG_ERR_INVALID_PARAMETER; - } - break; - case MSG_STRUCT_MMS_PAGE: - { - MMS_PAGE_S *mms_page_data = (MMS_PAGE_S *)msg_struct->data; - if (field == MSG_MMS_PAGE_MEDIA_LIST_HND) - mms_page_data->medialist = (GList *)value; - else - err = MSG_ERR_INVALID_PARAMETER; - } - break; - default : - err = MSG_ERR_INVALID_PARAMETER; - break; - } - return err; -} - int msg_mms_list_append(msg_struct_t msg_struct_handle, int field, msg_struct_t *item) { msg_error_t err = MSG_SUCCESS; @@ -1423,156 +1389,6 @@ void convert_from_media_data(const MMS_MEDIA_S *pSrc, msg_struct_s *pDest) } } -void convert_to_mmsdata(const msg_struct_s *pSrc, MMS_MESSAGE_DATA_S *pDest) -{ - int i, j; - MMS_DATA_HIDDEN_S *pSrcMms = (MMS_DATA_HIDDEN_S *)pSrc->data; - - pDest->pageCnt = g_list_length(pSrcMms->pagelist); - - for (i = 0; i < pDest->pageCnt; i++) { - MMS_PAGE_S *page = (MMS_PAGE_S *)calloc(1, sizeof(MMS_PAGE_S)); - MMS_PAGE_S *src_page = (MMS_PAGE_S *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->pagelist, i)); - page->mediaCnt = g_list_length(src_page->medialist); - - for (j = 0; j < page->mediaCnt; j++) - { - MMS_MEDIA_S *dst_media = (MMS_MEDIA_S *)calloc(1, sizeof(MMS_MEDIA_S)); - msg_struct_s *src_media_s = (msg_struct_s *)g_list_nth_data(src_page->medialist, j); - - convert_to_media_data(src_media_s, dst_media); - - page->medialist = g_list_append(page->medialist, dst_media); - } - - page->nDur = src_page->nDur; - page->nBegin = src_page->nBegin; - page->nEnd = src_page->nEnd; - page->nMin = src_page->nMin; - page->nMax = src_page->nMax; - page->nRepeat = src_page->nRepeat; - - pDest->pagelist = g_list_append(pDest->pagelist, page); - } - - pDest->regionCnt = g_list_length(pSrcMms->regionlist); - - for (i = 0; i < pDest->regionCnt; i++) { - MMS_SMIL_REGION *region = (MMS_SMIL_REGION *)calloc(1, sizeof(MMS_SMIL_REGION)); - MMS_SMIL_REGION *src_region = (MMS_SMIL_REGION *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->regionlist, i)); - memcpy(region, src_region, sizeof(MMS_SMIL_REGION)); - pDest->regionlist = g_list_append(pDest->regionlist, region); - } - - pDest->attachCnt = g_list_length(pSrcMms->attachlist); - - for (i = 0; i < pDest->attachCnt; i++) { - MMS_ATTACH_S *attach = (MMS_ATTACH_S *)calloc(1, sizeof(MMS_ATTACH_S)); - MMS_ATTACH_S *src_attach = (MMS_ATTACH_S *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->attachlist, i)); - memcpy(attach, src_attach, sizeof(MMS_ATTACH_S)); - pDest->attachlist = g_list_append(pDest->attachlist, attach); - } - - pDest->transitionCnt = g_list_length(pSrcMms->transitionlist); - - for (i = 0; i < pDest->transitionCnt; i++) { - MMS_SMIL_TRANSITION *transition = (MMS_SMIL_TRANSITION *)calloc(1, sizeof(MMS_SMIL_TRANSITION)); - MMS_SMIL_TRANSITION *src_transition = (MMS_SMIL_TRANSITION *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->transitionlist, i)); - memcpy(transition, src_transition, sizeof(MMS_SMIL_TRANSITION)); - pDest->transitionlist = g_list_append(pDest->transitionlist, transition); - } - - pDest->metaCnt = g_list_length(pSrcMms->metalist); - - for (i = 0; i < pDest->metaCnt; i++) { - MMS_SMIL_META *meta = (MMS_SMIL_META *)calloc(1, sizeof(MMS_SMIL_META)); - MMS_SMIL_META *src_meta = (MMS_SMIL_META *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->metalist, i)); - memcpy(meta, src_meta, sizeof(MMS_SMIL_META)); - pDest->metalist = g_list_append(pDest->metalist, meta); - } - - memcpy(&pDest->rootlayout, &pSrcMms->rootlayout, sizeof(MMS_SMIL_ROOTLAYOUT)); - - memcpy(&pDest->msgAppId, &pSrcMms->msgAppId, sizeof(MMS_APPID_INFO_S)); - memcpy(&pDest->header, &pSrcMms->header, sizeof(MMS_HEADER_DATA_S)); - memcpy(&pDest->smil, &pSrcMms->smil, sizeof(MMS_MULTIPART_DATA_S)); -} - -void convert_from_mmsdata(const MMS_MESSAGE_DATA_S *pSrc, msg_struct_s *pDest) -{ - int i, j; - MMS_DATA_HIDDEN_S *pDestMms = (MMS_DATA_HIDDEN_S *)pDest->data; - - for (i = 0; i < pSrc->pageCnt; i++) { - msg_struct_s *page_struct = msg_mms_create_struct(MSG_STRUCT_MMS_PAGE); - MMS_PAGE_S *page = (MMS_PAGE_S *)page_struct->data; - - MMS_PAGE_S *src_page = (MMS_PAGE_S *)g_list_nth_data(pSrc->pagelist, i); - page->mediaCnt = g_list_length(src_page->medialist); - - for (j = 0; j < page->mediaCnt; j++) - { - msg_struct_s *dst_media_s = msg_mms_create_struct(MSG_STRUCT_MMS_MEDIA); - - MMS_MEDIA_S *src_media = (MMS_MEDIA_S *)g_list_nth_data(src_page->medialist, j); - - convert_from_media_data(src_media, dst_media_s); - - page->medialist = g_list_append(page->medialist, dst_media_s); - } - - page->nDur = src_page->nDur; - page->nBegin = src_page->nBegin; - page->nEnd = src_page->nEnd; - page->nMin = src_page->nMin; - page->nMax = src_page->nMax; - page->nRepeat = src_page->nRepeat; - - pDestMms->pagelist = g_list_append(pDestMms->pagelist, page_struct); - } - - for (i = 0; i < pSrc->regionCnt; i++) { - msg_struct_s *region_struct = msg_mms_create_struct(MSG_STRUCT_MMS_REGION); - MMS_SMIL_REGION *region = (MMS_SMIL_REGION *)region_struct->data; - MMS_SMIL_REGION *src_region = (MMS_SMIL_REGION *)g_list_nth_data(pSrc->regionlist, i); - memcpy(region, src_region, sizeof(MMS_SMIL_REGION)); - pDestMms->regionlist = g_list_append(pDestMms->regionlist, region_struct); - } - - for (i = 0; i < pSrc->attachCnt; i++) { - msg_struct_s *attach_struct = msg_mms_create_struct(MSG_STRUCT_MMS_ATTACH); - MMS_ATTACH_S *attach = (MMS_ATTACH_S *)attach_struct->data; - MMS_ATTACH_S *src_attach = (MMS_ATTACH_S *)g_list_nth_data(pSrc->attachlist, i); - memcpy(attach, src_attach, sizeof(MMS_ATTACH_S)); - pDestMms->attachlist = g_list_append(pDestMms->attachlist, attach_struct); - } - - for (i = 0; i < pSrc->transitionCnt; i++) { - msg_struct_s *transition_struct = msg_mms_create_struct(MSG_STRUCT_MMS_TRANSITION); - MMS_SMIL_TRANSITION *transition = (MMS_SMIL_TRANSITION *)transition_struct->data; - MMS_SMIL_TRANSITION *src_transition = (MMS_SMIL_TRANSITION *)g_list_nth_data(pSrc->transitionlist, i); - memcpy(transition, src_transition, sizeof(MMS_SMIL_TRANSITION)); - pDestMms->transitionlist = g_list_append(pDestMms->transitionlist, transition_struct); - } - - for (i = 0; i < pSrc->metaCnt; i++) { - msg_struct_s *meta_struct = msg_mms_create_struct(MSG_STRUCT_MMS_META); - MMS_SMIL_META *meta = (MMS_SMIL_META *)meta_struct->data; - MMS_SMIL_META *src_meta = (MMS_SMIL_META *)g_list_nth_data(pSrc->metalist, i); - - memcpy(meta, src_meta, sizeof(MMS_SMIL_META)); - pDestMms->metalist = g_list_append(pDestMms->metalist, meta_struct); - } - - memcpy(&pDestMms->rootlayout, &pSrc->rootlayout, sizeof(MMS_SMIL_ROOTLAYOUT)); - - memcpy(&pDestMms->msgAppId, &pSrc->msgAppId, sizeof(MMS_APPID_INFO_S)); - - memcpy(&pDestMms->header, &pSrc->header, sizeof(MMS_HEADER_DATA_S)); - memcpy(&pDestMms->smil, &pSrc->smil, sizeof(MMS_MULTIPART_DATA_S)); - -} - void convert_to_mmsdata2(MMS_DATA_HIDDEN_S *pSrcMms, MMS_MESSAGE_DATA_S *pDest) { int i, j; @@ -1583,26 +1399,30 @@ void convert_to_mmsdata2(MMS_DATA_HIDDEN_S *pSrcMms, MMS_MESSAGE_DATA_S *pDest) for (i = 0; i < pDest->pageCnt; i++) { MMS_PAGE_S *page = (MMS_PAGE_S *)calloc(1, sizeof(MMS_PAGE_S)); MMS_PAGE_S *src_page = (MMS_PAGE_S *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->pagelist, i)); - page->mediaCnt = g_list_length(src_page->medialist); + if (page) { + page->mediaCnt = g_list_length(src_page->medialist); - for (j = 0; j < page->mediaCnt; j++) - { - MMS_MEDIA_S *dst_media = (MMS_MEDIA_S *)calloc(1, sizeof(MMS_MEDIA_S)); - msg_struct_s *src_media_s = (msg_struct_s *)g_list_nth_data(src_page->medialist, j); + for (j = 0; j < page->mediaCnt; j++) + { + MMS_MEDIA_S *dst_media = (MMS_MEDIA_S *)calloc(1, sizeof(MMS_MEDIA_S)); + msg_struct_s *src_media_s = (msg_struct_s *)g_list_nth_data(src_page->medialist, j); - convert_to_media_data(src_media_s, dst_media); + if (dst_media) { + convert_to_media_data(src_media_s, dst_media); - page->medialist = g_list_append(page->medialist, dst_media); - } + page->medialist = g_list_append(page->medialist, dst_media); + } + } - page->nDur = src_page->nDur; - page->nBegin = src_page->nBegin; - page->nEnd = src_page->nEnd; - page->nMin = src_page->nMin; - page->nMax = src_page->nMax; - page->nRepeat = src_page->nRepeat; + page->nDur = src_page->nDur; + page->nBegin = src_page->nBegin; + page->nEnd = src_page->nEnd; + page->nMin = src_page->nMin; + page->nMax = src_page->nMax; + page->nRepeat = src_page->nRepeat; - pDest->pagelist = g_list_append(pDest->pagelist, page); + pDest->pagelist = g_list_append(pDest->pagelist, page); + } } pDest->regionCnt = g_list_length(pSrcMms->regionlist); @@ -1610,8 +1430,10 @@ void convert_to_mmsdata2(MMS_DATA_HIDDEN_S *pSrcMms, MMS_MESSAGE_DATA_S *pDest) for (i = 0; i < pDest->regionCnt; i++) { MMS_SMIL_REGION *region = (MMS_SMIL_REGION *)calloc(1, sizeof(MMS_SMIL_REGION)); MMS_SMIL_REGION *src_region = (MMS_SMIL_REGION *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->regionlist, i)); - memcpy(region, src_region, sizeof(MMS_SMIL_REGION)); - pDest->regionlist = g_list_append(pDest->regionlist, region); + if (region) { + memcpy(region, src_region, sizeof(MMS_SMIL_REGION)); + pDest->regionlist = g_list_append(pDest->regionlist, region); + } } pDest->attachCnt = g_list_length(pSrcMms->attachlist); @@ -1619,8 +1441,10 @@ void convert_to_mmsdata2(MMS_DATA_HIDDEN_S *pSrcMms, MMS_MESSAGE_DATA_S *pDest) for (i = 0; i < pDest->attachCnt; i++) { MMS_ATTACH_S *attach = (MMS_ATTACH_S *)calloc(1, sizeof(MMS_ATTACH_S)); MMS_ATTACH_S *src_attach = (MMS_ATTACH_S *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->attachlist, i)); - memcpy(attach, src_attach, sizeof(MMS_ATTACH_S)); - pDest->attachlist = g_list_append(pDest->attachlist, attach); + if (attach) { + memcpy(attach, src_attach, sizeof(MMS_ATTACH_S)); + pDest->attachlist = g_list_append(pDest->attachlist, attach); + } } pDest->transitionCnt = g_list_length(pSrcMms->transitionlist); @@ -1628,8 +1452,10 @@ void convert_to_mmsdata2(MMS_DATA_HIDDEN_S *pSrcMms, MMS_MESSAGE_DATA_S *pDest) for (i = 0; i < pDest->transitionCnt; i++) { MMS_SMIL_TRANSITION *transition = (MMS_SMIL_TRANSITION *)calloc(1, sizeof(MMS_SMIL_TRANSITION)); MMS_SMIL_TRANSITION *src_transition = (MMS_SMIL_TRANSITION *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->transitionlist, i)); - memcpy(transition, src_transition, sizeof(MMS_SMIL_TRANSITION)); - pDest->transitionlist = g_list_append(pDest->transitionlist, transition); + if (transition) { + memcpy(transition, src_transition, sizeof(MMS_SMIL_TRANSITION)); + pDest->transitionlist = g_list_append(pDest->transitionlist, transition); + } } pDest->metaCnt = g_list_length(pSrcMms->metalist); @@ -1637,8 +1463,10 @@ void convert_to_mmsdata2(MMS_DATA_HIDDEN_S *pSrcMms, MMS_MESSAGE_DATA_S *pDest) for (i = 0; i < pDest->metaCnt; i++) { MMS_SMIL_META *meta = (MMS_SMIL_META *)calloc(1, sizeof(MMS_SMIL_META)); MMS_SMIL_META *src_meta = (MMS_SMIL_META *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->metalist, i)); - memcpy(meta, src_meta, sizeof(MMS_SMIL_META)); - pDest->metalist = g_list_append(pDest->metalist, meta); + if (meta) { + memcpy(meta, src_meta, sizeof(MMS_SMIL_META)); + pDest->metalist = g_list_append(pDest->metalist, meta); + } } memcpy(&pDest->rootlayout, &pSrcMms->rootlayout, sizeof(MMS_SMIL_ROOTLAYOUT)); @@ -1771,15 +1599,15 @@ int msg_multipart_get_int_value(void *data, int field, int *value) MMS_MULTIPART_DATA_S *msg_data = (MMS_MULTIPART_DATA_S *)data; switch (field) { - case MSG_MMS_MULTIPART_TCS_LEVEL_INT: - *value = msg_data->tcs_bc_level; - break; - case MSG_MMS_MULTIPART_MALWARE_ALLOW_INT: - *value = msg_data->malware_allow; - break; - default : - ret = MSG_ERR_INVALID_PARAMETER; - break; + case MSG_MMS_MULTIPART_TCS_LEVEL_INT: + *value = msg_data->tcs_bc_level; + break; + case MSG_MMS_MULTIPART_MALWARE_ALLOW_INT: + *value = msg_data->malware_allow; + break; + default : + ret = MSG_ERR_INVALID_PARAMETER; + break; } return ret; @@ -1806,6 +1634,7 @@ int msg_multipart_set_str_value(void *data, int field, char *value, int size) strncpy(msg_data->szFilePath, value, MSG_FILEPATH_LEN_MAX); break; case MSG_MMS_MULTIPART_THUMBNAIL_FILEPATH_STR: + strncpy(msg_data->szThumbFilePath, value, MSG_FILEPATH_LEN_MAX); break; case MSG_MMS_MULTIPART_CONTENT_ID_STR: strncpy(msg_data->szContentID, value, MSG_MSG_ID_LEN); @@ -1824,13 +1653,16 @@ void convert_to_hidden_mmsdata(MMS_DATA_S *pSrc, msg_struct_s *pDest) { MMS_DATA_HIDDEN_S *pDestMms = (MMS_DATA_HIDDEN_S *)pDest->data; - MMS_MESSAGE_DATA_S MmsMessageData = {0}; + MMS_MESSAGE_DATA_S *MmsMessageData = NULL; + unique_ptr<MMS_MESSAGE_DATA_S*, void(*)(MMS_MESSAGE_DATA_S**)> buf(&MmsMessageData, unique_ptr_deleter); + MmsMessageData = (MMS_MESSAGE_DATA_S *)new char[sizeof(MMS_MESSAGE_DATA_S)]; + memset(MmsMessageData, 0x00, sizeof(MMS_MESSAGE_DATA_S)); - MsgMmsConvertMmsDataToMmsMessageData(pSrc, &MmsMessageData); + MsgMmsConvertMmsDataToMmsMessageData(pSrc, MmsMessageData); - convert_from_mmsdata2(&MmsMessageData, pDestMms); + convert_from_mmsdata2(MmsMessageData, pDestMms); - MsgMmsReleaseMmsLists(&MmsMessageData); + MsgMmsReleaseMmsLists(MmsMessageData); if (pSrc->header) { memcpy(&pDestMms->header, pSrc->header, sizeof(MMS_HEADER_DATA_S)); @@ -1870,13 +1702,16 @@ void convert_from_hidden_mmsdata(msg_struct_s *pSrc, MMS_DATA_S *pDest) MMS_DATA_HIDDEN_S *pSrcMms = (MMS_DATA_HIDDEN_S *)pSrc->data; - MMS_MESSAGE_DATA_S MmsMessageData = {0}; + MMS_MESSAGE_DATA_S *MmsMessageData = NULL; + unique_ptr<MMS_MESSAGE_DATA_S*, void(*)(MMS_MESSAGE_DATA_S**)> buf(&MmsMessageData, unique_ptr_deleter); + MmsMessageData = (MMS_MESSAGE_DATA_S *)new char[sizeof(MMS_MESSAGE_DATA_S)]; + memset(MmsMessageData, 0x00, sizeof(MMS_MESSAGE_DATA_S)); - convert_to_mmsdata2(pSrcMms, &MmsMessageData); + convert_to_mmsdata2(pSrcMms, MmsMessageData); - MsgMmsConvertMmsMessageDataToMmsData(&MmsMessageData, pDest); + MsgMmsConvertMmsMessageDataToMmsData(MmsMessageData, pDest); - MsgMmsReleaseMmsLists(&MmsMessageData); + MsgMmsReleaseMmsLists(MmsMessageData); } void __msg_mms_data_struct_init(MMS_DATA_HIDDEN_S *pMmsDataHidden) diff --git a/mapi/msg_setting.cpp b/mapi/msg_setting.cpp index 4538163..f960133 100755 --- a/mapi/msg_setting.cpp +++ b/mapi/msg_setting.cpp @@ -33,37 +33,37 @@ int msg_setting_get_int_value(msg_struct_s *msg_struct, int field, int *value) switch (msg_struct->type) { case MSG_STRUCT_SETTING_SMSC_OPT : - *value = msg_get_smsc_opt_int(msg_struct->data, field); + err = msg_get_smsc_opt_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_SMSC_INFO : - *value = msg_get_smsc_info_int(msg_struct->data, field); + err = msg_get_smsc_info_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_CB_OPT : - *value = msg_get_cb_option_int(msg_struct->data, field); + err = msg_get_cb_option_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_CB_CHANNEL_INFO : - *value = msg_get_cb_channel_info_int(msg_struct->data, field); + err = msg_get_cb_channel_info_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_SMS_SEND_OPT : - *value = msg_get_sms_send_opt_int(msg_struct->data, field); + err = msg_get_sms_send_opt_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_MMS_SEND_OPT : - *value = msg_get_mms_send_opt_int(msg_struct->data, field); + err = msg_get_mms_send_opt_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_MMS_RECV_OPT : - *value = msg_get_mms_recv_opt_int(msg_struct->data, field); + err = msg_get_mms_recv_opt_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_PUSH_MSG_OPT : - *value = msg_get_push_msg_opt_int(msg_struct->data, field); + err = msg_get_push_msg_opt_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_GENERAL_OPT : - *value = msg_get_general_opt_int(msg_struct->data, field); + err = msg_get_general_opt_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_MSGSIZE_OPT : - *value = msg_get_msgsize_opt_int(msg_struct->data, field); + err = msg_get_msgsize_opt_int(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_VOICE_MSG_OPT : - *value = msg_get_voice_msg_opt_int(msg_struct->data, field); + err = msg_get_voice_msg_opt_int(msg_struct->data, field, value); break; default : err = MSG_ERR_INVALID_PARAMETER; @@ -76,30 +76,20 @@ int msg_setting_get_int_value(msg_struct_s *msg_struct, int field, int *value) int msg_setting_get_str_value(msg_struct_s *msg_struct, int field, char *src, int size) { int err = MSG_SUCCESS; - char *ret_str = NULL; switch (msg_struct->type) { case MSG_STRUCT_SETTING_SMSC_INFO : - ret_str = msg_get_smsc_info_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_get_smsc_info_str(msg_struct->data, field, src, size); break; case MSG_STRUCT_SETTING_CB_CHANNEL_INFO : - ret_str = msg_get_cb_channel_info_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_get_cb_channel_info_str(msg_struct->data, field, src, size); break; case MSG_STRUCT_SETTING_VOICE_MSG_OPT : - ret_str = msg_get_voice_msg_opt_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_get_voice_msg_opt_str(msg_struct->data, field, src, size); + break; + case MSG_STRUCT_SETTING_GENERAL_OPT : + err = msg_get_general_opt_str(msg_struct->data, field, src, size); break; default : err = MSG_ERR_INVALID_PARAMETER; @@ -115,25 +105,25 @@ int msg_setting_get_bool_value(msg_struct_s *msg_struct, int field, bool *value) switch (msg_struct->type) { case MSG_STRUCT_SETTING_CB_OPT : - *value = msg_get_cb_option_bool(msg_struct->data, field); + err = msg_get_cb_option_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_CB_CHANNEL_INFO : - *value = msg_get_cb_channel_info_bool(msg_struct->data, field); + err = msg_get_cb_channel_info_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_SMS_SEND_OPT : - *value = msg_get_sms_send_opt_bool(msg_struct->data, field); + err = msg_get_sms_send_opt_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_MMS_SEND_OPT : - *value = msg_get_mms_send_opt_bool(msg_struct->data, field); + err = msg_get_mms_send_opt_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_MMS_RECV_OPT : - *value = msg_get_mms_recv_opt_bool(msg_struct->data, field); + err = msg_get_mms_recv_opt_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_PUSH_MSG_OPT : - *value = msg_get_push_msg_opt_bool(msg_struct->data, field); + err = msg_get_push_msg_opt_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SETTING_GENERAL_OPT : - *value = msg_get_general_opt_bool(msg_struct->data, field); + err = msg_get_general_opt_bool(msg_struct->data, field, value); break; default : err = MSG_ERR_INVALID_PARAMETER; @@ -155,6 +145,7 @@ int msg_setting_get_list_handle(msg_struct_s *msg_struct, int field, void **valu err = msg_get_cb_option_list(msg_struct->data, field, value); break; default : + err = MSG_ERR_INVALID_PARAMETER; break; } @@ -222,6 +213,9 @@ int msg_setting_set_str_value(msg_struct_s *msg_struct, int field, char *value, case MSG_STRUCT_SETTING_VOICE_MSG_OPT : err = msg_set_voice_msg_opt_str(msg_struct->data, field, value, size); break; + case MSG_STRUCT_SETTING_GENERAL_OPT : + err = msg_set_general_opt_str(msg_struct->data, field, value, size); + break; default : err = MSG_ERR_INVALID_PARAMETER; break; @@ -267,19 +261,19 @@ int msg_setting_set_bool_value(msg_struct_s *msg_struct, int field, bool value) EXPORT_API int msg_get_smsc_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -301,14 +295,14 @@ EXPORT_API int msg_get_smsc_opt(msg_handle_t handle, msg_struct_t msg_struct) EXPORT_API int msg_set_smsc_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -348,13 +342,14 @@ int msg_get_smsc_opt_list(void *smsc_opt, int field, void **value) *value = (void *)smsc_opt_data->smsc_list; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } return ret; } -int msg_get_smsc_opt_int(void *smsc_opt, int field) +int msg_get_smsc_opt_int(void *smsc_opt, int field, int *value) { if (!smsc_opt) return MSG_ERR_NULL_POINTER; @@ -366,13 +361,14 @@ int msg_get_smsc_opt_int(void *smsc_opt, int field) switch (field) { case MSG_SMSC_SELECTED_ID_INT : - ret = smsc_opt_data->selected; + *value = smsc_opt_data->selected; break; case MSG_SMSC_LIST_SIM_INDEX_INT : - ret = smsc_opt_data->simIndex; + *value = smsc_opt_data->simIndex; break; default : - return MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; + break; } return ret; @@ -406,7 +402,7 @@ int msg_set_smsc_opt_int(void *smsc_opt, int field, int value) return ret; } -int msg_get_smsc_info_int(void *smsc_info, int field) +int msg_get_smsc_info_int(void *smsc_info, int field, int *value) { if (!smsc_info) return MSG_ERR_NULL_POINTER; @@ -418,19 +414,20 @@ int msg_get_smsc_info_int(void *smsc_info, int field) switch (field) { case MSG_SMSC_ADDR_TON_INT : - ret = smsc_data->smscAddr.ton; + *value = smsc_data->smscAddr.ton; break; case MSG_SMSC_ADDR_NPI_INT : - ret = smsc_data->smscAddr.npi; + *value = smsc_data->smscAddr.npi; break; case MSG_SMSC_PID_INT : - ret = smsc_data->pid; + *value = smsc_data->pid; break; case MSG_SMSC_VAL_PERIOD_INT : - ret = smsc_data->valPeriod; + *value = smsc_data->valPeriod; break; default : - return MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; + break; } return ret; @@ -467,28 +464,26 @@ int msg_set_smsc_info_int(void *smsc_info, int field, int value) return err; } -char *msg_get_smsc_info_str(void *smsc_info, int field) +int msg_get_smsc_info_str(void *smsc_info, int field, char *value, int size) { if (!smsc_info) - return NULL; - - char *ret_str = NULL; + return MSG_ERR_NULL_POINTER; MSG_SMSC_DATA_S *smsc_data = (MSG_SMSC_DATA_S *)smsc_info; switch (field) { case MSG_SMSC_ADDR_STR : - ret_str = smsc_data->smscAddr.address; + strncpy(value, smsc_data->smscAddr.address, size); break; case MSG_SMSC_NAME_STR : - ret_str = smsc_data->name; + strncpy(value, smsc_data->name, size); break; default : - return NULL; + return MSG_ERR_INVALID_PARAMETER; } - return ret_str; + return MSG_SUCCESS; } int msg_set_smsc_info_str(void *smsc_info, int field, char *val, int size) @@ -520,19 +515,19 @@ int msg_set_smsc_info_str(void *smsc_info, int field, char *val, int size) EXPORT_API int msg_get_cb_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -554,14 +549,14 @@ EXPORT_API int msg_get_cb_opt(msg_handle_t handle, msg_struct_t msg_struct) EXPORT_API int msg_set_cb_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -586,7 +581,7 @@ EXPORT_API int msg_set_cb_opt(msg_handle_t handle, msg_struct_t msg_struct) return err; } -int msg_get_cb_option_int(void *cb_opt, int field) +int msg_get_cb_option_int(void *cb_opt, int field, int *value) { if (!cb_opt) return MSG_ERR_NULL_POINTER; @@ -598,10 +593,10 @@ int msg_get_cb_option_int(void *cb_opt, int field) switch (field) { case MSG_CB_MAX_SIM_COUNT_INT : - ret = cb_opt_data->maxSimCnt; + *value = cb_opt_data->maxSimCnt; break; case MSG_CB_SIM_INDEX_INT : - ret = cb_opt_data->simIndex; + *value = cb_opt_data->simIndex; break; default : ret = MSG_ERR_INVALID_PARAMETER; @@ -637,51 +632,52 @@ int msg_set_cb_option_int(void *cb_opt, int field, int value) } -bool msg_get_cb_option_bool(void *cb_opt, int field) +int msg_get_cb_option_bool(void *cb_opt, int field, bool *value) { if (!cb_opt) - return false; + return MSG_ERR_NULL_POINTER; - bool ret = false; + int ret = MSG_SUCCESS; MSG_CBMSG_OPT_HIDDEN_S *cb_opt_data = (MSG_CBMSG_OPT_HIDDEN_S *)cb_opt; switch (field) { case MSG_CB_RECEIVE_BOOL : - ret = cb_opt_data->bReceive; + *value = cb_opt_data->bReceive; break; case MSG_CB_LANGUAGE_TYPE_ALL_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_ALL]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_ALL]; break; case MSG_CB_LANGUAGE_TYPE_ENG_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_ENG]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_ENG]; break; case MSG_CB_LANGUAGE_TYPE_GER_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_GER]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_GER]; break; case MSG_CB_LANGUAGE_TYPE_FRE_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_FRE]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_FRE]; break; case MSG_CB_LANGUAGE_TYPE_ITA_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_ITA]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_ITA]; break; case MSG_CB_LANGUAGE_TYPE_NED_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_NED]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_NED]; break; case MSG_CB_LANGUAGE_TYPE_SPA_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_SPA]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_SPA]; break; case MSG_CB_LANGUAGE_TYPE_POR_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_POR]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_POR]; break; case MSG_CB_LANGUAGE_TYPE_SWE_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_SWE]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_SWE]; break; case MSG_CB_LANGUAGE_TYPE_TUR_BOOL : - ret = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_TUR]; + *value = cb_opt_data->bLanguage[MSG_CBLANG_TYPE_TUR]; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -755,30 +751,32 @@ int msg_get_cb_option_list(void *cb_opt, int field, void **value) *value = (void *)cb_opt_data->channelData; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } return ret; } -int msg_get_cb_channel_info_int(void *cb_ch_info, int field) +int msg_get_cb_channel_info_int(void *cb_ch_info, int field, int *value) { if (!cb_ch_info) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_CB_CHANNEL_INFO_S *cb_ch_data = (MSG_CB_CHANNEL_INFO_S *)cb_ch_info; switch (field) { case MSG_CB_CHANNEL_ID_FROM_INT : - ret = cb_ch_data->from; + *value = cb_ch_data->from; break; case MSG_CB_CHANNEL_ID_TO_INT : - ret = cb_ch_data->to; + *value = cb_ch_data->to; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -810,21 +808,22 @@ int msg_set_cb_channel_info_int(void *cb_ch_info, int field, int value) return ret; } -bool msg_get_cb_channel_info_bool(void *cb_ch_info, int field) +int msg_get_cb_channel_info_bool(void *cb_ch_info, int field, bool *value) { if (!cb_ch_info) - return false; + return MSG_ERR_NULL_POINTER; - bool ret = false; + int ret = MSG_SUCCESS; MSG_CB_CHANNEL_INFO_S *cb_ch_data = (MSG_CB_CHANNEL_INFO_S *)cb_ch_info; switch (field) { case MSG_CB_CHANNEL_ACTIVATE_BOOL : - ret = cb_ch_data->bActivate; + *value = cb_ch_data->bActivate; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -853,25 +852,23 @@ int msg_set_cb_channel_info_bool(void *cb_ch_info, int field, bool value) return ret; } -char *msg_get_cb_channel_info_str(void *cb_ch_info, int field) +int msg_get_cb_channel_info_str(void *cb_ch_info, int field, char *value, int size) { if (!cb_ch_info) - return NULL; - - char *ret_str = NULL; + return MSG_ERR_NULL_POINTER; MSG_CB_CHANNEL_INFO_S *cb_ch_data = (MSG_CB_CHANNEL_INFO_S *)cb_ch_info; switch (field) { case MSG_CB_CHANNEL_NAME_STR : - ret_str = cb_ch_data->name; + strncpy(value, cb_ch_data->name, size); break; default : - break; + return MSG_ERR_INVALID_PARAMETER; } - return ret_str; + return MSG_SUCCESS; } int msg_set_cb_channel_info_str(void *cb_ch_info, int field, char *val, int size) @@ -899,19 +896,19 @@ int msg_set_cb_channel_info_str(void *cb_ch_info, int field, char *val, int size EXPORT_API int msg_get_sms_send_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -933,14 +930,14 @@ EXPORT_API int msg_get_sms_send_opt(msg_handle_t handle, msg_struct_t msg_struct EXPORT_API int msg_set_sms_send_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -965,27 +962,28 @@ EXPORT_API int msg_set_sms_send_opt(msg_handle_t handle, msg_struct_t msg_struct return err; } -int msg_get_sms_send_opt_int(void *sms_send_opt, int field) +int msg_get_sms_send_opt_int(void *sms_send_opt, int field, int *value) { if (!sms_send_opt) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_SMS_SENDOPT_S *send_opt = (MSG_SMS_SENDOPT_S *)sms_send_opt; switch (field) { case MSG_SMS_SENDOPT_ENCODE_TYPE_INT : - ret = send_opt->dcs; + *value = send_opt->dcs; break; case MSG_SMS_SENDOPT_NETWORK_MODE_INT : - ret = send_opt->netMode; + *value = send_opt->netMode; break; case MSG_SMS_SENDOPT_SAVE_STORAGE_INT : - ret = send_opt->saveStorage; + *value = send_opt->saveStorage; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1020,24 +1018,25 @@ int msg_set_sms_send_opt_int(void *sms_send_opt, int field, int value) return ret; } -bool msg_get_sms_send_opt_bool(void *sms_send_opt, int field) +int msg_get_sms_send_opt_bool(void *sms_send_opt, int field, bool *value) { if (!sms_send_opt) - return false; + return MSG_ERR_NULL_POINTER; - bool ret = false; + int ret = MSG_SUCCESS; MSG_SMS_SENDOPT_S *send_opt = (MSG_SMS_SENDOPT_S *)sms_send_opt; switch (field) { case MSG_SMS_SENDOPT_REPLY_PATH_BOOL : - ret = send_opt->bReplyPath; + *value = send_opt->bReplyPath; break; case MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL : - ret = send_opt->bDeliveryReport; + *value = send_opt->bDeliveryReport; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1073,17 +1072,17 @@ EXPORT_API int msg_get_mms_send_opt(msg_handle_t handle, msg_struct_t msg_struct { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1107,12 +1106,12 @@ EXPORT_API int msg_set_mms_send_opt(msg_handle_t handle, msg_struct_t msg_struct { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1138,45 +1137,46 @@ EXPORT_API int msg_set_mms_send_opt(msg_handle_t handle, msg_struct_t msg_struct } -int msg_get_mms_send_opt_int(void *mms_send_opt, int field) +int msg_get_mms_send_opt_int(void *mms_send_opt, int field, int *value) { if (!mms_send_opt) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_MMS_SENDOPT_S *send_opt = (MSG_MMS_SENDOPT_S *)mms_send_opt; switch (field) { case MSG_MMS_SENDOPT_CLASS_TYPE_INT : - ret = send_opt->msgClass; + *value = send_opt->msgClass; break; case MSG_MMS_SENDOPT_PRIORITY_TYPE_INT : - ret = send_opt->priority; + *value = send_opt->priority; break; case MSG_MMS_SENDOPT_EXPIRY_TIME_INT : - ret = send_opt->expiryTime; + *value = send_opt->expiryTime; break; case MSG_MMS_SENDOPT_DELIVERY_TIME_INT : - ret = send_opt->deliveryTime; + *value = send_opt->deliveryTime; break; case MSG_MMS_SENDOPT_CUSTOM_DELIVERY_TIME_INT : - ret = send_opt->customDeliveryTime; + *value = send_opt->customDeliveryTime; break; case MSG_MMS_SENDOPT_REPLY_CHARGING_INT : - ret = send_opt->replyCharging; + *value = send_opt->replyCharging; break; case MSG_MMS_SENDOPT_REPLY_CHARGING_DEADLINE_INT : - ret = send_opt->replyChargingDeadline; + *value = send_opt->replyChargingDeadline; break; case MSG_MMS_SENDOPT_REPLY_CHARGING_SIZE_INT : - ret = send_opt->replyChargingSize; + *value = send_opt->replyChargingSize; break; case MSG_MMS_SENDOPT_CREATION_MODE_INT : - ret = send_opt->creationMode; + *value = send_opt->creationMode; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1229,36 +1229,37 @@ int msg_set_mms_send_opt_int(void *mms_send_opt, int field, int value) return ret; } -bool msg_get_mms_send_opt_bool(void *mms_send_opt, int field) +int msg_get_mms_send_opt_bool(void *mms_send_opt, int field, bool *value) { if (!mms_send_opt) - return false; + return MSG_ERR_NULL_POINTER; - bool ret = false; + int ret = MSG_SUCCESS; MSG_MMS_SENDOPT_S *send_opt = (MSG_MMS_SENDOPT_S *)mms_send_opt; switch (field) { case MSG_MMS_SENDOPT_SENDER_VISIBILITY_BOOL : - ret = send_opt->bSenderVisibility; + *value = send_opt->bSenderVisibility; break; case MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL : - ret = send_opt->bDeliveryReport; + *value = send_opt->bDeliveryReport; break; case MSG_MMS_SENDOPT_READ_REPLY_BOOL : - ret = send_opt->bReadReply; + *value = send_opt->bReadReply; break; case MSG_MMS_SENDOPT_KEEP_COPY_BOOL : - ret = send_opt->bKeepCopy; + *value = send_opt->bKeepCopy; break; case MSG_MMS_SENDOPT_BODY_REPLYING_BOOL : - ret = send_opt->bBodyReplying; + *value = send_opt->bBodyReplying; break; case MSG_MMS_SENDOPT_HIDE_RECIPIENTS_BOOL : - ret = send_opt->bHideRecipients; + *value = send_opt->bHideRecipients; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1306,17 +1307,17 @@ EXPORT_API int msg_get_mms_recv_opt(msg_handle_t handle, msg_struct_t msg_struct { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1340,12 +1341,12 @@ EXPORT_API int msg_set_mms_recv_opt(msg_handle_t handle, msg_struct_t msg_struct { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1370,24 +1371,25 @@ EXPORT_API int msg_set_mms_recv_opt(msg_handle_t handle, msg_struct_t msg_struct return err; } -int msg_get_mms_recv_opt_int(void *mms_recv_opt, int field) +int msg_get_mms_recv_opt_int(void *mms_recv_opt, int field, int *value) { if (!mms_recv_opt) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_MMS_RECVOPT_S *recv_opt = (MSG_MMS_RECVOPT_S *)mms_recv_opt; switch (field) { case MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT : - ret = recv_opt->homeNetwork; + *value = recv_opt->homeNetwork; break; case MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT : - ret = recv_opt->abroadNetwok; + *value = recv_opt->abroadNetwok; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1419,30 +1421,31 @@ int msg_set_mms_recv_opt_int(void *mms_recv_opt, int field, int value) return ret; } -bool msg_get_mms_recv_opt_bool(void *mms_recv_opt, int field) +int msg_get_mms_recv_opt_bool(void *mms_recv_opt, int field, bool *value) { if (!mms_recv_opt) - return false; + return MSG_ERR_NULL_POINTER; - bool ret = false; + int ret = MSG_SUCCESS; MSG_MMS_RECVOPT_S *recv_opt = (MSG_MMS_RECVOPT_S *)mms_recv_opt; switch (field) { case MSG_MMS_RECVOPT_READ_REPORT_BOOL : - ret = recv_opt->readReceipt; + *value = recv_opt->readReceipt; break; case MSG_MMS_RECVOPT_DELIVERY_REPORT_BOOL : - ret = recv_opt->bDeliveryReceipt; + *value = recv_opt->bDeliveryReceipt; break; case MSG_MMS_RECVOPT_REJECT_UNKNOWN_BOOL : - ret = recv_opt->bRejectUnknown; + *value = recv_opt->bRejectUnknown; break; case MSG_MMS_RECVOPT_REJECT_ADVERTISEMENT_BOOL : - ret = recv_opt->bRejectAdvertisement; + *value = recv_opt->bRejectAdvertisement; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1482,18 +1485,18 @@ int msg_set_mms_recv_opt_bool(void *mms_recv_opt, int field, bool value) EXPORT_API int msg_get_push_msg_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1515,13 +1518,13 @@ EXPORT_API int msg_get_push_msg_opt(msg_handle_t handle, msg_struct_t msg_struct EXPORT_API int msg_set_push_msg_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1546,21 +1549,22 @@ EXPORT_API int msg_set_push_msg_opt(msg_handle_t handle, msg_struct_t msg_struct return err; } -int msg_get_push_msg_opt_int(void *push_msg_opt, int field) +int msg_get_push_msg_opt_int(void *push_msg_opt, int field, int *value) { if (!push_msg_opt) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_PUSHMSG_OPT_S *push_opt = (MSG_PUSHMSG_OPT_S *)push_msg_opt; switch (field) { case MSG_PUSHMSG_SERVICE_TYPE_INT : - ret = push_opt->serviceType; + *value = push_opt->serviceType; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1589,21 +1593,22 @@ int msg_set_push_msg_opt_int(void *push_msg_opt, int field, int value) return ret; } -bool msg_get_push_msg_opt_bool(void *push_msg_opt, int field) +int msg_get_push_msg_opt_bool(void *push_msg_opt, int field, bool *value) { if (!push_msg_opt) - return false; + return MSG_ERR_NULL_POINTER; - bool ret = false; + int ret = MSG_SUCCESS; MSG_PUSHMSG_OPT_S *push_opt = (MSG_PUSHMSG_OPT_S *)push_msg_opt; switch (field) { case MSG_PUSHMSG_RECEIVE_BOOL : - ret = push_opt->bReceive; + *value = push_opt->bReceive; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1634,18 +1639,18 @@ int msg_set_push_msg_opt_bool(void *push_msg_opt, int field, bool value) EXPORT_API int msg_get_voice_msg_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1667,13 +1672,13 @@ EXPORT_API int msg_get_voice_msg_opt(msg_handle_t handle, msg_struct_t msg_struc EXPORT_API int msg_set_voice_msg_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1698,24 +1703,25 @@ EXPORT_API int msg_set_voice_msg_opt(msg_handle_t handle, msg_struct_t msg_struc return err; } -int msg_get_voice_msg_opt_int(void *voice_msg_opt, int field) +int msg_get_voice_msg_opt_int(void *voice_msg_opt, int field, int *value) { if (!voice_msg_opt) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_VOICEMAIL_OPT_S *voice_opt = (MSG_VOICEMAIL_OPT_S *)voice_msg_opt; switch (field) { case MSG_VOICEMSG_SIM_INDEX_INT : - ret = voice_opt->simIndex; + *value = voice_opt->simIndex; break; case MSG_VOICEMSG_VOICE_COUNT_INT : - ret = voice_opt->voiceCnt; + *value = voice_opt->voiceCnt; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1744,28 +1750,26 @@ int msg_set_voice_msg_opt_int(void *voice_msg_opt, int field, int value) return ret; } -char *msg_get_voice_msg_opt_str(void *voice_msg_opt, int field) +int msg_get_voice_msg_opt_str(void *voice_msg_opt, int field, char *value, int size) { if (!voice_msg_opt) - return NULL; - - char *ret_str = NULL; + return MSG_ERR_NULL_POINTER; MSG_VOICEMAIL_OPT_S *voice_opt = (MSG_VOICEMAIL_OPT_S *)voice_msg_opt; switch (field) { case MSG_VOICEMSG_ADDRESS_STR : - ret_str = voice_opt->mailNumber; + strncpy(value, voice_opt->mailNumber, size); break; case MSG_VOICEMSG_ALPHA_ID_STR : - ret_str = voice_opt->alpahId; + strncpy(value, voice_opt->alpahId, size); break; default : - break; + return MSG_ERR_INVALID_PARAMETER; } - return ret_str; + return MSG_SUCCESS; } int msg_set_voice_msg_opt_str(void *voice_msg_opt, int field, char *val, int size) @@ -1793,18 +1797,18 @@ int msg_set_voice_msg_opt_str(void *voice_msg_opt, int field, char *val, int siz EXPORT_API int msg_get_general_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1826,13 +1830,13 @@ EXPORT_API int msg_get_general_opt(msg_handle_t handle, msg_struct_t msg_struct) EXPORT_API int msg_set_general_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1857,30 +1861,31 @@ EXPORT_API int msg_set_general_opt(msg_handle_t handle, msg_struct_t msg_struct) return err; } -int msg_get_general_opt_int(void *general_opt, int field) +int msg_get_general_opt_int(void *general_opt, int field, int *value) { if (!general_opt) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_GENERAL_OPT_S *opt = (MSG_GENERAL_OPT_S *)general_opt; switch (field) { case MSG_GENERAL_ALERT_TONE_INT : - ret = opt->alertTone; + *value = opt->alertTone; break; case MSG_GENERAL_SMS_LIMIT_CNT_INT : - ret = opt->smsLimitCnt; + *value = opt->smsLimitCnt; break; case MSG_GENERAL_MMS_LIMIT_CNT_INT : - ret = opt->mmsLimitCnt; + *value = opt->mmsLimitCnt; break; case MSG_GENERAL_RINGTONE_TYPE_INT : - ret = opt->ringtoneType; + *value = opt->ringtoneType; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1918,36 +1923,37 @@ int msg_set_general_opt_int(void *general_opt, int field, int value) return ret; } -bool msg_get_general_opt_bool(void *general_opt, int field) +int msg_get_general_opt_bool(void *general_opt, int field, bool *value) { if (!general_opt) - return false; + return MSG_ERR_NULL_POINTER; - int ret = false; + int ret = MSG_SUCCESS; MSG_GENERAL_OPT_S *opt = (MSG_GENERAL_OPT_S *)general_opt; switch (field) { case MSG_GENERAL_KEEP_COPY_BOOL : - ret = opt->bKeepCopy; + *value = opt->bKeepCopy; break; case MSG_GENERAL_AUTO_ERASE_BOOL : - ret = opt->bAutoErase; + *value = opt->bAutoErase; break; case MSG_GENERAL_BLOCK_UNKNOWN_NUMBER_BOOL : - ret = opt->bBlockUnknownMsg; + *value = opt->bBlockUnknownMsg; break; case MSG_GENERAL_MSG_NOTIFICATION_BOOL : - ret = opt->bNotification; + *value = opt->bNotification; break; case MSG_GENERAL_MSG_VIBRATION_BOOL : - ret = opt->bVibration; + *value = opt->bVibration; break; case MSG_GENERAL_MSG_PREVIEW_BOOL : - ret = opt->bPreview; + *value = opt->bPreview; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } @@ -1991,25 +1997,23 @@ int msg_set_general_opt_bool(void *general_opt, int field, bool value) return ret; } -char *msg_get_general_opt_str(void *general_opt, int field) +int msg_get_general_opt_str(void *general_opt, int field, char *value, int size) { if (!general_opt) - return NULL; - - char *ret_str = NULL; + return MSG_ERR_NULL_POINTER; MSG_GENERAL_OPT_S *opt = (MSG_GENERAL_OPT_S *)general_opt; switch (field) { case MSG_GENERAL_RINGTONE_PATH_STR : - ret_str = opt->ringtonePath; + strncpy(value, opt->ringtonePath, size); break; default : - break; + return MSG_ERR_INVALID_PARAMETER; } - return ret_str; + return MSG_SUCCESS; } int msg_set_general_opt_str(void *general_opt, int field, char *val, int size) @@ -2038,18 +2042,18 @@ int msg_set_general_opt_str(void *general_opt, int field, char *val, int size) EXPORT_API int msg_get_msgsize_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_struct == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -2071,13 +2075,13 @@ EXPORT_API int msg_get_msgsize_opt(msg_handle_t handle, msg_struct_t msg_struct) EXPORT_API int msg_set_msgsize_opt(msg_handle_t handle, msg_struct_t msg_struct) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -2102,21 +2106,22 @@ EXPORT_API int msg_set_msgsize_opt(msg_handle_t handle, msg_struct_t msg_struct) return err; } -int msg_get_msgsize_opt_int(void *size_opt, int field) +int msg_get_msgsize_opt_int(void *size_opt, int field, int *value) { if (!size_opt) return MSG_ERR_NULL_POINTER; - int ret = MSG_ERR_INVALID_PARAMETER; + int ret = MSG_SUCCESS; MSG_MSGSIZE_OPT_S *msg_opt = (MSG_MSGSIZE_OPT_S *)size_opt; switch (field) { case MSG_MESSAGE_SIZE_INT : - ret = msg_opt->nMsgSize; + *value = msg_opt->nMsgSize; break; default : + ret = MSG_ERR_INVALID_PARAMETER; break; } diff --git a/mapi/msg_storage.cpp b/mapi/msg_storage.cpp index 618422e..5c7cf34 100755 --- a/mapi/msg_storage.cpp +++ b/mapi/msg_storage.cpp @@ -32,13 +32,13 @@ static int msg_get_msg_type(int mainType, int subType); ==================================================================================================*/ EXPORT_API int msg_add_message(msg_handle_t handle, msg_struct_t opq_msg, const msg_struct_t send_opt) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -51,7 +51,10 @@ EXPORT_API int msg_add_message(msg_handle_t handle, msg_struct_t opq_msg, const MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pMsgStruct = (msg_struct_s *)opq_msg; + MSG_TYPE_CHECK(pMsgStruct->type, MSG_STRUCT_MESSAGE_INFO); + msg_struct_s *pStruct = (msg_struct_s *)send_opt; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_SENDOPT); try { @@ -69,13 +72,13 @@ EXPORT_API int msg_add_message(msg_handle_t handle, msg_struct_t opq_msg, const EXPORT_API int msg_add_syncml_message(msg_handle_t handle, const msg_struct_t syncml_msg) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -87,6 +90,7 @@ EXPORT_API int msg_add_syncml_message(msg_handle_t handle, const msg_struct_t sy MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pStruct = (msg_struct_s *)syncml_msg; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_SYNCML_INFO); try { @@ -104,13 +108,13 @@ EXPORT_API int msg_add_syncml_message(msg_handle_t handle, const msg_struct_t sy EXPORT_API int msg_update_message(msg_handle_t handle, const msg_struct_t opq_msg, const msg_struct_t send_opt) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -121,14 +125,18 @@ EXPORT_API int msg_update_message(msg_handle_t handle, const msg_struct_t opq_ms } MsgHandle* pHandle = (MsgHandle*)handle; + msg_struct_s *pMsgStruct = (msg_struct_s *)opq_msg; + MSG_TYPE_CHECK(pMsgStruct->type, MSG_STRUCT_MESSAGE_INFO); + msg_struct_s* pStruct = (msg_struct_s *)send_opt; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_SENDOPT); MSG_MESSAGE_HIDDEN_S *msg = (MSG_MESSAGE_HIDDEN_S *)pMsgStruct->data; - + MSG_SENDINGOPT_S *sendingOpt = (MSG_SENDINGOPT_S *)pStruct->data; try { - err = pHandle->updateMessage(msg, (MSG_SENDINGOPT_S *)pStruct->data); + err = pHandle->updateMessage(msg, sendingOpt); } catch (MsgException& e) { @@ -142,13 +150,13 @@ EXPORT_API int msg_update_message(msg_handle_t handle, const msg_struct_t opq_ms EXPORT_API int msg_update_read_status(msg_handle_t handle, msg_message_id_t msg_id, bool read) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -174,15 +182,15 @@ EXPORT_API int msg_update_read_status(msg_handle_t handle, msg_message_id_t msg_ } -EXPORT_API int msg_set_conversation_to_read(msg_handle_t handle, msg_thread_id_t thread_id) +EXPORT_API int msg_set_conversation_to_read(msg_handle_t handle, msg_thread_id_t thread_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -210,13 +218,13 @@ EXPORT_API int msg_set_conversation_to_read(msg_handle_t handle, msg_thread_id_ EXPORT_API int msg_update_protected_status(msg_handle_t handle, msg_message_id_t msg_id, bool is_protected) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -243,13 +251,13 @@ EXPORT_API int msg_update_protected_status(msg_handle_t handle, msg_message_id_t EXPORT_API int msg_delete_message(msg_handle_t handle, msg_message_id_t msg_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -277,13 +285,13 @@ EXPORT_API int msg_delete_message(msg_handle_t handle, msg_message_id_t msg_id) EXPORT_API int msg_delete_all_msgs_in_folder(msg_handle_t handle, msg_folder_id_t folder_id, bool bOnlyDB) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -311,18 +319,18 @@ EXPORT_API int msg_delete_all_msgs_in_folder(msg_handle_t handle, msg_folder_id_ EXPORT_API int msg_delete_msgs_by_list(msg_handle_t handle, msg_id_list_s *msg_id_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_id_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -345,13 +353,13 @@ EXPORT_API int msg_delete_msgs_by_list(msg_handle_t handle, msg_id_list_s *msg_i EXPORT_API int msg_move_msg_to_folder(msg_handle_t handle, msg_message_id_t msg_id, msg_folder_id_t dest_folder_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -379,13 +387,13 @@ EXPORT_API int msg_move_msg_to_folder(msg_handle_t handle, msg_message_id_t msg_ EXPORT_API int msg_move_msg_to_storage(msg_handle_t handle, msg_message_id_t msg_id, msg_storage_id_t storage_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -419,24 +427,26 @@ EXPORT_API int msg_move_msg_to_storage(msg_handle_t handle, msg_message_id_t msg EXPORT_API int msg_count_message(msg_handle_t handle, msg_folder_id_t folder_id, msg_struct_t count_info) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || count_info == NULL) { return MSG_ERR_INVALID_PARAMETER; } MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pStruct = (msg_struct_s *)count_info; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_COUNT_INFO); + try { err = pHandle->countMessage(folder_id, (MSG_COUNT_INFO_S *)pStruct->data); @@ -453,18 +463,18 @@ EXPORT_API int msg_count_message(msg_handle_t handle, msg_folder_id_t folder_id, EXPORT_API int msg_count_msg_by_type(msg_handle_t handle, msg_message_type_t msg_type, int *msg_count) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_count == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -488,6 +498,9 @@ EXPORT_API int msg_count_msg_by_type(msg_handle_t handle, msg_message_type_t msg msgType.mainType = MSG_MMS_TYPE; msgType.subType = MSG_SENDREQ_MMS; } + else { + return MSG_ERR_INVALID_PARAMETER; + } try { @@ -505,25 +518,29 @@ EXPORT_API int msg_count_msg_by_type(msg_handle_t handle, msg_message_type_t msg EXPORT_API int msg_count_msg_by_contact(msg_handle_t handle, const msg_struct_t addr_info, msg_struct_t msg_thread_count_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || addr_info == NULL) + if (handle == NULL || addr_info == NULL || msg_thread_count_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } MsgHandle* pHandle = (MsgHandle*)handle; + msg_struct_s *pAddr = (msg_struct_s *)addr_info; + MSG_TYPE_CHECK(pAddr->type, MSG_STRUCT_THREAD_LIST_INDEX); + msg_struct_s *pCount = (msg_struct_s *)msg_thread_count_list; + MSG_TYPE_CHECK(pCount->type, MSG_STRUCT_THREAD_COUNT_INFO); try { @@ -541,18 +558,18 @@ EXPORT_API int msg_count_msg_by_contact(msg_handle_t handle, const msg_struct_t EXPORT_API int msg_get_message(msg_handle_t handle, msg_message_id_t msg_id, msg_struct_t opq_msg, msg_struct_t send_opt) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || !opq_msg) + if (handle == NULL || opq_msg == NULL || send_opt == NULL) { MSG_FATAL("handle or opq_msg is NULL"); return MSG_ERR_INVALID_PARAMETER; @@ -561,7 +578,10 @@ EXPORT_API int msg_get_message(msg_handle_t handle, msg_message_id_t msg_id, msg MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pMsgStruct = (msg_struct_s *)opq_msg; + MSG_TYPE_CHECK(pMsgStruct->type, MSG_STRUCT_MESSAGE_INFO); + msg_struct_s *pStruct = (msg_struct_s *)send_opt; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_SENDOPT); try { @@ -578,13 +598,13 @@ EXPORT_API int msg_get_message(msg_handle_t handle, msg_message_id_t msg_id, msg EXPORT_API int msg_get_vobject_data(msg_handle_t handle, msg_message_id_t msg_id, void** result_data) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -612,18 +632,18 @@ EXPORT_API int msg_get_vobject_data(msg_handle_t handle, msg_message_id_t msg_id EXPORT_API int msg_get_conversation(msg_handle_t handle, msg_message_id_t msg_id, msg_struct_t conv) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || !conv) + if (handle == NULL || conv == NULL) { MSG_FATAL("handle or opq_msg is NULL"); return MSG_ERR_INVALID_PARAMETER; @@ -632,6 +652,8 @@ EXPORT_API int msg_get_conversation(msg_handle_t handle, msg_message_id_t msg_id MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pMsgStruct = (msg_struct_s *)conv; + MSG_TYPE_CHECK(pMsgStruct->type, MSG_STRUCT_CONV_INFO); + try { err = pHandle->getConversationViewItem(msg_id, (MSG_CONVERSATION_VIEW_S *)pMsgStruct->data); @@ -647,28 +669,30 @@ EXPORT_API int msg_get_conversation(msg_handle_t handle, msg_message_id_t msg_id EXPORT_API int msg_get_thread_view_list(msg_handle_t handle, const msg_struct_t sort_rule, msg_struct_list_s *msg_thread_view_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_thread_view_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pStruct =(msg_struct_s *)sort_rule; - + if (pStruct) { + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_SORT_RULE); + } try { - if (sort_rule == NULL) + if (pStruct == NULL) { MSG_SORT_RULE_S sortRule = {0}; @@ -694,18 +718,18 @@ EXPORT_API int msg_get_thread_view_list(msg_handle_t handle, const msg_struct_t EXPORT_API int msg_get_conversation_view_list(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_list_s *msg_conv_view_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_conv_view_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -728,13 +752,13 @@ EXPORT_API int msg_get_conversation_view_list(msg_handle_t handle, msg_thread_id EXPORT_API int msg_delete_thread_message_list(msg_handle_t handle, msg_thread_id_t thread_id, bool include_protected_msg) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -762,13 +786,13 @@ EXPORT_API int msg_delete_thread_message_list(msg_handle_t handle, msg_thread_id EXPORT_API int msg_add_folder(msg_handle_t handle, const msg_struct_t folder_info) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -780,6 +804,7 @@ EXPORT_API int msg_add_folder(msg_handle_t handle, const msg_struct_t folder_inf MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pStruct = (msg_struct_s *)folder_info; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_FOLDER_INFO); try { @@ -797,13 +822,13 @@ EXPORT_API int msg_add_folder(msg_handle_t handle, const msg_struct_t folder_inf EXPORT_API int msg_update_folder(msg_handle_t handle, const msg_struct_t folder_info) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -815,6 +840,7 @@ EXPORT_API int msg_update_folder(msg_handle_t handle, const msg_struct_t folder_ MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pStruct = (msg_struct_s *)folder_info; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_FOLDER_INFO); try { @@ -832,13 +858,13 @@ EXPORT_API int msg_update_folder(msg_handle_t handle, const msg_struct_t folder_ EXPORT_API int msg_delete_folder(msg_handle_t handle, msg_folder_id_t folder_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -866,18 +892,18 @@ EXPORT_API int msg_delete_folder(msg_handle_t handle, msg_folder_id_t folder_id) EXPORT_API int msg_get_folder_list(msg_handle_t handle, msg_struct_list_s *folder_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || folder_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -900,11 +926,11 @@ EXPORT_API int msg_get_folder_list(msg_handle_t handle, msg_struct_list_s *folde EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_type, msg_folder_id_t folder_id, unsigned int num_msg) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -915,6 +941,12 @@ EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_ return MSG_ERR_INVALID_PARAMETER; } + if (msg_type >= MSG_MESSAGE_TYPE_MAX) + { + MSG_DEBUG("msg_type is invalid [%d]", msg_type); + return MSG_ERR_INVALID_PARAMETER; + } + if (folder_id >= MSG_MAX_FOLDER_ID) { MSG_DEBUG("folderId is invalid [%d]", folder_id); @@ -942,6 +974,9 @@ EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_ for (unsigned int i = 0; i < num_msg; i++) { msg_s = (msg_struct_s *)msg_create_struct(MSG_STRUCT_MESSAGE_INFO); + if (msg_s == NULL) + return MSG_ERR_NOT_SUPPORTED; + msgInfo = (MSG_MESSAGE_HIDDEN_S *)msg_s->data; msgInfo->folderId = folder_id; @@ -959,8 +994,8 @@ EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_ snprintf(strMsg, sizeof(strMsg), "test msg %d", i); msgInfo->dataSize = strlen(strMsg); msgInfo->pData = (void*)new char[msgInfo->dataSize+1]; - memcpy((char *)msgInfo->pData, strMsg, msgInfo->dataSize); - ((char*) msgInfo->pData)[msgInfo->dataSize] = '\0'; + memcpy((char *)msgInfo->pData, strMsg, msgInfo->dataSize); + ((char*) msgInfo->pData)[msgInfo->dataSize] = '\0'; } msgInfo->storageId = MSG_STORAGE_PHONE; @@ -972,7 +1007,7 @@ EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_ addrInfo = (MSG_ADDRESS_INFO_S *)addr_s->data; addrInfo->addressType = MSG_ADDRESS_TYPE_PLMN; - postfix = rand()%10000; + postfix = random()%10000; snprintf(addrInfo->addressVal, MAX_ADDRESS_VAL_LEN+1, "%s%04d", prefix, postfix); addrInfo->recipientType = MSG_RECIPIENTS_TYPE_TO; @@ -995,6 +1030,11 @@ EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_ if(folder_id == MSG_INBOX_ID) msgInfo->networkStatus = MSG_NETWORK_RETRIEVE_SUCCESS; + msg_struct_t mms_data = msg_create_struct(MSG_STRUCT_MMS); + + msg_set_mms_struct((msg_struct_t)msg_s, mms_data); + + msg_release_struct(&mms_data); //MMS_MESSAGE_DATA_S* mms_data; //MMS_PAGE_S* page[2]; //MMS_MEDIA_S* media[5]; @@ -1043,9 +1083,6 @@ EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_ return MSG_ERR_STORAGE_ERROR; } - if (msg_type == MSG_TYPE_MMS && msgInfo->pMmsData) //free pMmsData directly. It is added to enhance performance - delete [] static_cast<char*>(msgInfo->pMmsData); - msg_release_struct((msg_struct_t *)&msg_s); if (err < 0) @@ -1061,25 +1098,31 @@ EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_ EXPORT_API int msg_get_quick_panel_data(msg_handle_t handle, msg_quickpanel_type_t type, msg_struct_t opq_msg) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || !opq_msg ) + if (handle == NULL || opq_msg == NULL ) { MSG_FATAL("handle or opq_msg is NULL"); return MSG_ERR_INVALID_PARAMETER; } + if (type > MSG_QUICKPANEL_MMS_NOTI) { + MSG_FATAL("unsupported quickpanel type [%d]", type); + return MSG_ERR_INVALID_PARAMETER; + } + MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pMsg = (msg_struct_s *)opq_msg; + MSG_TYPE_CHECK(pMsg->type, MSG_STRUCT_MESSAGE_INFO); try { @@ -1097,13 +1140,13 @@ EXPORT_API int msg_get_quick_panel_data(msg_handle_t handle, msg_quickpanel_type EXPORT_API int msg_reset_database(msg_handle_t handle) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1131,18 +1174,18 @@ EXPORT_API int msg_reset_database(msg_handle_t handle) EXPORT_API int msg_get_mem_size(msg_handle_t handle, unsigned int* memsize) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || memsize == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1165,13 +1208,13 @@ EXPORT_API int msg_get_mem_size(msg_handle_t handle, unsigned int* memsize) EXPORT_API int msg_backup_message(msg_handle_t handle, msg_message_backup_type_t type, const char *backup_filepath) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1199,13 +1242,13 @@ EXPORT_API int msg_backup_message(msg_handle_t handle, msg_message_backup_type_t EXPORT_API int msg_restore_message(msg_handle_t handle, const char *backup_filepath) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1233,18 +1276,18 @@ EXPORT_API int msg_restore_message(msg_handle_t handle, const char *backup_filep EXPORT_API int msg_search_message_for_thread_view(msg_handle_t handle, const char *search_string, msg_struct_list_s *msg_thread_view_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || search_string == NULL) + if (handle == NULL || search_string == NULL || msg_thread_view_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1271,18 +1314,18 @@ EXPORT_API int msg_search_message_for_thread_view(msg_handle_t handle, const cha EXPORT_API int msg_get_reject_msg_list(msg_handle_t handle, const char *phone_num, msg_struct_list_s *msg_reject_msg_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_reject_msg_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1305,13 +1348,13 @@ EXPORT_API int msg_get_reject_msg_list(msg_handle_t handle, const char *phone_nu EXPORT_API int msg_reg_storage_change_callback(msg_handle_t handle, msg_storage_change_cb cb, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1341,13 +1384,13 @@ EXPORT_API int msg_reg_storage_change_callback(msg_handle_t handle, msg_storage_ EXPORT_API int msg_get_report_status(msg_handle_t handle, msg_message_id_t msg_id, msg_struct_list_s *report_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1374,18 +1417,18 @@ EXPORT_API int msg_get_report_status(msg_handle_t handle, msg_message_id_t msg_i EXPORT_API int msg_get_address_list(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_list_s *msg_address_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) + if (handle == NULL || msg_address_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1408,13 +1451,13 @@ EXPORT_API int msg_get_address_list(msg_handle_t handle, msg_thread_id_t thread_ EXPORT_API int msg_get_thread_id_by_address(msg_handle_t handle, msg_struct_list_s *msg_address_list, msg_thread_id_t *thread_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1445,13 +1488,13 @@ EXPORT_API int msg_get_thread_id_by_address(msg_handle_t handle, msg_struct_list EXPORT_API int msg_get_thread_id_by_address2(msg_handle_t handle, msg_list_handle_t msg_address_list, msg_thread_id_t *thread_id) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1479,13 +1522,13 @@ EXPORT_API int msg_get_thread_id_by_address2(msg_handle_t handle, msg_list_handl EXPORT_API int msg_get_thread(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_t msg_thread) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -1497,10 +1540,7 @@ EXPORT_API int msg_get_thread(msg_handle_t handle, msg_thread_id_t thread_id, ms MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *msgThread = (msg_struct_s *)msg_thread; - if (msgThread->type != MSG_STRUCT_THREAD_INFO) { - MSG_FATAL("Invaild type. type [%d]", msgThread->type); - return MSG_ERR_INVALID_PARAMETER; - } + MSG_TYPE_CHECK(msgThread->type, MSG_STRUCT_THREAD_INFO); MSG_THREAD_VIEW_S* pThreadInfo = (MSG_THREAD_VIEW_S *)msgThread->data; @@ -1519,23 +1559,24 @@ EXPORT_API int msg_get_thread(msg_handle_t handle, msg_thread_id_t thread_id, ms EXPORT_API int msg_get_message_list2(msg_handle_t handle, const msg_struct_t msg_list_conditions, msg_struct_list_s *msg_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) { + if (handle == NULL || msg_list_conditions == NULL || msg_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pStruct = (msg_struct_s *)msg_list_conditions; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_MSG_LIST_CONDITION); try { @@ -1553,17 +1594,17 @@ EXPORT_API int msg_get_message_list2(msg_handle_t handle, const msg_struct_t msg EXPORT_API int msg_get_media_list(msg_handle_t handle, msg_thread_id_t thread_id, msg_list_handle_t *msg_list) { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL) { + if (handle == NULL || msg_list == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -1587,7 +1628,7 @@ static int msg_get_msg_type(int mainType, int subType) { if (mainType == MSG_SMS_TYPE) { - switch (subType) { + switch (subType) { case MSG_CB_SMS : return MSG_TYPE_SMS_CB; case MSG_JAVACB_SMS : @@ -1620,7 +1661,7 @@ static int msg_get_msg_type(int mainType, int subType) return MSG_TYPE_SMS_CMAS_OPERATOR_DEFINED; default : return MSG_TYPE_SMS; - } + } } else if (mainType == MSG_MMS_TYPE) { @@ -1636,540 +1677,576 @@ static int msg_get_msg_type(int mainType, int subType) } -int msg_syncml_info_get_int(void *syncml_info, int field) +int msg_syncml_info_get_int(void *syncml_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!syncml_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)syncml_info; + switch(field) { case MSG_SYNCML_INFO_EXTID_INT: - result = pSync->extId; + *value = pSync->extId; break; case MSG_SYNCML_INFO_PINCODE_INT: - result = pSync->pinCode; + *value = pSync->pinCode; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_count_info_get_int(void *count_info, int field) +int msg_count_info_get_int(void *count_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!count_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_COUNT_INFO_S *pCount = (MSG_COUNT_INFO_S *)count_info; + switch(field) { case MSG_COUNT_INFO_READ_INT: - result = pCount->nReadCnt; + *value = pCount->nReadCnt; break; case MSG_COUNT_INFO_UNREAD_INT: - result = pCount->nUnreadCnt; + *value = pCount->nUnreadCnt; break; case MSG_COUNT_INFO_SMS_INT: - result = pCount->nSms; + *value = pCount->nSms; break; case MSG_COUNT_INFO_MMS_INT: - result = pCount->nMms; + *value = pCount->nMms; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_thread_count_get_int(void *count_info, int field) +int msg_thread_count_get_int(void *count_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!count_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_THREAD_COUNT_INFO_S *pCount = (MSG_THREAD_COUNT_INFO_S *)count_info; + switch(field) { case MSG_THREAD_COUNT_TOTAL_INT: - result = pCount->totalCount; + *value = pCount->totalCount; break; case MSG_THREAD_COUNT_UNREAD_INT: - result = pCount->unReadCount; + *value = pCount->unReadCount; break; case MSG_THREAD_COUNT_SMS_INT: - result = pCount->smsMsgCount; + *value = pCount->smsMsgCount; break; case MSG_THREAD_COUNT_MMS_INT: - result = pCount->mmsMsgCount; + *value = pCount->mmsMsgCount; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_thread_index_get_int(void *index_info, int field) +int msg_thread_index_get_int(void *index_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!index_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_THREAD_LIST_INDEX_S *pIndex = (MSG_THREAD_LIST_INDEX_S *)index_info; switch(field) { case MSG_THREAD_LIST_INDEX_CONTACTID_INT: - result = pIndex->contactId; + *value = pIndex->contactId; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_sortrule_get_int(void *sort_info, int field) +int msg_sortrule_get_int(void *sort_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!sort_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_info; + switch(field) { case MSG_SORT_RULE_SORT_TYPE_INT: - result = pSort->sortType; + *value = pSort->sortType; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_folder_info_get_int(void *folder_info, int field) +int msg_folder_info_get_int(void *folder_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!folder_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info; + switch(field) { case MSG_FOLDER_INFO_ID_INT: - result = pFolder->folderId; + *value = pFolder->folderId; break; case MSG_FOLDER_INFO_TYPE_INT: - result = pFolder->folderType; + *value = pFolder->folderType; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_thread_info_get_int(void *data, int field) +int msg_thread_info_get_int(void *data, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!data) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_THREAD_VIEW_S *pThread = (MSG_THREAD_VIEW_S *)data; switch(field) { case MSG_THREAD_ID_INT : - result = pThread->threadId; + *value = pThread->threadId; break; case MSG_THREAD_MSG_TYPE_INT : - result = msg_get_msg_type(pThread->mainType, pThread->subType); + *value = msg_get_msg_type(pThread->mainType, pThread->subType); break; case MSG_THREAD_MSG_TIME_INT : - result = pThread->threadTime; + *value = pThread->threadTime; break; case MSG_THREAD_DIRECTION_INT : - result = pThread->direction; + *value = pThread->direction; break; case MSG_THREAD_UNREAD_COUNT_INT : - result = pThread->unreadCnt; + *value = pThread->unreadCnt; break; case MSG_THREAD_SMS_COUNT_INT : - result = pThread->smsCnt; + *value = pThread->smsCnt; break; case MSG_THREAD_MMS_COUNT_INT : - result = pThread->mmsCnt; + *value = pThread->mmsCnt; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_conv_info_get_int(void *data, int field) +int msg_conv_info_get_int(void *data, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!data) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_CONVERSATION_VIEW_S *pConv = (MSG_CONVERSATION_VIEW_S *)data; switch(field) { case MSG_CONV_MSG_ID_INT : - result = pConv->msgId; + *value = pConv->msgId; break; case MSG_CONV_MSG_THREAD_ID_INT : - result = pConv->threadId; + *value = pConv->threadId; break; case MSG_CONV_MSG_FOLDER_ID_INT : - result = pConv->folderId; + *value = pConv->folderId; break; case MSG_CONV_MSG_TYPE_INT : - result = msg_get_msg_type(pConv->mainType, pConv->subType); + *value = msg_get_msg_type(pConv->mainType, pConv->subType); break; case MSG_CONV_MSG_STORAGE_ID_INT : - result = pConv->storageId; + *value = pConv->storageId; break; case MSG_CONV_MSG_DISPLAY_TIME_INT : - result = pConv->displayTime; + *value = pConv->displayTime; break; case MSG_CONV_MSG_SCHEDULED_TIME_INT : - result = pConv->scheduledTime; + *value = pConv->scheduledTime; break; case MSG_CONV_MSG_NETWORK_STATUS_INT : - result = pConv->networkStatus; + *value = pConv->networkStatus; break; case MSG_CONV_MSG_DIRECTION_INT : - result = pConv->direction; + *value = pConv->direction; break; case MSG_CONV_MSG_ATTACH_COUNT_INT : - result = pConv->attachCount; + *value = pConv->attachCount; break; case MSG_CONV_MSG_TEXT_SIZE_INT : - result = pConv->textSize; + *value = pConv->textSize; break; case MSG_CONV_MSG_PAGE_COUNT_INT : - result = pConv->pageCount; + *value = pConv->pageCount; break; case MSG_CONV_MSG_TCS_BC_LEVEL_INT : - result = pConv->tcs_bc_level; + *value = pConv->tcs_bc_level; break; case MSG_CONV_MSG_SIM_INDEX_INT : - result = pConv->simIndex; + *value = pConv->simIndex; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_search_condition_get_int(void *condition_info, int field) +int msg_list_condition_get_int(void *condition_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; - MSG_SEARCH_CONDITION_S *pCond = (MSG_SEARCH_CONDITION_S *)condition_info; - switch(field) - { - case MSG_SEARCH_CONDITION_FOLDERID_INT: - result = pCond->folderId; - break; - case MSG_SEARCH_CONDITION_MSGTYPE_INT: - result = pCond->msgType; - break; - case MSG_SEARCH_CONDITION_RESERVED_INT: - result = pCond->reserved; - break; - default: - result = MSG_ERR_INVALID_PARAMETER; - break; - } - return result; -} + if (!condition_info) + return MSG_ERR_NULL_POINTER; + int ret = MSG_SUCCESS; -int msg_list_condition_get_int(void *condition_info, int field) -{ - int result = MSG_ERR_INVALID_PARAMETER; MSG_LIST_CONDITION_S *pCond = (MSG_LIST_CONDITION_S *)condition_info; + switch(field) { case MSG_LIST_CONDITION_FOLDER_ID_INT: - result = pCond->folderId; + *value = pCond->folderId; break; case MSG_LIST_CONDITION_THREAD_ID_INT: - result = pCond->threadId; - break; + *value = pCond->threadId; + break; case MSG_LIST_CONDITION_STORAGE_ID_INT: - result = pCond->storageId; - break; + *value = pCond->storageId; + break; case MSG_LIST_CONDITION_MSGTYPE_INT: - result = pCond->msgType; + *value = pCond->msgType; break; case MSG_LIST_CONDITION_FROM_TIME_INT: - result = pCond->fromTime; + *value = pCond->fromTime; break; case MSG_LIST_CONDITION_TO_TIME_INT: - result = pCond->toTime; + *value = pCond->toTime; break; case MSG_LIST_CONDITION_OFFSET_INT: - result = pCond->offset; + *value = pCond->offset; break; case MSG_LIST_CONDITION_LIMIT_INT: - result = pCond->limit; + *value = pCond->limit; break; case MSG_LIST_CONDITION_SIM_INDEX_INT: - result = pCond->simIndex; + *value = pCond->simIndex; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_report_status_get_int(void *report_info, int field) +int msg_report_status_get_int(void *report_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!report_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info; switch(field) { case MSG_REPORT_TYPE_INT: - result = pReport->type; + *value = pReport->type; break; case MSG_REPORT_STATUS_INT: - result = pReport->status; + *value = pReport->status; break; case MSG_REPORT_TIME_INT: - result = pReport->statusTime; + *value = pReport->statusTime; break; default: - result = MSG_ERR_INVALID_PARAMETER; + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -char* msg_report_status_get_str(void *report_info, int field) +int msg_report_status_get_str(void *report_info, int field, char *value, int size) { - char *result = NULL; MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info; switch(field) { - case MSG_REPORT_ADDRESS_STR: - result = pReport->addressVal; + strncpy(value, pReport->addressVal, size); break; - default: - break; + return MSG_ERR_INVALID_PARAMETER; } - return result; + return MSG_SUCCESS; } -char* msg_folder_info_get_str(void *folder_info, int field) +int msg_folder_info_get_str(void *folder_info, int field, char *value, int size) { - char *result = NULL; MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info; switch(field) { case MSG_FOLDER_INFO_NAME_STR: - result = pFolder->folderName; + strncpy(value, pFolder->folderName, size); break; default: - result = NULL; - break; + return MSG_ERR_INVALID_PARAMETER; } - return result; + return MSG_SUCCESS; } -char *msg_thread_info_get_str(void *data, int field) +int msg_thread_info_get_str(void *data, int field, char *value, int size) { - char *ret_str = NULL; MSG_THREAD_VIEW_S *pThread = (MSG_THREAD_VIEW_S *)data; switch(field) { case MSG_THREAD_NAME_STR : - ret_str = pThread->threadName; + strncpy(value, pThread->threadName, size); break; case MSG_THREAD_MSG_DATA_STR : - ret_str = pThread->threadData; + strncpy(value, pThread->threadData, size); break; default: - break; + return MSG_ERR_INVALID_PARAMETER; } - return ret_str; + return MSG_SUCCESS; } -char *msg_conv_info_get_str(void *data, int field) +int msg_conv_info_get_str(void *data, int field, char *value, int size) { - char *ret_str = NULL; MSG_CONVERSATION_VIEW_S *pConv = (MSG_CONVERSATION_VIEW_S *)data; switch(field) { case MSG_CONV_MSG_SUBJECT_STR : - ret_str = pConv->subject; + strncpy(value, pConv->subject, size); break; case MSG_CONV_MSG_ATTACH_NAME_STR : - ret_str = pConv->attachFileName; + strncpy(value, pConv->attachFileName, size); break; case MSG_CONV_MSG_AUDIO_NAME_STR : - ret_str = pConv->audioFileName; + strncpy(value, pConv->audioFileName, size); break; case MSG_CONV_MSG_IMAGE_THUMB_PATH_STR : - ret_str = pConv->imageThumbPath; + strncpy(value, pConv->imageThumbPath, size); break; case MSG_CONV_MSG_VIDEO_THUMB_PATH_STR : - ret_str = pConv->videoThumbPath; + strncpy(value, pConv->videoThumbPath, size); break; case MSG_CONV_MSG_TEXT_STR : - ret_str = pConv->pText; + if (pConv->pText) + strncpy(value, pConv->pText, size); break; case MSG_CONV_MSG_1ST_MEDIA_PATH_STR : - ret_str = pConv->firstMediaPath; + strncpy(value, pConv->firstMediaPath, size); break; default: - break; + return MSG_ERR_INVALID_PARAMETER; } - return ret_str; -} - - -char* msg_search_condition_get_str(void *condition_info, int field, int size) -{ - char *result = NULL; - MSG_SEARCH_CONDITION_S *search_cond = (MSG_SEARCH_CONDITION_S *)condition_info; - switch(field) - { - case MSG_SEARCH_CONDITION_ADDRESS_VALUE_STR: - result = search_cond->pAddressVal; - break; - case MSG_SEARCH_CONDITION_SEARCH_VALUE_STR: - result = search_cond->pSearchVal; - break; - default: - result = NULL; - break; - } - return result; + return MSG_SUCCESS; } -char* msg_list_condition_get_str(void *condition_info, int field, int size) +int msg_list_condition_get_str(void *condition_info, int field, char *value, int size) { - char *result = NULL; MSG_LIST_CONDITION_S *cond = (MSG_LIST_CONDITION_S *)condition_info; switch(field) { case MSG_LIST_CONDITION_ADDRESS_VALUE_STR: - result = cond->pAddressVal; + if (cond->pAddressVal) + strncpy(value, cond->pAddressVal, size); break; case MSG_LIST_CONDITION_TEXT_VALUE_STR: - result = cond->pTextVal; + if (cond->pTextVal) + strncpy(value, cond->pTextVal, size); break; default: - result = NULL; - break; + return MSG_ERR_INVALID_PARAMETER; } - return result; + + return MSG_SUCCESS; } -bool msg_sendopt_get_bool(void *send_opt, int field) +int msg_sendopt_get_bool(void *send_opt, int field, bool *value) { - bool result = false; + if (!send_opt) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)send_opt; switch(field) { case MSG_SEND_OPT_SETTING_BOOL: - result = sendopt->bSetting; + *value = sendopt->bSetting; break; case MSG_SEND_OPT_KEEPCOPY_BOOL: - result = sendopt->bKeepCopy; + *value = sendopt->bKeepCopy; break; case MSG_SEND_OPT_DELIVER_REQ_BOOL: - result = sendopt->bDeliverReq; + *value = sendopt->bDeliverReq; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } -bool msg_sortrule_get_bool(void *sort_rule, int field) +int msg_sortrule_get_bool(void *sort_rule, int field, bool *value) { - bool result = false; + if (!sort_rule) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_rule; switch(field) { case MSG_SORT_RULE_ACSCEND_BOOL: - result = pSort->bAscending; + *value = pSort->bAscending; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } -bool msg_conv_get_bool(void *data, int field) +int msg_conv_get_bool(void *data, int field, bool *value) { - bool result = false; + if (!data) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_CONVERSATION_VIEW_S *pConv = (MSG_CONVERSATION_VIEW_S *)data; + switch(field) { case MSG_CONV_MSG_READ_BOOL: - result = pConv->bRead; + *value = pConv->bRead; break; case MSG_CONV_MSG_PROTECTED_BOOL: - result = pConv->bProtected; + *value = pConv->bProtected; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } -bool msg_thread_info_get_bool(void *data, int field) +int msg_thread_info_get_bool(void *data, int field, bool *value) { - bool result = false; + if (!data) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_THREAD_VIEW_S *pthreadInfo = (MSG_THREAD_VIEW_S *)data; + switch(field) { case MSG_THREAD_PROTECTED_BOOL: - result = pthreadInfo->bProtected; + *value = pthreadInfo->bProtected; break; case MSG_THREAD_DRAFT_BOOL : - result = pthreadInfo->bDraft; + *value = pthreadInfo->bDraft; break; case MSG_THREAD_SEND_FAILED_BOOL : - result = pthreadInfo->bSendFailed; + *value = pthreadInfo->bSendFailed; break; case MSG_THREAD_SENDING_BOOL : - result = pthreadInfo->bSending; + *value = pthreadInfo->bSending; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } -bool msg_list_condition_get_bool(void *data, int field) +int msg_list_condition_get_bool(void *data, int field, bool *value) { - bool result = false; + if (!data) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_LIST_CONDITION_S *pCond = (MSG_LIST_CONDITION_S *)data; + switch(field) { case MSG_LIST_CONDITION_PROTECTED_BOOL: - result = pCond->bProtected; + *value = pCond->bProtected; break; case MSG_LIST_CONDITION_SCHEDULED_BOOL : - result = pCond->bScheduled; + *value = pCond->bScheduled; break; case MSG_LIST_CONDITION_AND_OPERATER_BOOL : - result = pCond->bAnd; + *value = pCond->bAnd; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } int msg_sendopt_get_struct_handle(msg_struct_s *msg_struct, int field, void **value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; @@ -2192,12 +2269,13 @@ int msg_sendopt_get_struct_handle(msg_struct_s *msg_struct, int field, void **va int msg_syncml_get_struct_handle(msg_struct_s *msg_struct, int field, void **value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)msg_struct->data; + switch(field) { case MSG_SYNCML_INFO_MESSAGE_HND: @@ -2206,19 +2284,19 @@ int msg_syncml_get_struct_handle(msg_struct_s *msg_struct, int field, void **val default: err = MSG_ERR_UNKNOWN; break; - } return err; } int msg_thread_index_get_struct_handle(msg_struct_s *msg_struct, int field, void **value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; MSG_THREAD_LIST_INDEX_INFO_S *pIndex = (MSG_THREAD_LIST_INDEX_INFO_S *)msg_struct->data; + switch(field) { case MSG_THREAD_LIST_INDEX_ADDR_INFO_HND: @@ -2235,12 +2313,13 @@ int msg_thread_index_get_struct_handle(msg_struct_s *msg_struct, int field, void int msg_list_condition_get_struct_handle(msg_struct_s *msg_struct, int field, void **value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; MSG_LIST_CONDITION_S *pCond = (MSG_LIST_CONDITION_S *)msg_struct->data; + switch(field) { case MSG_LIST_CONDITION_SORT_RULE_HND: @@ -2255,296 +2334,298 @@ int msg_list_condition_get_struct_handle(msg_struct_s *msg_struct, int field, vo } -int msg_address_info_get_int(void *addr_info, int field) +int msg_address_info_get_int(void *addr_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!addr_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info; + switch(field) { case MSG_ADDRESS_INFO_ADDRESS_TYPE_INT: - result = pAddr->addressType; + *value = pAddr->addressType; break; case MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT: - result = pAddr->recipientType; + *value = pAddr->recipientType; break; case MSG_ADDRESS_INFO_CONTACT_ID_INT: - result = pAddr->contactId; + *value = pAddr->contactId; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } -int msg_mms_sendopt_get_int(void *opt_info, int field) + +int msg_mms_sendopt_get_int(void *opt_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!opt_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info; + switch(field) { case MSG_MMS_SENDOPTION_EXPIRY_TIME_INT: - result = pOpt->expiryTime; + *value = pOpt->expiryTime; break; case MSG_MMS_SENDOPTION_DELIVERY_TIME_INT: - result = pOpt->deliveryTime; + *value = pOpt->deliveryTime; break; case MSG_MMS_SENDOPTION_PRIORITY_INT: - result = pOpt->priority; + *value = pOpt->priority; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } -int msg_reject_message_get_int(void *msg_info, int field) +int msg_reject_message_get_int(void *msg_info, int field, int *value) { - int result = MSG_ERR_INVALID_PARAMETER; + if (!msg_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info; + switch(field) { case MSG_REJECT_MESSAGE_MSGID_INT: - result = pMsg->msgId; + *value = pMsg->msgId; break; case MSG_REJECT_MESSAGE_DISPLAY_TIME_INT: - result = pMsg->displayTime; + *value = pMsg->displayTime; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } -char* msg_address_info_get_str(void *addr_info, int field, int size) +int msg_address_info_get_str(void *addr_info, int field, char *value, int size) { - char *result = NULL; MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info; switch(field) { case MSG_ADDRESS_INFO_ADDRESS_VALUE_STR: - result = pAddr->addressVal; + strncpy(value, pAddr->addressVal, size); break; case MSG_ADDRESS_INFO_DISPLAYNAME_STR: - result = pAddr->displayName; + strncpy(value, pAddr->displayName, size); break; default: - result = NULL; - break; + return MSG_ERR_INVALID_PARAMETER; } - return result; + + return MSG_SUCCESS; } -char* msg_reject_message_get_str(void *msg_info, int field, int size) +int msg_reject_message_get_str(void *msg_info, int field, char *value, int size) { - char *result = NULL; MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info; switch(field) { case MSG_REJECT_MESSAGE_MSGTEXT_STR: - result = pMsg->msgText; + strncpy(value, pMsg->msgText, size); break; default: - result = NULL; - break; + return MSG_ERR_INVALID_PARAMETER; } - return result; + + return MSG_SUCCESS; } -bool msg_mms_sendopt_get_bool(void *opt_info, int field) +int msg_mms_sendopt_get_bool(void *opt_info, int field, bool *value) { - bool result = false; + if (!opt_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info; + switch(field) { case MSG_MMS_SENDOPTION_READ_REQUEST_BOOL: - result = pOpt->bReadReq; + *value = pOpt->bReadReq; break; case MSG_MMS_SENDOPTION_DELIVERY_CUSTOMTIME_BOOL: - result = pOpt->bUseDeliveryCustomTime; + *value = pOpt->bUseDeliveryCustomTime; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } -bool msg_sms_sendopt_get_bool(void *opt_info, int field) +int msg_sms_sendopt_get_bool(void *opt_info, int field, bool *value) { - bool result = false; + if (!opt_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + SMS_SENDINGOPT_S *pOpt = (SMS_SENDINGOPT_S *)opt_info; switch(field) { case MSG_SMS_SENDOPT_REPLYPATH_BOOL: - result = pOpt->bReplyPath; + *value = pOpt->bReplyPath; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } int msg_syncml_info_set_int(void *syncml_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!syncml_info) return MSG_ERR_NULL_POINTER; - MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)syncml_info; - switch(field) - { - case MSG_SYNCML_INFO_EXTID_INT: + MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)syncml_info; + switch(field) + { + case MSG_SYNCML_INFO_EXTID_INT: pSync->extId = value; break; - case MSG_SYNCML_INFO_PINCODE_INT: + case MSG_SYNCML_INFO_PINCODE_INT: pSync->pinCode = value; break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_count_info_set_int(void *count_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!count_info) return MSG_ERR_NULL_POINTER; - MSG_COUNT_INFO_S *pCount = (MSG_COUNT_INFO_S *)count_info; + MSG_COUNT_INFO_S *pCount = (MSG_COUNT_INFO_S *)count_info; - switch(field) - { - case MSG_COUNT_INFO_READ_INT: + switch(field) + { + case MSG_COUNT_INFO_READ_INT: pCount->nReadCnt = value; break; - case MSG_COUNT_INFO_UNREAD_INT: + case MSG_COUNT_INFO_UNREAD_INT: pCount->nUnreadCnt = value; break; - case MSG_COUNT_INFO_SMS_INT: + case MSG_COUNT_INFO_SMS_INT: pCount->nSms = value; break; - case MSG_COUNT_INFO_MMS_INT: + case MSG_COUNT_INFO_MMS_INT: pCount->nMms = value; break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_thread_count_set_int(void *count_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!count_info) return MSG_ERR_NULL_POINTER; - MSG_THREAD_COUNT_INFO_S *pCount = (MSG_THREAD_COUNT_INFO_S *)count_info; - switch(field) - { - case MSG_THREAD_COUNT_TOTAL_INT: + MSG_THREAD_COUNT_INFO_S *pCount = (MSG_THREAD_COUNT_INFO_S *)count_info; + switch(field) + { + case MSG_THREAD_COUNT_TOTAL_INT: pCount->totalCount = value; break; - case MSG_THREAD_COUNT_UNREAD_INT: + case MSG_THREAD_COUNT_UNREAD_INT: pCount->unReadCount = value; break; - case MSG_THREAD_COUNT_SMS_INT: + case MSG_THREAD_COUNT_SMS_INT: pCount->smsMsgCount = value; break; - case MSG_THREAD_COUNT_MMS_INT: + case MSG_THREAD_COUNT_MMS_INT: pCount->mmsMsgCount = value; break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_thread_index_set_int(void *index_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!index_info) return MSG_ERR_NULL_POINTER; - MSG_THREAD_LIST_INDEX_S *pIndex = (MSG_THREAD_LIST_INDEX_S *)index_info; - switch(field) - { - case MSG_THREAD_LIST_INDEX_CONTACTID_INT: + MSG_THREAD_LIST_INDEX_S *pIndex = (MSG_THREAD_LIST_INDEX_S *)index_info; + switch(field) + { + case MSG_THREAD_LIST_INDEX_CONTACTID_INT: pIndex->contactId = value; break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_sortrule_set_int(void *sort_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!sort_info) return MSG_ERR_NULL_POINTER; - MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_info; - switch(field) - { - case MSG_SORT_RULE_SORT_TYPE_INT: + MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_info; + switch(field) + { + case MSG_SORT_RULE_SORT_TYPE_INT: pSort->sortType = value; break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_folder_info_set_int(void *folder_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!folder_info) return MSG_ERR_NULL_POINTER; - MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info; - switch(field) - { - case MSG_FOLDER_INFO_ID_INT: - pFolder->folderId = value; - break; - case MSG_FOLDER_INFO_TYPE_INT: - pFolder->folderType = value; - break; - default: - err = MSG_ERR_UNKNOWN; - break; - } - - return err; -} - - -int msg_search_condition_set_int(void *condition_info, int field, int value) -{ - msg_error_t err = MSG_SUCCESS; - if(!condition_info) - return MSG_ERR_NULL_POINTER; - - MSG_SEARCH_CONDITION_S *pCond = (MSG_SEARCH_CONDITION_S *)condition_info; + MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info; switch(field) { - case MSG_SEARCH_CONDITION_FOLDERID_INT: - pCond->folderId = value; - break; - case MSG_SEARCH_CONDITION_MSGTYPE_INT: - pCond->msgType = value; + case MSG_FOLDER_INFO_ID_INT: + pFolder->folderId = value; break; - case MSG_SEARCH_CONDITION_RESERVED_INT: - pCond->reserved = value; + case MSG_FOLDER_INFO_TYPE_INT: + pFolder->folderType = value; break; default: err = MSG_ERR_UNKNOWN; @@ -2557,7 +2638,7 @@ int msg_search_condition_set_int(void *condition_info, int field, int value) int msg_list_condition_set_int(void *condition_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!condition_info) return MSG_ERR_NULL_POINTER; @@ -2602,81 +2683,54 @@ int msg_list_condition_set_int(void *condition_info, int field, int value) int msg_report_status_set_int(void *report_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!report_info) return MSG_ERR_NULL_POINTER; MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info; switch(field) { - case MSG_REPORT_TYPE_INT: - pReport->type = value; + case MSG_REPORT_TYPE_INT: + pReport->type = value; break; - case MSG_REPORT_STATUS_INT: - pReport->status = value; + case MSG_REPORT_STATUS_INT: + pReport->status = value; break; - case MSG_REPORT_TIME_INT: - pReport->statusTime = value; + case MSG_REPORT_TIME_INT: + pReport->statusTime = value; break; - - default: + default: err = MSG_ERR_UNKNOWN; break; } - return err; } int msg_folder_info_set_str(void *folder_info, int field, char *value, int size) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!folder_info || !value) return MSG_ERR_NULL_POINTER; - MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info; - int _len = 0; - (size > MAX_FOLDER_NAME_SIZE)? _len = MAX_FOLDER_NAME_SIZE : _len = size; - switch(field) - { - case MSG_FOLDER_INFO_NAME_STR: - strncpy(pFolder->folderName, value, _len); - break; - default: - err = MSG_ERR_UNKNOWN; - break; - } - - return err; -} - -int msg_search_condition_set_str(void *condition_info, int field, char *value, int size) -{ - msg_error_t err = MSG_SUCCESS; - if(!condition_info || !value) - return MSG_ERR_NULL_POINTER; - - MSG_SEARCH_CONDITION_S *search_cond = (MSG_SEARCH_CONDITION_S *)condition_info; - + MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info; + int _len = 0; + (size > MAX_FOLDER_NAME_SIZE)? _len = MAX_FOLDER_NAME_SIZE : _len = size; switch(field) { - case MSG_SEARCH_CONDITION_ADDRESS_VALUE_STR: - if(size) - search_cond->pAddressVal = value; - break; - case MSG_SEARCH_CONDITION_SEARCH_VALUE_STR: - if(size) - search_cond->pSearchVal = value; + case MSG_FOLDER_INFO_NAME_STR: + strncpy(pFolder->folderName, value, _len); break; default: err = MSG_ERR_UNKNOWN; break; } + return err; } int msg_list_condition_set_str(void *condition_info, int field, char *value, int size) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!condition_info || !value) return MSG_ERR_NULL_POINTER; @@ -2702,32 +2756,32 @@ int msg_list_condition_set_str(void *condition_info, int field, char *value, int int msg_sendopt_set_bool(void *send_opt, int field, bool value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!send_opt) return MSG_ERR_NULL_POINTER; - MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)send_opt; - switch(field) - { - case MSG_SEND_OPT_SETTING_BOOL: + MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)send_opt; + switch(field) + { + case MSG_SEND_OPT_SETTING_BOOL: sendopt->bSetting = value; break; - case MSG_SEND_OPT_KEEPCOPY_BOOL: + case MSG_SEND_OPT_KEEPCOPY_BOOL: sendopt->bKeepCopy = value; break; - case MSG_SEND_OPT_DELIVER_REQ_BOOL: + case MSG_SEND_OPT_DELIVER_REQ_BOOL: sendopt->bDeliverReq = value; break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_sortrule_set_bool(void *sort_rule, int field, bool value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!sort_rule) return MSG_ERR_NULL_POINTER; @@ -2747,7 +2801,7 @@ int msg_sortrule_set_bool(void *sort_rule, int field, bool value) int msg_list_condition_set_bool(void *data, int field, bool value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!data) return MSG_ERR_NULL_POINTER; @@ -2773,7 +2827,7 @@ int msg_list_condition_set_bool(void *data, int field, bool value) int msg_sendopt_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; @@ -2799,7 +2853,7 @@ int msg_sendopt_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struc int msg_syncml_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; @@ -2820,14 +2874,13 @@ int msg_syncml_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct default: err = MSG_ERR_UNKNOWN; break; - } return err; } int msg_thread_index_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; @@ -2844,7 +2897,6 @@ int msg_thread_index_set_struct_handle(msg_struct_s *msg_struct, int field, msg_ default: err = MSG_ERR_UNKNOWN; break; - } return err; } @@ -2852,7 +2904,7 @@ int msg_thread_index_set_struct_handle(msg_struct_s *msg_struct, int field, msg_ int msg_list_condition_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; @@ -2869,7 +2921,6 @@ int msg_list_condition_set_struct_handle(msg_struct_s *msg_struct, int field, ms default: err = MSG_ERR_UNKNOWN; break; - } return err; } @@ -2877,7 +2928,7 @@ int msg_list_condition_set_struct_handle(msg_struct_s *msg_struct, int field, ms int msg_address_info_set_int(void *addrinfo, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!addrinfo) return MSG_ERR_NULL_POINTER; @@ -2895,7 +2946,7 @@ int msg_address_info_set_int(void *addrinfo, int field, int value) break; default: err = MSG_ERR_UNKNOWN; - break; + break; } return err; @@ -2904,7 +2955,7 @@ int msg_address_info_set_int(void *addrinfo, int field, int value) int msg_mms_sendopt_set_int(void *opt_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!opt_info) return MSG_ERR_NULL_POINTER; @@ -2922,7 +2973,7 @@ int msg_mms_sendopt_set_int(void *opt_info, int field, int value) break; default: err = MSG_ERR_UNKNOWN; - break; + break; } return err; @@ -2930,7 +2981,7 @@ int msg_mms_sendopt_set_int(void *opt_info, int field, int value) int msg_reject_message_set_int(void *msg_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_info) return MSG_ERR_NULL_POINTER; @@ -2945,7 +2996,7 @@ int msg_reject_message_set_int(void *msg_info, int field, int value) break; default: err = MSG_ERR_UNKNOWN; - break; + break; } return err; @@ -2953,126 +3004,129 @@ int msg_reject_message_set_int(void *msg_info, int field, int value) int msg_address_info_set_str(void *addr_info, int field, char *value, int size) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!addr_info || !value) return MSG_ERR_NULL_POINTER; - MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info; - int _len = 0; - - switch(field) - { - case MSG_ADDRESS_INFO_ADDRESS_VALUE_STR: - (size > MAX_ADDRESS_VAL_LEN)? _len = MAX_ADDRESS_VAL_LEN : _len = size; - memset(pAddr->addressVal, 0x00, sizeof(pAddr->addressVal)); + + MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info; + int _len = 0; + + switch(field) + { + case MSG_ADDRESS_INFO_ADDRESS_VALUE_STR: + (size > MAX_ADDRESS_VAL_LEN)? _len = MAX_ADDRESS_VAL_LEN : _len = size; + memset(pAddr->addressVal, 0x00, sizeof(pAddr->addressVal)); strncpy(pAddr->addressVal, value, _len); break; - case MSG_ADDRESS_INFO_DISPLAYNAME_STR: - (size > MAX_DISPLAY_NAME_LEN)? _len = MAX_DISPLAY_NAME_LEN : _len = size; - memset(pAddr->displayName, 0x00, sizeof(pAddr->displayName)); + case MSG_ADDRESS_INFO_DISPLAYNAME_STR: + (size > MAX_DISPLAY_NAME_LEN)? _len = MAX_DISPLAY_NAME_LEN : _len = size; + memset(pAddr->displayName, 0x00, sizeof(pAddr->displayName)); strncpy(pAddr->displayName, value, _len); break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_media_info_set_str(void *media_info, int field, char *value, int size) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!media_info || !value) return MSG_ERR_NULL_POINTER; + MSG_MEDIA_INFO_S *pAddr = (MSG_MEDIA_INFO_S *)media_info; - int _len = 0; + int _len = 0; - switch(field) - { - case MSG_MEDIA_ITEM_STR: - (size > MSG_FILEPATH_LEN_MAX)? _len = MSG_FILEPATH_LEN_MAX : _len = size; - memset(pAddr->media_item, 0x00, sizeof(pAddr->media_item)); + switch(field) + { + case MSG_MEDIA_ITEM_STR: + (size > MSG_FILEPATH_LEN_MAX)? _len = MSG_FILEPATH_LEN_MAX : _len = size; + memset(pAddr->media_item, 0x00, sizeof(pAddr->media_item)); strncpy(pAddr->media_item, value, _len); break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_reject_message_set_str(void *msg_info, int field, char *value, int size) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_info || !value) return MSG_ERR_NULL_POINTER; - MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info; - int _len = 0; - (size > MAX_MSG_TEXT_LEN)? _len = MAX_MSG_TEXT_LEN : _len = size; - switch(field) - { - case MSG_REJECT_MESSAGE_MSGTEXT_STR: + + MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info; + int _len = 0; + (size > MAX_MSG_TEXT_LEN)? _len = MAX_MSG_TEXT_LEN : _len = size; + switch(field) + { + case MSG_REJECT_MESSAGE_MSGTEXT_STR: strncpy(pMsg->msgText, value, _len); break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_mms_sendopt_set_bool(void *option, int field, bool value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!option) return MSG_ERR_NULL_POINTER; - MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)option; - switch(field) - { - case MSG_MMS_SENDOPTION_READ_REQUEST_BOOL: + MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)option; + switch(field) + { + case MSG_MMS_SENDOPTION_READ_REQUEST_BOOL: pOpt->bReadReq = value; break; - case MSG_MMS_SENDOPTION_DELIVERY_CUSTOMTIME_BOOL: + case MSG_MMS_SENDOPTION_DELIVERY_CUSTOMTIME_BOOL: pOpt->bUseDeliveryCustomTime = value; break; - default: + default: err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_sms_sendopt_set_bool(void *option, int field, bool value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!option) return MSG_ERR_NULL_POINTER; - SMS_SENDINGOPT_S *pOpt = (SMS_SENDINGOPT_S *)option; - switch(field) - { - case MSG_SMS_SENDOPT_REPLYPATH_BOOL: + SMS_SENDINGOPT_S *pOpt = (SMS_SENDINGOPT_S *)option; + switch(field) + { + case MSG_SMS_SENDOPT_REPLYPATH_BOOL: pOpt->bReplyPath = value; break; - default: - err = MSG_ERR_UNKNOWN; + default: + err = MSG_ERR_UNKNOWN; break; - } + } return err; } EXPORT_API int msg_add_push_event(msg_handle_t handle, const msg_struct_t push_event) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -3085,6 +3139,7 @@ EXPORT_API int msg_add_push_event(msg_handle_t handle, const msg_struct_t push_e MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pPush = (msg_struct_s *)push_event; + MSG_TYPE_CHECK(pPush->type, MSG_STRUCT_PUSH_CONFIG_INFO); try { @@ -3101,13 +3156,13 @@ EXPORT_API int msg_add_push_event(msg_handle_t handle, const msg_struct_t push_e EXPORT_API int msg_delete_push_event(msg_handle_t handle, const msg_struct_t push_event) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -3120,6 +3175,7 @@ EXPORT_API int msg_delete_push_event(msg_handle_t handle, const msg_struct_t pus MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pPush = (msg_struct_s *)push_event; + MSG_TYPE_CHECK(pPush->type, MSG_STRUCT_PUSH_CONFIG_INFO); try { @@ -3136,13 +3192,13 @@ EXPORT_API int msg_delete_push_event(msg_handle_t handle, const msg_struct_t pus EXPORT_API int msg_update_push_event(msg_handle_t handle, const msg_struct_t src_event, const msg_struct_t dst_event) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -3155,7 +3211,10 @@ EXPORT_API int msg_update_push_event(msg_handle_t handle, const msg_struct_t src MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pSrc = (msg_struct_s *)src_event; + MSG_TYPE_CHECK(pSrc->type, MSG_STRUCT_PUSH_CONFIG_INFO); + msg_struct_s *pDst = (msg_struct_s *)dst_event; + MSG_TYPE_CHECK(pDst->type, MSG_STRUCT_PUSH_CONFIG_INFO); try { @@ -3170,114 +3229,119 @@ EXPORT_API int msg_update_push_event(msg_handle_t handle, const msg_struct_t src return err; } -char* msg_push_config_get_str(void *event_info, int field, int size) +int msg_push_config_get_str(void *event_info, int field, char *value, int size) { - char *result = NULL; MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event_info; switch(field) { - case MSG_PUSH_CONFIG_CONTENT_TYPE_STR: - result = pEvent->contentType; + case MSG_PUSH_CONFIG_CONTENT_TYPE_STR: + strncpy(value, pEvent->contentType, size); break; - case MSG_PUSH_CONFIG_APPLICATON_ID_STR: - result = pEvent->appId; + case MSG_PUSH_CONFIG_APPLICATON_ID_STR: + strncpy(value, pEvent->appId, size); break; - case MSG_PUSH_CONFIG_PACKAGE_NAME_STR: - result = pEvent->pkgName; + case MSG_PUSH_CONFIG_PACKAGE_NAME_STR: + strncpy(value, pEvent->pkgName, size); break; default: - result = NULL; - break; + return MSG_ERR_INVALID_PARAMETER; } - return result; + + return MSG_SUCCESS; } -bool msg_push_config_get_bool(void *event_info, int field) +int msg_push_config_get_bool(void *event_info, int field, bool *value) { - bool result = false; + if (!event_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event_info; + switch(field) { - case MSG_PUSH_CONFIG_LAUNCH_BOOL: - result = pEvent->bLaunch; + case MSG_PUSH_CONFIG_LAUNCH_BOOL: + *value = pEvent->bLaunch; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + return ret; } int msg_push_config_set_str(void *event_info, int field, char *value, int size) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!event_info || !value) return MSG_ERR_NULL_POINTER; - MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event_info; - int _len = 0; - switch(field) - { - case MSG_PUSH_CONFIG_CONTENT_TYPE_STR: - (size > MAX_WAPPUSH_CONTENT_TYPE_LEN)? _len = MAX_WAPPUSH_CONTENT_TYPE_LEN : _len = size; + MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event_info; + int _len = 0; + + switch(field) + { + case MSG_PUSH_CONFIG_CONTENT_TYPE_STR: + (size > MAX_WAPPUSH_CONTENT_TYPE_LEN)? _len = MAX_WAPPUSH_CONTENT_TYPE_LEN : _len = size; strncpy(pEvent->contentType, value, _len); break; - case MSG_PUSH_CONFIG_APPLICATON_ID_STR: - (size > MAX_WAPPUSH_ID_LEN)? _len = MAX_WAPPUSH_ID_LEN : _len = size; + case MSG_PUSH_CONFIG_APPLICATON_ID_STR: + (size > MAX_WAPPUSH_ID_LEN)? _len = MAX_WAPPUSH_ID_LEN : _len = size; strncpy(pEvent->appId, value, _len); break; - case MSG_PUSH_CONFIG_PACKAGE_NAME_STR: - (size > MSG_FILEPATH_LEN_MAX)? _len = MSG_FILEPATH_LEN_MAX : _len = size; + case MSG_PUSH_CONFIG_PACKAGE_NAME_STR: + (size > MSG_FILEPATH_LEN_MAX)? _len = MSG_FILEPATH_LEN_MAX : _len = size; strncpy(pEvent->pkgName, value, _len); break; - default: - err = MSG_ERR_UNKNOWN; + default: + err = MSG_ERR_UNKNOWN; break; - } + } return err; } int msg_push_config_set_bool(void *event, int field, bool value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!event) return MSG_ERR_NULL_POINTER; MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event; - switch(field) - { - case MSG_PUSH_CONFIG_LAUNCH_BOOL: - pEvent->bLaunch = value; + switch(field) + { + case MSG_PUSH_CONFIG_LAUNCH_BOOL: + pEvent->bLaunch = value; break; - default: - err = MSG_ERR_UNKNOWN; + default: + err = MSG_ERR_UNKNOWN; break; - } + } return err; } -char* msg_media_item_get_str(void *data, int field, int size) +int msg_media_item_get_str(void *data, int field, char *value, int size) { - char *result = NULL; MSG_MEDIA_INFO_S *pMedia = (MSG_MEDIA_INFO_S *)data; switch(field) { case MSG_MEDIA_ITEM_STR: - result = pMedia->media_item; + strncpy(value, pMedia->media_item, size); break; case MSG_MEDIA_MIME_TYPE_STR: - result = pMedia->mime_type; + strncpy(value, pMedia->mime_type, size); break; case MSG_MEDIA_THUMB_PATH_STR: - result = pMedia->thumb_path; + strncpy(value, pMedia->thumb_path, size); break; default: - result = NULL; - break; + return MSG_ERR_INVALID_PARAMETER; } - return result; + + return MSG_SUCCESS; } int msg_media_item_get_int(void *data, int field, int *value) @@ -3290,12 +3354,12 @@ int msg_media_item_get_int(void *data, int field, int *value) MSG_MEDIA_INFO_S *pMedia = (MSG_MEDIA_INFO_S *)data; switch (field) { - case MSG_MEDIA_MESSAGE_ID_INT: - *value = pMedia->msg_id; - break; - default : - ret = MSG_ERR_INVALID_PARAMETER; - break; + case MSG_MEDIA_MESSAGE_ID_INT: + *value = pMedia->msg_id; + break; + default : + ret = MSG_ERR_INVALID_PARAMETER; + break; } return ret; diff --git a/mapi/msg_svc.cpp b/mapi/msg_svc.cpp index 4a322ca..c36a3ad 100755 --- a/mapi/msg_svc.cpp +++ b/mapi/msg_svc.cpp @@ -26,12 +26,6 @@ #include "msg_private.h" #include "msg.h" -#define MSG_TYPE_CHECK(a, b) \ - ({\ - if(a != (b & 0xff00)) return MSG_ERR_INVALID_PARAMETER; \ - })\ - - void __msg_release_list_item(gpointer data) { if (data == NULL) @@ -43,7 +37,7 @@ void __msg_release_list_item(gpointer data) EXPORT_API msg_struct_t msg_create_struct(int field) { - CHECK_MSG_SUPPORTED_RETURN_NULL(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED_RETURN_NULL(MSG_TELEPHONY_SMS_FEATURE); msg_struct_s *msg_struct = new msg_struct_s; memset(msg_struct, 0x00, sizeof(msg_struct_s)); @@ -147,12 +141,6 @@ EXPORT_API msg_struct_t msg_create_struct(int field) memset(msg_struct->data, 0x00, sizeof(MSG_FOLDER_INFO_S)); break; } - case MSG_STRUCT_SEARCH_CONDITION: - { - msg_struct->data = new MSG_SEARCH_CONDITION_S; - memset(msg_struct->data, 0x00, sizeof(MSG_SEARCH_CONDITION_S)); - break; - } case MSG_STRUCT_MSG_LIST_CONDITION: { msg_struct->data = new MSG_LIST_CONDITION_S; @@ -175,28 +163,30 @@ EXPORT_API msg_struct_t msg_create_struct(int field) } case MSG_STRUCT_SETTING_SMSC_OPT : { - msg_struct->data = new MSG_SMSC_LIST_HIDDEN_S; - memset(msg_struct->data, 0x00, sizeof(MSG_SMSC_LIST_HIDDEN_S)); + msg_struct->data = new MSG_SMSC_LIST_HIDDEN_S; + memset(msg_struct->data, 0x00, sizeof(MSG_SMSC_LIST_HIDDEN_S)); - MSG_SMSC_LIST_HIDDEN_S *pTmp = (MSG_SMSC_LIST_HIDDEN_S *)msg_struct->data; - pTmp->simIndex = MSG_SIM_SLOT_ID_1; // default sim index + MSG_SMSC_LIST_HIDDEN_S *pTmp = (MSG_SMSC_LIST_HIDDEN_S *)msg_struct->data; + pTmp->simIndex = MSG_SIM_SLOT_ID_1; // default sim index - msg_struct_list_s *smsc_list = (msg_struct_list_s *)new msg_struct_list_s; - memset(smsc_list, 0x00, sizeof(msg_struct_list_s)); + msg_struct_list_s *smsc_list = (msg_struct_list_s *)new msg_struct_list_s; + memset(smsc_list, 0x00, sizeof(msg_struct_list_s)); - pTmp->smsc_list = smsc_list; + pTmp->smsc_list = smsc_list; - smsc_list->msg_struct_info = (msg_struct_t *)calloc(SMSC_LIST_MAX, sizeof(msg_struct_t)); + smsc_list->msg_struct_info = (msg_struct_t *)calloc(SMSC_LIST_MAX, sizeof(msg_struct_t)); - msg_struct_s *pStructTmp = NULL; + if (smsc_list->msg_struct_info != NULL) { + msg_struct_s *pStructTmp = NULL; - for (int i = 0; i < SMSC_LIST_MAX; i++) { - pStructTmp = (msg_struct_s *)new msg_struct_s; - pStructTmp->type = MSG_STRUCT_SETTING_SMSC_INFO; - pStructTmp->data = new MSG_SMSC_DATA_S; - memset(pStructTmp->data, 0x00, sizeof(MSG_SMSC_DATA_S)); - smsc_list->msg_struct_info[i] = (msg_struct_t)pStructTmp; - } + for (int i = 0; i < SMSC_LIST_MAX; i++) { + pStructTmp = (msg_struct_s *)new msg_struct_s; + pStructTmp->type = MSG_STRUCT_SETTING_SMSC_INFO; + pStructTmp->data = new MSG_SMSC_DATA_S; + memset(pStructTmp->data, 0x00, sizeof(MSG_SMSC_DATA_S)); + smsc_list->msg_struct_info[i] = (msg_struct_t)pStructTmp; + } + } break; } case MSG_STRUCT_SETTING_SMSC_INFO : @@ -207,28 +197,29 @@ EXPORT_API msg_struct_t msg_create_struct(int field) } case MSG_STRUCT_SETTING_CB_OPT : { - msg_struct->data = new MSG_CBMSG_OPT_HIDDEN_S; - memset(msg_struct->data, 0x00, sizeof(MSG_CBMSG_OPT_HIDDEN_S)); - - MSG_CBMSG_OPT_HIDDEN_S *pTmp = (MSG_CBMSG_OPT_HIDDEN_S *)msg_struct->data; - pTmp->simIndex = MSG_SIM_SLOT_ID_1; // default sim index + msg_struct->data = new MSG_CBMSG_OPT_HIDDEN_S; + memset(msg_struct->data, 0x00, sizeof(MSG_CBMSG_OPT_HIDDEN_S)); - pTmp->channelData = (msg_struct_list_s *)new msg_struct_list_s; - memset(pTmp->channelData, 0x00, sizeof(msg_struct_list_s)); + MSG_CBMSG_OPT_HIDDEN_S *pTmp = (MSG_CBMSG_OPT_HIDDEN_S *)msg_struct->data; + pTmp->simIndex = MSG_SIM_SLOT_ID_1; // default sim index - pTmp->channelData->msg_struct_info = (msg_struct_t *)calloc(CB_CHANNEL_MAX, sizeof(msg_struct_t)); + pTmp->channelData = (msg_struct_list_s *)new msg_struct_list_s; + memset(pTmp->channelData, 0x00, sizeof(msg_struct_list_s)); - msg_struct_s *pStructTmp = NULL; + pTmp->channelData->msg_struct_info = (msg_struct_t *)calloc(CB_CHANNEL_MAX, sizeof(msg_struct_t)); - for (int i = 0; i < CB_CHANNEL_MAX; i++) { - pStructTmp = (msg_struct_s *)new msg_struct_s; - pStructTmp->type = MSG_STRUCT_SETTING_CB_CHANNEL_INFO; - pStructTmp->data = new MSG_CB_CHANNEL_INFO_S; + if (pTmp->channelData->msg_struct_info != NULL) { + msg_struct_s *pStructTmp = NULL; - memset(pStructTmp->data, 0x00, sizeof(MSG_CB_CHANNEL_INFO_S)); - pTmp->channelData->msg_struct_info[i] = (msg_struct_t)pStructTmp; - } + for (int i = 0; i < CB_CHANNEL_MAX; i++) { + pStructTmp = (msg_struct_s *)new msg_struct_s; + pStructTmp->type = MSG_STRUCT_SETTING_CB_CHANNEL_INFO; + pStructTmp->data = new MSG_CB_CHANNEL_INFO_S; + memset(pStructTmp->data, 0x00, sizeof(MSG_CB_CHANNEL_INFO_S)); + pTmp->channelData->msg_struct_info[i] = (msg_struct_t)pStructTmp; + } + } break; } case MSG_STRUCT_SETTING_CB_CHANNEL_INFO : @@ -239,8 +230,8 @@ EXPORT_API msg_struct_t msg_create_struct(int field) } case MSG_STRUCT_SETTING_SMS_SEND_OPT : { - msg_struct->data = new MSG_SMS_SENDOPT_S; - memset(msg_struct->data, 0x00, sizeof(MSG_SMS_SENDOPT_S)); + msg_struct->data = new MSG_SMS_SENDOPT_S; + memset(msg_struct->data, 0x00, sizeof(MSG_SMS_SENDOPT_S)); break; } case MSG_STRUCT_SETTING_MMS_SEND_OPT : @@ -499,16 +490,6 @@ static int _release_msg_struct(msg_struct_t *msg_struct_handle) break; } - case MSG_STRUCT_SEARCH_CONDITION: - { - delete (MSG_SEARCH_CONDITION_S*)(msg_struct->data); - msg_struct->data = NULL; - - delete msg_struct; - *msg_struct_handle = NULL; - - break; - } case MSG_STRUCT_MSG_LIST_CONDITION: { MSG_LIST_CONDITION_S *pCond = (MSG_LIST_CONDITION_S*)(msg_struct->data); @@ -766,7 +747,7 @@ static int _release_msg_struct(msg_struct_t *msg_struct_handle) EXPORT_API int msg_release_struct(msg_struct_t *msg_struct_handle) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); int ret = _release_msg_struct(msg_struct_handle); @@ -778,7 +759,7 @@ EXPORT_API int msg_release_struct(msg_struct_t *msg_struct_handle) EXPORT_API int msg_release_list_struct(msg_struct_list_s *msg_struct_list) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; if (msg_struct_list == NULL) @@ -787,24 +768,12 @@ EXPORT_API int msg_release_list_struct(msg_struct_list_s *msg_struct_list) if (msg_struct_list->msg_struct_info == NULL) { if (msg_struct_list->nCount > 0) msg_struct_list->nCount = 0; - return err; + return MSG_ERR_NULL_POINTER; } if(msg_struct_list->nCount > 0) { - int structType = ((msg_struct_s *)msg_struct_list->msg_struct_info[0])->type; int listCnt = msg_struct_list->nCount; - switch (structType) - { -// case MSG_STRUCT_ADDRESS_INFO : -// { -// listCnt = MAX_TO_ADDRESS_CNT; -// break; -// } - default : - break; - } - for(int i = 0; i < listCnt; i++) { _release_msg_struct(&(msg_struct_list->msg_struct_info[i])); } @@ -824,11 +793,10 @@ EXPORT_API int msg_release_list_struct(msg_struct_list_s *msg_struct_list) EXPORT_API int msg_get_int_value(msg_struct_t msg_struct_handle, int field, int *value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; @@ -843,58 +811,55 @@ EXPORT_API int msg_get_int_value(msg_struct_t msg_struct_handle, int field, int err = msg_message_get_int_value(msg_struct->data, field, value); break; case MSG_STRUCT_FILTER: - *value = msg_get_filter_info_int(msg_struct->data, field); + err = msg_get_filter_info_int(msg_struct->data, field, value); break; case MSG_STRUCT_SYNCML_INFO : - *value = msg_syncml_info_get_int(msg_struct->data, field); + err = msg_syncml_info_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_COUNT_INFO : - *value = msg_count_info_get_int(msg_struct->data, field); + err = msg_count_info_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_THREAD_COUNT_INFO : - *value = msg_thread_count_get_int(msg_struct->data, field); + err = msg_thread_count_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_THREAD_LIST_INDEX : - *value = msg_thread_index_get_int(msg_struct->data, field); + err = msg_thread_index_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_SORT_RULE : - *value = msg_sortrule_get_int(msg_struct->data, field); + err = msg_sortrule_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_FOLDER_INFO : - *value = msg_folder_info_get_int(msg_struct->data, field); + err = msg_folder_info_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_THREAD_INFO : - *value = msg_thread_info_get_int(msg_struct->data, field); + err = msg_thread_info_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_CONV_INFO : - *value = msg_conv_info_get_int(msg_struct->data, field); - break; - case MSG_STRUCT_SEARCH_CONDITION : - *value = msg_search_condition_get_int(msg_struct->data, field); + err = msg_conv_info_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_MSG_LIST_CONDITION : - *value = msg_list_condition_get_int(msg_struct->data, field); + err = msg_list_condition_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_REPORT_STATUS_INFO : - *value = msg_report_status_get_int(msg_struct->data, field); + err = msg_report_status_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_ADDRESS_INFO : - *value = msg_address_info_get_int(msg_struct->data, field); + err = msg_address_info_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_MMS_SENDOPT : - *value = msg_mms_sendopt_get_int(msg_struct->data, field); + err = msg_mms_sendopt_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_REJECT_MSG_INFO : - *value = msg_reject_message_get_int(msg_struct->data, field); + err = msg_reject_message_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_REQUEST_INFO : - *value = msg_request_get_int(msg_struct->data, field); + err = msg_request_get_int(msg_struct->data, field, value); break; case MSG_STRUCT_SENT_STATUS_INFO : - *value = msg_sent_status_get_int((MSG_SENT_STATUS_S *)msg_struct->data, field); + err = msg_sent_status_get_int((MSG_SENT_STATUS_S *)msg_struct->data, field, value); break; case MSG_STRUCT_CB_MSG : - err = msg_cb_message_get_int_value (msg_struct->data, field, value); + err = msg_cb_message_get_int_value(msg_struct->data, field, value); break; case MSG_STRUCT_MMS: case MSG_STRUCT_MMS_PAGE: @@ -932,90 +897,52 @@ EXPORT_API int msg_get_int_value(msg_struct_t msg_struct_handle, int field, int return err; } -EXPORT_API int msg_get_str_value(msg_struct_t msg_struct_handle, int field, char *src, int size) +EXPORT_API int msg_get_str_value(msg_struct_t msg_struct_handle, int field, char *value, int size) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; + if (size < 0) + return MSG_ERR_INVALID_PARAMETER; + msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; if (msg_struct->data == NULL) return MSG_ERR_NULL_POINTER; - char *ret_str = NULL; - switch (msg_struct->type) { case MSG_STRUCT_MESSAGE_INFO : - err = msg_message_get_str_value(msg_struct->data, field, src, size); + err = msg_message_get_str_value(msg_struct->data, field, value, size); break; case MSG_STRUCT_FILTER: - ret_str = msg_get_filter_info_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_get_filter_info_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_FOLDER_INFO : - ret_str = msg_folder_info_get_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_folder_info_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_THREAD_INFO : - ret_str = msg_thread_info_get_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_thread_info_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_CONV_INFO : - ret_str = msg_conv_info_get_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); - break; - case MSG_STRUCT_SEARCH_CONDITION : - ret_str = msg_search_condition_get_str(msg_struct->data, field, size); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_conv_info_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_MSG_LIST_CONDITION : - ret_str = msg_list_condition_get_str(msg_struct->data, field, size); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_list_condition_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_ADDRESS_INFO : - ret_str = msg_address_info_get_str(msg_struct->data, field, size); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_address_info_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_REJECT_MSG_INFO : - ret_str = msg_reject_message_get_str(msg_struct->data, field, size); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_reject_message_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_MEDIA_INFO : - ret_str = msg_media_item_get_str(msg_struct->data, field, size); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_media_item_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_MMS: case MSG_STRUCT_MMS_PAGE: @@ -1027,30 +954,22 @@ EXPORT_API int msg_get_str_value(msg_struct_t msg_struct_handle, int field, char case MSG_STRUCT_MMS_SMIL_TEXT: case MSG_STRUCT_MMS_SMIL_AVI: case MSG_STRUCT_MULTIPART_INFO: - err = msg_mms_get_str_value(msg_struct, field, src, size); + err = msg_mms_get_str_value(msg_struct, field, value, size); break; case MSG_STRUCT_SETTING_GENERAL_OPT : case MSG_STRUCT_SETTING_SMSC_INFO : case MSG_STRUCT_SETTING_CB_CHANNEL_INFO : case MSG_STRUCT_SETTING_VOICE_MSG_OPT : - err = msg_setting_get_str_value(msg_struct, field, src, size); + err = msg_setting_get_str_value(msg_struct, field, value, size); break; case MSG_STRUCT_PUSH_CONFIG_INFO : - ret_str = msg_push_config_get_str(msg_struct->data, field, size); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_push_config_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_REPORT_STATUS_INFO: - ret_str = msg_report_status_get_str(msg_struct->data, field); - if (ret_str == NULL) - err = MSG_ERR_UNKNOWN; - else - strncpy(src, ret_str, size); + err = msg_report_status_get_str(msg_struct->data, field, value, size); break; case MSG_STRUCT_CB_MSG : - err = msg_cb_message_get_str_value(msg_struct->data, field, src, size); + err = msg_cb_message_get_str_value(msg_struct->data, field, value, size); break; default : err = MSG_ERR_INVALID_PARAMETER; @@ -1062,10 +981,10 @@ EXPORT_API int msg_get_str_value(msg_struct_t msg_struct_handle, int field, char EXPORT_API int msg_get_bool_value(msg_struct_t msg_struct_handle, int field, bool *value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; @@ -1076,31 +995,31 @@ EXPORT_API int msg_get_bool_value(msg_struct_t msg_struct_handle, int field, boo switch (msg_struct->type) { case MSG_STRUCT_FILTER : - *value = msg_get_filter_info_bool(msg_struct->data, field); + err = msg_get_filter_info_bool(msg_struct->data, field, value); break; case MSG_STRUCT_MESSAGE_INFO : err = msg_message_get_bool_value(msg_struct->data, field, value); break; case MSG_STRUCT_THREAD_INFO : - *value = msg_thread_info_get_bool(msg_struct->data, field); + err = msg_thread_info_get_bool(msg_struct->data, field, value); break; case MSG_STRUCT_CONV_INFO: - *value = msg_conv_get_bool(msg_struct->data, field); + err = msg_conv_get_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SENDOPT: - *value = msg_sendopt_get_bool(msg_struct->data, field); + err = msg_sendopt_get_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SORT_RULE: - *value = msg_sortrule_get_bool(msg_struct->data, field); + err = msg_sortrule_get_bool(msg_struct->data, field, value); break; case MSG_STRUCT_MSG_LIST_CONDITION: - *value = msg_list_condition_get_bool(msg_struct->data, field); + err = msg_list_condition_get_bool(msg_struct->data, field, value); break; case MSG_STRUCT_MMS_SENDOPT: - *value = msg_mms_sendopt_get_bool(msg_struct->data, field); + err = msg_mms_sendopt_get_bool(msg_struct->data, field, value); break; case MSG_STRUCT_SMS_SENDOPT: - *value = msg_sms_sendopt_get_bool(msg_struct->data, field); + err = msg_sms_sendopt_get_bool(msg_struct->data, field, value); break; case MSG_STRUCT_MMS: case MSG_STRUCT_MMS_PAGE: @@ -1122,6 +1041,9 @@ EXPORT_API int msg_get_bool_value(msg_struct_t msg_struct_handle, int field, boo case MSG_STRUCT_SETTING_GENERAL_OPT : err = msg_setting_get_bool_value(msg_struct, field, value); break; + case MSG_STRUCT_PUSH_CONFIG_INFO: + err = msg_push_config_get_bool(msg_struct->data, field, value); + break; default : err = MSG_ERR_INVALID_PARAMETER; break; @@ -1132,10 +1054,10 @@ EXPORT_API int msg_get_bool_value(msg_struct_t msg_struct_handle, int field, boo EXPORT_API int msg_get_struct_handle(msg_struct_t msg_struct_handle, int field, msg_struct_t *value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; @@ -1176,10 +1098,10 @@ EXPORT_API int msg_get_struct_handle(msg_struct_t msg_struct_handle, int field, EXPORT_API int msg_get_list_handle(msg_struct_t msg_struct_handle, int field, void **value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; @@ -1213,7 +1135,7 @@ EXPORT_API int msg_get_list_handle(msg_struct_t msg_struct_handle, int field, vo EXPORT_API int msg_set_int_value(msg_struct_t msg_struct_handle, int field, int value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; if (msg_struct_handle == NULL) @@ -1250,9 +1172,6 @@ EXPORT_API int msg_set_int_value(msg_struct_t msg_struct_handle, int field, int case MSG_STRUCT_FOLDER_INFO : err = msg_folder_info_set_int(msg_struct->data, field, value); break; - case MSG_STRUCT_SEARCH_CONDITION : - err = msg_search_condition_set_int(msg_struct->data, field, value); - break; case MSG_STRUCT_MSG_LIST_CONDITION : err = msg_list_condition_set_int(msg_struct->data, field, value); break; @@ -1305,12 +1224,15 @@ EXPORT_API int msg_set_int_value(msg_struct_t msg_struct_handle, int field, int EXPORT_API int msg_set_str_value(msg_struct_t msg_struct_handle, int field, char *value, int size) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; + if (size < 0) + return MSG_ERR_INVALID_PARAMETER; + msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; if (msg_struct->data == NULL) @@ -1327,9 +1249,6 @@ EXPORT_API int msg_set_str_value(msg_struct_t msg_struct_handle, int field, char case MSG_STRUCT_FOLDER_INFO : err = msg_folder_info_set_str(msg_struct->data, field, value, size); break; - case MSG_STRUCT_SEARCH_CONDITION : - err = msg_search_condition_set_str(msg_struct->data, field, value, size); - break; case MSG_STRUCT_MSG_LIST_CONDITION : err = msg_list_condition_set_str(msg_struct->data, field, value, size); break; @@ -1373,7 +1292,7 @@ EXPORT_API int msg_set_str_value(msg_struct_t msg_struct_handle, int field, char EXPORT_API int msg_set_bool_value(msg_struct_t msg_struct_handle, int field, bool value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; if (msg_struct_handle == NULL) @@ -1440,10 +1359,10 @@ EXPORT_API int msg_set_bool_value(msg_struct_t msg_struct_handle, int field, boo EXPORT_API int msg_set_struct_handle(msg_struct_t msg_struct_handle, int field, msg_struct_t value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; @@ -1484,10 +1403,10 @@ EXPORT_API int msg_set_struct_handle(msg_struct_t msg_struct_handle, int field, EXPORT_API int msg_set_list_handle(msg_struct_t msg_struct_handle, int field, void *value) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_struct_handle == NULL) + if (msg_struct_handle == NULL || value == NULL) return MSG_ERR_NULL_POINTER; msg_struct_s *msg_struct = (msg_struct_s *) msg_struct_handle; @@ -1509,7 +1428,7 @@ EXPORT_API int msg_set_list_handle(msg_struct_t msg_struct_handle, int field, vo EXPORT_API int msg_list_add_item(msg_struct_t msg_struct_handle, int field, msg_struct_t *item) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); if (msg_struct_handle == NULL || item == NULL) { return MSG_ERR_NULL_POINTER; } @@ -1539,7 +1458,7 @@ EXPORT_API int msg_list_add_item(msg_struct_t msg_struct_handle, int field, msg_ EXPORT_API msg_struct_t msg_list_nth_data(msg_list_handle_t list_handle, int index) { - CHECK_MSG_SUPPORTED_RETURN_NULL(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED_RETURN_NULL(MSG_TELEPHONY_SMS_FEATURE); if (list_handle == NULL) { return NULL; } @@ -1549,7 +1468,7 @@ EXPORT_API msg_struct_t msg_list_nth_data(msg_list_handle_t list_handle, int ind EXPORT_API int msg_list_length(msg_list_handle_t list_handle) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); if (list_handle == NULL) { return 0; } @@ -1559,7 +1478,7 @@ EXPORT_API int msg_list_length(msg_list_handle_t list_handle) EXPORT_API int msg_list_clear(msg_struct_t msg_struct_handle, int field) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); if (msg_struct_handle == NULL) { return MSG_ERR_NULL_POINTER; } @@ -1587,15 +1506,35 @@ EXPORT_API int msg_list_clear(msg_struct_t msg_struct_handle, int field) return err; } +EXPORT_API int msg_list_free(msg_list_handle_t list_handle) +{ + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + if (list_handle == NULL) { + return MSG_ERR_NULL_POINTER; + } + + g_list_free_full((GList *)list_handle, __msg_release_list_item); + list_handle = NULL; + + return MSG_SUCCESS; +} + EXPORT_API int msg_util_calculate_text_length(const char* msg_text, msg_encode_type_t msg_encode_type_to, unsigned int *text_size, unsigned int *segment_size, msg_encode_type_t *msg_encode_type_in) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); msg_error_t err = MSG_SUCCESS; - if (msg_text == NULL || text_size == NULL || segment_size == NULL) { - err = MSG_ERR_INVALID_PARAMETER; - return err; + if (msg_text == NULL || text_size == NULL || segment_size == NULL || msg_encode_type_in == NULL) { + return MSG_ERR_INVALID_PARAMETER; + } +#ifdef FEATURE_SMS_CDMA + if (msg_encode_type_to > MSG_ENCODE_ASCII7BIT) { +#else + if (msg_encode_type_to > MSG_ENCODE_GSM7BIT_ABNORMAL) { +#endif + MSG_FATAL("unsupported msg_encode_type [%d]", msg_encode_type_to); + return MSG_ERR_INVALID_PARAMETER; } msg_encode_type_t encodeType = MSG_ENCODE_AUTO; diff --git a/mapi/msg_transport.cpp b/mapi/msg_transport.cpp index c77b6fe..27af80f 100755 --- a/mapi/msg_transport.cpp +++ b/mapi/msg_transport.cpp @@ -32,18 +32,18 @@ ==================================================================================================*/ EXPORT_API int msg_submit_req(msg_handle_t handle, msg_struct_t req) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL ||req == NULL) + if (handle == NULL || req == NULL) { return MSG_ERR_INVALID_PARAMETER; } @@ -51,6 +51,7 @@ EXPORT_API int msg_submit_req(msg_handle_t handle, msg_struct_t req) MsgHandle* pHandle = (MsgHandle*)handle; msg_struct_s *pStruct = (msg_struct_s *)req; + MSG_TYPE_CHECK(pStruct->type, MSG_STRUCT_REQUEST_INFO); try { @@ -68,13 +69,13 @@ EXPORT_API int msg_submit_req(msg_handle_t handle, msg_struct_t req) EXPORT_API int msg_reg_sent_status_callback(msg_handle_t handle, msg_sent_status_cb cb, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -105,13 +106,13 @@ EXPORT_API int msg_reg_sent_status_callback(msg_handle_t handle, msg_sent_status EXPORT_API int msg_reg_sms_message_callback(msg_handle_t handle, msg_sms_incoming_cb cb, unsigned short port, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -143,12 +144,12 @@ EXPORT_API int msg_reg_sms_message_callback(msg_handle_t handle, msg_sms_incomin EXPORT_API int msg_reg_mms_conf_message_callback(msg_handle_t handle, msg_mms_conf_msg_incoming_cb cb, const char *app_id, void *user_param) { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -184,13 +185,13 @@ EXPORT_API int msg_reg_mms_conf_message_callback(msg_handle_t handle, msg_mms_co EXPORT_API int msg_reg_syncml_message_callback(msg_handle_t handle, msg_syncml_msg_incoming_cb cb, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -221,13 +222,13 @@ EXPORT_API int msg_reg_syncml_message_callback(msg_handle_t handle, msg_syncml_ EXPORT_API int msg_reg_lbs_message_callback(msg_handle_t handle, msg_lbs_msg_incoming_cb cb, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -258,13 +259,13 @@ EXPORT_API int msg_reg_lbs_message_callback(msg_handle_t handle, msg_lbs_msg_inc EXPORT_API int msg_reg_syncml_message_operation_callback(msg_handle_t handle, msg_syncml_msg_operation_cb cb, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -295,13 +296,13 @@ EXPORT_API int msg_reg_syncml_message_operation_callback(msg_handle_t handle, m EXPORT_API int msg_reg_push_message_callback(msg_handle_t handle, msg_push_msg_incoming_cb cb, const char *app_id, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -336,13 +337,13 @@ EXPORT_API int msg_reg_push_message_callback(msg_handle_t handle, msg_push_msg_ EXPORT_API int msg_reg_cb_message_callback(msg_handle_t handle, msg_cb_incoming_cb cb, bool bsave, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -373,13 +374,13 @@ EXPORT_API int msg_reg_cb_message_callback(msg_handle_t handle, msg_cb_incoming_ EXPORT_API int msg_reg_report_message_callback(msg_handle_t handle, msg_report_msg_incoming_cb cb, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -408,15 +409,15 @@ EXPORT_API int msg_reg_report_message_callback(msg_handle_t handle, msg_report_m } -EXPORT_API int msg_syncml_message_operation(msg_handle_t handle, msg_message_id_t msgId) +EXPORT_API int msg_syncml_message_operation(msg_handle_t handle, msg_message_id_t msgId) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_READ_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -518,12 +519,17 @@ static int msg_send_single_sms(const char *phone_num, const char *sms_text, msg_ addr_list.nCount = 1; addr_list.msg_struct_info = (msg_struct_t *)calloc(1, sizeof(msg_struct_t)); - addr_list.msg_struct_info[0] = (msg_struct_t)new msg_struct_s; - - msg_struct_s *pTmp; - pTmp = (msg_struct_s *)addr_list.msg_struct_info[0]; - pTmp->type = MSG_STRUCT_ADDRESS_INFO; - pTmp->data = &address; + if (addr_list.msg_struct_info) { + addr_list.msg_struct_info[0] = (msg_struct_t)new msg_struct_s; + msg_struct_s *pTmp; + pTmp = (msg_struct_s *)addr_list.msg_struct_info[0]; + pTmp->type = MSG_STRUCT_ADDRESS_INFO; + pTmp->data = &address; + } else { + MSG_ERR("Memory error"); + msg_close_msg_handle(&msgHandle); + return MSG_ERR_MEMORY_ERROR; + } msg_info.addr_list = (msg_struct_list_s *)&addr_list; @@ -585,11 +591,11 @@ static int msg_send_single_sms(const char *phone_num, const char *sms_text, msg_ EXPORT_API int msg_sms_send(const char *phone_num_list, const char *sms_text, msg_simple_sent_status_cb cb, void *user_param) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -602,13 +608,14 @@ EXPORT_API int msg_sms_send(const char *phone_num_list, const char *sms_text, ms char trimmed_num[strlen(phone_num_list)+1]; bzero(trimmed_num, strlen(phone_num_list)+1); + char *temp = NULL; msg_error_t retVal = msg_verify_number(phone_num_list, trimmed_num); if ( retVal != MSG_SUCCESS ) return retVal; - for( char* cur_num = strtok(trimmed_num,", "); cur_num ; cur_num = strtok(NULL,", ")) + for( char* cur_num = strtok_r(trimmed_num,", ", &temp); cur_num ; cur_num = strtok_r(NULL,", ", &temp)) { if (strlen(cur_num) > MAX_PHONE_NUMBER_LEN) { @@ -630,28 +637,32 @@ EXPORT_API int msg_sms_send(const char *phone_num_list, const char *sms_text, ms EXPORT_API int msg_sms_send_message(msg_handle_t handle, msg_struct_t req) { - CHECK_MSG_SUPPORTED(MSG_TELEPHONY_FEATURE); - msg_error_t err = MSG_SUCCESS; + CHECK_MSG_SUPPORTED(MSG_TELEPHONY_SMS_FEATURE); + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || !req) { + if (handle == NULL || req == NULL) + { MSG_FATAL("handle or req is NULL"); - return MSG_ERR_NULL_POINTER; + return MSG_ERR_INVALID_PARAMETER; } msg_struct_s *req_s = (msg_struct_s *)req; + MSG_TYPE_CHECK(req_s->type, MSG_STRUCT_REQUEST_INFO); + MSG_REQUEST_S *pReq = (MSG_REQUEST_S *)req_s->data; pReq->reqId = 1; msg_struct_s *msg_s = (msg_struct_s *)pReq->msg; + MSG_TYPE_CHECK(msg_s->type, MSG_STRUCT_MESSAGE_INFO); MSG_MESSAGE_HIDDEN_S *reqmsg = (MSG_MESSAGE_HIDDEN_S*)msg_s->data; @@ -661,13 +672,13 @@ EXPORT_API int msg_sms_send_message(msg_handle_t handle, msg_struct_t req) } if (reqmsg->mainType != MSG_SMS_TYPE) { - MSG_DEBUG("mainType is not SMS [%d]", reqmsg->mainType); - reqmsg->mainType = MSG_SMS_TYPE; + MSG_FATAL("mainType is not SMS [%d]", reqmsg->mainType); + return MSG_ERR_INVALID_PARAMETER; } if (reqmsg->subType > MSG_CONCAT_SIM_SMS) { - MSG_DEBUG("subType is not SMS [%d]", reqmsg->subType); - reqmsg->subType = MSG_NORMAL_SMS; + MSG_FATAL("subType is not SMS [%d]", reqmsg->subType); + return MSG_ERR_INVALID_PARAMETER; } reqmsg->folderId = MSG_OUTBOX_ID; // outbox fixed @@ -689,28 +700,31 @@ EXPORT_API int msg_sms_send_message(msg_handle_t handle, msg_struct_t req) EXPORT_API int msg_mms_send_message(msg_handle_t handle, msg_struct_t req) { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || !req) + if (handle == NULL || req == NULL) { MSG_FATAL("handle or req is NULL"); return MSG_ERR_INVALID_PARAMETER; } msg_struct_s *req_s = (msg_struct_s *)req; + MSG_TYPE_CHECK(req_s->type, MSG_STRUCT_REQUEST_INFO); + MSG_REQUEST_S *pReq = (MSG_REQUEST_S *)req_s->data; pReq->reqId = 1; msg_struct_s *msg_s = (msg_struct_s *)pReq->msg; + MSG_TYPE_CHECK(msg_s->type, MSG_STRUCT_MESSAGE_INFO); MSG_MESSAGE_HIDDEN_S *reqmsg = (MSG_MESSAGE_HIDDEN_S*)msg_s->data; @@ -744,7 +758,7 @@ EXPORT_API int msg_mms_send_read_report(msg_handle_t handle, msg_message_id_t ms //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } @@ -754,7 +768,15 @@ EXPORT_API int msg_mms_send_read_report(msg_handle_t handle, msg_message_id_t ms return MSG_ERR_INVALID_PARAMETER; } + if (mms_read_status < MSG_READ_REPORT_NONE || mms_read_status > MSG_READ_REPORT_REJECT_BY_USER) + { + MSG_FATAL("unsupported read report status [%d]", mms_read_status); + return MSG_ERR_INVALID_PARAMETER; + } + msg_struct_t req_t = msg_create_struct(MSG_STRUCT_REQUEST_INFO); + if (req_t == NULL) + return MSG_ERR_NOT_SUPPORTED; msg_struct_s *req_s = (msg_struct_s *)req_t; MSG_REQUEST_S *req = (MSG_REQUEST_S *)req_s->data; @@ -803,28 +825,30 @@ EXPORT_API int msg_mms_send_read_report(msg_handle_t handle, msg_message_id_t ms EXPORT_API int msg_mms_forward_message(msg_handle_t handle, msg_struct_t req) { CHECK_MSG_SUPPORTED(MSG_TELEPHONY_MMS_FEATURE); - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || !req ) + if (handle == NULL || req == NULL ) { MSG_FATAL("handle or req is NULL"); return MSG_ERR_INVALID_PARAMETER; } msg_struct_s *req_s = (msg_struct_s *)req; - MSG_REQUEST_S *pReq = (MSG_REQUEST_S *)req_s->data; + MSG_TYPE_CHECK(req_s->type, MSG_STRUCT_REQUEST_INFO); + MSG_REQUEST_S *pReq = (MSG_REQUEST_S *)req_s->data; pReq->reqId = 1; msg_struct_s *msg_s = (msg_struct_s *)pReq->msg; + MSG_TYPE_CHECK(msg_s->type, MSG_STRUCT_MESSAGE_INFO); MSG_MESSAGE_HIDDEN_S *reqmsg = (MSG_MESSAGE_HIDDEN_S*)msg_s->data; @@ -852,21 +876,25 @@ EXPORT_API int msg_mms_retrieve_message(msg_handle_t handle, msg_struct_t req) //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if ( handle == NULL|| !req) + if (handle == NULL || req == NULL) { MSG_FATAL("handle or req is NULL"); return MSG_ERR_INVALID_PARAMETER; } msg_struct_s *req_s = (msg_struct_s *)req; + MSG_TYPE_CHECK(req_s->type, MSG_STRUCT_REQUEST_INFO); + MSG_REQUEST_S *pReq = (MSG_REQUEST_S *)req_s->data; msg_struct_s *msg_s = (msg_struct_s *)pReq->msg; + MSG_TYPE_CHECK(msg_s->type, MSG_STRUCT_MESSAGE_INFO); + MSG_MESSAGE_HIDDEN_S *reqmsg = (MSG_MESSAGE_HIDDEN_S*)msg_s->data; reqmsg->mainType = MSG_MMS_TYPE; @@ -894,21 +922,25 @@ EXPORT_API int msg_mms_reject_message(msg_handle_t handle, msg_struct_t req) //Privilege check int ret = PRIV_MGR_ERROR_SUCCESS; ret = privacy_checker_check_by_privilege(MSG_SERVICE_WRITE_PRIV_NAME); - if(ret != PRIV_MGR_ERROR_SUCCESS) + if (ret != PRIV_MGR_ERROR_SUCCESS) { return MSG_ERR_PERMISSION_DENIED; } - if (handle == NULL || !req ) + if (handle == NULL || req == NULL) { MSG_FATAL("handle or req is NULL"); return MSG_ERR_INVALID_PARAMETER; } msg_struct_s *req_s = (msg_struct_s *)req; + MSG_TYPE_CHECK(req_s->type, MSG_STRUCT_REQUEST_INFO); + MSG_REQUEST_S *pReq = (MSG_REQUEST_S *)req_s->data; msg_struct_s *msg_s = (msg_struct_s *)pReq->msg; + MSG_TYPE_CHECK(msg_s->type, MSG_STRUCT_MESSAGE_INFO); + MSG_MESSAGE_HIDDEN_S *reqmsg = (MSG_MESSAGE_HIDDEN_S*)msg_s->data; reqmsg->mainType = MSG_MMS_TYPE; @@ -928,26 +960,33 @@ EXPORT_API int msg_mms_reject_message(msg_handle_t handle, msg_struct_t req) /* reject_msg_support */ -int msg_request_get_int(void *request_info, int field) +int msg_request_get_int(void *request_info, int field, int *value) { - int result = -1; + if (!request_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; + MSG_REQUEST_S *pRequest = (MSG_REQUEST_S *)request_info; + switch(field) { case MSG_REQUEST_REQUESTID_INT: - result = pRequest->reqId; + *value = pRequest->reqId; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } int msg_request_get_struct_handle(msg_struct_s *msg_struct, int field, void **value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; @@ -971,7 +1010,7 @@ int msg_request_get_struct_handle(msg_struct_s *msg_struct, int field, void **va int msg_request_set_int(void *request_info, int field, int value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!request_info) return MSG_ERR_NULL_POINTER; @@ -983,7 +1022,7 @@ int msg_request_set_int(void *request_info, int field, int value) break; default: err = MSG_ERR_UNKNOWN; - break; + break; } return err; @@ -991,7 +1030,7 @@ int msg_request_set_int(void *request_info, int field, int value) int msg_request_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value) { - msg_error_t err = MSG_SUCCESS; + msg_error_t err = MSG_SUCCESS; if(!msg_struct || !value) return MSG_ERR_NULL_POINTER; @@ -1040,20 +1079,25 @@ int msg_request_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struc } -int msg_sent_status_get_int(MSG_SENT_STATUS_S *sent_status_info, int field) +int msg_sent_status_get_int(MSG_SENT_STATUS_S *sent_status_info, int field, int *value) { - int result = -1; + if (!sent_status_info) + return MSG_ERR_NULL_POINTER; + + int ret = MSG_SUCCESS; switch(field) { case MSG_SENT_STATUS_REQUESTID_INT: - result = sent_status_info->reqId; + *value = sent_status_info->reqId; break; case MSG_SENT_STATUS_NETWORK_STATUS_INT: - result = sent_status_info->status; + *value = sent_status_info->status; break; default: + ret = MSG_ERR_INVALID_PARAMETER; break; } - return result; + + return ret; } |