1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/other-licenses/7zstub/src/7zip/Archive/Common/ItemNameUtils.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,59 @@ 1.4 +// Archive/Common/ItemNameUtils.cpp 1.5 + 1.6 +#include "StdAfx.h" 1.7 + 1.8 +#include "ItemNameUtils.h" 1.9 + 1.10 +namespace NArchive { 1.11 +namespace NItemName { 1.12 + 1.13 +static const wchar_t kOSDirDelimiter = WCHAR_PATH_SEPARATOR; 1.14 +static const wchar_t kDirDelimiter = L'/'; 1.15 + 1.16 +UString MakeLegalName(const UString &name) 1.17 +{ 1.18 + UString zipName = name; 1.19 + zipName.Replace(kOSDirDelimiter, kDirDelimiter); 1.20 + return zipName; 1.21 +} 1.22 + 1.23 +UString GetOSName(const UString &name) 1.24 +{ 1.25 + UString newName = name; 1.26 + newName.Replace(kDirDelimiter, kOSDirDelimiter); 1.27 + return newName; 1.28 +} 1.29 + 1.30 +UString GetOSName2(const UString &name) 1.31 +{ 1.32 + if (name.IsEmpty()) 1.33 + return UString(); 1.34 + UString newName = GetOSName(name); 1.35 + if (newName[newName.Length() - 1] == kOSDirDelimiter) 1.36 + newName.Delete(newName.Length() - 1); 1.37 + return newName; 1.38 +} 1.39 + 1.40 +bool HasTailSlash(const AString &name, UINT codePage) 1.41 +{ 1.42 + if (name.IsEmpty()) 1.43 + return false; 1.44 + LPCSTR prev = 1.45 + #ifdef _WIN32 1.46 + CharPrevExA(codePage, name, &name[name.Length()], 0); 1.47 + #else 1.48 + (LPCSTR)(name) + (name.Length() - 1); 1.49 + #endif 1.50 + return (*prev == '/'); 1.51 +} 1.52 + 1.53 +#ifndef _WIN32 1.54 +UString WinNameToOSName(const UString &name) 1.55 +{ 1.56 + UString newName = name; 1.57 + newName.Replace(L'\\', kOSDirDelimiter); 1.58 + return newName; 1.59 +} 1.60 +#endif 1.61 + 1.62 +}}