* round up the value put into st_blocks
* inject modification time of package folder into root folder of package-fs git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40230 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -210,3 +210,18 @@ Directory::RemoveDirectoryIterator(DirectoryIterator* iterator)
|
||||
{
|
||||
fIterators.Remove(iterator);
|
||||
}
|
||||
|
||||
|
||||
RootDirectory::RootDirectory(ino_t id, const timespec& modifiedTime)
|
||||
:
|
||||
Directory(id),
|
||||
fModifiedTime(modifiedTime)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
timespec
|
||||
RootDirectory::ModifiedTime() const
|
||||
{
|
||||
return fModifiedTime;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include "PackageDirectory.h"
|
||||
|
||||
|
||||
|
||||
struct DirectoryIterator : DoublyLinkedListLinkImpl<DirectoryIterator> {
|
||||
Node* node;
|
||||
|
||||
@@ -83,4 +82,16 @@ Directory::NextChild(Node* node) const
|
||||
}
|
||||
|
||||
|
||||
class RootDirectory : public Directory {
|
||||
public:
|
||||
RootDirectory(ino_t id,
|
||||
const timespec& modifiedTime);
|
||||
|
||||
virtual timespec ModifiedTime() const;
|
||||
|
||||
private:
|
||||
timespec fModifiedTime;
|
||||
};
|
||||
|
||||
|
||||
#endif // DIRECTORY_H
|
||||
|
||||
@@ -358,8 +358,13 @@ Volume::Mount(const char* parameterString)
|
||||
RETURN_ERROR(B_BAD_VALUE);
|
||||
}
|
||||
|
||||
struct stat st;
|
||||
if (stat(packages, &st) < 0)
|
||||
RETURN_ERROR(B_ERROR);
|
||||
|
||||
// create the root node
|
||||
fRootDirectory = new(std::nothrow) Directory(kRootDirectoryID);
|
||||
fRootDirectory
|
||||
= new(std::nothrow) ::RootDirectory(kRootDirectoryID, st.st_mtim);
|
||||
if (fRootDirectory == NULL)
|
||||
RETURN_ERROR(B_NO_MEMORY);
|
||||
fRootDirectory->Init(NULL, volumeName != NULL ? volumeName : "Package FS");
|
||||
|
||||
@@ -341,7 +341,7 @@ packagefs_read_stat(fs_volume* fsVolume, fs_vnode* fsNode, struct stat* st)
|
||||
st->st_ctim = st->st_mtim;
|
||||
// TODO: Perhaps manage a changed time (particularly for directories)?
|
||||
st->st_crtim = st->st_mtim;
|
||||
st->st_blocks = st->st_size / 512;
|
||||
st->st_blocks = (st->st_size + 511) / 512;
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user