Sync to 2.2 : Sync to the latest code 79/13479/1 accepted/tizen/ivi accepted/tizen/mobile accepted/tizen_generic tizen_3.0.m14.2_ivi accepted/tizen/20131211.180333 accepted/tizen/generic/20140306.080440 accepted/tizen/ivi/20140307.060339 accepted/tizen/mobile/20131216.220259 accepted/tizen/mobile/20140306.023901 submit/tizen/20131211.163344 submit/tizen/20140305.194948 tizen_3.0.m14.2_ivi_release
authorjunsuk77.oh <junsuk77.oh@samsung.com>
Mon, 12 Aug 2013 01:18:52 +0000 (10:18 +0900)
committerBaptiste DURAND <baptiste.durand@eurogiciel.fr>
Fri, 6 Dec 2013 16:38:39 +0000 (17:38 +0100)
Change-Id: I8f021114a838f374b74084fc102f4ee97894f294
Signed-off-by: junsuk77.oh <junsuk77.oh@samsung.com>
packaging/capi-appfw-package-manager.spec
src/package_manager.c

index 12bf2c7..0d65198 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-appfw-package-manager
 Summary:    Package Manager API
-Version: 0.0.28
+Version: 0.0.29
 Release:    1
 Group:      System/API
 License:    Apache-2.0
index 9d45732..6f8baf2 100755 (executable)
@@ -581,6 +581,68 @@ int package_manager_destroy(package_manager_h manager)
        return PACKAGE_MANAGER_ERROR_NONE;
 }
 
+static int __add_event(event_info ** head, int req_id,
+                           package_manager_event_type_e event_type,
+                           package_manager_event_state_e event_state)
+{
+       event_info *evt_info;
+
+       evt_info = (event_info *) calloc(1, sizeof(event_info));
+       if (evt_info == NULL) {
+               _LOGD("calloc failed");
+               return -1;
+       }
+       evt_info->req_id = req_id;
+       evt_info->event_type = event_type;
+       evt_info->next = NULL;
+
+       *head = evt_info;
+
+       return 0;
+}
+
+static int __find_event(event_info ** head, int req_id,
+                            package_manager_event_type_e * event_type,
+                            package_manager_event_state_e * event_state)
+{
+       event_info *tmp;
+
+       tmp = *head;
+
+       if (tmp == NULL) {
+               _LOGE("tmp is NULL");
+               return -1;
+       }
+
+       *event_type = tmp->event_type;
+       return 0;
+}
+
+static int __update_event(event_info ** head, int req_id,
+                              package_manager_event_type_e event_type,
+                              package_manager_event_state_e event_state)
+{
+       package_manager_event_type_e evt_type;
+       package_manager_event_state_e evt_state;
+       event_info *tmp;
+
+       if (__find_event_info(head, req_id, &evt_type, &evt_state) != 0)
+               __add_event_info(head, req_id, event_type, event_state);
+       else {
+               tmp = *head;
+
+               if (tmp == NULL) {
+                       _LOGE("tmp is NULL");
+                       return -1;
+               }
+
+               tmp->event_type = event_type;
+               return 0;
+       }
+
+       return -1;
+}
+
 static int global_event_handler(int req_id, const char *pkg_type,
                                const char *pkg_name, const char *key,
                                const char *val, const void *pmsg, void *data)
@@ -598,7 +660,7 @@ static int global_event_handler(int req_id, const char *pkg_type,
                if (ret != PACKAGE_MANAGER_ERROR_NONE)
                        return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
 
-               __add_event_info(&(manager->head), req_id, event_type,
+               __add_event(&(manager->head), req_id, event_type,
                                 PACKAGE_MANAGER_EVENT_STATE_STARTED);
 
                if (manager->event_cb)
@@ -609,10 +671,10 @@ static int global_event_handler(int req_id, const char *pkg_type,
 
        } else if (strcasecmp(key, "install_percent") == 0
                   || strcasecmp(key, "progress_percent") == 0) {
-               if (__find_event_info
+               if (__find_event
                    (&(manager->head), req_id, &event_type,
                     &event_state) == 0) {
-                       __update_event_info(&(manager->head), req_id,
+                       __update_event(&(manager->head), req_id,
                                            event_type,
                                            PACKAGE_MANAGER_EVENT_STATE_PROCESSING);
                        if (manager->event_cb)
@@ -626,10 +688,10 @@ static int global_event_handler(int req_id, const char *pkg_type,
 
        } else if (strcasecmp(key, "error") == 0) {
                if (strcasecmp(key, "0") != 0) {
-                       if (__find_event_info
+                       if (__find_event
                            (&(manager->head), req_id, &event_type,
                             &event_state) == 0) {
-                               __update_event_info(&(manager->head), req_id,
+                               __update_event(&(manager->head), req_id,
                                                    event_type,
                                                    PACKAGE_MANAGER_EVENT_STATE_FAILED);
                        }
@@ -644,7 +706,7 @@ static int global_event_handler(int req_id, const char *pkg_type,
 
                }
        } else if (strcasecmp(key, "end") == 0) {
-               if (__find_event_info
+               if (__find_event
                    (&(manager->head), req_id, &event_type,
                     &event_state) == 0) {
                        if (event_state != PACKAGE_MANAGER_EVENT_STATE_FAILED) {