* added support for compressing the package attributes section to
PackageWriterImpl * added my own copyright git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40358 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
70d5966963
commit
fd9c0b3361
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||||
|
* Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
#ifndef _PACKAGE__HPKG__PRIVATE__PACKAGE_WRITER_IMPL_H_
|
#ifndef _PACKAGE__HPKG__PRIVATE__PACKAGE_WRITER_IMPL_H_
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||||
|
* Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1006,10 +1007,12 @@ PackageWriterImpl::_WriteAttributeChildren(Attribute* attribute)
|
|||||||
void
|
void
|
||||||
PackageWriterImpl::_WritePackageAttributes(hpkg_header& header)
|
PackageWriterImpl::_WritePackageAttributes(hpkg_header& header)
|
||||||
{
|
{
|
||||||
// write the package attributes
|
// write the package attributes (zlib writer on top of a file writer)
|
||||||
off_t startOffset = fHeapEnd;
|
off_t startOffset = fHeapEnd;
|
||||||
FDDataWriter realWriter(fFD, startOffset, fListener);
|
FDDataWriter realWriter(fFD, startOffset, fListener);
|
||||||
fDataWriter = &realWriter;
|
ZlibDataWriter zlibWriter(&realWriter);
|
||||||
|
fDataWriter = &zlibWriter;
|
||||||
|
zlibWriter.Init();
|
||||||
|
|
||||||
// name
|
// name
|
||||||
_WriteUnsignedLEB128(B_HPKG_PACKAGE_ATTRIBUTE_TAG_COMPOSE(
|
_WriteUnsignedLEB128(B_HPKG_PACKAGE_ATTRIBUTE_TAG_COMPOSE(
|
||||||
@ -1114,21 +1117,22 @@ PackageWriterImpl::_WritePackageAttributes(hpkg_header& header)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_Write<uint8>(0);
|
_Write<uint8>(0);
|
||||||
|
|
||||||
|
zlibWriter.Finish();
|
||||||
fHeapEnd = realWriter.Offset();
|
fHeapEnd = realWriter.Offset();
|
||||||
fDataWriter = NULL;
|
fDataWriter = NULL;
|
||||||
|
|
||||||
off_t endOffset = fHeapEnd;
|
off_t endOffset = fHeapEnd;
|
||||||
|
|
||||||
fListener->OnPackageAttributesSizeInfo(endOffset - startOffset);
|
fListener->OnPackageAttributesSizeInfo(zlibWriter.BytesWritten());
|
||||||
|
|
||||||
// update the header
|
// update the header
|
||||||
header.attributes_compression = B_HOST_TO_BENDIAN_INT32(
|
header.attributes_compression
|
||||||
B_HPKG_COMPRESSION_NONE);
|
= B_HOST_TO_BENDIAN_INT32(B_HPKG_COMPRESSION_ZLIB);
|
||||||
header.attributes_length_compressed
|
header.attributes_length_compressed
|
||||||
= B_HOST_TO_BENDIAN_INT32(endOffset - startOffset);
|
= B_HOST_TO_BENDIAN_INT32(endOffset - startOffset);
|
||||||
header.attributes_length_uncompressed
|
header.attributes_length_uncompressed
|
||||||
= header.attributes_length_compressed;
|
= B_HOST_TO_BENDIAN_INT32(zlibWriter.BytesWritten());
|
||||||
// TODO: Support compression!
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user