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 }}