From 16f738ecee689c6feb2acb7e4ef4d9bb4144ae7d Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sun, 8 Jun 2008 11:04:43 +0200 Subject: Initial commit --- zip/ZipArchive/ZipExtraData.cpp | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 zip/ZipArchive/ZipExtraData.cpp (limited to 'zip/ZipArchive/ZipExtraData.cpp') diff --git a/zip/ZipArchive/ZipExtraData.cpp b/zip/ZipArchive/ZipExtraData.cpp new file mode 100644 index 0000000..8712234 --- /dev/null +++ b/zip/ZipArchive/ZipExtraData.cpp @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////////////////////////// +// This source file is part of the ZipArchive library source distribution and +// is Copyrighted 2000 - 2007 by Artpol Software - Tadeusz Dracz +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// For the licensing details refer to the License.txt file. +// +// Web Site: http://www.artpol-software.com +//////////////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "ZipArchive.h" +#include "ZipExtraData.h" +#include "BytesWriter.h" + +using namespace ZipArchiveLib; + +bool CZipExtraData::Read(char* buffer, WORD uSize) +{ + if (uSize < 4) + return false; + WORD size; + CBytesWriter::ReadBytes(m_uHeaderID, buffer); + CBytesWriter::ReadBytes(size, buffer + 2); + if (uSize - 4 < size) + return false; + m_data.Allocate(size); + memcpy(m_data, buffer + 4, size); + return true; +} + +WORD CZipExtraData::Write(char* buffer)const +{ + CBytesWriter::WriteBytes(buffer, m_uHeaderID); + WORD size = (WORD)m_data.GetSize(); + CBytesWriter::WriteBytes(buffer + 2, size); + memcpy(buffer + 4, m_data, size); + return (WORD)(size + 4); +} -- cgit v1.2.3