Adjust extern "C"
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_basic.c
index 66091b3..9e94561 100644 (file)
@@ -85,22 +85,6 @@ static void __ps_free_compatibility(gpointer data)
        free((void *)compatibility);
 }
 
-static void __ps_free_datacontrol(gpointer data)
-{
-       datacontrol_x *datacontrol = (datacontrol_x *)data;
-       if (datacontrol == NULL)
-               return;
-       if (datacontrol->providerid)
-               free((void *)datacontrol->providerid);
-       if (datacontrol->access)
-               free((void *)datacontrol->access);
-       if (datacontrol->type)
-               free((void *)datacontrol->type);
-       if (datacontrol->trusted)
-               free((void *)datacontrol->trusted);
-       free((void *)datacontrol);
-}
-
 static void __ps_free_appcontrol(gpointer data)
 {
        appcontrol_x *appcontrol = (appcontrol_x *)data;
@@ -115,6 +99,8 @@ static void __ps_free_appcontrol(gpointer data)
        /*Free Mime*/
        if (appcontrol->mime)
                free((void *)appcontrol->mime);
+       if (appcontrol->privileges)
+               g_list_free_full(appcontrol->privileges, free);
        free((void *)appcontrol);
 }
 
@@ -235,6 +221,38 @@ static void __ps_free_privilege(gpointer data)
        free((void *)privilege);
 }
 
+static void __ps_free_appdefined_privilege(gpointer data)
+{
+       appdefined_privilege_x *privilege = (appdefined_privilege_x *)data;
+       if (privilege == NULL)
+               return;
+       if (privilege->type)
+               free((void *)privilege->type);
+       if (privilege->value)
+               free((void *)privilege->value);
+       if (privilege->license)
+               free((void *)privilege->license);
+       free((void *)privilege);
+}
+
+static void __ps_free_datacontrol(gpointer data)
+{
+       datacontrol_x *datacontrol = (datacontrol_x *)data;
+       if (datacontrol == NULL)
+               return;
+       if (datacontrol->providerid)
+               free((void *)datacontrol->providerid);
+       if (datacontrol->access)
+               free((void *)datacontrol->access);
+       if (datacontrol->type)
+               free((void *)datacontrol->type);
+       if (datacontrol->trusted)
+               free((void *)datacontrol->trusted);
+       if (datacontrol->privileges)
+               g_list_free_full(datacontrol->privileges, free);
+       free((void *)datacontrol);
+}
+
 static void __ps_free_application(gpointer data)
 {
        application_x *application = (application_x *)data;
@@ -433,6 +451,10 @@ API void pkgmgrinfo_basic_free_package(package_x *package)
                free((void *)package->external_path);
        if (package->support_mode)
                free((void *)package->support_mode);
+       if (package->pkg_certs_dir)
+               free((void *)package->pkg_certs_dir);
+       if (package->use_system_certs)
+               free((void *)package->use_system_certs);
 
        /*Free Icon*/
        g_list_free_full(package->icon, __ps_free_icon);
@@ -446,6 +468,12 @@ API void pkgmgrinfo_basic_free_package(package_x *package)
        g_list_free_full(package->license, __ps_free_license);
        /*Free Privileges*/
        g_list_free_full(package->privileges, __ps_free_privilege);
+       /*Free AppDefined Privileges*/
+       g_list_free_full(package->appdefined_privileges,
+               __ps_free_appdefined_privilege);
+       /*Free Providing AppDefined Privileges*/
+       g_list_free_full(package->provides_appdefined_privileges,
+               __ps_free_appdefined_privilege);
        /*Free Application*/
        g_list_free_full(package->application, __ps_free_application);
        /*Free Compatibility*/