Refactor duplicate codes as a function to reuse them 36/108136/4
authorjongmyeongko <jongmyeong.ko@samsung.com>
Tue, 3 Jan 2017 06:26:47 +0000 (15:26 +0900)
committerjongmyeongko <jongmyeong.ko@samsung.com>
Thu, 5 Jan 2017 09:02:18 +0000 (18:02 +0900)
The codes for generting directory list are written as a function

Change-Id: Ic9c27c751e439a030e3d24ac5e85695548b21aec
Signed-off-by: jongmyeongko <jongmyeong.ko@samsung.com>
plugin/app2sd/server/app2sd_server.c

index 61977c7..9cd82c2 100644 (file)
@@ -220,35 +220,15 @@ static void _app2sd_server_return_method_error(GDBusMethodInvocation *invocation
        g_dbus_method_invocation_return_value(invocation, param);
 }
 
-static void _app2sd_server_pre_app_install(GDBusConnection *connection, const gchar *sender,
-       GVariant *parameters, GDBusMethodInvocation *invocation, uid_t sender_uid)
+static int _app2sd_server_generate_directory_list(GVariantIter *iter, GList **list)
 {
-       GVariant *param = NULL;
        int result = APP2EXT_SUCCESS;
-       int size;
-       char *pkgid = NULL;
        GVariantIter *iter;
        gchar *str = NULL;
        int type;
-       int ret = 0;
-       uid_t target_uid = -1;
-       GList *dir_list = NULL;
        GList *list = NULL;
-       app2ext_dir_details *dir_detail = NULL;
-
-       g_variant_get(parameters, "(&sia(si)i)", &pkgid, &size, &iter, &target_uid);
-
-       _D("pkgid(%s), size(%d),sender_uid(%d), target_uid(%d)",
-               pkgid, size, sender_uid, target_uid);
-
-       if (!_app2sd_server_check_permission(sender_uid, target_uid)) {
-               _E("Not permitted user!");
-               g_variant_iter_free(iter);
-               _app2sd_server_return_method_error(invocation,
-                       APP2EXT_ERROR_OPERATION_NOT_PERMITTED);
-               return;
-       }
 
+       app2ext_dir_details *dir_detail = NULL;
        while (g_variant_iter_loop(iter, "(si)", &str, &type)) {
                if (str) {
                        _D("str(%s), type(%d)", str, type);
@@ -273,6 +253,37 @@ static void _app2sd_server_pre_app_install(GDBusConnection *connection, const gc
                        list = g_list_append(list, dir_detail);
                }
        }
+
+       return result;
+}
+
+static void _app2sd_server_pre_app_install(GDBusConnection *connection, const gchar *sender,
+       GVariant *parameters, GDBusMethodInvocation *invocation, uid_t sender_uid)
+{
+       GVariant *param = NULL;
+       int result = APP2EXT_SUCCESS;
+       int size;
+       char *pkgid = NULL;
+       GVariantIter *iter;
+       int ret = 0;
+       uid_t target_uid = -1;
+       GList *dir_list = NULL;
+       GList *list = NULL;
+
+       g_variant_get(parameters, "(&sia(si)i)", &pkgid, &size, &iter, &target_uid);
+
+       _D("pkgid(%s), size(%d),sender_uid(%d), target_uid(%d)",
+               pkgid, size, sender_uid, target_uid);
+
+       if (!_app2sd_server_check_permission(sender_uid, target_uid)) {
+               _E("Not permitted user!");
+               g_variant_iter_free(iter);
+               _app2sd_server_return_method_error(invocation,
+                       APP2EXT_ERROR_OPERATION_NOT_PERMITTED);
+               return;
+       }
+
+       result = _app2sd_server_generate_directory_list(iter, &list);
        g_variant_iter_free(iter);
 
        dir_list = g_list_first(list);
@@ -327,13 +338,10 @@ static void _app2sd_server_pre_app_upgrade(GDBusConnection *connection, const gc
        int size;
        char *pkgid = NULL;
        GVariantIter *iter;
-       gchar *str = NULL;
-       int type;
        uid_t target_uid = -1;
        int ret = 0;
        GList *dir_list = NULL;
        GList *list = NULL;
-       app2ext_dir_details *dir_detail = NULL;
 
        g_variant_get(parameters, "(&sia(si)i)", &pkgid, &size, &iter, &target_uid);
 
@@ -348,30 +356,7 @@ static void _app2sd_server_pre_app_upgrade(GDBusConnection *connection, const gc
                return;
        }
 
-       while (g_variant_iter_loop(iter, "(si)", &str, &type)) {
-               if (str) {
-                       _D("str(%s), type(%d)", str, type);
-
-                       /* generate dir_list */
-                       dir_detail = (app2ext_dir_details *)calloc(1, sizeof(app2ext_dir_details));
-                       if (dir_detail == NULL) {
-                               _E("memory allocation failed");
-                               result = APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
-                               break;
-                       }
-
-                       dir_detail->name = strdup((char *)str);
-                       if (dir_detail->name == NULL) {
-                               _E("out of memory");
-                               free(dir_detail);
-                               result = APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
-                               break;
-                       }
-
-                       dir_detail->type = type;
-                       list = g_list_append(list, dir_detail);
-               }
-       }
+       result = _app2sd_server_generate_directory_list(iter, &list);
        g_variant_iter_free(iter);
 
        dir_list = g_list_first(list);
@@ -551,13 +536,10 @@ static void _app2sd_server_pre_move_installed_app(GDBusConnection *connection,
        int move_type;
        char *pkgid = NULL;
        GVariantIter *iter;
-       gchar *str = NULL;
-       int type;
        int ret = 0;
        uid_t target_uid = -1;
        GList *dir_list = NULL;
        GList *list = NULL;
-       app2ext_dir_details *dir_detail = NULL;
 
        g_variant_get(parameters, "(&sia(si)i)", &pkgid, &move_type, &iter, &target_uid);
 
@@ -572,30 +554,7 @@ static void _app2sd_server_pre_move_installed_app(GDBusConnection *connection,
                return;
        }
 
-       while (g_variant_iter_loop(iter, "(si)", &str, &type)) {
-               if (str) {
-                       _D("str(%s), type(%d)", str, type);
-
-                       /* generate dir_list */
-                       dir_detail = (app2ext_dir_details *)calloc(1, sizeof(app2ext_dir_details));
-                       if (dir_detail == NULL) {
-                               _E("memory allocation failed");
-                               result = APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
-                               break;
-                       }
-
-                       dir_detail->name = strdup((char *)str);
-                       if (dir_detail->name == NULL) {
-                               _E("out of memory");
-                               free(dir_detail);
-                               result = APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
-                               break;
-                       }
-
-                       dir_detail->type = type;
-                       list = g_list_append(list, dir_detail);
-               }
-       }
+       result = _app2sd_server_generate_directory_list(iter, &list);
        g_variant_iter_free(iter);
 
        dir_list = g_list_first(list);