1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
////////////////////////////////////////////////////////////////////////////////
// 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
////////////////////////////////////////////////////////////////////////////////
/**
* \file ZipCompatibility.h
* ZipCompatibility namespace declaration.
*
*/
#if !defined(ZIPARCHIVE_ZIPCOMPATIBILITY_DOT_H)
#define ZIPARCHIVE_ZIPCOMPATIBILITY_DOT_H
#if _MSC_VER > 1000
#pragma once
#endif
class CZipAutoBuffer;
class CZipFileHeader;
#include "ZipString.h"
/**
Includes functions that provide support for the proper conversion of attributes
and filenames between different system platforms.
*/
namespace ZipCompatibility
{
/**
The codes of the compatibility of the file attribute information.
\see
CZipArchive::GetSystemCompatibility
\see
CZipFileHeader::GetSystemCompatibility
\see
ZipPlatform::GetSystemID
*/
enum ZipPlatforms
{
zcDosFat, ///< MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)
zcAmiga, ///< Amiga
zcVaxVms, ///< VAX/VMS
zcUnix, ///< Unix / Linux
zcVmCms, ///< VM/CMS
zcAtari, ///< Atari ST
zcOs2Hpfs, ///< OS/2 H.P.F.S.
zcMacintosh, ///< Macintosh
zcZsystem, ///< Z-System
zcCpm, ///< CP/M
zcNtfs ///< Windows NTFS
};
/**
Checks whether the system with the given code is supported by the ZipArchive Library.
\param iCode
One of the #ZipPlatforms values to check.
\return
\c true, if supported; \c false otherwise.
*/
bool IsPlatformSupported(int iCode);
/**
Converts the system attributes between different system platforms.
\param uAttr
The attributes to convert.
\param iFromSystem
The system code to convert \a uAttr from.
\param iToSystem
The system code to convert \a uAttr to.
\return
The converted attributes.
\note
Throws exceptions.
\see
ZipPlatforms
*/
DWORD ConvertToSystem(DWORD uAttr, int iFromSystem, int iToSystem);
/**
Converts the string stored in \a buffer using the given code page.
\param buffer
The buffer to convert the string from.
\param szString
The string to receive the result.
\param uCodePage
The code page used in conversion.
\see
<a href="kb">0610051525</a>
*/
void ConvertBufferToString(CZipString& szString, const CZipAutoBuffer& buffer, UINT uCodePage);
/**
Converts the \a lpszString using the given code page.
\param lpszString
The string to convert from.
\param buffer
The buffer to receive the result.
\param uCodePage
The code page used in conversion.
\see
<a href="kb">0610051525</a>
*/
void ConvertStringToBuffer(LPCTSTR lpszString, CZipAutoBuffer& buffer, UINT uCodePage);
/**
Changes the path separators from slash to backslash or vice-versa in \a szFileName.
\param szFileName
The filename to have the path separators changed.
\param bReplaceSlash
If \c true, changes slash to backslash. If \c false, changes backslash to slash.
*/
void SlashBackslashChg(CZipString& szFileName, bool bReplaceSlash);
};
#endif // !defined(ZIPARCHIVE_ZIPCOMPATIBILITY_DOT_H)
|