db/LightDirectory: use std::chrono::system_clock::time_point
This commit is contained in:
@@ -562,10 +562,13 @@ Visit(struct mpd_connection *connection,
|
||||
VisitPlaylist visit_playlist)
|
||||
{
|
||||
const char *path = mpd_directory_get_path(directory);
|
||||
|
||||
std::chrono::system_clock::time_point mtime =
|
||||
std::chrono::system_clock::time_point::min();
|
||||
#if LIBMPDCLIENT_CHECK_VERSION(2,9,0)
|
||||
time_t mtime = mpd_directory_get_last_modified(directory);
|
||||
#else
|
||||
time_t mtime = 0;
|
||||
time_t _mtime = mpd_directory_get_last_modified(directory);
|
||||
if (_mtime > 0)
|
||||
mtime = std::chrono::system_clock::from_time_t(_mtime);
|
||||
#endif
|
||||
|
||||
if (visit_directory)
|
||||
|
||||
@@ -85,7 +85,10 @@ struct Directory {
|
||||
PlaylistVector playlists;
|
||||
|
||||
Directory *const parent;
|
||||
time_t mtime = 0;
|
||||
|
||||
std::chrono::system_clock::time_point mtime =
|
||||
std::chrono::system_clock::time_point::min();
|
||||
|
||||
uint64_t inode = 0, device = 0;
|
||||
|
||||
const std::string path;
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "PlaylistDatabase.hxx"
|
||||
#include "fs/io/TextFile.hxx"
|
||||
#include "fs/io/BufferedOutputStream.hxx"
|
||||
#include "util/ChronoUtil.hxx"
|
||||
#include "util/StringCompare.hxx"
|
||||
#include "util/NumberParser.hxx"
|
||||
#include "util/RuntimeError.hxx"
|
||||
@@ -74,9 +75,9 @@ directory_save(BufferedOutputStream &os, const Directory &directory)
|
||||
if (type != nullptr)
|
||||
os.Format(DIRECTORY_TYPE "%s\n", type);
|
||||
|
||||
if (directory.mtime != 0)
|
||||
if (!IsNegative(directory.mtime))
|
||||
os.Format(DIRECTORY_MTIME "%lu\n",
|
||||
(unsigned long)directory.mtime);
|
||||
(unsigned long)std::chrono::system_clock::to_time_t(directory.mtime));
|
||||
|
||||
os.Format("%s%s\n", DIRECTORY_BEGIN, directory.GetPath());
|
||||
}
|
||||
@@ -102,7 +103,9 @@ ParseLine(Directory &directory, const char *line)
|
||||
{
|
||||
const char *p;
|
||||
if ((p = StringAfterPrefix(line, DIRECTORY_MTIME))) {
|
||||
directory.mtime = ParseUint64(p);
|
||||
const auto mtime = ParseUint64(p);
|
||||
if (mtime > 0)
|
||||
directory.mtime = std::chrono::system_clock::from_time_t(mtime);
|
||||
} else if ((p = StringAfterPrefix(line, DIRECTORY_TYPE))) {
|
||||
directory.device = ParseTypeString(p);
|
||||
} else
|
||||
|
||||
@@ -477,7 +477,8 @@ VisitObject(const UPnPDirObject &object, const char *uri,
|
||||
|
||||
case UPnPDirObject::Type::CONTAINER:
|
||||
if (visit_directory)
|
||||
visit_directory(LightDirectory(uri, 0));
|
||||
visit_directory(LightDirectory(uri,
|
||||
std::chrono::system_clock::time_point::min()));
|
||||
break;
|
||||
|
||||
case UPnPDirObject::Type::ITEM:
|
||||
@@ -582,7 +583,8 @@ UpnpDatabase::Visit(const DatabaseSelection &selection,
|
||||
if (vpath.empty()) {
|
||||
for (const auto &server : discovery->GetDirectories()) {
|
||||
if (visit_directory) {
|
||||
const LightDirectory d(server.getFriendlyName(), 0);
|
||||
const LightDirectory d(server.getFriendlyName(),
|
||||
std::chrono::system_clock::time_point::min());
|
||||
visit_directory(d);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user