summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-08-30 13:40:43 -0400
committerJackLivio <jack@livio.io>2018-08-30 13:40:43 -0400
commit051d56595bb7c7b5e6eef242744da2f43891ccb7 (patch)
treef13e279307288963af9245cf755409523fb7aa2d
parent47aa0561983a63eafc2a0ed2cf1b47f5c061b5fc (diff)
downloadsdl_core-051d56595bb7c7b5e6eef242744da2f43891ccb7.tar.gz
Update GetFileModificationTime to use boost
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_app_icon_request.cc15
-rw-r--r--src/components/utils/include/utils/file_system.h3
-rw-r--r--src/components/utils/src/file_system.cc17
3 files changed, 22 insertions, 13 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_app_icon_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_app_icon_request.cc
index e6332d85c8..a36f396842 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_app_icon_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_app_icon_request.cc
@@ -200,10 +200,21 @@ void SetAppIconRequest::CopyToIconStorage(
return;
}
+struct compareTime {
+ bool operator()(const time_t t1, const time_t t2) {
+ double time_difference = difftime(t1, t2);
+ if (time_difference > 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+};
+
void SetAppIconRequest::RemoveOldestIcons(const std::string& storage,
const uint32_t icons_amount) const {
const std::vector<std::string> icons_list = file_system::ListFiles(storage);
- std::map<uint64_t, std::string> icon_modification_time;
+ std::map<time_t, std::string, compareTime> icon_modification_time;
std::vector<std::string>::const_iterator it = icons_list.begin();
for (; it != icons_list.end(); ++it) {
const std::string file_name = *it;
@@ -211,7 +222,7 @@ void SetAppIconRequest::RemoveOldestIcons(const std::string& storage,
if (!file_system::FileExists(file_path)) {
continue;
}
- const uint64_t time = file_system::GetFileModificationTime(file_path);
+ const time_t time = file_system::GetFileModificationTime(file_path);
icon_modification_time[time] = file_name;
}
diff --git a/src/components/utils/include/utils/file_system.h b/src/components/utils/include/utils/file_system.h
index cdd7b478d6..61495d462c 100644
--- a/src/components/utils/include/utils/file_system.h
+++ b/src/components/utils/include/utils/file_system.h
@@ -39,6 +39,7 @@
#include <iostream>
#include <string>
#include <vector>
+#include <time.h>
namespace file_system {
@@ -263,7 +264,7 @@ bool CreateFile(const std::string& path);
* @param path Path to file
* @return Modification time in nanoseconds
*/
-uint64_t GetFileModificationTime(const std::string& path);
+time_t GetFileModificationTime(const std::string& path);
/**
* @brief Copy file from source to destination
diff --git a/src/components/utils/src/file_system.cc b/src/components/utils/src/file_system.cc
index 92fc643577..19a6388fcf 100644
--- a/src/components/utils/src/file_system.cc
+++ b/src/components/utils/src/file_system.cc
@@ -213,7 +213,7 @@ bool file_system::IsFileNameValid(const std::string& file_name) {
// Does not remove if file is write-protected
bool file_system::DeleteFile(const std::string& name) {
if (FileExists(name) && IsAccessible(name, W_OK)) {
- return !remove(name.c_str());
+ return fs::remove(name.c_str());
}
return false;
}
@@ -364,16 +364,13 @@ bool file_system::CreateFile(const std::string& path) {
}
}
-// NOTE: this seems to be buggy
-// It returns only the ns _component_ of modify time, not the whole thing
-// see https://github.com/smartdevicelink/sdl_core/pull/1436/commits for a
-// potential fix / further explanation
-uint64_t file_system::GetFileModificationTime(const std::string& path) {
- struct stat info;
- if (0 != stat(path.c_str(), &info)) {
- LOG4CXX_WARN_WITH_ERRNO(logger_, "Could not get file mod time: " << path);
+time_t file_system::GetFileModificationTime(const std::string& path) {
+ error_code ec;
+ std::time_t time = fs::last_write_time(path, ec);
+ if (ec) {
+ return 0;
}
- return static_cast<uint64_t>(info.st_mtim.tv_nsec);
+ return time;
}
bool file_system::CopyFile(const std::string& src, const std::string& dst) {