#include <dpl/wrt-dao-ro/global_config.h>
#include <pkg-manager/pkgmgr_signal.h>
#include <app2ext_interface.h>
+#include <dpl/utils/path.h>
using namespace WrtDB;
namespace { //anonymous
const char* REG_TIZEN_PKGID_PATTERN = "^[a-zA-Z0-9]{10}$";
const int PKGID_LENTH = 10;
-const std::string PRELOAD_INSTALLED_PATH = "/usr/apps";
+const DPL::Utils::Path PRELOAD_INSTALLED_PATH("/usr/apps");
bool checkDirectoryExist(const std::string& pkgId)
{
- std::string installPath =
- std::string(GlobalConfig::GetUserInstalledWidgetPath()) +
- "/" + pkgId;
-
- struct stat dirStat;
- if ((stat(installPath.c_str(), &dirStat) == 0)) {
- return true;
- }
- return false;
+ DPL::Utils::Path installPath(GlobalConfig::GetUserInstalledWidgetPath());
+ installPath /= pkgId;
+ return installPath.Exists();
}
}
m_context.locations = WidgetLocation(m_context.tzPkgid);
m_context.locations->registerAppid(m_context.tzAppid);
m_context.installedPath =
- DPL::ToUTF8String(*dao.getWidgetInstalledPath());
+ DPL::Utils::Path(*dao.getWidgetInstalledPath());
LogInfo("Widget model exists. App id : " << m_context.tzAppid);
LogDebug("Regcomp failed");
}
std::string pkgId;
- std::string installPath;
+ DPL::Utils::Path installPath;
Try {
if ((regexec(®x, id.c_str(),
LogDebug("Get appid from pkgid : " << appid);
m_context.tzAppid = DPL::ToUTF8String(appid);
WrtDB::WidgetDAOReadOnly dao(appid);
- installPath = DPL::ToUTF8String(*dao.getWidgetInstalledPath());
+ installPath = DPL::Utils::Path(*dao.getWidgetInstalledPath());
} else {
pkgId = id.substr(0, PKGID_LENTH);
WrtDB::WidgetDAOReadOnly dao(DPL::FromUTF8String(id));
m_context.tzAppid = id;
- installPath = DPL::ToUTF8String(*dao.getWidgetInstalledPath());
+ installPath = DPL::Utils::Path(*dao.getWidgetInstalledPath());
}
-
- if (0 == installPath.compare(0, PRELOAD_INSTALLED_PATH.length(),
- PRELOAD_INSTALLED_PATH)) {
+ if(installPath.isSubPath(PRELOAD_INSTALLED_PATH)){
LogDebug("This widget is prealoded.");
}
} Catch(WidgetDAOReadOnly::Exception::WidgetNotExist) {
#include <dpl/assert.h>
#include <dpl/exception.h>
#include <dpl/utils/wrt_utility.h>
+#include <dpl/utils/path.h>
#include <ail.h>
#include <pkgmgr/pkgmgr_parser.h>
#include <errno.h>
{
LogDebug("Removing directory");
m_context.removeStarted = true;
- if (!WrtUtilRemove(m_context.installedPath)) {
+ DPL::Utils::Path widgetDir= m_context.installedPath;
+ Try{
+ DPL::Utils::Remove(widgetDir);
+ } Catch(DPL::Utils::Path::BaseException){
LogError("Removing widget installation directory failed : " <<
- m_context.installedPath);
+ widgetDir.Fullpath());
}
- std::string dataDir = m_context.locations->getUserDataRootDir();
- if (!WrtUtilRemove(dataDir)) {
- LogWarning(dataDir + " is already removed");
+ DPL::Utils::Path dataDir(m_context.locations->getUserDataRootDir());
+ Try{
+ DPL::Utils::Remove(dataDir);
+ } Catch(DPL::Utils::Path::BaseException){
+ LogWarning(dataDir.Fullpath() << " is already removed");
}
} else {
LogDebug("Removing sdcard directory");
{
std::ostringstream manifest_name;
manifest_name << m_context.tzPkgid << ".xml";
- std::ostringstream destFile;
- const std::string PRELOAD_INSTALLED_PATH = "/usr/apps";
- if (0 == (m_context.installedPath).compare(0, PRELOAD_INSTALLED_PATH.length(),
- PRELOAD_INSTALLED_PATH)) {
- LogDebug("This widget is prealoded.");
- destFile << "/usr/share/packages" << "/"; //TODO constant with path
+ DPL::Utils::Path destFile;
+ const DPL::Utils::Path PRELOAD_INSTALLED_PATH("/usr/apps");
+ const DPL::Utils::Path USR_PACKAGES_PATH("/usr/share/packages");
+ const DPL::Utils::Path OPT_PACKAGES_PATH("/opt/share/packages");
+ if (0 == (m_context.installedPath.Fullpath()).compare(0,
+ PRELOAD_INSTALLED_PATH.Fullpath().length(),
+ PRELOAD_INSTALLED_PATH.Fullpath())) {
+ LogDebug("This widget is preloaded.");
+ destFile = USR_PACKAGES_PATH;
} else {
- destFile << "/opt/share/packages" << "/"; //TODO constant with path
+ destFile = OPT_PACKAGES_PATH;
}
- destFile << manifest_name.str();
- std::string pre_manifest = "/usr/share/packages/" + manifest_name.str();
+ destFile /= manifest_name.str();
+ DPL::Utils::Path pre_manifest = USR_PACKAGES_PATH;
+ pre_manifest /= manifest_name.str();
- if (!(access(destFile.str().c_str(), F_OK) == 0 &&
- access(pre_manifest.c_str(), F_OK) == 0)) {
+ if (!(destFile.Exists() == 0 && pre_manifest.Exists())) {
int ret1 = pkgmgr_parser_parse_manifest_for_uninstallation(
- destFile.str().c_str(), NULL);
+ destFile.Fullpath().c_str(), NULL);
if (ret1 != 0) {
LogWarning("Manifest file failed to parse for uninstallation");
}
}
-
- int ret2 = unlink(destFile.str().c_str());
- if (ret2 != 0) {
- LogWarning("No manifest file found: " << destFile.str());
+ if (!DPL::Utils::TryRemove(destFile)) {
+ LogWarning("No manifest file found: " << destFile.Fullpath());
} else {
- LogDebug("Manifest file removed: " << destFile.str());
+ LogDebug("Manifest file removed: " << destFile.Fullpath());
}
}
WidgetDAO dao(DPL::FromUTF8String(m_context.tzAppid));
LogDebug("Removing external locations:");
WrtDB::ExternalLocationList externalPaths = dao.getWidgetExternalLocations();
- FOREACH(path, externalPaths)
+ FOREACH(file, externalPaths)
{
- if (WrtUtilFileExists(*path)) {
- LogDebug(" -> " << *path);
- int ret = remove(path->c_str());
- if (ret != 0) {
- LogError(
- "Failed to remove the file: " << path->c_str() <<
- " with error: " << strerror(errno));
- }
- } else if (WrtUtilDirExists(*path)) {
- LogDebug(" -> " << *path);
- if (!WrtUtilRemove(*path)) {
- Throw(
- Jobs::WidgetUninstall::TaskRemoveFiles::Exception::
- RemoveFilesFailed);
+ DPL::Utils::Path path(*file);
+ if(path.Exists()){
+ if(path.IsFile()){
+ LogDebug(" -> " << path.Fullpath());
+ Try{
+ DPL::Utils::Remove(path);
+ }Catch(DPL::Utils::Path::BaseException){
+ LogError("Failed to remove the file: " << path.Fullpath());
+ }
+ } else if (path.IsDir()){
+ LogDebug(" -> " << path.Fullpath());
+ Try{
+ DPL::Utils::Remove(path);
+ }Catch(DPL::Utils::Path::BaseException){
+ Throw(Jobs::WidgetUninstall::TaskRemoveFiles::
+ Exception::RemoveFilesFailed);
+ }
}
- } else {
- LogWarning(" -> " << *path << "(no such a path)");
+ }else{
+ LogWarning(" -> " << path.Fullpath() << "(no such a path)");
}
}
dao.unregisterAllExternalLocations();