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/ZipFileMapping_lnx.h | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 zip/ZipArchive/ZipFileMapping_lnx.h (limited to 'zip/ZipArchive/ZipFileMapping_lnx.h') diff --git a/zip/ZipArchive/ZipFileMapping_lnx.h b/zip/ZipArchive/ZipFileMapping_lnx.h new file mode 100644 index 0000000..283d4f5 --- /dev/null +++ b/zip/ZipArchive/ZipFileMapping_lnx.h @@ -0,0 +1,62 @@ +//////////////////////////////////////////////////////////////////////////////// +// 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 +//////////////////////////////////////////////////////////////////////////////// + +#ifndef ZIPARCHIVE_ZIPFILEMAPPING_DOT_H + #error Do not include this file directly. Include ZipFileMapping.h instead +#endif + + +#include + +namespace ZipArchiveLib +{ + struct CZipFileMapping + { + CZipFileMapping() + { + m_iSize = 0; + m_pFileMap = NULL; + } + bool CreateMapping(CZipFile* pFile) + { + if (!pFile) + return false; + m_iSize = pFile->GetLength(); + m_pFileMap = mmap(0, m_iSize, PROT_READ|PROT_WRITE, MAP_SHARED, pFile->m_hFile, 0); + return (m_pFileMap != NULL); + } + void RemoveMapping() + { + + if (m_pFileMap) + { + munmap(m_pFileMap, m_iSize); + m_pFileMap = NULL; + } + } + ~CZipFileMapping() + { + RemoveMapping(); + } + char* GetMappedMemory() + { + return reinterpret_cast (m_pFileMap); + } + protected: + void* m_pFileMap; + size_t m_iSize; + + }; +} + -- cgit v1.2.3