view 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
line wrap: on
line source
1 // Archive/Common/ItemNameUtils.cpp
3 #include "StdAfx.h"
5 #include "ItemNameUtils.h"
7 namespace NArchive {
8 namespace NItemName {
10 static const wchar_t kOSDirDelimiter = WCHAR_PATH_SEPARATOR;
11 static const wchar_t kDirDelimiter = L'/';
13 UString MakeLegalName(const UString &name)
14 {
15 UString zipName = name;
16 zipName.Replace(kOSDirDelimiter, kDirDelimiter);
17 return zipName;
18 }
20 UString GetOSName(const UString &name)
21 {
22 UString newName = name;
23 newName.Replace(kDirDelimiter, kOSDirDelimiter);
24 return newName;
25 }
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 }
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 }
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
59 }}