diff --git a/src/add-ons/kernel/file_systems/packagefs/Jamfile b/src/add-ons/kernel/file_systems/packagefs/Jamfile index 48a331eab6..c38e91f350 100644 --- a/src/add-ons/kernel/file_systems/packagefs/Jamfile +++ b/src/add-ons/kernel/file_systems/packagefs/Jamfile @@ -35,6 +35,7 @@ HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES = DataOutput.cpp DataReader.cpp ErrorOutput.cpp + FDDataReader.cpp PackageContentHandler.cpp PackageData.cpp PackageDataReader.cpp diff --git a/src/build/libpackage/Jamfile b/src/build/libpackage/Jamfile index e0ef43b062..1e0a27919c 100644 --- a/src/build/libpackage/Jamfile +++ b/src/build/libpackage/Jamfile @@ -19,6 +19,7 @@ USES_BE_API on libpackage_build.so = true ; HPKG_SOURCES = + AttributeDataReader.cpp BlockBufferCache.cpp BlockBufferCacheImpl.cpp BufferCache.cpp @@ -26,6 +27,7 @@ HPKG_SOURCES = DataOutput.cpp DataReader.cpp ErrorOutput.cpp + FDDataReader.cpp PackageContentHandler.cpp PackageData.cpp PackageDataReader.cpp diff --git a/src/kits/package/Jamfile b/src/kits/package/Jamfile index bf1df812cf..ab7a44ed93 100644 --- a/src/kits/package/Jamfile +++ b/src/kits/package/Jamfile @@ -9,6 +9,7 @@ UsePrivateHeaders SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits package hpkg ] ; HPKG_SOURCES = + AttributeDataReader.cpp BlockBufferCache.cpp BlockBufferCacheImpl.cpp BufferCache.cpp @@ -16,6 +17,7 @@ HPKG_SOURCES = DataOutput.cpp DataReader.cpp ErrorOutput.cpp + FDDataReader.cpp PackageContentHandler.cpp PackageData.cpp PackageDataReader.cpp diff --git a/src/kits/package/hpkg/AttributeDataReader.cpp b/src/kits/package/hpkg/AttributeDataReader.cpp new file mode 100644 index 0000000000..62911af847 --- /dev/null +++ b/src/kits/package/hpkg/AttributeDataReader.cpp @@ -0,0 +1,42 @@ +/* + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de. + * Distributed under the terms of the MIT License. + */ + + +#include + +#include + +#include + + +namespace BPackageKit { + +namespace BHPKG { + + +BAttributeDataReader::BAttributeDataReader(int fd, const char* attribute, + uint32 type) + : + fFD(fd), + fType(type), + fAttribute(attribute) +{ +} + + +status_t +BAttributeDataReader::ReadData(off_t offset, void* buffer, size_t size) +{ + ssize_t bytesRead = fs_read_attr(fFD, fAttribute, fType, offset, buffer, + size); + if (bytesRead < 0) + return errno; + return (size_t)bytesRead == size ? B_OK : B_ERROR; +} + + +} // namespace BHPKG + +} // namespace BPackageKit diff --git a/src/kits/package/hpkg/DataReader.cpp b/src/kits/package/hpkg/DataReader.cpp index 2d2999c54d..cd7b0db4df 100644 --- a/src/kits/package/hpkg/DataReader.cpp +++ b/src/kits/package/hpkg/DataReader.cpp @@ -1,16 +1,12 @@ /* - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ #include -#include #include -#include - -#include namespace BPackageKit { @@ -26,50 +22,6 @@ BDataReader::~BDataReader() } -// #pragma mark - BFDDataReader - - -BFDDataReader::BFDDataReader(int fd) - : - fFD(fd) -{ -} - - -status_t -BFDDataReader::ReadData(off_t offset, void* buffer, size_t size) -{ - ssize_t bytesRead = pread(fFD, buffer, size, offset); - if (bytesRead < 0) - return errno; - return (size_t)bytesRead == size ? B_OK : B_ERROR; -} - - -// #pragma mark - BAttributeDataReader - - -BAttributeDataReader::BAttributeDataReader(int fd, const char* attribute, - uint32 type) - : - fFD(fd), - fType(type), - fAttribute(attribute) -{ -} - - -status_t -BAttributeDataReader::ReadData(off_t offset, void* buffer, size_t size) -{ - ssize_t bytesRead = fs_read_attr(fFD, fAttribute, fType, offset, buffer, - size); - if (bytesRead < 0) - return errno; - return (size_t)bytesRead == size ? B_OK : B_ERROR; -} - - // #pragma mark - BBufferDataReader diff --git a/src/kits/package/hpkg/FDDataReader.cpp b/src/kits/package/hpkg/FDDataReader.cpp new file mode 100644 index 0000000000..c0ce13e921 --- /dev/null +++ b/src/kits/package/hpkg/FDDataReader.cpp @@ -0,0 +1,37 @@ +/* + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de. + * Distributed under the terms of the MIT License. + */ + + +#include + +#include +#include + + +namespace BPackageKit { + +namespace BHPKG { + + +BFDDataReader::BFDDataReader(int fd) + : + fFD(fd) +{ +} + + +status_t +BFDDataReader::ReadData(off_t offset, void* buffer, size_t size) +{ + ssize_t bytesRead = pread(fFD, buffer, size, offset); + if (bytesRead < 0) + return errno; + return (size_t)bytesRead == size ? B_OK : B_ERROR; +} + + +} // namespace BHPKG + +} // namespace BPackageKit