Mercurial > vba-linux
annotate src/win32/7zip/7z/CPP/7zip/Archive/Common/ItemNameUtils.cpp @ 1:f9f4f1b99eed
importing src directory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:31:27 -0600 |
parents | |
children |
rev | line source |
---|---|
rlm@1 | 1 // Archive/Common/ItemNameUtils.cpp |
rlm@1 | 2 |
rlm@1 | 3 #include "StdAfx.h" |
rlm@1 | 4 |
rlm@1 | 5 #include "ItemNameUtils.h" |
rlm@1 | 6 |
rlm@1 | 7 namespace NArchive { |
rlm@1 | 8 namespace NItemName { |
rlm@1 | 9 |
rlm@1 | 10 static const wchar_t kOSDirDelimiter = WCHAR_PATH_SEPARATOR; |
rlm@1 | 11 static const wchar_t kDirDelimiter = L'/'; |
rlm@1 | 12 |
rlm@1 | 13 UString MakeLegalName(const UString &name) |
rlm@1 | 14 { |
rlm@1 | 15 UString zipName = name; |
rlm@1 | 16 zipName.Replace(kOSDirDelimiter, kDirDelimiter); |
rlm@1 | 17 return zipName; |
rlm@1 | 18 } |
rlm@1 | 19 |
rlm@1 | 20 UString GetOSName(const UString &name) |
rlm@1 | 21 { |
rlm@1 | 22 UString newName = name; |
rlm@1 | 23 newName.Replace(kDirDelimiter, kOSDirDelimiter); |
rlm@1 | 24 return newName; |
rlm@1 | 25 } |
rlm@1 | 26 |
rlm@1 | 27 UString GetOSName2(const UString &name) |
rlm@1 | 28 { |
rlm@1 | 29 if (name.IsEmpty()) |
rlm@1 | 30 return UString(); |
rlm@1 | 31 UString newName = GetOSName(name); |
rlm@1 | 32 if (newName[newName.Length() - 1] == kOSDirDelimiter) |
rlm@1 | 33 newName.Delete(newName.Length() - 1); |
rlm@1 | 34 return newName; |
rlm@1 | 35 } |
rlm@1 | 36 |
rlm@1 | 37 bool HasTailSlash(const AString &name, UINT codePage) |
rlm@1 | 38 { |
rlm@1 | 39 if (name.IsEmpty()) |
rlm@1 | 40 return false; |
rlm@1 | 41 LPCSTR prev = |
rlm@1 | 42 #ifdef _WIN32 |
rlm@1 | 43 CharPrevExA((WORD)codePage, name, &name[name.Length()], 0); |
rlm@1 | 44 #else |
rlm@1 | 45 (LPCSTR)(name) + (name.Length() - 1); |
rlm@1 | 46 #endif |
rlm@1 | 47 return (*prev == '/'); |
rlm@1 | 48 } |
rlm@1 | 49 |
rlm@1 | 50 #ifndef _WIN32 |
rlm@1 | 51 UString WinNameToOSName(const UString &name) |
rlm@1 | 52 { |
rlm@1 | 53 UString newName = name; |
rlm@1 | 54 newName.Replace(L'\\', kOSDirDelimiter); |
rlm@1 | 55 return newName; |
rlm@1 | 56 } |
rlm@1 | 57 #endif |
rlm@1 | 58 |
rlm@1 | 59 }} |