From 7efab6ab26fb1195284e6ed527db97a6344e7945 Mon Sep 17 00:00:00 2001 From: Soyoung Kim Date: Tue, 7 May 2013 15:25:58 +0900 Subject: [PATCH] Add shared directory [Issue#] N/A [Problem] N/A [Cause] N/A [Solution] add shared directory [SCMRequest] N/A --- src/jobs/widget_install/task_file_manipulation.cpp | 26 ++++++++++++++++++++++ src/jobs/widget_install/task_file_manipulation.h | 1 + src/misc/widget_location.cpp | 26 ++++++++++++++++++++++ src/misc/widget_location.h | 5 +++++ 4 files changed, 58 insertions(+) diff --git a/src/jobs/widget_install/task_file_manipulation.cpp b/src/jobs/widget_install/task_file_manipulation.cpp index e32607b..b1629de 100644 --- a/src/jobs/widget_install/task_file_manipulation.cpp +++ b/src/jobs/widget_install/task_file_manipulation.cpp @@ -157,12 +157,14 @@ TaskFileManipulation::TaskFileManipulation(InstallerContext& context) : AddAbortStep(&TaskFileManipulation::StepAbortRenamePath); } AddStep(&TaskFileManipulation::StepCreatePrivateStorageDir); + AddStep(&TaskFileManipulation::StepCreateSharedFolder); AddStep(&TaskFileManipulation::StepLinkForPreload); } else { AddStep(&TaskFileManipulation::StepPrepareExternalDir); AddStep(&TaskFileManipulation::StepInstallToExternal); AddStep(&TaskFileManipulation::StepCreatePrivateStorageDir); + AddStep(&TaskFileManipulation::StepCreateSharedFolder); AddAbortStep(&TaskFileManipulation::StepAbortCreateExternalDir); } @@ -406,5 +408,29 @@ void TaskFileManipulation::StepAbortCreateExternalDir() } WidgetInstallToExtSingleton::Instance().deinitialize(); } + +void TaskFileManipulation::StepCreateSharedFolder() +{ + LogDebug("StepCreateSharedFolder"); + std::string sharedPath = m_context.locations->getSharedRootDir(); + LogDebug("Create shared directory : " << + m_context.locations->getSharedRootDir()); + + WrtUtilMakeDir(sharedPath); + + if (m_context.isUpdateMode) { //update + std::string backData = m_context.locations->getBackupSharedDir(); + LogDebug("copy shared storage " << backData << " to " << sharedPath); + if (!DirectoryApi::DirectoryCopy(backData, sharedPath)) { + LogError("Failed to rename " << backData << " to " << sharedPath); + ThrowMsg(Exceptions::BackupFailed, + "Error occurs copy shared strage files"); + } + } else { + WrtUtilMakeDir(m_context.locations->getSharedResourceDir()); + WrtUtilMakeDir(m_context.locations->getSharedDataDir()); + WrtUtilMakeDir(m_context.locations->getSharedTrustedDir()); + } +} } //namespace WidgetInstall } //namespace Jobs diff --git a/src/jobs/widget_install/task_file_manipulation.h b/src/jobs/widget_install/task_file_manipulation.h index 44b20f5..fc1d9ff 100644 --- a/src/jobs/widget_install/task_file_manipulation.h +++ b/src/jobs/widget_install/task_file_manipulation.h @@ -39,6 +39,7 @@ class TaskFileManipulation : void StepCreateDirs(); void StepRenamePath(); void StepCreatePrivateStorageDir(); + void StepCreateSharedFolder(); void StepAbortRenamePath(); void StepLinkForPreload(); diff --git a/src/misc/widget_location.cpp b/src/misc/widget_location.cpp index adfbd44..a2905aa 100644 --- a/src/misc/widget_location.cpp +++ b/src/misc/widget_location.cpp @@ -240,3 +240,29 @@ void WidgetLocation::registerAppid(const std::string & appid) { m_appid = appid; } + +std::string WidgetLocation::getSharedRootDir() const +{ + /* TODO : add wrt-commons*/ + return getUserDataRootDir() + "/shared"; +} + +std::string WidgetLocation::getSharedResourceDir() const +{ + return getSharedRootDir() + "/res"; +} + +std::string WidgetLocation::getSharedDataDir() const +{ + return getSharedRootDir() + "/data"; +} + +std::string WidgetLocation::getSharedTrustedDir() const +{ + return getSharedRootDir() + "/trusted"; +} + +std::string WidgetLocation::getBackupSharedDir() const +{ + return getBackupDir() + "/shared"; +} diff --git a/src/misc/widget_location.h b/src/misc/widget_location.h index 0cdcbdd..ad73d80 100644 --- a/src/misc/widget_location.h +++ b/src/misc/widget_location.h @@ -124,6 +124,11 @@ class WidgetLocation std::string getBackupPrivateDir() const; // /opt/apps/[pkg].backup/data std::string getUserDataRootDir() const; // /opt/usr/apps/[package] std::string getPrivateStorageDir() const; // /opt/usr/apps/[package]/data + std::string getSharedRootDir() const; // /opt/usr/apps/[package]/shared + std::string getSharedResourceDir() const; // /opt/usr/apps/[package]/shared/res + std::string getSharedDataDir() const; // /opt/usr/apps/[package]/shared/data + std::string getSharedTrustedDir() const; // /opt/usr/apps/[package]/shared/trusted + std::string getBackupSharedDir() const; // /opt/usr/apps/[package].backup/shared // Temporary paths /** -- 2.7.4