* 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);
|
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"
|
#include "PackageDirectory.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct DirectoryIterator : DoublyLinkedListLinkImpl<DirectoryIterator> {
|
struct DirectoryIterator : DoublyLinkedListLinkImpl<DirectoryIterator> {
|
||||||
Node* node;
|
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
|
#endif // DIRECTORY_H
|
||||||
|
|||||||
@@ -358,8 +358,13 @@ Volume::Mount(const char* parameterString)
|
|||||||
RETURN_ERROR(B_BAD_VALUE);
|
RETURN_ERROR(B_BAD_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct stat st;
|
||||||
|
if (stat(packages, &st) < 0)
|
||||||
|
RETURN_ERROR(B_ERROR);
|
||||||
|
|
||||||
// create the root node
|
// create the root node
|
||||||
fRootDirectory = new(std::nothrow) Directory(kRootDirectoryID);
|
fRootDirectory
|
||||||
|
= new(std::nothrow) ::RootDirectory(kRootDirectoryID, st.st_mtim);
|
||||||
if (fRootDirectory == NULL)
|
if (fRootDirectory == NULL)
|
||||||
RETURN_ERROR(B_NO_MEMORY);
|
RETURN_ERROR(B_NO_MEMORY);
|
||||||
fRootDirectory->Init(NULL, volumeName != NULL ? volumeName : "Package FS");
|
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;
|
st->st_ctim = st->st_mtim;
|
||||||
// TODO: Perhaps manage a changed time (particularly for directories)?
|
// TODO: Perhaps manage a changed time (particularly for directories)?
|
||||||
st->st_crtim = st->st_mtim;
|
st->st_crtim = st->st_mtim;
|
||||||
st->st_blocks = st->st_size / 512;
|
st->st_blocks = (st->st_size + 511) / 512;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user