//
-// Open Service Platform
// Copyright (c) 2012 Samsung Electronics Co., Ltd.
//
// Licensed under the Apache License, Version 2.0 (the License);
const int MAX_APIVERSION = 8;
const int MAX_APPID = 10;
+const char PACKAGE_PATH_FORMAT[] = "/opt/usr/apps/0000000000/";
const char PACKAGE_PATH_FORMAT2[] = "/opt/apps/0000000000/";
-const char PATH_ROOT[] = "/opt/apps/";
+const char PATH_ROOT[] = "/opt/usr/apps/";
+const char PATH_ROOT2[] = "/opt/apps/";
const char APPINFO_FILE_PATH[] = "info/version.info";
const char COMPAT_FILE_PATH[] = "info/compat.info";
const char TYPE_FILE_PATH[] = "info/type.info";
{
delete __pAppName;
delete __pAppVersion;
+
+ // closing may or may not succeed
+ close(__appRootDirFd);
}
_AppInfo*
FILE* pFile = NULL;
{
+ char appInfoPath[PATH_MAX] = {0, };
+#if 0
const int len = strlen(PACKAGE_PATH_FORMAT2);
- char appInfoPath[len + 1];
strncpy(appInfoPath, PACKAGE_PATH_FORMAT2, len);
appInfoPath[len] = '\0';
// due to possible dependency problem, FIoFile is not used
// app root path first
- strncpy(appInfoPath + strlen(PATH_ROOT), appId, MAX_APPID);
+ strncpy(appInfoPath + strlen(PATH_ROOT2), appId, MAX_APPID);
+#else
+ // [FIXME] temporary code for directory location migration
+ int len = strlen(PACKAGE_PATH_FORMAT2);
+ strncpy(appInfoPath, PACKAGE_PATH_FORMAT2, len);
+ appInfoPath[len] = '\0';
+ strncpy(appInfoPath + strlen(PATH_ROOT2), appId, MAX_APPID);
+ if (euidaccess(appInfoPath, R_OK) != 0)
+ {
+ len = strlen(PACKAGE_PATH_FORMAT);
+ strncpy(appInfoPath, PACKAGE_PATH_FORMAT, len);
+ appInfoPath[len] = '\0';
+
+ strncpy(appInfoPath + strlen(PATH_ROOT), appId, MAX_APPID);
+ }
+#endif
// app root directory file descriptor
__appRootDirFd = open(appInfoPath, O_RDONLY | O_CLOEXEC | O_DIRECTORY);
SysLog(NID_APP, "App root directory (%s:%d) open.", appInfoPath, __appRootDirFd);
int fd = openat(__appRootDirFd, APPINFO_FILE_PATH, O_RDONLY);
- SysAssert(fd != -1);
+ SysAssertf(fd != -1, "Failed to open info file, errno: %d (%s)", errno, strerror(errno));
pFile = fdopen(fd, "r");
SysTryCatch(NID_APP, pFile != NULL, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Opening appinfo file (%s) failed : %s.", appInfoPath, strerror(errno));