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);
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);
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);
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);
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);
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);