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