#include "app2sd_internals.h"
-static int __app2sd_create_app2sd_directories(uid_t uid)
+static int __app2sd_create_app2sd_directories(uid_t uid, char *mmc_path)
{
int ret = 0;
+ char app2sd_path[FILENAME_MAX] = { 0, };
mode_t mode = DIR_PERMS;
- ret = mkdir(APP2SD_PATH, mode);
+ snprintf(app2sd_path, FILENAME_MAX - 1, "%s/%s",
+ mmc_path, EXTIMG_DIR);
+ ret = mkdir(app2sd_path, mode);
if (ret) {
if (errno != EEXIST) {
_E("create directory failed," \
{
int ret = 0;
int free_mmc_mem = 0;
+ char *sdpath = NULL;
char *device_node = NULL;
#if !defined(TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION)
char *devi = NULL;
-#endif
char *result = NULL;
+#endif
+ char mmc_path[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
char *encoded_id = NULL;
}
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _E("MMC not preset OR Not ready (%d)", ret);
+ _E("MMC not present OR Not ready (%d)", ret);
return APP2EXT_ERROR_MMC_STATUS;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
+ sync();
/* find available free memory in the MMC card */
- ret = _app2sd_get_available_free_memory(MMC_PATH, &free_mmc_mem);
+ ret = _app2sd_get_available_free_memory(mmc_path, &free_mmc_mem);
if (ret) {
- _E("unable to get available free memory in MMC (%d)",
- ret);
+ _E("unable to get available free memory in MMC (%d)", ret);
return APP2EXT_ERROR_MMC_STATUS;
}
_D("size details for application installation:" \
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
- ret = __app2sd_create_app2sd_directories(uid);
+ ret = __app2sd_create_app2sd_directories(uid, mmc_path);
if (ret) {
_E("failed to create app2sd dirs");
return ret;
}
- /* check same loopback_device existence */
- result = (char *)_app2sd_find_associated_device(loopback_device);
- if (result != NULL) {
- _E("there is same associated File (%s)", loopback_device);
- return APP2EXT_ERROR_SAME_LOOPBACK_DEVICE_EXISTS;
- }
-
/* create a loopback device */
ret = _app2sd_create_loopback_device(pkgid, loopback_device,
(reqd_disk_size + PKG_BUF_SIZE));
}
#endif
+ sync();
return ret;
}
app2ext_status install_status, uid_t uid)
{
char *device_name = NULL;
+ char *sdpath = NULL;
+ char mmc_path[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
+ char application_mmc_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
char *encoded_id = NULL;
int ret = APP2EXT_SUCCESS;
}
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
_E("MMC not present OR Not ready (%d)", ret);
return APP2EXT_ERROR_MMC_STATUS;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
sync();
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
+ snprintf(application_mmc_path, FILENAME_MAX - 1, "%s/.mmc",
+ application_path);
/* get the associated device node for SD card applicationer */
#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
if (ret)
_E("unable to delete info");
- ret = _app2sd_delete_directory(application_path);
+ ret = _app2sd_delete_directory(application_mmc_path);
if (ret)
_E("unable to delete the directory (%s)", application_path);
} else {
* to pkgmgr_parser db
*/
pkgmgr_ret = pkgmgrinfo_pkginfo_set_usr_installed_storage(pkgid,
- INSTALL_EXTERNAL, uid);
+ INSTALL_EXTERNAL, loopback_device, uid);
if (pkgmgr_ret < 0) {
_E("fail to update installed location " \
"to db[%s, %d] of uid(%d), pkgmgr ret(%d)",
}
}
+ sync();
return ret;
}
int app2sd_usr_on_demand_setup_init(const char *pkgid, uid_t uid)
{
int ret = APP2EXT_SUCCESS;
+ char mmc_path[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
char *encoded_id = NULL;
char *device_node = NULL;
#if !defined(TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION)
}
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _E("MMC not preset OR Not ready (%d)", ret);
+ _E("MMC not present OR Not ready (%d)", ret);
return APP2EXT_ERROR_MMC_STATUS;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (encoded_id == NULL)
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
return APP2EXT_ERROR_KILLAPP_ERROR;
}
- ret = aul_terminate_pid_sync_for_uid(pid, uid);
+ ret = aul_terminate_pid_sync_without_restart_for_uid(pid, uid);
if (ret != AUL_R_OK) {
_E("failed to kill app");
return APP2EXT_ERROR_KILLAPP_ERROR;
int app2sd_usr_on_demand_setup_exit(const char *pkgid, uid_t uid)
{
int ret = APP2EXT_SUCCESS;
+ char mmc_path[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
char *encoded_id = NULL;
FILE *fp = NULL;
int mmc_present = 1;
_app2sd_kill_running_app(pkgid, uid);
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _W("MMC not preset OR Not ready (%d)", ret);
+ _W("MMC not present OR Not ready (%d)", ret);
mmc_present = 0;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (encoded_id == NULL)
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
int app2sd_usr_pre_app_uninstall(const char *pkgid, uid_t uid)
{
int ret = APP2EXT_SUCCESS;
+ char mmc_path[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
char *encoded_id = NULL;
char *device_node = NULL;
FILE *fp = NULL;
}
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _E("MMC not preset OR Not ready (%d)", ret);
+ _E("MMC not present OR Not ready (%d)", ret);
ret = APP2EXT_ERROR_MMC_STATUS;
goto END;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
+ sync();
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (encoded_id == NULL)
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
}
END:
+ sync();
return ret;
}
int app2sd_usr_post_app_uninstall(const char *pkgid, uid_t uid)
{
+ char mmc_path[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
+ char application_mmc_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
char *encoded_id = NULL;
int ret = APP2EXT_SUCCESS;
}
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _E("MMC not preset OR Not ready (%d)", ret);
+ _E("MMC not present OR Not ready (%d)", ret);
ret = APP2EXT_ERROR_MMC_STATUS;
goto END;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
+ sync();
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (encoded_id == NULL)
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
+ snprintf(application_mmc_path, FILENAME_MAX - 1, "%s/.mmc",
+ application_path);
/* unmount the loopback encrypted pseudo device from
* the application installation path
goto END;
}
- ret = _app2sd_delete_directory(application_path);
+ ret = _app2sd_delete_directory(application_mmc_path);
if (ret) {
_E("unable to delete the directory (%s)",
application_path);
}
END:
+ sync();
return ret;
}
{
int ret = 0;
int pkgmgr_ret = 0;
+ char *sdpath = NULL;
+ char *image_path = NULL;
+ char mmc_path[FILENAME_MAX] = { 0, };
/* validate function arguments */
if (pkgid == NULL || dir_list == NULL
return APP2EXT_ERROR_INVALID_ARGUMENTS;
}
- ret = __app2sd_create_app2sd_directories(uid);
+ /* check whether MMC is present or not */
+ ret = _app2sd_check_mmc_status(&sdpath);
+ if (ret) {
+ _E("MMC not present OR Not ready(%d)", ret);
+ return APP2EXT_ERROR_MMC_STATUS;
+ }
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
+ sync();
+
+ ret = __app2sd_create_app2sd_directories(uid, mmc_path);
if (ret) {
_E("failed to create app2sd dirs");
return ret;
}
- ret = _app2sd_usr_move_app(pkgid, move_type, dir_list, uid);
+ ret = _app2sd_usr_move_app(pkgid, move_type, dir_list, uid, mmc_path, &image_path);
if (ret) {
_D("unable to move application");
return ret;
/* if move is completed, then update installed storage to pkgmgr_parser db */
if (move_type == APP2EXT_MOVE_TO_EXT) {
+ if (!image_path) {
+ _E("image_path is NULL");
+ return APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
+ }
pkgmgr_ret = pkgmgrinfo_pkginfo_set_usr_installed_storage(pkgid,
- INSTALL_EXTERNAL, uid);
+ INSTALL_EXTERNAL, image_path, uid);
if (pkgmgr_ret < 0) {
_E("failed to update installed location to db " \
"[%s, %s] of uid(%d), pkgmgr_ret(%d)",
}
} else {
pkgmgr_ret = pkgmgrinfo_pkginfo_set_usr_installed_storage(pkgid,
- INSTALL_INTERNAL, uid);
+ INSTALL_INTERNAL, image_path, uid);
if (pkgmgr_ret < 0) {
_E("failed to update installed location to db " \
"[%s, %s] of uid(%d), pkgmgr_ret(%d)",
}
}
+ if (image_path)
+ free(image_path);
+
+ sync();
return APP2EXT_SUCCESS;
}
app2ext_move_type move_type, uid_t uid)
{
int ret = 0;
+ char mmc_path[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
char *encoded_id = NULL;
/* validate function arguments */
return APP2EXT_SUCCESS;
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _E("MMC not preset OR Not ready(%d)", ret);
+ _E("MMC not present OR Not ready(%d)", ret);
return APP2EXT_ERROR_MMC_STATUS;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
+ sync();
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (encoded_id == NULL)
return APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
free(encoded_id);
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
int size, uid_t uid)
{
int ret = APP2EXT_SUCCESS;
+ char app2sd_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
char temp_uid[32] = { 0, };
+ char *sdpath = NULL;
char *temp_pkgid = NULL;
char *temp_loopback_device = NULL;
char *temp_application_path = NULL;
}
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _E("MMC not preset OR Not ready (%d)", ret);
+ _E("MMC not present OR Not ready (%d)", ret);
return APP2EXT_ERROR_MMC_STATUS;
}
+ snprintf(app2sd_path, FILENAME_MAX - 1, "%s/%s",
+ sdpath, EXTIMG_DIR);
+ free(sdpath);
+ sync();
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (encoded_id == NULL)
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ app2sd_path, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ app2sd_path, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
free(temp_application_path);
return APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
}
- len = strlen(APP2SD_PATH) + strlen(temp_encoded_id) + 1;
+ len = strlen(app2sd_path) + strlen(temp_encoded_id) + 1;
temp_loopback_device = calloc(len + 1, sizeof(char));
if (temp_loopback_device == NULL) {
_E("memory alloc failed");
return APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
}
snprintf(temp_loopback_device, len + 1, "%s/%s",
- APP2SD_PATH, temp_encoded_id);
+ app2sd_path, temp_encoded_id);
free(temp_encoded_id);
} else {
tzplatform_set_user(uid);
return APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
}
snprintf(temp_uid, 32, "%d", uid);
- len = strlen(APP2SD_PATH) + strlen(temp_uid) + strlen(temp_encoded_id) + 2;
+ len = strlen(app2sd_path) + strlen(temp_uid) + strlen(temp_encoded_id) + 2;
temp_loopback_device = calloc(len + 1, sizeof(char));
if (temp_loopback_device == NULL) {
_E("memory alloc failed");
return APP2EXT_ERROR_MEMORY_ALLOC_FAILED;
}
snprintf(temp_loopback_device, len + 1, "%s/%s",
- APP2SD_PATH, temp_encoded_id);
+ app2sd_path, temp_encoded_id);
free(temp_encoded_id);
tzplatform_reset_user();
}
free(device_node);
device_node = NULL;
}
+
+ sync();
return ret;
}
int app2sd_usr_post_app_upgrade(const char *pkgid,
app2ext_status install_status, uid_t uid)
{
- char *device_name = NULL;
+ char mmc_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
+ char *device_name = NULL;
char *encoded_id = NULL;
int ret = APP2EXT_SUCCESS;
+ int pkgmgr_ret = 0;
/* validate the function parameter recieved */
if (pkgid == NULL || install_status < APP2EXT_STATUS_FAILED
}
/* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status();
+ ret = _app2sd_check_mmc_status(&sdpath);
if (ret) {
- _E("MMC not preset OR Not ready (%d)", ret);
+ _E("MMC not present OR Not ready (%d)", ret);
return APP2EXT_ERROR_MMC_STATUS;
}
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
+ sync();
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (encoded_id == NULL)
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
}
#endif
+ pkgmgr_ret = pkgmgrinfo_pkginfo_set_usr_installed_storage(pkgid,
+ INSTALL_EXTERNAL, loopback_device, uid);
+ if (pkgmgr_ret < 0) {
+ _E("fail to update installed location " \
+ "to db[%s, %d] of uid(%d), pkgmgr ret(%d)",
+ pkgid, INSTALL_EXTERNAL, uid, pkgmgr_ret);
+ return APP2EXT_ERROR_PKGMGR_ERROR;
+ }
+
if (device_name) {
free(device_name);
device_name = NULL;
}
+ sync();
return ret;
}
int app2sd_usr_force_clean(const char *pkgid, uid_t uid)
{
+ char mmc_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
char application_path[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
char *encoded_id = NULL;
int ret = APP2EXT_SUCCESS;
return APP2EXT_ERROR_INVALID_ARGUMENTS;
}
+ /* check whether MMC is present or not */
+ ret = _app2sd_check_mmc_status(&sdpath);
+ if (ret) {
+ _E("MMC not present OR Not ready (%d)", ret);
+ return APP2EXT_ERROR_MMC_STATUS;
+ }
+ snprintf(mmc_path, FILENAME_MAX - 1, "%s", sdpath);
+ free(sdpath);
sync();
encoded_id = _app2sd_get_encoded_name(pkgid, uid);
if (_is_global(uid)) {
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_SYS_RW_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
} else {
tzplatform_set_user(uid);
snprintf(application_path, FILENAME_MAX - 1, "%s/%s",
tzplatform_getenv(TZ_USER_APP), pkgid);
- snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, encoded_id);
+ snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s/%s",
+ mmc_path, EXTIMG_DIR, encoded_id);
tzplatform_reset_user();
}
free(encoded_id);
ret = _app2sd_force_clean(pkgid, application_path, loopback_device, uid);
+ sync();
return ret;
}
int ret = APP2EXT_SUCCESS;
int rc = 0;
char buf[FILENAME_MAX] = { 0, };
+ char app2sd_path[FILENAME_MAX] = { 0, };
char loopback_device[FILENAME_MAX] = { 0, };
+ char *sdpath = NULL;
+ char *pkgid = NULL;
DIR *dir = NULL;
struct dirent entry;
struct dirent *result = NULL;
- char *pkgid = NULL;
uid_t uid = 0;
- dir = opendir(APP2SD_PATH);
+ /* check whether MMC is present or not */
+ ret = _app2sd_check_mmc_status(&sdpath);
+ if (ret) {
+ _E("MMC not present OR Not ready (%d)", ret);
+ return APP2EXT_ERROR_MMC_STATUS;
+ }
+ snprintf(app2sd_path, FILENAME_MAX - 1, "%s/%s",
+ sdpath, EXTIMG_DIR);
+ free(sdpath);
+
+ dir = opendir(app2sd_path);
if (!dir) {
strerror_r(errno, buf, sizeof(buf));
_E("failed to opendir (%s)", buf);
strcmp(entry.d_name, "..") == 0)
continue;
snprintf(loopback_device, FILENAME_MAX - 1, "%s/%s",
- APP2SD_PATH, entry.d_name);
+ app2sd_path, entry.d_name);
ret = _app2sd_get_info_from_db(loopback_device,
&pkgid, &uid);
if (ret) {
}
closedir(dir);
+ sync();
return ret;
}
if (ret)
_E("disable full pkg error(%d)", ret);
+ sync();
return ret;
}