xref: /haiku/src/kits/package/hpkg/AttributeDataReader.cpp (revision 820dca4df6c7bf955c46e8f6521b9408f50b2900)
1 /*
2  * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include <package/hpkg/DataReader.h>
8 
9 #include <errno.h>
10 
11 #include <fs_attr.h>
12 
13 
14 namespace BPackageKit {
15 
16 namespace BHPKG {
17 
18 
19 BAttributeDataReader::BAttributeDataReader(int fd, const char* attribute,
20 	uint32 type)
21 	:
22 	fFD(fd),
23 	fType(type),
24 	fAttribute(attribute)
25 {
26 }
27 
28 
29 status_t
30 BAttributeDataReader::ReadData(off_t offset, void* buffer, size_t size)
31 {
32 	ssize_t bytesRead = fs_read_attr(fFD, fAttribute, fType, offset, buffer,
33 		size);
34 	if (bytesRead < 0)
35 		return errno;
36 	return (size_t)bytesRead == size ? B_OK : B_ERROR;
37 }
38 
39 
40 }	// namespace BHPKG
41 
42 }	// namespace BPackageKit
43