From 9c076e89fa2e4106f1a6d216240a559b71f5de0f Mon Sep 17 00:00:00 2001 From: "jay.ho.park" Date: Tue, 5 Jan 2021 10:35:50 +0900 Subject: [PATCH 01/16] Pop item from queue to prevent duplicated request Change-Id: I04f4d7d7f07aa74e94b7a85ece4a29ed0f3501ea --- receiver/inc/ft.h | 5 +-- receiver/src/ft.cpp | 116 ++++++++++++++++++++++---------------------------- receiver/src/main.cpp | 25 ++++++++--- 3 files changed, 71 insertions(+), 75 deletions(-) diff --git a/receiver/inc/ft.h b/receiver/inc/ft.h index afab92e..f3a735c 100644 --- a/receiver/inc/ft.h +++ b/receiver/inc/ft.h @@ -33,10 +33,9 @@ gboolean is_init_sap(); void request_all_sticker_data(const char *mode, const char *type); bool request_sticker_data(const char *mode, const char *category, const char *type); -void request_auto_sync(); -void request_sticker_feature(); +bool request_sticker_feature(); void send_disconnect_message(); -void request_show_sync_notification(); +bool request_show_sync_notification(); bool get_job_progress(); diff --git a/receiver/src/ft.cpp b/receiver/src/ft.cpp index 4d24be9..9a717ee 100644 --- a/receiver/src/ft.cpp +++ b/receiver/src/ft.cpp @@ -93,6 +93,26 @@ static int sync_success_cnt = 0; static gboolean job_progress = FALSE; static int sync_complete_flags = 0; +void push_sticker_request(request_type req_type, const char *mode, const char *category, const char *type) +{ + StickerRequest pending_request; + + pending_request.req_type = req_type; + + if (mode != NULL) + pending_request.mode = string(mode); + + if (category != NULL) + pending_request.category = string(category); + + if (type != NULL) + pending_request.type = string(type); + + ReqQueue.push(pending_request); + STLOGI("Push sticker request: req_type[%d], mode[%s], category[%s], type[%s]", + pending_request.req_type, pending_request.mode.c_str(), pending_request.category.c_str(), pending_request.type.c_str()); +} + static void sticker_service_quit(); static void save_last_sync_info() @@ -374,14 +394,6 @@ bool request_sticker_data(const char *mode, const char *category, const char *ty if (!priv_data.socket) { job_progress = TRUE; - StickerRequest pending_request; - pending_request.req_type = REQUEST_TYPE_SYNC; - pending_request.mode = string(mode ? mode : "manual"); - pending_request.category = string(category ? category : "arsticker"); - pending_request.type = string(type ? type : "input"); - - ReqQueue.push(pending_request); - STLOGI("Push sync request"); return false; } @@ -403,6 +415,7 @@ bool request_sticker_data(const char *mode, const char *category, const char *ty if (_send_json_data(j_object) == FALSE) { STLOGE("Failed to send STICKER_SYNC_START_REQ"); + result = false; } else { @@ -429,19 +442,26 @@ static bool process_request_queue() switch (request.req_type) { case REQUEST_TYPE_FEATURE_REQ: STLOGD("[Request feature exchange]"); - request_sticker_feature(); + + if (true == request_sticker_feature()) + ReqQueue.pop(); + break; case REQUEST_TYPE_SYNC: STLOGD("[Request to sync sticker] mode: %s, category: %s, type: %s", request.mode.c_str(), request.category.c_str(), request.type.c_str()); - request_sticker_data(request.mode.c_str(), request.category.c_str(), request.type.c_str()); + if (true == request_sticker_data(request.mode.c_str(), request.category.c_str(), request.type.c_str())) + ReqQueue.pop(); + break; case REQUEST_TYPE_SHOW_NOTIFICATION: STLOGD("[Request to show notification]"); - request_show_sync_notification(); - ReqQueue.pop(); + + if (true == request_show_sync_notification()) + ReqQueue.pop(); + break; case REQUEST_TYPE_AUTOSYNC: STLOGD("[Request to sync automatically]"); @@ -455,65 +475,45 @@ static bool process_request_queue() return true; } -void request_auto_sync() -{ - STLOGD("Add request to sync automatically"); - StickerRequest pending_request; - pending_request.req_type = REQUEST_TYPE_AUTOSYNC; - ReqQueue.push(pending_request); -} - void request_all_sticker_data(const char *mode, const char *type) { - StickerRequest pending_request; - pending_request.req_type = REQUEST_TYPE_SYNC; - pending_request.mode = string(mode); - pending_request.type = string(type); - #ifdef VCONFKEY_STICKER_SUPPORTED_FEATURE int feature_flag = 0; if (vconf_get_int(VCONFKEY_STICKER_SUPPORTED_FEATURE, &feature_flag) == 0) { if (feature_flag & VCONFKEY_STICKER_FEATURE_AREMOJI) { - pending_request.category = string("arsticker"); - ReqQueue.push(pending_request); + push_sticker_request(REQUEST_TYPE_SYNC, mode, "arsticker", type); } if (feature_flag & VCONFKEY_STICKER_FEATURE_BITMOJI) { - pending_request.category = string("bitmoji"); - ReqQueue.push(pending_request); + push_sticker_request(REQUEST_TYPE_SYNC, mode, "bitmoji", type); } } else STLOGW("Failed to get value of VCONFKEY_STICKER_SUPPORTED_FEATURE"); #else - pending_request.category = string("arsticker"); - ReqQueue.push(pending_request); - pending_request.category = string("bitmoji"); - ReqQueue.push(pending_request); + push_sticker_request(REQUEST_TYPE_SYNC, mode, "arsticker", type); + push_sticker_request(REQUEST_TYPE_SYNC, mode, "bitmoji", type); #endif if (priv_data.socket) process_request_queue(); } -void request_sticker_feature() +bool request_sticker_feature() { + bool result = false; JsonObject *j_object = NULL; if (!priv_data.socket) { job_progress = TRUE; - StickerRequest pending_request; - pending_request.req_type = REQUEST_TYPE_FEATURE_REQ; - ReqQueue.push(pending_request); - STLOGI("Push sync feature request"); - return; + return false; } j_object = json_object_new(); if (j_object == NULL) { STLOGE("json object create error"); - return; + return false; } json_object_set_string_member(j_object, "msgId", STICKER_SYNC_FEATURE_REQ); @@ -521,15 +521,19 @@ void request_sticker_feature() if (_send_json_data(j_object) == FALSE) { STLOGE("Failed to send STICKER_SYNC_FEATURE_REQ"); + result = false; } else { job_progress = TRUE; + result = true; } json_object_unref(j_object); if (_create_thumbnail_directory() != 0) STLOGE("Failed to create thumbnail directory"); + + return result; } void send_disconnect_message() @@ -551,23 +555,20 @@ void send_disconnect_message() json_object_unref(j_object); } -void request_show_sync_notification() +bool request_show_sync_notification() { + bool result = false; JsonObject *j_object = NULL; if (!priv_data.socket) { job_progress = TRUE; - StickerRequest pending_request; - pending_request.req_type = REQUEST_TYPE_SHOW_NOTIFICATION; - ReqQueue.push(pending_request); - STLOGI("Push show notification request"); - return; + return false; } j_object = json_object_new(); if (j_object == NULL) { STLOGE("json object create error"); - return; + return false; } json_object_set_string_member(j_object, "msgId", STICKER_REQUEST_NOTI_REQ); @@ -575,11 +576,14 @@ void request_show_sync_notification() if (_send_json_data(j_object) == FALSE) { STLOGE("Failed to send STICKER_REQUEST_NOTI_REQ"); + result = false; } else { job_progress = TRUE; + result = true; } json_object_unref(j_object); + return result; } void reject_file() @@ -722,19 +726,6 @@ static void send_sync_start_response(int result_code) #endif } -static void pop_sticker_request(request_type req_type) -{ - if (ReqQueue.empty()) - return; - - StickerRequest request = ReqQueue.front(); - STLOGD ("request type : %d", request.req_type); - if (request.req_type == req_type) { - STLOGD ("pop sync request"); - ReqQueue.pop(); - } -} - void on_data_received(sap_socket_h socket, unsigned short int channel_id, unsigned int payload_length, void *buffer, void *user_data) /* message exchange on_receive callback (sap_agent_data_received_cb) */ @@ -793,9 +784,6 @@ on_data_received(sap_socket_h socket, unsigned short int channel_id, unsigned in #else STLOGW("No vconf supported feature"); #endif - - pop_sticker_request(REQUEST_TYPE_FEATURE_REQ); - if (!process_request_queue()) { sticker_service_quit(); } @@ -855,8 +843,6 @@ on_data_received(sap_socket_h socket, unsigned short int channel_id, unsigned in save_last_sync_info(); sticker_service_quit(); } - - pop_sticker_request(REQUEST_TYPE_SYNC); } } else if (msg_id == STICKER_SEND_START_REQ) { STLOGD("msg : %s", msg_id.c_str()); diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp index 6ba29ed..968b4f4 100644 --- a/receiver/src/main.cpp +++ b/receiver/src/main.cpp @@ -114,7 +114,8 @@ static bool check_sync_time_condition() if (timediff > MAX_WAIT_TIME) { STLOGD("Starting manual synchronization"); initialize_sap(); - request_show_sync_notification(); + if (false == request_show_sync_notification()) + push_sticker_request(REQUEST_TYPE_SHOW_NOTIFICATION, NULL, NULL, NULL); result = false; } else { if (timediff > SYNC_INTERVAL) @@ -205,7 +206,9 @@ static void process_request(app_control_h app_control, char *request) } else if (strcmp(request, "oobe") == 0) { initialize_sap(); - request_sticker_feature(); + + if (false == request_sticker_feature()) + push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL); } else { STLOGW("Unknown command : %s", request); @@ -235,8 +238,11 @@ static void process_auto_sync() if (preference_set_int(LAST_SYNC_STATUS, LAST_SYNC_STATUS_SYNC_NEEDED) != PREFERENCE_ERROR_NONE) STLOGE("Failed to set sync status as NEEDED"); initialize_sap(); - request_sticker_feature(); - request_auto_sync(); + + if (false == request_sticker_feature()) + push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL); + + push_sticker_request(REQUEST_TYPE_AUTOSYNC, NULL, NULL, NULL); } else { STLOGI("The status of battery is low"); @@ -257,8 +263,11 @@ static void process_auto_sync() if (last_sync_status == LAST_SYNC_STATUS_SYNC_NEEDED) { STLOGD("Last sync status is NEEDED(code: %d). Retrying to sync.", last_sync_status); initialize_sap(); - request_sticker_feature(); - request_auto_sync(); + + if (false == request_sticker_feature()) + push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL); + + push_sticker_request(REQUEST_TYPE_AUTOSYNC, NULL, NULL, NULL); } else { STLOGD("Last sync status is SUCCESS(code: %d). Don't have to retrying sync", last_sync_status); service_app_exit(); @@ -275,7 +284,9 @@ static void get_sticker_feature() if (vconf_get_int(VCONFKEY_STICKER_SUPPORTED_FEATURE, &feature_flag) == 0 && feature_flag == 0) { STLOGD("Request to get sticker feature"); initialize_sap(); - request_sticker_feature(); + + if (false == request_sticker_feature()) + push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL); } else { if (!is_init_sap()) -- 2.7.4 From 0a2b95f9096c226d622277a7c66b3ffe3d7f1aa5 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Thu, 25 Feb 2021 16:40:33 +0900 Subject: [PATCH 02/16] Add new APIs for setting/getting group image Change-Id: I40f1c6d1dbc396da6c700bdad462b2c52d345295 --- client/inc/sticker_consumer_main.h | 7 ++ client/src/sticker_consumer.c | 30 ++++++ client/src/sticker_dbus.c | 93 ++++++++++++++++++ client/src/sticker_dbus.h | 3 + client/src/sticker_provider.c | 100 +++++++++++++++++++ include/sticker_consumer.h | 30 ++++++ include/sticker_provider.h | 18 ++++ server/stickerd_data_manager.c | 125 +++++++++++++++++++++++- server/stickerd_data_manager.h | 3 + server/stickerd_db_manager.c | 193 +++++++++++++++++++++++++++++++++++++ server/stickerd_db_manager.h | 3 + sticker-parser/sticker-parser.c | 55 +++++++++++ 12 files changed, 657 insertions(+), 3 deletions(-) diff --git a/client/inc/sticker_consumer_main.h b/client/inc/sticker_consumer_main.h index f830204..57b4d8d 100644 --- a/client/inc/sticker_consumer_main.h +++ b/client/inc/sticker_consumer_main.h @@ -36,6 +36,13 @@ struct sticker_consumer_s { void *event_cb_user_data; }; +typedef struct sticker_group_image_s +{ + sticker_data_uri_type_e uri_type; + char *uri; + char *group; +} sticker_group_image_s; + #ifdef __cplusplus } #endif diff --git a/client/src/sticker_consumer.c b/client/src/sticker_consumer.c index 39297bf..cf3448d 100644 --- a/client/src/sticker_consumer.c +++ b/client/src/sticker_consumer.c @@ -504,4 +504,34 @@ EXPORT_API int sticker_consumer_unset_event_cb(sticker_consumer_h consumer_handl consumer_handle->event_cb_user_data = NULL; return STICKER_ERROR_NONE; +} + +EXPORT_API int sticker_consumer_group_image_list_foreach_all(sticker_consumer_h consumer_handle, sticker_consumer_group_image_list_foreach_cb callback, void *user_data) +{ + CHECK_STICKER_FEATURE(); + + int ret = 0; + GList *list = NULL; + + if (!consumer_handle || !callback) + return STICKER_ERROR_INVALID_PARAMETER; + + ret = sticker_dbus_get_group_image_list(consumer_handle->gdbus_connection, consumer_handle->app_id, &list); + if (ret != STICKER_ERROR_NONE) { + LOGE("Failed to get group image list : %d", ret); + ret = STICKER_ERROR_OPERATION_FAILED; + goto cleanup; + } + + for(GList *tmp = g_list_first(list); tmp != NULL; tmp=tmp->next) { + sticker_group_image_s *group_image = NULL; + group_image = (sticker_group_image_s *)tmp->data; + callback(group_image->group, group_image->uri_type, group_image->uri, user_data); + } + +cleanup: + if (list) + g_list_free_full(list, free); + + return ret; } \ No newline at end of file diff --git a/client/src/sticker_dbus.c b/client/src/sticker_dbus.c index a9f5635..75c1a89 100644 --- a/client/src/sticker_dbus.c +++ b/client/src/sticker_dbus.c @@ -1145,3 +1145,96 @@ int sticker_dbus_get_sticker_info_by_uri(GDBusConnection *gdbus_connection, stic return ret; } + +int sticker_dbus_check_group_exists(GDBusConnection *gdbus_connection, const char *app_id, const char *group, int *result) +{ + int ret; + GDBusMessage *reply = NULL; + GVariant *reply_body = NULL; + + ret = _send_sync_message(gdbus_connection, g_variant_new("(ss)", app_id, group), &reply, "check_group_exists"); + if (ret == STICKER_CLIENT_ERROR_NONE) { + reply_body = g_dbus_message_get_body(reply); + g_variant_get(reply_body, "(i)", result); + } + + if (reply_body) + g_variant_unref(reply_body); + + if (reply) + g_object_unref(reply); + + return ret; +} + +int sticker_dbus_set_group_image(GDBusConnection *gdbus_connection, const char *app_id, const char *group, sticker_data_uri_type_e type, const char *uri) +{ + int ret; + GDBusMessage *reply = NULL; + + ret = _send_sync_message(gdbus_connection, g_variant_new("(ssis)", app_id, group, (int)type, uri), &reply, "set_group_image"); + if (ret != STICKER_CLIENT_ERROR_NONE) + LOGE("failed to set group image"); + + if (reply) + g_object_unref(reply); + + return ret; +} + +int sticker_dbus_get_group_image_list(GDBusConnection *gdbus_connection, const char *app_id, GList **group_image_list) +{ + int ret; + GDBusMessage *reply = NULL; + GVariantIter *iter = NULL; + GVariant *reply_body = NULL; + int type; + char *group = NULL; + char *uri = NULL; + + if (group_image_list == NULL) { + LOGE("group_image_list is invalid"); + return STICKER_CLIENT_ERROR_INVALID_PARAMETER; + } + + ret = _send_sync_message(gdbus_connection, g_variant_new("(s)", app_id), &reply, "get_group_image_list"); + if (ret == STICKER_CLIENT_ERROR_NONE) { + reply_body = g_dbus_message_get_body(reply); + g_variant_get(reply_body, "(a(sis))", &iter); + + if (!iter) { + LOGD("failed to get iter"); + return STICKER_CLIENT_ERROR_OPERATION_FAILED; + } + + while (g_variant_iter_loop (iter, "(sis)", &group, &type, &uri)) { + sticker_group_image_s *group_image = NULL; + group_image = g_try_new0(sticker_group_image_s, 1); + if (group_image) { + if (group) { + group_image->group = strdup(group); + free(group); + group = NULL; + } + group_image->uri_type = (sticker_data_uri_type_e)type; + if (uri) { + group_image->uri = strdup(uri); + free(uri); + uri = NULL; + } + + *group_image_list = g_list_append(*group_image_list, group_image); + } + } + + g_variant_iter_free(iter); + } + + if (reply_body) + g_variant_unref(reply_body); + + if (reply) + g_object_unref(reply); + + return ret; +} \ No newline at end of file diff --git a/client/src/sticker_dbus.h b/client/src/sticker_dbus.h index c5643db..3705044 100644 --- a/client/src/sticker_dbus.h +++ b/client/src/sticker_dbus.h @@ -69,6 +69,9 @@ int sticker_dbus_check_file_exists(GDBusConnection *gdbus_connection, const char int sticker_dbus_insert_recent_sticker_info(GDBusConnection *gdbus_connection, int record_id); int sticker_dbus_get_recent_sticker_list(GDBusConnection *gdbus_connection, int count, GVariantIter **id_iter); int sticker_dbus_get_sticker_info_by_uri(GDBusConnection *gdbus_connection, sticker_data_h sticker_data, const char *uri); +int sticker_dbus_check_group_exists(GDBusConnection *gdbus_connection, const char *app_id, const char *group, int *result); +int sticker_dbus_set_group_image(GDBusConnection *gdbus_connection, const char *app_id, const char *group, sticker_data_uri_type_e type, const char *uri); +int sticker_dbus_get_group_image_list(GDBusConnection *gdbus_connection, const char *app_id, GList **group_image_list); #ifdef __cplusplus } diff --git a/client/src/sticker_provider.c b/client/src/sticker_provider.c index 18181c9..c975366 100644 --- a/client/src/sticker_provider.c +++ b/client/src/sticker_provider.c @@ -379,3 +379,103 @@ EXPORT_API int sticker_provider_delete_data_by_uri(sticker_provider_h provider_h return STICKER_ERROR_NONE; } + +EXPORT_API int sticker_provider_set_group_image(sticker_provider_h provider_handle, const char *group, sticker_data_uri_type_e type, const char *uri) +{ + CHECK_STICKER_FEATURE(); + + int ret; + int is_exist = 0; + char *app_id = NULL; + package_info_h package_info = NULL; + char *app_path = NULL; + char *file_path = NULL; + + if (!provider_handle || !group || !uri) + return STICKER_ERROR_INVALID_PARAMETER; + + ret = app_get_id(&app_id); + if (ret != APP_ERROR_NONE) { + LOGE("Failed to get app_id : %d", ret); //LCOV_EXCL_LINE + ret = STICKER_ERROR_OPERATION_FAILED; + goto cleanup; + } + + ret = sticker_dbus_check_group_exists(provider_handle->gdbus_connection, app_id, group, &is_exist); + if (ret != STICKER_ERROR_NONE) { + LOGE("Failed to check group exists : %d", ret); + ret = STICKER_ERROR_OPERATION_FAILED; + goto cleanup; + } + + if (!is_exist) { + LOGE("Group name does not exist"); + ret = STICKER_ERROR_INVALID_PARAMETER; + goto cleanup; + } + + if (type == STICKER_DATA_URI_LOCAL_PATH) { + ret = package_info_create(app_id, &package_info); + if (ret != PACKAGE_MANAGER_ERROR_NONE || package_info == NULL) { + LOGE("failed to create package_info. ret: %d", ret); //LCOV_EXCL_LINE + ret = STICKER_ERROR_OPERATION_FAILED; + goto cleanup; + } + + ret = package_info_get_root_path(package_info, &app_path); + if (ret != PACKAGE_MANAGER_ERROR_NONE || app_path == NULL) { + LOGE("failed to create package_info. ret: %d", ret); //LCOV_EXCL_LINE + ret = STICKER_ERROR_OPERATION_FAILED; + goto cleanup; + } + + int path_len = strlen(app_path) + strlen(uri) + 2; + file_path = (char *)calloc(path_len, sizeof(char)); + if (!file_path) { + LOGE("failed to alloc memory"); //LCOV_EXCL_LINE + ret = STICKER_ERROR_OPERATION_FAILED; + goto cleanup; + } + + if(uri[0] == '/') + snprintf(file_path, path_len, "%s%s",app_path, uri); + else + snprintf(file_path, path_len, "%s%s%s",app_path, "/", uri); //LCOV_EXCL_LINE + + if (access(file_path, F_OK) != 0) { + LOGE("%s does not exist", file_path); + ret = STICKER_ERROR_OPERATION_FAILED; + goto cleanup; + } + } + + ret = sticker_dbus_set_group_image(provider_handle->gdbus_connection, app_id, group, type, file_path ? file_path : uri); + if (ret != STICKER_ERROR_NONE) { + LOGE("Failed to set group image : %d", ret); + if (ret == STICKER_CLIENT_ERROR_NO_SUCH_FILE) + ret = STICKER_ERROR_NO_SUCH_FILE; + else + ret = STICKER_ERROR_OPERATION_FAILED; + } + +cleanup: + if (app_id) { + free(app_id); + app_id = NULL; + } + + if (package_info) + package_info_destroy(package_info); + + if (app_path) { + free(app_path); + app_path = NULL; + } + + if (file_path) { + free(file_path); + file_path = NULL; + } + + return ret; +} \ No newline at end of file diff --git a/include/sticker_consumer.h b/include/sticker_consumer.h index 322379c..41805de 100644 --- a/include/sticker_consumer.h +++ b/include/sticker_consumer.h @@ -112,6 +112,20 @@ typedef void (*sticker_consumer_keyword_list_foreach_cb)(const char *keyword, vo typedef void (*sticker_consumer_event_cb)(sticker_consumer_event_type_e event_type, sticker_data_h data_handle, void *user_data); /** + * @brief Called to retrieve group images in the sticker database. + * @details The sticker_consumer_group_image_list_foreach_all() must be called to invoke this callback function, synchronously. + * @since_tizen 6.5 + * @remarks @a group and @a uri should not be freed and can be used only in the callback. + * @param[in] group The group name of the stickers + * @param[in] type The URI type of the sticker group image URI + * @param[in] uri The URI of the sticker group image + * @param[in] user_data The user data passed from the foreach function + * @pre sticker_consumer_group_image_list_foreach_all() will invoke this callback. + * @see sticker_consumer_group_image_list_foreach_all() + */ +typedef void (*sticker_consumer_group_image_list_foreach_cb)(const char *group, sticker_data_uri_type_e type, const char *uri, void *user_data); + +/** * @brief Creates a sticker consumer handle. * @since_tizen 5.5 * @privlevel public @@ -373,6 +387,22 @@ int sticker_consumer_set_event_cb(sticker_consumer_h consumer_handle, sticker_co int sticker_consumer_unset_event_cb(sticker_consumer_h consumer_handle); /** + * @brief Retrieves images of all sticker groups in the database. + * @since_tizen 6.5 + * @param[in] consumer_handle The sticker consumer handle + * @param[in] callback The callback function to invoke + * @param[in] user_data The user data to be passed to the callback function + * @return 0 on success, otherwise a negative error value + * @retval #STICKER_ERROR_NONE Successful + * @retval #STICKER_ERROR_NOT_SUPPORTED Not supported + * @retval #STICKER_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #STICKER_ERROR_OPERATION_FAILED Operation failed + * @post This function invokes sticker_consumer_group_image_list_foreach_cb() repeatedly for getting data. + * @see sticker_consumer_group_image_list_foreach_cb() + */ +int sticker_consumer_group_image_list_foreach_all(sticker_consumer_h consumer_handle, sticker_consumer_group_image_list_foreach_cb callback, void *user_data); + +/** * @} */ diff --git a/include/sticker_provider.h b/include/sticker_provider.h index 65a4d78..945338d 100644 --- a/include/sticker_provider.h +++ b/include/sticker_provider.h @@ -253,6 +253,24 @@ int sticker_provider_get_sticker_count(sticker_provider_h provider_handle, int * int sticker_provider_data_foreach_all(sticker_provider_h provider_handle, int offset, int count, int *result, sticker_provider_data_foreach_cb callback, void *user_data); /** + * @brief Sets the image of the sticker group. + * @details @a uri must be a relative path like '/res/smile.png' when @a type is #STICKER_DATA_URI_LOCAL_PATH. + * @since_tizen 6.5 + * @param[in] provider_handle The sticker provider handle + * @param[in] group The group name for setting group image + * @param[in] type The URI type of the image file + * @param[in] uri The URI of the image file + * @return 0 on success, otherwise a negative error value + * @retval #STICKER_ERROR_NONE Successful + * @retval #STICKER_ERROR_NOT_SUPPORTED Not supported + * @retval #STICKER_ERROR_INVALID_PARAMETER Invalid parameter, e.g. @a group is @c NULL or the group name does not exist in the database + * @retval #STICKER_ERROR_OPERATION_FAILED Operation failed + * @retval #STICKER_ERROR_NO_SUCH_FILE No such file, e.g. @a uri is @c NULL or the specified file does not exist + * @see sticker_provider_insert_data() + */ +int sticker_provider_set_group_image(sticker_provider_h provider_handle, const char *group, sticker_data_uri_type_e type, const char *uri); + +/** * @} */ diff --git a/server/stickerd_data_manager.c b/server/stickerd_data_manager.c index d19dbdd..9d9ef83 100644 --- a/server/stickerd_data_manager.c +++ b/server/stickerd_data_manager.c @@ -41,6 +41,12 @@ #define MAX_ERROR_BUFFER 256 +enum { + STICKER_URI_TYPE_NONE, + STICKER_URI_TYPE_LOCAL_PATH, + STICKER_URI_TYPE_WEB_RESOURCE, +}; + static GHashTable *_monitoring_hash = NULL; static char error_buffer[MAX_ERROR_BUFFER]; static GList *consumer_list = NULL; @@ -165,6 +171,12 @@ static void _stickerd_client_dbus_method_call_handler(GDBusConnection *conn, con ret = stickerd_send_update_event(parameters, &reply_body); } else if (g_strcmp0(method_name, "get_sticker_info_by_uri") == 0) { ret = stickerd_get_sticker_info_by_uri(parameters, &reply_body); + } else if (g_strcmp0(method_name, "check_group_exists") == 0) { + ret = stickerd_check_group_exists(parameters, &reply_body); + } else if (g_strcmp0(method_name, "set_group_image") == 0) { + ret = stickerd_set_group_image(parameters, &reply_body); + } else if (g_strcmp0(method_name, "get_group_image_list") == 0) { + ret = stickerd_get_group_image_list(parameters, &reply_body); } if (ret == STICKERD_SERVER_ERROR_NONE) { @@ -352,6 +364,24 @@ int stickerd_register_dbus_interface(void) " " " " " " + + " " + " " + " " + " " + " " + + " " + " " + " " + " " + " " + " " + + " " + " " + " " + " " " " " "; @@ -732,7 +762,7 @@ int stickerd_insert_sticker_info(GVariant *parameters, GVariant **reply_body) sticker_info->keyword = g_list_append(sticker_info->keyword, strdup((const char *)keyword)); } - if (sticker_info->type == 1) { + if (sticker_info->type == STICKER_URI_TYPE_LOCAL_PATH) { if (_check_file_exist(sticker_info->app_id, sticker_info->uri) == 0) { sticker_info->uri = _convert_sticker_uri(sticker_info->uri, sticker_info->app_id); if (!sticker_info->uri) { @@ -894,7 +924,7 @@ int stickerd_insert_sticker_info_by_json(GVariant *parameters, GVariant **reply_ if (!sticker_info->uri || sticker_info->uri[0] == '\0') goto free_memory; - if (sticker_info->type == 1) { + if (sticker_info->type == STICKER_URI_TYPE_LOCAL_PATH) { if (_check_file_exist(sticker_info->app_id, sticker_info->uri) == 0) { sticker_info->uri = _convert_sticker_uri(sticker_info->uri, sticker_info->app_id); if (!sticker_info->uri) @@ -1070,7 +1100,7 @@ int stickerd_update_sticker_uri(GVariant *parameters, GVariant **reply_body) g_variant_get(parameters, "(i&si&s)", &record_id, &app_id, &type, &uri); - if (type == 1) { + if (type == STICKER_URI_TYPE_LOCAL_PATH) { if (_check_file_exist(app_id, uri) == 0) { uri = _convert_sticker_uri(uri, app_id); if (!uri) { @@ -1772,3 +1802,92 @@ cleanup: return ret; } + +int stickerd_check_group_exists(GVariant *parameters, GVariant **reply_body) +{ + int ret; + int result; + char *app_id = NULL; + char *group = NULL; + + g_variant_get(parameters, "(&s&s)", &app_id, &group); + + ret = stickerd_db_check_group_exists(&result, app_id, group); + if (ret != STICKERD_SERVER_ERROR_NONE) { + LOGE("Failed to check group exists"); + return STICKERD_SERVER_ERROR_OPERATION_FAILED; + } + + *reply_body = g_variant_new("(i)", result); + if (*reply_body == NULL) { + LOGE("Failed to create reply_body"); + return STICKERD_SERVER_ERROR_OPERATION_FAILED; + } + + return ret; +} + +int stickerd_set_group_image(GVariant *parameters, GVariant **reply_body) +{ + int ret; + int type; + char *app_id = NULL; + char *group = NULL; + char *uri = NULL; + + *reply_body = g_variant_new("()"); + if (*reply_body == NULL) { + LOGE("Failed to create reply_body"); + return STICKERD_SERVER_ERROR_OPERATION_FAILED; + } + + g_variant_get(parameters, "(&s&si&s)", &app_id, &group, &type, &uri); + + if (type == STICKER_URI_TYPE_LOCAL_PATH) { + if (_check_file_exist(app_id, uri) == 0) { + uri = _convert_sticker_uri(uri, app_id); + if(!uri) { + LOGE("failed to copy sticker file"); + return STICKERD_SERVER_ERROR_FILE_EXISTS; + } + } else { + LOGE("sticker file does not exist"); + return STICKERD_SERVER_ERROR_NO_SUCH_FILE; + } + } + + ret = stickerd_db_set_group_image(app_id, group, type, uri); + if (ret != STICKERD_SERVER_ERROR_NONE) { + LOGE("Failed to set group image"); + return STICKERD_SERVER_ERROR_OPERATION_FAILED; + } + + return ret; +} + +int stickerd_get_group_image_list(GVariant *parameters, GVariant **reply_body) +{ + int ret; + GVariantBuilder *builder = NULL; + char *app_id = NULL; + + g_variant_get(parameters, "(&s)", &app_id); + + builder = g_variant_builder_new(G_VARIANT_TYPE("a(sis)")); + ret = stickerd_db_get_group_image_list(builder, app_id); + if (ret != STICKERD_SERVER_ERROR_NONE) { + LOGE("Failed to get sticker group image list"); + g_variant_builder_unref(builder); + return STICKERD_SERVER_ERROR_OPERATION_FAILED; + } + + *reply_body = g_variant_new("(a(sis))", builder); + g_variant_builder_unref(builder); + + if (*reply_body == NULL) { + LOGE("Failed to create reply_body"); + return STICKERD_SERVER_ERROR_OPERATION_FAILED; + } + + return ret; +} \ No newline at end of file diff --git a/server/stickerd_data_manager.h b/server/stickerd_data_manager.h index e6ac7e7..92dad03 100644 --- a/server/stickerd_data_manager.h +++ b/server/stickerd_data_manager.h @@ -52,6 +52,9 @@ int stickerd_insert_recent_sticker_info(GVariant *parameters, GVariant **reply_b int stickerd_get_recent_sticker_info(GVariant *parameters, GVariant **reply_body); int stickerd_send_update_event(GVariant *parameters, GVariant **reply_body); int stickerd_get_sticker_info_by_uri(GVariant *parameters, GVariant **reply_body); +int stickerd_check_group_exists(GVariant *parameters, GVariant **reply_body); +int stickerd_set_group_image(GVariant *parameters, GVariant **reply_body); +int stickerd_get_group_image_list(GVariant *parameters, GVariant **reply_body); #ifdef __cplusplus } diff --git a/server/stickerd_db_manager.c b/server/stickerd_db_manager.c index 85a778e..37e3172 100644 --- a/server/stickerd_db_manager.c +++ b/server/stickerd_db_manager.c @@ -58,6 +58,13 @@ * | history_id | sticker_info_id | count | timestamp | * +------------+-----------------+-------+-----------+ * + * * sticker_group_info + * +----------+--------+------------+------+------+ + * | INT | TEXT | TEXT | INT | TEXT | + * +----------+--------+------------+------+------+ + * | group_id | app_id | group_name | type | uri | + * +----------+--------+------------+------+------+ + * */ #define STICKER_DB_PATH tzplatform_mkpath(TZ_SYS_DB, ".sticker_info.db") @@ -65,10 +72,12 @@ #define STICKER_KEYWORD_INFO_CREATE_TABLE "CREATE TABLE IF NOT EXISTS sticker_keyword_info(keyword_id INTEGER PRIMARY KEY AUTOINCREMENT, sticker_info_id INTEGER, keyword TEXT NOT NULL, FOREIGN KEY (sticker_info_id) REFERENCES sticker_info(sticker_info_id) ON DELETE CASCADE)" #define STICKER_WHITELIST_INFO_CREATE_TABLE "CREATE TABLE IF NOT EXISTS sticker_whitelist_info(whitelist_id INTEGER PRIMARY KEY AUTOINCREMENT, provider_id TEXT NOT NULL, consumer_id TEXT NOT NULL)" #define STICKER_RECENT_HISTORY_INFO_CREATE_TABLE "CREATE TABLE IF NOT EXISTS sticker_recent_history_info(history_id INTEGER PRIMARY KEY AUTOINCREMENT, sticker_info_id INTEGER, count INTEGER NOT NULL, timestamp TEXT NOT NULL, FOREIGN KEY (sticker_info_id) REFERENCES sticker_info(sticker_info_id) ON DELETE CASCADE)" +#define STICKER_GROUP_INFO_CREATRE_TABLE "CREATE TABLE IF NOT EXISTS sticker_group_info(group_id INTEGER PRIMARY KEY AUTOINCREMENT, app_id TEXT NOT NULL, group_name TEXT NOT NULL, type INTEGER NOT NULL, uri TEXT NOT NULL)" #define STICKER_DB_INSERT_STICKER_INFO "INSERT INTO sticker_info (app_id, type, uri, thumbnail, description, group_name, date, display_type) VALUES (?, ?, ?, ?, ?, ?, DateTime('now','localtime'), ?)" #define STICKER_DB_INSERT_STICKER_KEYWORD_INFO "INSERT INTO sticker_keyword_info (sticker_info_id, keyword) VALUES (?, ?)" #define STICKER_DB_INSERT_RECENT_HISTORY "INSERT INTO sticker_recent_history_info (sticker_info_id, count, timestamp) VALUES (?, 1, DateTime('now','localtime'))" +#define STICKER_DB_INSERT_GROUP_IMAGE "INSERT INTO sticker_group_info (app_id, group_name, type, uri) VALUES (?, ?, ?, ?)" #define STICKER_DB_DELETE_STICKER_INFO "DELETE FROM sticker_info WHERE sticker_info_id = ?" #define STICKER_DB_DELETE_STICKER_KEYWORD_INFO "DELETE FROM sticker_keyword_info WHERE sticker_info_id = ?" @@ -81,6 +90,7 @@ #define STICKER_DB_UPDATE_STICKER_GROUP "UPDATE sticker_info SET group_name = ?, date = DateTime('now','localtime') WHERE sticker_info_id = ?" #define STICKER_DB_UPDATE_STICKER_DISP_TYPE "UPDATE sticker_info SET display_type = ?, date = DateTime('now','localtime') WHERE sticker_info_id = ?" #define STICKER_DB_UPDATE_RECENT_HISTORY "UPDATE sticker_recent_history_info SET count = count + 1, timestamp = DateTime('now','localtime') WHERE sticker_info_id = ?" +#define STICKER_DB_UPDATE_GROUP_IMAGE "UPDATE sticker_group_info SET type = ?, uri = ? WHERE app_id = ? AND group_name = ?" #define STICKER_DB_GET_LATEST_RECORD_ID "SELECT sticker_info_id FROM sticker_info ORDER BY sticker_info_id DESC LIMIT 1" #define STICKER_DB_GET_STICKER_INFO_BY_RECORD_ID "SELECT * FROM sticker_info WHERE sticker_info_id = ?" @@ -101,6 +111,9 @@ #define STICKER_DB_CHECK_RECENT_HISTORY_EXISTS "SELECT EXISTS(SELECT 1 FROM sticker_recent_history_info WHERE sticker_info_id = ? LIMIT 1)" #define STICKER_DB_GET_RECENT_HISTORY "SELECT sticker_info_id FROM sticker_recent_history_info ORDER BY datetime(timestamp) DESC LIMIT ?" #define STICKER_DB_GET_STICKER_INFO_BY_URI "SELECT * FROM sticker_info WHERE uri = ?" +#define STICKER_DB_CHECK_GROUP_EXISTS_IN_STICKER_INFO "SELECT EXISTS(SELECT 1 FROM sticker_info WHERE group_name = ? AND app_id = ? LIMIT 1)" +#define STICKER_DB_CHECK_GROUP_EXISTS_IN_GROUP_INFO "SELECT EXISTS(SELECT 1 FROM sticker_group_info WHERE group_name = ? AND app_id = ? LIMIT 1)" +#define STICKER_DB_GET_ALL_GROUP_IMAGE_LIST "SELECT group_name, type, uri FROM sticker_group_info WHERE app_id NOT IN (SELECT DISTINCT provider_id FROM sticker_whitelist_info WHERE provider_id NOT IN (SELECT provider_id FROM sticker_whitelist_info WHERE consumer_id = ?))" typedef enum { @@ -221,6 +234,13 @@ static int _recover_db(void) goto cleanup; } + ret = sqlite3_exec(db, STICKER_GROUP_INFO_CREATRE_TABLE, NULL, NULL, &err); + if (ret != SQLITE_OK) { + LOGE("Failed to create sticker_group_info table : %s", err); + ret = STICKERD_SERVER_ERROR_DB_FAILED; + goto cleanup; + } + is_corrupted = FALSE; cleanup: @@ -286,6 +306,13 @@ int stickerd_db_init(void) goto cleanup; } + ret = sqlite3_exec(db, STICKER_GROUP_INFO_CREATRE_TABLE, NULL, NULL, &err); + if (ret != SQLITE_OK) { + LOGE("Failed to create sticker_group_info table : %s", err); + ret = STICKERD_SERVER_ERROR_DB_FAILED; + goto cleanup; + } + ret = sqlite3_exec(db, "PRAGMA journal_mode = WAL", NULL, NULL, &err); if (ret != SQLITE_OK) { LOGE("Failed to set journal_mode : %s", err); @@ -338,6 +365,46 @@ static sqlite3 *_db_open(void) return db; } +static gboolean _check_group_exists(char *app_id, char *group) +{ + int ret; + gboolean result = FALSE; + sqlite3 *db = NULL; + sqlite3_stmt *stmt = NULL; + + db = _db_open(); + if (!db) + return FALSE; + + ret = sqlite3_prepare_v2(db, STICKER_DB_CHECK_GROUP_EXISTS_IN_GROUP_INFO, -1, &stmt, NULL); + if (ret != SQLITE_OK) { + LOGE("fail to check group exists : %s", sqlite3_errmsg(db)); + goto cleanup; + } + + sqlite3_bind_text(stmt, 1, group, -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 2, app_id, -1, SQLITE_TRANSIENT); + + ret = sqlite3_step(stmt); + if (ret == SQLITE_ERROR) { + LOGE("sqlite3_step() failed : ret(%d)", ret); + goto cleanup; + } + + result = sqlite3_column_int(stmt, 0); + + sqlite3_finalize(stmt); + sqlite3_close(db); + + return result; + +cleanup: + sqlite3_finalize(stmt); + sqlite3_close(db); + + return FALSE; +} + int stickerd_db_insert_sticker_info(int *record_id, sticker_info_db *sticker_info) { int ret; @@ -1094,4 +1161,130 @@ cleanup: sqlite3_close(db); return STICKERD_SERVER_ERROR_DB_FAILED; +} + +int stickerd_db_check_group_exists(int *result, char *app_id, char *group) +{ + int ret; + sqlite3 *db = NULL; + sqlite3_stmt *stmt = NULL; + + db = _db_open(); + if (!db) + return STICKERD_SERVER_ERROR_DB_FAILED; + + ret = sqlite3_prepare_v2(db, STICKER_DB_CHECK_GROUP_EXISTS_IN_STICKER_INFO, -1, &stmt, NULL); + if (ret != SQLITE_OK) { + LOGE("fail to check group exists : %s", sqlite3_errmsg(db)); + goto cleanup; + } + + sqlite3_bind_text(stmt, 1, group, -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 2, app_id, -1, SQLITE_TRANSIENT); + + ret = sqlite3_step(stmt); + if (ret == SQLITE_ERROR) { + LOGE("sqlite3_step() failed : ret(%d)", ret); + goto cleanup; + } + + *result = sqlite3_column_int(stmt, 0); + + sqlite3_finalize(stmt); + sqlite3_close(db); + + return STICKERD_SERVER_ERROR_NONE; + +cleanup: + sqlite3_finalize(stmt); + sqlite3_close(db); + + return STICKERD_SERVER_ERROR_DB_FAILED; +} + +int stickerd_db_set_group_image(char *app_id, char *group, int type, char *uri) +{ + int ret; + gboolean is_exist = FALSE; + sqlite3 *db = NULL; + sqlite3_stmt *stmt = NULL; + + db = _db_open(); + if (!db) + return STICKERD_SERVER_ERROR_DB_FAILED; + + is_exist = _check_group_exists(app_id, group); + const char* query = is_exist ? STICKER_DB_UPDATE_GROUP_IMAGE : STICKER_DB_INSERT_GROUP_IMAGE; + ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL); + if (ret != SQLITE_OK) { + LOGE("fail to set group image : %s", sqlite3_errmsg(db)); + goto cleanup; + } + + if (is_exist) { + sqlite3_bind_int(stmt, 1, type); + sqlite3_bind_text(stmt, 2, uri, -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 3, app_id, -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 4, group, -1, SQLITE_TRANSIENT); + } else { + sqlite3_bind_text(stmt, 1, app_id, -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 2, group, -1, SQLITE_TRANSIENT); + sqlite3_bind_int(stmt, 3, type); + sqlite3_bind_text(stmt, 4, uri, -1, SQLITE_TRANSIENT); + } + + ret = sqlite3_step(stmt); + if (ret == SQLITE_ERROR) { + LOGE("sqlite3_step() failed : ret(%d)", ret); + goto cleanup; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + + return STICKERD_SERVER_ERROR_NONE; + +cleanup: + sqlite3_finalize(stmt); + sqlite3_close(db); + + return STICKERD_SERVER_ERROR_DB_FAILED; +} + +int stickerd_db_get_group_image_list(GVariantBuilder *builder, char *app_id) +{ + int ret; + sqlite3 *db = NULL; + sqlite3_stmt *stmt = NULL; + + db = _db_open(); + if (!db) + return STICKERD_SERVER_ERROR_DB_FAILED; + + ret = sqlite3_prepare_v2(db, STICKER_DB_GET_ALL_GROUP_IMAGE_LIST, -1, &stmt, NULL); + if (ret != SQLITE_OK) { + LOGE("fail to get group image list : %s", sqlite3_errmsg(db)); + goto cleanup; + } + + sqlite3_bind_text(stmt, 1, app_id, -1, SQLITE_TRANSIENT); + + while (sqlite3_step(stmt) == SQLITE_ROW) { + const unsigned char *group = sqlite3_column_text(stmt, 0); + int uri_type = sqlite3_column_int(stmt, 1); + const unsigned char *uri = sqlite3_column_text(stmt, 2); + if (group && uri) + g_variant_builder_add(builder, "(sis)", strdup((const char *)group), uri_type, strdup((const char *)uri)); + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + + return STICKERD_SERVER_ERROR_NONE; + +cleanup: + sqlite3_finalize(stmt); + sqlite3_close(db); + + return STICKERD_SERVER_ERROR_DB_FAILED; } \ No newline at end of file diff --git a/server/stickerd_db_manager.h b/server/stickerd_db_manager.h index 53c1e42..b9e8cf3 100644 --- a/server/stickerd_db_manager.h +++ b/server/stickerd_db_manager.h @@ -64,6 +64,9 @@ int stickerd_db_get_group_list_by_display_type(GVariantBuilder *builder, char *a int stickerd_db_check_file_exists(int *result, char *uri); int stickerd_db_insert_recent_sticker_info(int record_id); int stickerd_db_get_sticker_info_by_uri(char *uri, sticker_info_db *sticker_info); +int stickerd_db_check_group_exists(int *result, char *app_id, char *group); +int stickerd_db_set_group_image(char *app_id, char *group, int type, char *uri); +int stickerd_db_get_group_image_list(GVariantBuilder *builder, char *app_id); #ifdef __cplusplus } diff --git a/sticker-parser/sticker-parser.c b/sticker-parser/sticker-parser.c index 71b7a0d..af9e3cc 100644 --- a/sticker-parser/sticker-parser.c +++ b/sticker-parser/sticker-parser.c @@ -46,6 +46,7 @@ #define STICKER_KEYWORD_INFO_CREATE_TABLE "CREATE TABLE IF NOT EXISTS sticker_keyword_info(keyword_id INTEGER PRIMARY KEY AUTOINCREMENT, sticker_info_id INTEGER, keyword TEXT NOT NULL, FOREIGN KEY (sticker_info_id) REFERENCES sticker_info(sticker_info_id) ON DELETE CASCADE)" #define STICKER_WHITELIST_INFO_CREATE_TABLE "CREATE TABLE IF NOT EXISTS sticker_whitelist_info(whitelist_id INTEGER PRIMARY KEY AUTOINCREMENT, provider_id TEXT NOT NULL, consumer_id TEXT NOT NULL)" #define STICKER_RECENT_HISTORY_INFO_CREATE_TABLE "CREATE TABLE IF NOT EXISTS sticker_recent_history_info(history_id INTEGER PRIMARY KEY AUTOINCREMENT, sticker_info_id INTEGER, count INTEGER NOT NULL, timestamp TEXT NOT NULL, FOREIGN KEY (sticker_info_id) REFERENCES sticker_info(sticker_info_id) ON DELETE CASCADE)" +#define STICKER_GROUP_INFO_CREATRE_TABLE "CREATE TABLE IF NOT EXISTS sticker_group_info(group_id INTEGER PRIMARY KEY AUTOINCREMENT, app_id TEXT NOT NULL, group_name TEXT NOT NULL, type INTEGER NOT NULL, uri TEXT NOT NULL)" #define UIFW_ID 502 #define APPFW_ID 301 #define MAX_ERROR_BUFFER 256 @@ -138,6 +139,12 @@ static void __recover_db() goto cleanup; } + ret = sqlite3_exec(db, STICKER_GROUP_INFO_CREATRE_TABLE, NULL, NULL, &err); + if (ret != SQLITE_OK) { + LOGE("Failed to create sticker_recent_history_info table : %s", err); + goto cleanup; + } + is_corrupted = FALSE; cleanup: @@ -200,6 +207,12 @@ static void __db_init() goto cleanup; } + ret = sqlite3_exec(db, STICKER_GROUP_INFO_CREATRE_TABLE, NULL, NULL, &err); + if (ret != SQLITE_OK) { + LOGE("Failed to create sticker_recent_history_info table : %s", err); + goto cleanup; + } + ret = sqlite3_exec(db, "PRAGMA journal_mode = WAL", NULL, NULL, &err); if (ret != SQLITE_OK) { LOGE("Failed to set journal_mode : %s", err); @@ -822,6 +835,47 @@ cleanup: return; } +static void __delete_group_info(const char *db_path, const char *app_id) +{ + int ret; + sqlite3 *db = NULL; + sqlite3_stmt *stmt = NULL; + + db = __db_open(db_path); + if (!db) + return; + + ret = sqlite3_prepare_v2(db, "DELETE FROM sticker_group_info WHERE app_id = ?", -1, &stmt, NULL); + if (ret != SQLITE_OK) { + LOGE("failed to delete group information : %s", sqlite3_errmsg(db)); + sqlite3_finalize(stmt); + sqlite3_close(db); + goto cleanup; + } + + sqlite3_bind_text(stmt, 1, app_id, -1, SQLITE_TRANSIENT); + + ret = sqlite3_step(stmt); + if (ret != SQLITE_OK && ret != SQLITE_DONE) { + LOGE("sqlite3_step() failed : ret(%d)", ret); + goto cleanup; + } + + if (sqlite3_changes(db) == 0) { + LOGE("No changes to DB"); + goto cleanup; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + return; + +cleanup: + sqlite3_finalize(stmt); + sqlite3_close(db); + return; +} + static int __remove_directory(const char *path, int is_error_stop) { DIR *dir_ptr = NULL; @@ -966,6 +1020,7 @@ int PKGMGR_MDPARSER_PLUGIN_UNINSTALL(const char *pkgid, const char *appid, GList } __delete_sticker_allowlist(db_path, appid); + __delete_group_info(db_path, appid); return 0; } -- 2.7.4 From 7de6418b992a6da879cbf79eeb1f7356e4790e0b Mon Sep 17 00:00:00 2001 From: InHong Han Date: Thu, 11 Mar 2021 18:11:16 +0900 Subject: [PATCH 03/16] Update package version to 0.1.70 Change-Id: I7f8db27813f29be3a6adc5ce25e706d5f0551ed7 --- packaging/capi-ui-sticker.spec | 2 +- receiver/tizen-manifest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/capi-ui-sticker.spec b/packaging/capi-ui-sticker.spec index 82fc3b4..3e22a82 100644 --- a/packaging/capi-ui-sticker.spec +++ b/packaging/capi-ui-sticker.spec @@ -1,6 +1,6 @@ Name: capi-ui-sticker Summary: Sticker client library and daemon -Version: 0.1.69 +Version: 0.1.70 Release: 1 Group: Graphics & UI Framework/Input License: Apache-2.0 diff --git a/receiver/tizen-manifest.xml b/receiver/tizen-manifest.xml index 5f37e88..9331a23 100644 --- a/receiver/tizen-manifest.xml +++ b/receiver/tizen-manifest.xml @@ -1,5 +1,5 @@ - + -- 2.7.4 From e32e8f55b41139eece82db73b5a3a2254894d69c Mon Sep 17 00:00:00 2001 From: InHong Han Date: Mon, 15 Mar 2021 17:33:24 +0900 Subject: [PATCH 04/16] Fix wrong error value Change-Id: I3ee112f10ae36ca3b13f71bcfa4b44bbed3f56bb --- client/src/sticker_provider.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/sticker_provider.c b/client/src/sticker_provider.c index c975366..079eaaa 100644 --- a/client/src/sticker_provider.c +++ b/client/src/sticker_provider.c @@ -444,7 +444,7 @@ EXPORT_API int sticker_provider_set_group_image(sticker_provider_h provider_hand if (access(file_path, F_OK) != 0) { LOGE("%s does not exist", file_path); - ret = STICKER_ERROR_OPERATION_FAILED; + ret = STICKER_ERROR_NO_SUCH_FILE; goto cleanup; } } -- 2.7.4 From 45f734efb3f029253916a512974e8a5e48a3b604 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Mon, 15 Mar 2021 17:36:58 +0900 Subject: [PATCH 05/16] Update package version to 0.1.71 Change-Id: Ieaa60b9d540aaf67554e4da4c56ddfa8cee8a07e --- packaging/capi-ui-sticker.spec | 2 +- receiver/tizen-manifest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/capi-ui-sticker.spec b/packaging/capi-ui-sticker.spec index 3e22a82..d562f0d 100644 --- a/packaging/capi-ui-sticker.spec +++ b/packaging/capi-ui-sticker.spec @@ -1,6 +1,6 @@ Name: capi-ui-sticker Summary: Sticker client library and daemon -Version: 0.1.70 +Version: 0.1.71 Release: 1 Group: Graphics & UI Framework/Input License: Apache-2.0 diff --git a/receiver/tizen-manifest.xml b/receiver/tizen-manifest.xml index 9331a23..f5f892d 100644 --- a/receiver/tizen-manifest.xml +++ b/receiver/tizen-manifest.xml @@ -1,5 +1,5 @@ - + -- 2.7.4 From 7804d313914164dfc23f512fc37e57438e32e4e7 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Fri, 19 Mar 2021 17:36:34 +0900 Subject: [PATCH 06/16] Fix branch past initialize issue If the variable is used after the target, it will be uninitialized. A goto jumps past the initialization of a variable. Change-Id: I41ecefd76dc71a6b194abd514c4231ac5597d986 Signed-off-by: Jihoon Kim --- client/src/sticker_data.c | 3 ++- server/stickerd_data_manager.c | 12 ++++++++---- server/stickerd_db_manager.c | 3 ++- sticker-parser/sticker-parser.c | 15 ++++++++++----- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/client/src/sticker_data.c b/client/src/sticker_data.c index 85d407e..2b47114 100644 --- a/client/src/sticker_data.c +++ b/client/src/sticker_data.c @@ -36,6 +36,7 @@ static char* _make_absolute_path(const char *relative_path) package_info_h package_info = NULL; char *app_path = NULL; char *file_path = NULL; + int path_len = 0; ret = app_get_id(&app_id); if (ret != APP_ERROR_NONE) { @@ -58,7 +59,7 @@ static char* _make_absolute_path(const char *relative_path) goto cleanup; } - int path_len = strlen(app_path) + strlen(relative_path) + 2; + path_len = strlen(app_path) + strlen(relative_path) + 2; file_path = (char *)calloc(path_len, sizeof(char)); if (!file_path) { LOGE("failed to alloc memory"); //LCOV_EXCL_LINE diff --git a/server/stickerd_data_manager.c b/server/stickerd_data_manager.c index 9d9ef83..89f9b4f 100644 --- a/server/stickerd_data_manager.c +++ b/server/stickerd_data_manager.c @@ -857,6 +857,10 @@ int stickerd_insert_sticker_info_by_json(GVariant *parameters, GVariant **reply_ GError* err_msg = NULL; GVariant *body = NULL; char *cmd = "send_insert_result"; + JsonArray *sticker_arr = NULL; + JsonArray *keyword_arr = NULL; + int arr_len = 0; + int keyword_arr_len = 0; *reply_body = g_variant_new("()"); if (*reply_body == NULL) { @@ -895,14 +899,14 @@ int stickerd_insert_sticker_info_by_json(GVariant *parameters, GVariant **reply_ goto cleanup; } - JsonArray *sticker_arr = json_object_get_array_member(root_obj, "sticker"); + sticker_arr = json_object_get_array_member(root_obj, "sticker"); if (sticker_arr == NULL) { LOGE("failed to get array member"); ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; goto cleanup; } - int arr_len = json_array_get_length(sticker_arr); + arr_len = json_array_get_length(sticker_arr); for (int i = 0; i < arr_len; i++) { JsonObject *info_object = json_array_get_object_element(sticker_arr, i); if (info_object != NULL) { @@ -953,8 +957,8 @@ int stickerd_insert_sticker_info_by_json(GVariant *parameters, GVariant **reply_ sticker_info->display_type = _get_int_from_object(info_object, "display_type"); - JsonArray *keyword_arr = json_object_get_array_member(info_object, "keyword"); - int keyword_arr_len = json_array_get_length(keyword_arr); + keyword_arr = json_object_get_array_member(info_object, "keyword"); + keyword_arr_len = json_array_get_length(keyword_arr); if (keyword_arr_len < 1) goto free_memory; diff --git a/server/stickerd_db_manager.c b/server/stickerd_db_manager.c index 37e3172..2775cea 100644 --- a/server/stickerd_db_manager.c +++ b/server/stickerd_db_manager.c @@ -1023,6 +1023,7 @@ int stickerd_db_insert_recent_sticker_info(int record_id) int ret; sqlite3 *db = NULL; sqlite3_stmt *stmt = NULL; + int result = 0; db = _db_open(); if (!db) @@ -1042,7 +1043,7 @@ int stickerd_db_insert_recent_sticker_info(int record_id) goto cleanup; } - int result = sqlite3_column_int(stmt, 0); + result = sqlite3_column_int(stmt, 0); sqlite3_finalize(stmt); stmt = NULL; diff --git a/sticker-parser/sticker-parser.c b/sticker-parser/sticker-parser.c index af9e3cc..fe0c795 100644 --- a/sticker-parser/sticker-parser.c +++ b/sticker-parser/sticker-parser.c @@ -579,6 +579,10 @@ static int __get_sticker_info_from_json(const char *appid, const char *file_path char *description = NULL; char *thumbnail_path = NULL; char *uri_path = NULL; + char *rel_thumbnail = NULL; + JsonArray *keyword_arr = NULL; + int disp_type = 0; + int keyword_arr_len = 0; parser = json_parser_new(); json_parser_load_from_file(parser, file_path, &err_msg); @@ -632,7 +636,7 @@ static int __get_sticker_info_from_json(const char *appid, const char *file_path if (!group) goto free_memory; - char *rel_thumbnail = __get_string_from_object(info_object, "thumbnail"); + rel_thumbnail = __get_string_from_object(info_object, "thumbnail"); if (rel_thumbnail) { if (rel_thumbnail[0] != '\0') { if (access(rel_thumbnail, F_OK) == 0) { @@ -660,10 +664,10 @@ static int __get_sticker_info_from_json(const char *appid, const char *file_path } description = __get_string_from_object(info_object, "description"); - int disp_type = __get_int_from_object(info_object, "display_type"); + disp_type = __get_int_from_object(info_object, "display_type"); - JsonArray *keyword_arr = json_object_get_array_member(info_object, "keyword"); - int keyword_arr_len = json_array_get_length(keyword_arr); + keyword_arr = json_object_get_array_member(info_object, "keyword"); + keyword_arr_len = json_array_get_length(keyword_arr); if (keyword_arr_len < 1) goto free_memory; @@ -929,6 +933,7 @@ int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgid, const char *appid, GList * char *app_path = NULL; char *file_path = NULL; int ret = 0; + int path_len = 0; __db_init(); @@ -944,7 +949,7 @@ int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgid, const char *appid, GList * goto cleanup; } - int path_len = strlen(app_path) + strlen((char *)md->value) + 2; + path_len = strlen(app_path) + strlen((char *)md->value) + 2; file_path = (char *)calloc(path_len, sizeof(char)); if (!file_path) { LOGE("failed to alloc memory"); -- 2.7.4 From 54e7a64baa9edc9deeabe617ae14426da0b81d24 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Fri, 19 Mar 2021 17:54:50 +0900 Subject: [PATCH 07/16] Update package version to 0.1.72 Change-Id: I75d34778e8772741e2e51393d2b76c69add063ff Signed-off-by: Jihoon Kim --- packaging/capi-ui-sticker.spec | 2 +- receiver/tizen-manifest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/capi-ui-sticker.spec b/packaging/capi-ui-sticker.spec index d562f0d..7c39465 100644 --- a/packaging/capi-ui-sticker.spec +++ b/packaging/capi-ui-sticker.spec @@ -1,6 +1,6 @@ Name: capi-ui-sticker Summary: Sticker client library and daemon -Version: 0.1.71 +Version: 0.1.72 Release: 1 Group: Graphics & UI Framework/Input License: Apache-2.0 diff --git a/receiver/tizen-manifest.xml b/receiver/tizen-manifest.xml index f5f892d..aed506c 100644 --- a/receiver/tizen-manifest.xml +++ b/receiver/tizen-manifest.xml @@ -1,5 +1,5 @@ - + -- 2.7.4 From 90e6316cb858f2d406c73cd5263749f2a0c82072 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 22 Mar 2021 20:39:05 +0900 Subject: [PATCH 08/16] Fix branch past initialize issue If the variable is used after the target, it will be uninitialized. A goto jumps past the initialization of a variable. Change-Id: If1faa93209af3328ae4dea4103533cc550fc1679 Signed-off-by: Jihoon Kim --- server/stickerd_data_manager.c | 10 +++++--- server/stickerd_db_manager.c | 54 ++++++++++++++++++++++++++++------------- sticker-parser/sticker-parser.c | 13 +++++++--- 3 files changed, 53 insertions(+), 24 deletions(-) diff --git a/server/stickerd_data_manager.c b/server/stickerd_data_manager.c index 89f9b4f..1e8030c 100644 --- a/server/stickerd_data_manager.c +++ b/server/stickerd_data_manager.c @@ -404,6 +404,7 @@ int stickerd_dbus_init(void) static int _check_file_exist(const char *app_id, const char *path) { int ret = 0; + int path_len = 0; package_info_h package_info = NULL; char *app_path = NULL; char *file_path = NULL; @@ -427,7 +428,7 @@ static int _check_file_exist(const char *app_id, const char *path) goto cleanup; } - int path_len = strlen(app_path) + strlen(path) + 2; + path_len = strlen(app_path) + strlen(path) + 2; file_path = (char *)calloc(path_len, sizeof(char)); if (!file_path) { LOGE("Failed to alloc memory"); @@ -862,6 +863,9 @@ int stickerd_insert_sticker_info_by_json(GVariant *parameters, GVariant **reply_ int arr_len = 0; int keyword_arr_len = 0; + JsonNode *root = NULL; + JsonObject *root_obj = NULL; + *reply_body = g_variant_new("()"); if (*reply_body == NULL) { LOGE("Failed to create reply_body"); @@ -885,14 +889,14 @@ int stickerd_insert_sticker_info_by_json(GVariant *parameters, GVariant **reply_ goto cleanup; } - JsonNode *root = json_parser_get_root(parser); + root = json_parser_get_root(parser); if (root == NULL) { LOGE("failed to get root"); ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; goto cleanup; } - JsonObject *root_obj = json_node_get_object(root); + root_obj = json_node_get_object(root); if (root_obj == NULL) { LOGE("failed to get object"); ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; diff --git a/server/stickerd_db_manager.c b/server/stickerd_db_manager.c index 2775cea..dfa84c9 100644 --- a/server/stickerd_db_manager.c +++ b/server/stickerd_db_manager.c @@ -496,8 +496,11 @@ cleanup: int stickerd_db_delete_sticker_info(int record_id) { int ret; + int uri_type = 0; sqlite3 *db = NULL; sqlite3_stmt *stmt = NULL; + const unsigned char *uri = NULL; + const unsigned char *thumbnail = NULL; db = _db_open(); if (!db) @@ -517,9 +520,9 @@ int stickerd_db_delete_sticker_info(int record_id) goto cleanup; } - int uri_type = sqlite3_column_int(stmt, 0); - const unsigned char *uri = sqlite3_column_text(stmt, 1); - const unsigned char *thumbnail = sqlite3_column_text(stmt, 2); + uri_type = sqlite3_column_int(stmt, 0); + uri = sqlite3_column_text(stmt, 1); + thumbnail = sqlite3_column_text(stmt, 2); if (uri_type == 1 && unlink((const char *)uri) == -1) LOGE("fail to delete sticker file"); @@ -565,6 +568,9 @@ int stickerd_db_delete_sticker_info_by_uri(char *uri) sqlite3 *db = NULL; sqlite3_stmt *stmt = NULL; + int uri_type = 0; + const unsigned char *thumbnail = NULL; + db = _db_open(); if (!db) return STICKERD_SERVER_ERROR_DB_FAILED; @@ -583,8 +589,8 @@ int stickerd_db_delete_sticker_info_by_uri(char *uri) goto cleanup; } - int uri_type = sqlite3_column_int(stmt, 0); - const unsigned char *thumbnail = sqlite3_column_text(stmt, 1); + uri_type = sqlite3_column_int(stmt, 0); + thumbnail = sqlite3_column_text(stmt, 1); if (uri_type == 1 && unlink((const char *)uri) == -1) LOGE("fail to delete sticker file"); @@ -702,6 +708,13 @@ int stickerd_db_get_sticker_info_by_record_id(int record_id, sticker_info_db *st sqlite3 *db = NULL; sqlite3_stmt *stmt = NULL; + const unsigned char *tmp_app_id = NULL; + const unsigned char *tmp_uri = NULL; + const unsigned char *tmp_thumbnail = NULL; + const unsigned char *tmp_description = NULL; + const unsigned char *tmp_group = NULL; + const unsigned char *tmp_date = NULL; + db = _db_open(); if (!db) return STICKERD_SERVER_ERROR_DB_FAILED; @@ -720,7 +733,7 @@ int stickerd_db_get_sticker_info_by_record_id(int record_id, sticker_info_db *st goto cleanup; } - const unsigned char *tmp_app_id = sqlite3_column_text(stmt, 1); + tmp_app_id = sqlite3_column_text(stmt, 1); if (tmp_app_id) { sticker_info->app_id = strdup((const char *)tmp_app_id); } else { @@ -730,23 +743,23 @@ int stickerd_db_get_sticker_info_by_record_id(int record_id, sticker_info_db *st sticker_info->type = sqlite3_column_int(stmt, 2); - const unsigned char *tmp_uri = sqlite3_column_text(stmt, 3); + tmp_uri = sqlite3_column_text(stmt, 3); if (tmp_uri) sticker_info->uri = strdup((const char *)tmp_uri); - const unsigned char *tmp_thumbnail = sqlite3_column_text(stmt, 4); + tmp_thumbnail = sqlite3_column_text(stmt, 4); if (tmp_thumbnail) sticker_info->thumbnail = strdup((const char *)tmp_thumbnail); - const unsigned char *tmp_description = sqlite3_column_text(stmt, 5); + tmp_description = sqlite3_column_text(stmt, 5); if (tmp_description) sticker_info->description = strdup((const char *)tmp_description); - const unsigned char *tmp_group = sqlite3_column_text(stmt, 6); + tmp_group = sqlite3_column_text(stmt, 6); if (tmp_group) sticker_info->group = strdup((const char *)tmp_group); - const unsigned char *tmp_date = sqlite3_column_text(stmt, 7); + tmp_date = sqlite3_column_text(stmt, 7); if (tmp_date) sticker_info->date = strdup((const char *)tmp_date); @@ -1087,6 +1100,13 @@ int stickerd_db_get_sticker_info_by_uri(char *uri, sticker_info_db *sticker_info sqlite3 *db = NULL; sqlite3_stmt *stmt = NULL; + const unsigned char *tmp_app_id = NULL; + const unsigned char *tmp_uri = NULL; + const unsigned char *tmp_thumbnail = NULL; + const unsigned char *tmp_description = NULL; + const unsigned char *tmp_group = NULL; + const unsigned char *tmp_date = NULL; + db = _db_open(); if (!db) return STICKERD_SERVER_ERROR_DB_FAILED; @@ -1107,29 +1127,29 @@ int stickerd_db_get_sticker_info_by_uri(char *uri, sticker_info_db *sticker_info sticker_info->record_id = sqlite3_column_int(stmt, 0); - const unsigned char *tmp_app_id = sqlite3_column_text(stmt, 1); + tmp_app_id = sqlite3_column_text(stmt, 1); if (tmp_app_id) sticker_info->app_id = strdup((const char *)tmp_app_id); sticker_info->type = sqlite3_column_int(stmt, 2); - const unsigned char *tmp_uri = sqlite3_column_text(stmt, 3); + tmp_uri = sqlite3_column_text(stmt, 3); if (tmp_uri) sticker_info->uri = strdup((const char *)tmp_uri); - const unsigned char *tmp_thumbnail = sqlite3_column_text(stmt, 4); + tmp_thumbnail = sqlite3_column_text(stmt, 4); if (tmp_thumbnail) sticker_info->thumbnail = strdup((const char *)tmp_thumbnail); - const unsigned char *tmp_description = sqlite3_column_text(stmt, 5); + tmp_description = sqlite3_column_text(stmt, 5); if (tmp_description) sticker_info->description = strdup((const char *)tmp_description); - const unsigned char *tmp_group = sqlite3_column_text(stmt, 6); + tmp_group = sqlite3_column_text(stmt, 6); if (tmp_group) sticker_info->group = strdup((const char *)tmp_group); - const unsigned char *tmp_date = sqlite3_column_text(stmt, 7); + tmp_date = sqlite3_column_text(stmt, 7); if (tmp_date) sticker_info->date = strdup((const char *)tmp_date); diff --git a/sticker-parser/sticker-parser.c b/sticker-parser/sticker-parser.c index fe0c795..2eb877a 100644 --- a/sticker-parser/sticker-parser.c +++ b/sticker-parser/sticker-parser.c @@ -581,9 +581,14 @@ static int __get_sticker_info_from_json(const char *appid, const char *file_path char *uri_path = NULL; char *rel_thumbnail = NULL; JsonArray *keyword_arr = NULL; + JsonArray *allowlist_arr = NULL; + JsonArray *sticker_arr = NULL; int disp_type = 0; int keyword_arr_len = 0; + JsonNode *root = NULL; + JsonObject *root_obj = NULL; + parser = json_parser_new(); json_parser_load_from_file(parser, file_path, &err_msg); if (err_msg) { @@ -592,28 +597,28 @@ static int __get_sticker_info_from_json(const char *appid, const char *file_path goto cleanup; } - JsonNode *root = json_parser_get_root(parser); + root = json_parser_get_root(parser); if (root == NULL) { LOGE("failed to get root"); ret = 0; goto cleanup; } - JsonObject *root_obj = json_node_get_object(root); + root_obj = json_node_get_object(root); if (root_obj == NULL) { LOGE("failed to get object"); ret = 0; goto cleanup; } - JsonArray *allowlist_arr = json_object_get_array_member(root_obj, "whitelist"); + allowlist_arr = json_object_get_array_member(root_obj, "whitelist"); if (allowlist_arr != NULL) { for (int i = 0; i < json_array_get_length(allowlist_arr); i++) { __insert_sticker_allowlist_info(appid, json_array_get_string_element(allowlist_arr, i)); } } - JsonArray *sticker_arr = json_object_get_array_member(root_obj, "sticker"); + sticker_arr = json_object_get_array_member(root_obj, "sticker"); if (sticker_arr == NULL) { LOGE("failed to get array member"); ret = 0; -- 2.7.4 From e1b326dfa40a772e11f2b37e58352b1ac2c2b7a8 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Tue, 23 Mar 2021 09:58:03 +0900 Subject: [PATCH 09/16] Fix coding indentation Change-Id: Ide4fbf38bbb247851148f44d8914df047bc59c4c Signed-off-by: Jihoon Kim --- client/src/sticker_data.c | 2 +- client/src/sticker_provider.c | 4 +- receiver/src/ft.cpp | 2 +- server/stickerd_data_manager.c | 28 ++--- sticker-parser/sticker-parser.c | 4 +- tests/mock/fff.h | 240 ++++++++++++++++++++-------------------- 6 files changed, 140 insertions(+), 140 deletions(-) diff --git a/client/src/sticker_data.c b/client/src/sticker_data.c index 2b47114..8ed40e6 100644 --- a/client/src/sticker_data.c +++ b/client/src/sticker_data.c @@ -67,7 +67,7 @@ static char* _make_absolute_path(const char *relative_path) goto cleanup; } - if(relative_path[0] == '/') + if (relative_path[0] == '/') snprintf(file_path, path_len, "%s%s",app_path, relative_path); else snprintf(file_path, path_len, "%s%s%s",app_path, "/", relative_path); //LCOV_EXCL_LINE diff --git a/client/src/sticker_provider.c b/client/src/sticker_provider.c index 079eaaa..b08b024 100644 --- a/client/src/sticker_provider.c +++ b/client/src/sticker_provider.c @@ -180,7 +180,7 @@ EXPORT_API int sticker_provider_insert_data_by_json_file(sticker_provider_h prov goto cleanup; } - if(json_path[0] == '/') + if (json_path[0] == '/') snprintf(file_path, path_len, "%s%s",app_path, json_path); else snprintf(file_path, path_len, "%s%s%s",app_path, "/", json_path); @@ -437,7 +437,7 @@ EXPORT_API int sticker_provider_set_group_image(sticker_provider_h provider_hand goto cleanup; } - if(uri[0] == '/') + if (uri[0] == '/') snprintf(file_path, path_len, "%s%s",app_path, uri); else snprintf(file_path, path_len, "%s%s%s",app_path, "/", uri); //LCOV_EXCL_LINE diff --git a/receiver/src/ft.cpp b/receiver/src/ft.cpp index 9a717ee..12d3922 100644 --- a/receiver/src/ft.cpp +++ b/receiver/src/ft.cpp @@ -794,7 +794,7 @@ on_data_received(sap_socket_h socket, unsigned short int channel_id, unsigned in int result_code = json_object_get_int_member(root_obj, "resultCode"); STLOGD("result : %s, resultCode : %d", result.c_str(), result_code); - if(result_code == SYNC_START_RSP_SUCCESS) { + if (result_code == SYNC_START_RSP_SUCCESS) { send_sync_start_response(result_code); if (current_request.category == string("bitmoji")) { STLOGD("Delete all bitmoji stickers"); diff --git a/server/stickerd_data_manager.c b/server/stickerd_data_manager.c index 1e8030c..3210959 100644 --- a/server/stickerd_data_manager.c +++ b/server/stickerd_data_manager.c @@ -436,7 +436,7 @@ static int _check_file_exist(const char *app_id, const char *path) goto cleanup; } - if(path[0] == '/') + if (path[0] == '/') snprintf(file_path, path_len, "%s%s",app_path, path); else snprintf(file_path, path_len, "%s%s%s",app_path, "/", path); @@ -525,9 +525,9 @@ static int _file_copy(const char *src, const char *dest) goto cleanup; } - while((size = read(fd, buf, 4096))) { + while ((size = read(fd, buf, 4096))) { if (size == -1) { - if(errno == EINTR) + if (errno == EINTR) continue; tmp_err = errno; @@ -535,8 +535,8 @@ static int _file_copy(const char *src, const char *dest) goto cleanup; } - while(write(n_fd, buf, size) == -1) { - if(errno == EINTR) { + while (write(n_fd, buf, size) == -1) { + if (errno == EINTR) { continue; } else { tmp_err = errno; @@ -995,7 +995,7 @@ cleanup: if (ret != STICKERD_SERVER_ERROR_NONE) LOGE("Failed to send insert result to client"); - if(body) + if (body) g_variant_unref(body); return ret; @@ -1396,7 +1396,7 @@ int stickerd_get_all_sticker_info(GVariant *parameters, GVariant **reply_body) ret = stickerd_db_get_record_id(STICKER_DB_STICKER_ALL, &id_list, NULL, app_id, offset, count); if (ret != STICKERD_SERVER_ERROR_NONE) { LOGE("Failed to get all sticker id"); - if(id_list) + if (id_list) g_list_free_full(id_list, free); return STICKERD_SERVER_ERROR_OPERATION_FAILED; } @@ -1432,7 +1432,7 @@ int stickerd_get_sticker_info_by_app_id(GVariant *parameters, GVariant **reply_b ret = stickerd_db_get_record_id(STICKER_DB_STICKER_APPID, &id_list, NULL, app_id, offset, count); if (ret != STICKERD_SERVER_ERROR_NONE) { LOGE("Failed to get all sticker id"); - if(id_list) + if (id_list) g_list_free_full(id_list, free); return STICKERD_SERVER_ERROR_OPERATION_FAILED; } @@ -1468,7 +1468,7 @@ int stickerd_get_sticker_info_by_type(GVariant *parameters, GVariant **reply_bod ret = stickerd_db_get_record_id(STICKER_DB_STICKER_TYPE, &id_list, &type, app_id, offset, count); if (ret != STICKERD_SERVER_ERROR_NONE) { LOGE("Failed to get all sticker id"); - if(id_list) + if (id_list) g_list_free_full(id_list, free); return STICKERD_SERVER_ERROR_OPERATION_FAILED; } @@ -1505,7 +1505,7 @@ int stickerd_get_sticker_info_by_group(GVariant *parameters, GVariant **reply_bo ret = stickerd_db_get_record_id(STICKER_DB_STICKER_GROUP, &id_list, (void *)group, app_id, offset, count); if (ret != STICKERD_SERVER_ERROR_NONE) { LOGE("Failed to get all sticker id"); - if(id_list) + if (id_list) g_list_free_full(id_list, free); return STICKERD_SERVER_ERROR_OPERATION_FAILED; } @@ -1542,7 +1542,7 @@ int stickerd_get_sticker_info_by_keyword(GVariant *parameters, GVariant **reply_ ret = stickerd_db_get_record_id(STICKER_DB_STICKER_KEYWORD, &id_list, (void *)keyword, app_id, offset, count); if (ret != STICKERD_SERVER_ERROR_NONE) { LOGE("Failed to get all sticker id"); - if(id_list) + if (id_list) g_list_free_full(id_list, free); return STICKERD_SERVER_ERROR_OPERATION_FAILED; } @@ -1578,7 +1578,7 @@ int stickerd_get_sticker_info_by_display_type(GVariant *parameters, GVariant **r ret = stickerd_db_get_record_id(STICKER_DB_STICKER_DISP_TYPE, &id_list, &type, app_id, offset, count); if (ret != STICKERD_SERVER_ERROR_NONE) { LOGE("Failed to get all sticker id"); - if(id_list) + if (id_list) g_list_free_full(id_list, free); return STICKERD_SERVER_ERROR_OPERATION_FAILED; } @@ -1709,7 +1709,7 @@ int stickerd_get_recent_sticker_info(GVariant *parameters, GVariant **reply_body ret = stickerd_db_get_record_id(STICKER_DB_STICKER_RECENT_HISTORY, &id_list, NULL, NULL, 0, count); if (ret != STICKERD_SERVER_ERROR_NONE) { LOGE("Failed to get recent sticker id"); - if(id_list) + if (id_list) g_list_free_full(id_list, free); return STICKERD_SERVER_ERROR_OPERATION_FAILED; } @@ -1854,7 +1854,7 @@ int stickerd_set_group_image(GVariant *parameters, GVariant **reply_body) if (type == STICKER_URI_TYPE_LOCAL_PATH) { if (_check_file_exist(app_id, uri) == 0) { uri = _convert_sticker_uri(uri, app_id); - if(!uri) { + if (!uri) { LOGE("failed to copy sticker file"); return STICKERD_SERVER_ERROR_FILE_EXISTS; } diff --git a/sticker-parser/sticker-parser.c b/sticker-parser/sticker-parser.c index 2eb877a..321e141 100644 --- a/sticker-parser/sticker-parser.c +++ b/sticker-parser/sticker-parser.c @@ -346,7 +346,7 @@ static int __file_copy(const char *src, const char *dest) while((size = read(fd, buf, 4096))) { if (size == -1) { - if(errno == EINTR) + if (errno == EINTR) continue; tmp_err = errno; @@ -355,7 +355,7 @@ static int __file_copy(const char *src, const char *dest) } while(write(n_fd, buf, size) == -1) { - if(errno == EINTR) { + if (errno == EINTR) { continue; } else { tmp_err = errno; diff --git a/tests/mock/fff.h b/tests/mock/fff.h index f8d6d5f..93e34e5 100644 --- a/tests/mock/fff.h +++ b/tests/mock/fff.h @@ -93,7 +93,7 @@ SOFTWARE. #define RETURN_FAKE_RESULT(FUNCNAME) \ if (FUNCNAME##_fake.return_val_seq_len){ /* then its a sequence */ \ - if(FUNCNAME##_fake.return_val_seq_idx < FUNCNAME##_fake.return_val_seq_len) { \ + if (FUNCNAME##_fake.return_val_seq_idx < FUNCNAME##_fake.return_val_seq_len) { \ SAVE_RET_HISTORY(FUNCNAME, FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_idx]) \ return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_idx++]; \ } \ @@ -138,7 +138,7 @@ FFF_END_EXTERN_C memset(fff.call_history, 0, sizeof(fff.call_history)); #define REGISTER_CALL(function) \ - if(fff.call_history_idx < FFF_CALL_HISTORY_LEN) \ + if (fff.call_history_idx < FFF_CALL_HISTORY_LEN) \ fff.call_history[fff.call_history_idx++] = (fff_function_t)function; #define DECLARE_FAKE_VOID_FUNC0(FUNCNAME) \ @@ -155,7 +155,7 @@ FFF_END_EXTERN_C #define DEFINE_FAKE_VOID_FUNC0(FUNCNAME) \ FUNCNAME##_Fake FUNCNAME##_fake; \ void FUNCNAME(void){ \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ } \ else{ \ HISTORY_DROPPED(FUNCNAME); \ @@ -195,7 +195,7 @@ FFF_END_EXTERN_C FUNCNAME##_Fake FUNCNAME##_fake; \ void FUNCNAME(ARG0_TYPE arg0){ \ SAVE_ARG(FUNCNAME, 0); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ } \ else{ \ @@ -238,7 +238,7 @@ FFF_END_EXTERN_C void FUNCNAME(ARG0_TYPE arg0, ARG1_TYPE arg1){ \ SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ } \ @@ -284,7 +284,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -333,7 +333,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -385,7 +385,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -440,7 +440,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -498,7 +498,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -559,7 +559,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -623,7 +623,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -690,7 +690,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -760,7 +760,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -833,7 +833,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -909,7 +909,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -988,7 +988,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1070,7 +1070,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1155,7 +1155,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1243,7 +1243,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1334,7 +1334,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1428,7 +1428,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ SAVE_ARG(FUNCNAME, 18); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1525,7 +1525,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 17); \ SAVE_ARG(FUNCNAME, 18); \ SAVE_ARG(FUNCNAME, 19); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1585,7 +1585,7 @@ FFF_END_EXTERN_C #define DEFINE_FAKE_VALUE_FUNC0(RETURN_TYPE, FUNCNAME) \ FUNCNAME##_Fake FUNCNAME##_fake; \ RETURN_TYPE FUNCNAME(void){ \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ } \ else{ \ HISTORY_DROPPED(FUNCNAME); \ @@ -1633,7 +1633,7 @@ FFF_END_EXTERN_C FUNCNAME##_Fake FUNCNAME##_fake; \ RETURN_TYPE FUNCNAME(ARG0_TYPE arg0){ \ SAVE_ARG(FUNCNAME, 0); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ } \ else{ \ @@ -1684,7 +1684,7 @@ FFF_END_EXTERN_C RETURN_TYPE FUNCNAME(ARG0_TYPE arg0, ARG1_TYPE arg1){ \ SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ } \ @@ -1738,7 +1738,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1795,7 +1795,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1855,7 +1855,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1918,7 +1918,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -1984,7 +1984,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2053,7 +2053,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2125,7 +2125,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2200,7 +2200,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2278,7 +2278,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2359,7 +2359,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2443,7 +2443,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2530,7 +2530,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2620,7 +2620,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2713,7 +2713,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2809,7 +2809,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -2908,7 +2908,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3010,7 +3010,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ SAVE_ARG(FUNCNAME, 18); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3115,7 +3115,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 17); \ SAVE_ARG(FUNCNAME, 18); \ SAVE_ARG(FUNCNAME, 19); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3181,7 +3181,7 @@ FFF_END_EXTERN_C FUNCNAME##_Fake FUNCNAME##_fake; \ void FUNCNAME(ARG0_TYPE arg0, ...){ \ SAVE_ARG(FUNCNAME, 0); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ } \ else{ \ @@ -3203,7 +3203,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg0); \ FUNCNAME##_fake.custom_fake(arg0, ap); \ @@ -3235,7 +3235,7 @@ FFF_END_EXTERN_C void FUNCNAME(ARG0_TYPE arg0, ARG1_TYPE arg1, ...){ \ SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ } \ @@ -3258,7 +3258,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg1); \ FUNCNAME##_fake.custom_fake(arg0, arg1, ap); \ @@ -3292,7 +3292,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3316,7 +3316,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg2); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, ap); \ @@ -3352,7 +3352,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3377,7 +3377,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg3); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, ap); \ @@ -3415,7 +3415,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3441,7 +3441,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg4); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, ap); \ @@ -3481,7 +3481,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3508,7 +3508,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg5); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, ap); \ @@ -3550,7 +3550,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3578,7 +3578,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg6); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, ap); \ @@ -3622,7 +3622,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3651,7 +3651,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg7); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, ap); \ @@ -3697,7 +3697,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3727,7 +3727,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg8); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, ap); \ @@ -3775,7 +3775,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3806,7 +3806,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg9); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, ap); \ @@ -3856,7 +3856,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3888,7 +3888,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg10); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, ap); \ @@ -3940,7 +3940,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -3973,7 +3973,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg11); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, ap); \ @@ -4027,7 +4027,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4061,7 +4061,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg12); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, ap); \ @@ -4117,7 +4117,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4152,7 +4152,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg13); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, ap); \ @@ -4210,7 +4210,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4246,7 +4246,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg14); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, ap); \ @@ -4306,7 +4306,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4343,7 +4343,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg15); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, ap); \ @@ -4405,7 +4405,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4443,7 +4443,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg16); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, ap); \ @@ -4507,7 +4507,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4546,7 +4546,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg17); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, ap); \ @@ -4612,7 +4612,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ SAVE_ARG(FUNCNAME, 18); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4652,7 +4652,7 @@ FFF_END_EXTERN_C va_end(ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ va_list ap; \ va_start(ap, arg18); \ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, ap); \ @@ -4684,7 +4684,7 @@ FFF_END_EXTERN_C FUNCNAME##_Fake FUNCNAME##_fake; \ RETURN_TYPE FUNCNAME(ARG0_TYPE arg0, ...){ \ SAVE_ARG(FUNCNAME, 0); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ } \ else{ \ @@ -4711,7 +4711,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg0); \ @@ -4749,7 +4749,7 @@ FFF_END_EXTERN_C RETURN_TYPE FUNCNAME(ARG0_TYPE arg0, ARG1_TYPE arg1, ...){ \ SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ } \ @@ -4777,7 +4777,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg1); \ @@ -4817,7 +4817,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 0); \ SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4846,7 +4846,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg2); \ @@ -4888,7 +4888,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 1); \ SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4918,7 +4918,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg3); \ @@ -4962,7 +4962,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 2); \ SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -4993,7 +4993,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg4); \ @@ -5039,7 +5039,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 3); \ SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5071,7 +5071,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg5); \ @@ -5119,7 +5119,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 4); \ SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5152,7 +5152,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg6); \ @@ -5202,7 +5202,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 5); \ SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5236,7 +5236,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg7); \ @@ -5288,7 +5288,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 6); \ SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5323,7 +5323,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg8); \ @@ -5377,7 +5377,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 7); \ SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5413,7 +5413,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg9); \ @@ -5469,7 +5469,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 8); \ SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5506,7 +5506,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg10); \ @@ -5564,7 +5564,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 9); \ SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5602,7 +5602,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg11); \ @@ -5662,7 +5662,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 10); \ SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5701,7 +5701,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg12); \ @@ -5763,7 +5763,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 11); \ SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5803,7 +5803,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg13); \ @@ -5867,7 +5867,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 12); \ SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -5908,7 +5908,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg14); \ @@ -5974,7 +5974,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 13); \ SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -6016,7 +6016,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg15); \ @@ -6084,7 +6084,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 14); \ SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -6127,7 +6127,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg16); \ @@ -6197,7 +6197,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 15); \ SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -6241,7 +6241,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg17); \ @@ -6313,7 +6313,7 @@ FFF_END_EXTERN_C SAVE_ARG(FUNCNAME, 16); \ SAVE_ARG(FUNCNAME, 17); \ SAVE_ARG(FUNCNAME, 18); \ - if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ + if (ROOM_FOR_MORE_HISTORY(FUNCNAME)){ \ SAVE_ARG_HISTORY(FUNCNAME, 0); \ SAVE_ARG_HISTORY(FUNCNAME, 1); \ SAVE_ARG_HISTORY(FUNCNAME, 2); \ @@ -6358,7 +6358,7 @@ FFF_END_EXTERN_C return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, ap); \ } \ } \ - if(FUNCNAME##_fake.custom_fake){ \ + if (FUNCNAME##_fake.custom_fake){ \ RETURN_TYPE ret; \ va_list ap; \ va_start(ap, arg18); \ -- 2.7.4 From 697070ec3d5aa383be734646dda576e1ecb7e14b Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Tue, 23 Mar 2021 13:36:20 +0900 Subject: [PATCH 10/16] Update package version to 0.1.73 Change-Id: I4088cca473ab1f7b8771ab2c09547b02e315dd16 Signed-off-by: Jihoon Kim --- packaging/capi-ui-sticker.spec | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packaging/capi-ui-sticker.spec b/packaging/capi-ui-sticker.spec index 7c39465..2210fec 100644 --- a/packaging/capi-ui-sticker.spec +++ b/packaging/capi-ui-sticker.spec @@ -1,6 +1,6 @@ Name: capi-ui-sticker Summary: Sticker client library and daemon -Version: 0.1.72 +Version: 0.1.73 Release: 1 Group: Graphics & UI Framework/Input License: Apache-2.0 @@ -85,7 +85,6 @@ Group: Graphics & UI Framework/Input Sticker client library and daemon (gcov) %endif -%if %{defined _ctest_enable} %package unittests Summary: Sticker tests Group: Development/Libraries @@ -93,7 +92,6 @@ Requires: %{name} = %{version}-%{release} %description unittests GTest for sticker -%endif %prep %setup -q -n %{name}-%{version} @@ -214,10 +212,8 @@ chsmack -a "User::App::Shared" /opt/usr/share/sticker-data %{TZ_SYS_RO_APP}/%{_companion_app_name}/* %endif -%if %{defined _ctest_enable} %files unittests %{_bindir}/* -%endif %if 0%{?gcov:1} %files gcov -- 2.7.4 From 6a078eb2dc55c73d119a2477eb713df0755757a5 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Wed, 24 Mar 2021 11:24:28 +0900 Subject: [PATCH 11/16] Update version in receiver manifest Change-Id: I33d4b6b1d0420d01a7deefe8a7a435d1e153c7c8 Signed-off-by: Jihoon Kim --- receiver/tizen-manifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/tizen-manifest.xml b/receiver/tizen-manifest.xml index aed506c..cdfdfb9 100644 --- a/receiver/tizen-manifest.xml +++ b/receiver/tizen-manifest.xml @@ -1,5 +1,5 @@ - + -- 2.7.4 From ae4015a8b7c16d936727f60ce852fc3448603116 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Thu, 25 Mar 2021 10:44:45 +0900 Subject: [PATCH 12/16] Change API description by API review Change-Id: I60ef9bf6887c3fb17e10ed43622ba3f765295bbc --- include/sticker_provider.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/sticker_provider.h b/include/sticker_provider.h index 945338d..9690781 100644 --- a/include/sticker_provider.h +++ b/include/sticker_provider.h @@ -202,7 +202,7 @@ int sticker_provider_delete_data(sticker_provider_h provider_handle, sticker_dat /** * @brief Deletes a sticker with the given @a uri from the sticker database. - * @details If the database does not have a sticker that matches the given @a uri, the STICKER_ERROR_NO_SUCH_FILE error is returned. + * @details If the database does not have a sticker that matches the given @a uri, the #STICKER_ERROR_NO_SUCH_FILE error is returned. * @since_tizen 5.5 * @param[in] provider_handle The sticker provider handle * @param[in] uri The URI of the sticker data to be deleted -- 2.7.4 From 91969957ec33581bc7801e0da766f9accfd60892 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 25 Mar 2021 11:23:25 +0900 Subject: [PATCH 13/16] Enhance unittest coverage lines: 54.8 (1035 of 1888 lines) -> 66.1% (1308 of 1980 lines) functions..: 73.4% (168 of 229 functions) -> 81.5% (202 of 248 functions) Change-Id: I71f38f23ee8cb02edd3494ffde705bf419c15b55 Signed-off-by: Jihoon Kim --- tests/src/sticker_consumer_unittests.cc | 153 ++++++++++++++++++++++++++++++++ tests/src/sticker_data_unittests.cc | 59 ++++++++++++ tests/src/sticker_provider_unittests.cc | 11 +++ 3 files changed, 223 insertions(+) diff --git a/tests/src/sticker_consumer_unittests.cc b/tests/src/sticker_consumer_unittests.cc index e1b59b4..398ed42 100644 --- a/tests/src/sticker_consumer_unittests.cc +++ b/tests/src/sticker_consumer_unittests.cc @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,7 @@ static bool callback_result = false; static sticker_data_h g_dh = NULL; +static sticker_provider_h g_ph = NULL; static sticker_consumer_h g_ch = NULL; namespace { @@ -138,6 +140,10 @@ void __fake_g_dbus_connection_signal_unsubscribe(GDBusConnection* c, void __fake_g_bus_unwatch_name(guint a) { } +static void event_cb(sticker_consumer_event_type_e event_type, sticker_data_h data_handle, void *user_data) +{ +} + class StickerConsumerTest : public testing::Test { public: virtual void SetUp() { @@ -172,6 +178,9 @@ class StickerConsumerTest : public testing::Test { sticker_data_set_group_name(g_dh, "tizen"); sticker_data_set_thumbnail(g_dh, "/res/test.png"); sticker_data_set_description(g_dh, "TCT Test"); + sticker_data_set_display_type(g_dh, STICKER_DATA_DISP_WALLPAPER); + sticker_provider_insert_data(g_ph, g_dh); + sticker_provider_set_group_image(g_ph, "tizen", STICKER_DATA_URI_WEB_RESOURCE, "www.valid.com/test/test.png"); } virtual void TearDown() { sticker_data_destroy(g_dh); @@ -258,6 +267,19 @@ TEST_F(StickerConsumerTest, utc_sticker_consumer_data_foreach_all_n) } /** + * @testcase utc_sticker_consumer_data_foreach_by_keyword_p + * @since_tizen 5.5 + * @description Positive UTC of the function that retrieves all sticker data using keyword. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_data_foreach_by_keyword_p) +{ + int result = 0; + callback_result = false; + int ret = sticker_consumer_data_foreach_by_keyword(g_ch, 0, 1000, &result, "cute", sticker_data_foreach_cb, NULL); + EXPECT_EQ(ret, STICKER_ERROR_NONE); +} + +/** * @testcase utc_sticker_consumer_data_foreach_by_keyword_n * @since_tizen 5.5 * @description Negative UTC of the function that retrieves all sticker data using keyword. @@ -270,6 +292,19 @@ TEST_F(StickerConsumerTest, utc_sticker_consumer_data_foreach_by_keyword_n) } /** + * @testcase utc_sticker_consumer_data_foreach_by_group_p + * @since_tizen 5.5 + * @description Positive UTC of the function that retrieves all sticker data using group. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_data_foreach_by_group_p) +{ + int result = 0; + callback_result = false; + int ret = sticker_consumer_data_foreach_by_group(g_ch, 0, 1000, &result, "tizen", sticker_data_foreach_cb, NULL); + EXPECT_EQ(ret, STICKER_ERROR_NONE); +} + +/** * @testcase utc_sticker_consumer_data_foreach_by_group_n * @since_tizen 5.5 * @description Negative UTC of the function that retrieves all sticker data using group. @@ -282,6 +317,19 @@ TEST_F(StickerConsumerTest, utc_sticker_consumer_data_foreach_by_group_n) } /** + * @testcase utc_sticker_consumer_data_foreach_by_type_p + * @since_tizen 5.5 + * @description Positive UTC of the function that retrieves all sticker data using type. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_data_foreach_by_type_p) +{ + int result = 0; + callback_result = false; + int ret = sticker_consumer_data_foreach_by_type(g_ch, 0, 1000, &result, STICKER_DATA_URI_WEB_RESOURCE, sticker_data_foreach_cb, NULL); + EXPECT_EQ(ret, STICKER_ERROR_NONE); +} + +/** * @testcase utc_sticker_consumer_data_foreach_by_type_n * @since_tizen 5.5 * @description Negative UTC of the function that retrieves all sticker data using type. @@ -315,4 +363,109 @@ TEST_F(StickerConsumerTest, utc_sticker_consumer_keyword_list_foreach_all_n) EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); } +/** + * @testcase utc_sticker_consumer_data_foreach_by_display_type_n + * @since_tizen 5.5 + * @description Negative UTC of the function that retrieves all sticker data using display type. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_data_foreach_by_display_type_n) +{ + int result = 0; + int ret = sticker_consumer_data_foreach_by_display_type(g_ch, -1, 0, &result, STICKER_DATA_DISP_WALLPAPER, sticker_data_foreach_cb, NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_consumer_group_list_foreach_by_display_type_n + * @since_tizen 5.5 + * @description Negative UTC of the function that retrieves all group name using display type. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_group_list_foreach_by_display_type_n) +{ + int ret = sticker_consumer_group_list_foreach_by_display_type(g_ch, STICKER_DATA_DISP_WALLPAPER, NULL, NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_consumer_add_recent_data_n + * @since_tizen 5.5 + * @description Negative UTC of the function that adds entry to recently used stickers list. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_add_recent_data_n) +{ + int ret = sticker_consumer_add_recent_data(g_ch, NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_consumer_get_recent_data_list_p + * @since_tizen 5.5 + * @description Positive UTC of the function that gets recently used stickers list. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_get_recent_data_list_p) +{ + int result = 0; + callback_result = false; + sticker_consumer_add_recent_data(g_ch, g_dh); + int ret = sticker_consumer_get_recent_data_list(g_ch, 1, &result, sticker_data_foreach_cb, NULL); + EXPECT_EQ(ret, STICKER_ERROR_NONE); +} + +/** + * @testcase utc_sticker_consumer_get_recent_data_list_n + * @since_tizen 5.5 + * @description Negative UTC of the function that gets recently used stickers list. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_get_recent_data_list_n) +{ + int result = 0; + int ret = sticker_consumer_get_recent_data_list(g_ch, 0, &result, sticker_data_foreach_cb, NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_consumer_set_event_cb_p + * @since_tizen 5.5 + * @description Positive UTC of the function that registers a event callback function. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_set_event_cb_p) +{ + callback_result = false; + int ret = sticker_consumer_set_event_cb(g_ch, event_cb, NULL); + EXPECT_EQ(ret, STICKER_ERROR_NONE); +} + +/** + * @testcase utc_sticker_consumer_set_event_cb_n + * @since_tizen 5.5 + * @description Negative UTC of the function that registers a event callback function. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_set_event_cb_n) +{ + int ret = sticker_consumer_set_event_cb(g_ch, NULL, NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_consumer_unset_event_cb_n + * @since_tizen 5.5 + * @description Negative UTC of the function that unregisters a event callback function. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_unset_event_cb_n) +{ + int ret = sticker_consumer_unset_event_cb(NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_consumer_group_image_list_foreach_all_n + * @since_tizen 6.5 + * @description Negative UTC of the function that retrieves images of all sticker groups. + */ +TEST_F(StickerConsumerTest, utc_sticker_consumer_group_image_list_foreach_all_n) +{ + int ret = sticker_consumer_group_image_list_foreach_all(g_ch, NULL, NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + } // namespace diff --git a/tests/src/sticker_data_unittests.cc b/tests/src/sticker_data_unittests.cc index 57002ce..31b4468 100644 --- a/tests/src/sticker_data_unittests.cc +++ b/tests/src/sticker_data_unittests.cc @@ -18,6 +18,7 @@ #include #include +#include #include "app_common_mock.h" @@ -500,4 +501,62 @@ TEST_F(StickerDataTest, utc_sticker_data_get_date_n) EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); } +/** + * @testcase utc_sticker_data_set_display_type_p + * @since_tizen 5.5 + * @description Positive UTC of the function that sets display type of sticker data. + */ +TEST_F(StickerDataTest, utc_sticker_data_set_display_type_p) +{ + int ret = sticker_data_set_display_type(g_dh, STICKER_DATA_DISP_EMOJI); + EXPECT_EQ(ret, STICKER_ERROR_NONE); +} + +/** + * @testcase utc_sticker_data_get_display_type_p + * @since_tizen 5.5 + * @description Positive UTC of the function that gets display type of sticker data. + */ +TEST_F(StickerDataTest, utc_sticker_data_get_display_type_p) +{ + sticker_data_display_type_e disp_type; + int ret = sticker_data_get_display_type(g_dh, &disp_type); + EXPECT_EQ(ret, STICKER_ERROR_NONE); +} + +/** + * @testcase utc_sticker_data_get_display_type_n + * @since_tizen 5.5 + * @description Negative UTC of the function that gets display type of sticker data. + */ +TEST_F(StickerDataTest, utc_sticker_data_get_display_type_n) +{ + int ret = sticker_data_get_display_type(g_dh, NULL); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_data_get_handle_n + * @since_tizen 5.5 + * @description Negative UTC of the function that gets the sticker data handle using URI. + */ +TEST_F(StickerDataTest, tc_sticker_data_get_handle_n) +{ + sticker_data_h tmp_handle = NULL; + int ret = sticker_data_get_handle("", &tmp_handle); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + +/** + * @testcase utc_sticker_data_get_handle_n2 + * @since_tizen 5.5 + * @description Negative UTC of the function that gets the sticker data handle using URI. + */ +TEST_F(StickerDataTest, utc_sticker_data_get_handle_n2) +{ + sticker_data_h tmp_handle = NULL; + int ret = sticker_data_get_handle("www.invalid.com", &tmp_handle); + EXPECT_EQ(ret, STICKER_ERROR_NO_SUCH_FILE); +} + } // namespace diff --git a/tests/src/sticker_provider_unittests.cc b/tests/src/sticker_provider_unittests.cc index 590c48a..98eb73e 100644 --- a/tests/src/sticker_provider_unittests.cc +++ b/tests/src/sticker_provider_unittests.cc @@ -355,4 +355,15 @@ TEST_F(StickerProviderTest, utc_sticker_provider_delete_data_by_uri_n) EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); } +/** + * @testcase utc_sticker_provider_set_group_image_n + * @since_tizen 6.5 + * @description Negative UTC of the function that sets group image. + */ +TEST_F(StickerProviderTest, utc_sticker_provider_set_group_image_n) +{ + int ret = sticker_provider_set_group_image(g_ph, "invalid", STICKER_DATA_URI_WEB_RESOURCE, "www.valid.com/test/image.png"); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); +} + } // namespace -- 2.7.4 From e887881151765cc5d2ae9161156fa14e44ffe8a3 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 25 Mar 2021 13:56:08 +0900 Subject: [PATCH 14/16] Fix possible memory leak in unittest Change-Id: I0fee6f5bd53ee58f9f5b4785d958bffedfec86bc Signed-off-by: Jihoon Kim --- tests/src/sticker_data_unittests.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/src/sticker_data_unittests.cc b/tests/src/sticker_data_unittests.cc index 31b4468..5557f29 100644 --- a/tests/src/sticker_data_unittests.cc +++ b/tests/src/sticker_data_unittests.cc @@ -544,6 +544,9 @@ TEST_F(StickerDataTest, tc_sticker_data_get_handle_n) { sticker_data_h tmp_handle = NULL; int ret = sticker_data_get_handle("", &tmp_handle); + if (tmp_handle) + sticker_data_destroy(tmp_handle); + EXPECT_EQ(ret, STICKER_ERROR_INVALID_PARAMETER); } @@ -556,6 +559,9 @@ TEST_F(StickerDataTest, utc_sticker_data_get_handle_n2) { sticker_data_h tmp_handle = NULL; int ret = sticker_data_get_handle("www.invalid.com", &tmp_handle); + if (tmp_handle) + sticker_data_destroy(tmp_handle); + EXPECT_EQ(ret, STICKER_ERROR_NO_SUCH_FILE); } -- 2.7.4 From 21414bdf1da3ec0062c39c450a75e46832b8391d Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 25 Mar 2021 13:47:21 +0900 Subject: [PATCH 15/16] Fix issue no executable is included in unittest package Change-Id: I165bccf668b16f8e644f0f2892ef72413fd121e5 Signed-off-by: Jihoon Kim --- CMakeLists.txt | 2 +- packaging/capi-ui-sticker.spec | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 916ce15..7da1298 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,11 +55,11 @@ ENDIF() ## Test IF("${TEST_ENABLE}" STREQUAL "true") ENABLE_TESTING() +ENDIF() SET(UTC_STICKER sticker_unittests) ADD_TEST(NAME ${UTC_STICKER} COMMAND ${UTC_STICKER} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests) ADD_SUBDIRECTORY(tests) -ENDIF() ## config ## INSTALL(FILES ${CMAKE_SOURCE_DIR}/capi-ui-sticker.info DESTINATION ${TZ_SYS_RO_SHARE}/parser-plugins) diff --git a/packaging/capi-ui-sticker.spec b/packaging/capi-ui-sticker.spec index 2210fec..6855dba 100644 --- a/packaging/capi-ui-sticker.spec +++ b/packaging/capi-ui-sticker.spec @@ -213,7 +213,8 @@ chsmack -a "User::App::Shared" /opt/usr/share/sticker-data %endif %files unittests -%{_bindir}/* +%license LICENSE +%{_bindir}/sticker_unittests %if 0%{?gcov:1} %files gcov -- 2.7.4 From 2464ae0869f0d937fd59cb6a9ebd51aa19edde5d Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 25 Mar 2021 19:36:50 +0900 Subject: [PATCH 16/16] Update package version to 0.1.74 Change-Id: I20efdef65dde92d84af76f45d7556cd2f1a89f14 Signed-off-by: Jihoon Kim --- packaging/capi-ui-sticker.spec | 2 +- receiver/tizen-manifest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/capi-ui-sticker.spec b/packaging/capi-ui-sticker.spec index 6855dba..feac92e 100644 --- a/packaging/capi-ui-sticker.spec +++ b/packaging/capi-ui-sticker.spec @@ -1,6 +1,6 @@ Name: capi-ui-sticker Summary: Sticker client library and daemon -Version: 0.1.73 +Version: 0.1.74 Release: 1 Group: Graphics & UI Framework/Input License: Apache-2.0 diff --git a/receiver/tizen-manifest.xml b/receiver/tizen-manifest.xml index cdfdfb9..1c2cbb6 100644 --- a/receiver/tizen-manifest.xml +++ b/receiver/tizen-manifest.xml @@ -1,5 +1,5 @@ - + -- 2.7.4