#include <pkgmgr-info.h>
#include <pkgmgr_installer.h>
#include <package-manager.h>
+#include <storage-internal.h>
#define MAX_PKG_NAME_LEN 256
#define INTERNAL_CACHE_PATH_PREFIX tzplatform_getenv(TZ_USER_APP)
-#define EXTERNAL_CACHE_PATH_PREFIX tzplatform_mkpath(TZ_SYS_MEDIA, "SDCardA1/apps")
#define CACHE_PATH_POSTFIX "/cache"
#define SHARED_PATH_POSTFIX "/shared/cache"
#define REGULAR_USER 5000
static pkgmgr_installer *pi;
+static int __get_sdcard_path(char **sdpath)
+{
+ int ret;
+ int storage_id;
+
+ if (sdpath == NULL)
+ return -1;
+
+ ret = storage_get_primary_sdcard(&storage_id, sdpath);
+ if (ret != STORAGE_ERROR_NONE) {
+ if (*sdpath)
+ free(*sdpath);
+ return -1;
+ }
+ return 0;
+}
+
static void __send_signal(const char *pkgid, const char *event_type,
const char *key, const char *val)
{
{
int ret = 0;
char dirname[PATH_MAX] = {0,};
+ char *sdpath = NULL;
if (pkgid == NULL) {
LOGE("pkgid is NULL\n");
LOGE("Failed to clear internal shared cache dir.");
/* cache external */
+ ret = __get_sdcard_path(&sdpath);
+ if (ret != 0 || sdpath == NULL)
+ LOGE("Failed to get external storage path");
- snprintf(dirname, sizeof(dirname), "%s%s%s",
- EXTERNAL_CACHE_PATH_PREFIX,
- tzplatform_mkpath(TZ_USER_NAME, pkgid),
+ snprintf(dirname, sizeof(dirname), "%s/%s%s%s",
+ sdpath, "apps",
+ tzplatform_mkpath3(TZ_USER_NAME, "apps_rw", pkgid),
CACHE_PATH_POSTFIX);
-
ret = __clear_dir(dirname);
if (ret < 0)
LOGE("Failed to clear external cache dir.");
/* shared/cache external */
- snprintf(dirname, sizeof(dirname), "%s%s%s",
- EXTERNAL_CACHE_PATH_PREFIX,
- tzplatform_mkpath(TZ_USER_NAME, pkgid),
+ snprintf(dirname, sizeof(dirname), "%s/%s%s%s",
+ sdpath, "apps",
+ tzplatform_mkpath3(TZ_USER_NAME, "apps_rw", pkgid),
SHARED_PATH_POSTFIX);
-
tzplatform_reset_user();
+ free(sdpath);
ret = __clear_dir(dirname);
if (ret < 0)
#include <dlog.h>
#include <package-manager.h>
#include <pkgmgr_installer.h>
+#include <storage-internal.h>
#undef LOG_TAG
#ifndef LOG_TAG
#define OWNER_ROOT 0
#define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
-#define APP_BASE_EXTERNAL_PATH tzplatform_mkpath(TZ_SYS_MEDIA, "SDCardA1/apps")
-
typedef enum {
STORAGE_TYPE_INTERNAL_GLOBAL_PATH,
STORAGE_TYPE_INTERNAL_USER_PATH,
return size;
}
+static int __get_sdcard_path(char **sdpath)
+{
+ int ret;
+ int storage_id;
+
+ if (sdpath == NULL)
+ return -1;
+
+ ret = storage_get_primary_sdcard(&storage_id, sdpath);
+ if (ret != STORAGE_ERROR_NONE) {
+ if (*sdpath)
+ free(*sdpath);
+ return -1;
+ }
+ return 0;
+}
+
static long long __calculate_directory_size(int dfd, bool include_itself)
{
long long size = 0;
{
char app_root_dir[MAX_PATH_LENGTH] = {0, };
char buf[1024] = {0, };
+ char *sdpath = NULL;
DIR *dir;
int dfd;
int subfd = -1;
tzplatform_reset_user();
} else if (type == STORAGE_TYPE_EXTERNAL_USER_PATH) {
tzplatform_set_user(target_uid);
- snprintf(app_root_dir, MAX_PATH_LENGTH, "%s%s",
- APP_BASE_EXTERNAL_PATH,
+ ret = __get_sdcard_path(&sdpath);
+ if (ret != 0 || sdpath == NULL)
+ return -1;
+ snprintf(app_root_dir, MAX_PATH_LENGTH, "%s/%s%s",
+ sdpath, "apps",
tzplatform_mkpath3(TZ_USER_NAME, "apps_rw", pkgid));
+ free(sdpath);
tzplatform_reset_user();
} else {
LOGE("Invalid STORAGE_TYPE");
caller_uid = atoi(argv[3]);
req_key = argv[5];
- if (argv[8] && !strcmp("--sync", argv[8])) {
+ if (argv[8] && !strcmp("--sync", argv[8]))
fifo_exist = 1;
- }
pi = pkgmgr_installer_new();
if (pi == NULL) {