From 4c25da8a7ba7437657c3e2da592145113d3532f4 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 20 Jul 2019 10:53:14 +0100 Subject: Initial commit Not a lot of stuff, hard coded paths, tests against /usr/portage --- src/blob.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/blob.cpp (limited to 'src/blob.cpp') diff --git a/src/blob.cpp b/src/blob.cpp new file mode 100644 index 0000000..8fb0509 --- /dev/null +++ b/src/blob.cpp @@ -0,0 +1,49 @@ +#include +#include "blob.h" + +GitFS::Blob::Blob(const GitFS::Git::RepositoryPtr & r, const GitFS::Git::TreeEntryPtr & te) : + blob(Git::BlobLookup(r, *git_tree_entry_id(te.get()))), + blobSize(git_blob_rawsize(blob.get())), + blobContent(static_cast(git_blob_rawcontent(blob.get()))) +{ +} + +void +GitFS::Blob::close(const ::Ice::Current& current) +{ + current.adapter->remove(current.id); +} + + +NetFS::Attr +GitFS::Blob::fgetattr(ReqEnv, const ::Ice::Current&) +{ + return {}; +} + + +NetFS::Buffer +GitFS::Blob::read(long long int offset, long long int size, const ::Ice::Current&) +{ + if (offset > blobSize) { + return {}; + } + auto len = std::min(blobSize - offset, size); + return NetFS::Buffer(blobContent + offset, blobContent + offset + len); +} + + +void +GitFS::Blob::ftruncate(ReqEnv, long long int, const ::Ice::Current&) +{ + throw NetFS::SystemError(EROFS); +} + + +void +GitFS::Blob::write(long long int, long long int, Buffer, const ::Ice::Current&) +{ + throw NetFS::SystemError(EROFS); +} + + -- cgit v1.2.3