} pkgfile_info;
GList *pkgfile_info_list;
+GList *rw_pkgfile_info_list;
static void __free_pkgfile_info_list(gpointer data)
{
fclose(file);
}
-static int _add_pkgfile_info(const char *backend, const char *directory,
- install_type type, bool skip_check_reference) {
+static int _add_pkgfile_info(GList **list, const char *backend,
+ const char *directory, install_type type,
+ bool skip_check_reference) {
DIR *dir;
struct dirent *file_info;
char err_buf[BUFSZE];
pkgfile->pkg_size = ftell(fp);
fclose(fp);
- pkgfile_info_list = g_list_prepend(pkgfile_info_list, pkgfile);
+ *list = g_list_prepend(*list, pkgfile);
}
closedir(dir);
static void _sort_pkgfile_info_list() {
pkgfile_info_list = g_list_sort(pkgfile_info_list, __pkgfileinfo_compare);
+ rw_pkgfile_info_list = g_list_sort(rw_pkgfile_info_list, __pkgfileinfo_compare);
+ pkgfile_info_list = g_list_concat(rw_pkgfile_info_list, pkgfile_info_list);
+ rw_pkgfile_info_list = NULL;
}
static int _install_pkg_with_pkginfo()
int status = 0;
waitpid(pid, &status, 0);
if (WIFEXITED(status) == 0 || WEXITSTATUS(status) != 0) {
- _E("Execution failed : %s", file_info->backend_type);
+ _E("Install failed : %s, %s", file_info->backend_type, file_info->path);
g_list_free_full(preload_rw_pkg_list, __free_pkginfo);
return -1;
}
}
if (is_default) {
- if (_add_pkgfile_info(TPK_BACKEND_CMD, TPK_DIR,
+ if (_add_pkgfile_info(&pkgfile_info_list, TPK_BACKEND_CMD, TPK_DIR,
INSTALL_TYPE_PRELOAD, skip_check_reference) != 0)
goto error;
- if (_add_pkgfile_info(TPK_BACKEND_CMD, TPK_RW_DIR,
+ if (_add_pkgfile_info(&rw_pkgfile_info_list, TPK_BACKEND_CMD, TPK_RW_DIR,
INSTALL_TYPE_PRELOAD_RW, skip_check_reference) != 0)
goto error;
- if (_add_pkgfile_info(WGT_BACKEND_CMD, WGT_DIR,
+ if (_add_pkgfile_info(&pkgfile_info_list, WGT_BACKEND_CMD, WGT_DIR,
INSTALL_TYPE_PRELOAD, skip_check_reference) != 0)
goto error;
- if (_add_pkgfile_info(WGT_BACKEND_CMD, WGT_RW_DIR,
+ if (_add_pkgfile_info(&rw_pkgfile_info_list, WGT_BACKEND_CMD, WGT_RW_DIR,
INSTALL_TYPE_PRELOAD_RW, skip_check_reference) != 0)
goto error;
- if (_add_pkgfile_info(UNIFIED_BACKEND_CMD, RPK_DIR,
+ if (_add_pkgfile_info(&pkgfile_info_list, UNIFIED_BACKEND_CMD, RPK_DIR,
INSTALL_TYPE_PRELOAD, skip_check_reference) != 0)
goto error;
- if (_add_pkgfile_info(UNIFIED_BACKEND_CMD, RPK_RW_DIR,
+ if (_add_pkgfile_info(&rw_pkgfile_info_list, UNIFIED_BACKEND_CMD, RPK_RW_DIR,
INSTALL_TYPE_PRELOAD_RW, skip_check_reference) != 0)
goto error;
-
+ /* sort pkgfile_info_list and rw_pkgfile_info_list first,
+ * and concat rw_pkgfile_info_list to pkgfile_info_list
+ */
_sort_pkgfile_info_list();
if (_install_pkg_with_pkginfo() != 0)
else
backend_cmd = WGT_BACKEND_CMD;
- if (_add_pkgfile_info(backend_cmd, pkg_path,
+ if (_add_pkgfile_info(&pkgfile_info_list, backend_cmd, pkg_path,
op_type, skip_check_reference) != 0)
goto error;