equal
deleted
inserted
replaced
|
1 // Archive/Common/ItemNameUtils.cpp |
|
2 |
|
3 #include "StdAfx.h" |
|
4 |
|
5 #include "ItemNameUtils.h" |
|
6 |
|
7 namespace NArchive { |
|
8 namespace NItemName { |
|
9 |
|
10 static const wchar_t kOSDirDelimiter = WCHAR_PATH_SEPARATOR; |
|
11 static const wchar_t kDirDelimiter = L'/'; |
|
12 |
|
13 UString MakeLegalName(const UString &name) |
|
14 { |
|
15 UString zipName = name; |
|
16 zipName.Replace(kOSDirDelimiter, kDirDelimiter); |
|
17 return zipName; |
|
18 } |
|
19 |
|
20 UString GetOSName(const UString &name) |
|
21 { |
|
22 UString newName = name; |
|
23 newName.Replace(kDirDelimiter, kOSDirDelimiter); |
|
24 return newName; |
|
25 } |
|
26 |
|
27 UString GetOSName2(const UString &name) |
|
28 { |
|
29 if (name.IsEmpty()) |
|
30 return UString(); |
|
31 UString newName = GetOSName(name); |
|
32 if (newName[newName.Length() - 1] == kOSDirDelimiter) |
|
33 newName.Delete(newName.Length() - 1); |
|
34 return newName; |
|
35 } |
|
36 |
|
37 bool HasTailSlash(const AString &name, UINT codePage) |
|
38 { |
|
39 if (name.IsEmpty()) |
|
40 return false; |
|
41 LPCSTR prev = |
|
42 #ifdef _WIN32 |
|
43 CharPrevExA((WORD)codePage, name, &name[name.Length()], 0); |
|
44 #else |
|
45 (LPCSTR)(name) + (name.Length() - 1); |
|
46 #endif |
|
47 return (*prev == '/'); |
|
48 } |
|
49 |
|
50 #ifndef _WIN32 |
|
51 UString WinNameToOSName(const UString &name) |
|
52 { |
|
53 UString newName = name; |
|
54 newName.Replace(L'\\', kOSDirDelimiter); |
|
55 return newName; |
|
56 } |
|
57 #endif |
|
58 |
|
59 }} |