37 #include "LocaleSetting.h" 39 #if defined(WINDOWS) || defined(WASM) 41 kCFURLPOSIXPathStyle = 0,
42 kCFURLHFSPathStyle = 1,
45 kCFURLWindowsPathStyle = 2
57 static char GetDirectorySeperator();
59 static bool16 SetAppFolder(SysConnection appResourceHandle = nil);
61 static bool16 GetAppFolder(
IDFile *appFolder);
63 static bool16 GetAppFolder(
PMString *appFolder);
65 static bool16 GetAppPath(
IDFile *appPath);
70 static bool16 GetAppSubFolder(
IDFile *result,
const PMString& subFolderName);
72 static bool16 GetUserRoamingFolder(
IDFile *result,
const PMString& appFolder,
const PMString& subFolderName);
108 static bool16 GetAppDocumentFolder(
IDFile *result,
const PMString& subFolderName);
111 static bool16 GetRecoveryFolder(
IDFile *result,
const PMString& subFolderName);
115 static bool16 GetUserDictionariesFolder(
IDFile *result,
const PMString& subFolderName);
118 static bool16 SetCurrentFolder(
const IDFile& targetFolder);
120 static bool16 GetCurrentFolder(
IDFile *currentFolder);
123 static void AppendPath(
IDFile *originalPath,
const PMString& pathToAppend);
129 static bool16 IsEqual(
const IDFile& file1,
const IDFile& file2);
132 static bool SwapFiles(
const IDFile& file1,
const IDFile& file2);
226 static std::string
UTF8ToURL(
const std::string& str,
const char kSeparator);
235 static std::string
URLToUTF8 (
const std::string& fileURL,
bool & ContainsUTF16);
360 static uint32 SpaceAvail(
const IDFile& diskToCheck);
362 static bool16 IsDirectory(
const IDFile& fileSpec);
364 static bool16 CreateFolderIfNeeded(
const IDFile& folderFileSpec, bool16 bCreateParent = kFalse);
365 static bool16 CopyFile(
const IDFile& srcFile,
const IDFile& dstFile);
366 static bool16 MoveFile(
const IDFile& srcFile,
const IDFile& dstFolder,
IDFile* dstFile = NULL);
367 static bool16 GetParentDirectory(
IDFile const &file,
IDFile &parent);
368 static bool16 DoesFileExist(
const IDFile& fileSpec);
370 static void GetPathOnly(
const IDFile& fileSpec,
PMString& pathName, bool16 includeSeparator = kFalse);
372 static void GetBaseFileName(
const IDFile& inFile,
PMString& outString);
375 static void GetExtension(
const IDFile& inFile,
PMString& outString);
378 static uint32 GetFileSize(
const IDFile& fileSpec, bool16 includeResourceFork = kFalse);
382 static bool16 GetOpenFileType(
const IDFile& sysFile, SysFileType &type);
385 static bool16 GetStreamFileType(
IPMStream *stream, SysFileType &type);
388 static void GetVolumeName(
const IDFile *fileOrFolderSpec,
PMString * volumeName);
391 static bool16 OnSameVolume(
const IDFile& file1,
const IDFile& file2);
393 static int32 ShowFile(
const IDFile& fileSpec);
395 typedef enum { kNormal, kOpenNewWindow, kOpenMaximized } ViewMode;
396 static ErrorCode BrowseToFile(
const IDFile *fileSpec, ViewMode mode = kNormal);
397 static ErrorCode OpenFileInEditor(
const IDFile& fileToOpen,
const AppInfo& appInfo = kNullAppInfo,
PMString *errorString = nil);
399 static bool16 IsNetworkDrive(
const IDFile& sysFile );
404 static bool16 GetAppInstallationFolder(
IDFile *folder);
424 static bool16 GetModificationDate(
const IDFile & spec, uint32 *modDate);
427 typedef enum { kRead, kWrite, kReadWrite } Access;
428 static bool8 CanOpen(
const IDFile& spec, Access access = kReadWrite);
472 static FILE*
OpenFile(
const char* path,
const char* mode);
477 static void AppendPath(
PMString *originalPath,
const PMString& pathToAppend);
480 static bool16 GetDirID(
const IDFile& folder, int32* dirID);
482 static void ReplaceResource(SysHandle rsrc, int32 type, int16
id,
const PMString& name);
484 static void GetFileCreatorType(
const IDFile& fileSpec, SysOSType* fileType, SysOSType* creator);
485 static bool16 GetCreationDate(
const IDFile & spec, uint32 *creDate);
489 static bool16 GetPackageFolder(
IDFile *folder);
494 static bool16 CreateFileWithUnicodeName(
IDFile& fileSpec, bool16 bCreateParent = kFalse);
507 static std::string FileURLToPosixPath (
const std::string& fileURL) ;
523 static void NormalizeUnComposedUnicodeChars (
PMString &fileName);
531 static IDFile PosixPathToSysFile(
const std::string& posixPath);
542 static OSErr FSRefToIDFile(
const FSRef& fsRef,
IDFile& file);
553 static OSErr IDFileToFSRef(
const IDFile& file, FSRef& fsRef);
560 static bool16 IsFileInTrash(
const IDFile& file);
569 static OSErr GetURLAppleEventDescFromCFURL(AEDesc* fURLDesc, CFURLRef url);
577 static CFURLRef CreateCFURLFromURLAppleEventDesc(
const AEDesc* aeDesc);
590 static UINT_PTR APIENTRY GOFNHookFunction(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam);
596 static bool16 GetOpenFileName(LPOPENFILENAME lpofn);
597 static bool16 GetOpenFileName(LPOPENFILENAME lpofn,
SysFileList& resultFiles);
598 static bool16 GetOpenFileName(LPOPENFILENAME lpofn,
SysFileList* pResultFiles);
601 static int32 CoverSHGetFolderPath(
int nFolder,
IDFile *path);
615 static bool16 GetAppTmpFolder(
IDFile *result,
const PMString& subFolderName);
622 static bool16 IsAppRoamingDataFolderNew();
634 static textchar GetDirectorySeparatorTextChar();
660 static void IDFileToPMStringBasedOnPathString(
const IDFile& file,
PMString& pathStr);
679 static void IDFileToPMStringWithUNCConversion(
const IDFile& file,
PMString& pathStr);
681 typedef enum { kSystemPath, kWindowsPath } DirPath;
682 static HMODULE LoadLibraryUsingAbsolutePath(
const std::wstring& componentName, DirPath dirPath = kSystemPath);
703 static void AppendPaths(
IDFile *originalPath,
const std::vector<PMString> &pathsToAppend);
710 static void AppendPaths(
IDFile *originalPath,
const std::vector<const wchar_t*> &pathsToAppend);
767 static void HFSPathToPOSIXPath(
const PMString &hfsPath,
PMString &posixPath);
774 static void HFSPathToPOSIXPath(
const std::string &hfsPath, std::string &posixPath);
781 static void POSIXPathToHFSPath(
const PMString &posixPath,
PMString &hfsPath);
788 static void POSIXPathToHFSPath(
const std::string &posixPath, std::string &hfsPath);
795 static void AppendPaths(
PMString *originalPath,
const std::vector<const PMString> &pathsToAppend);
802 static void AppendPaths(
PMString *originalPath,
const std::vector<const wchar_t*> &pathsToAppend);
821 static std::string FileURLToUTF8Path (
const std::string& fileURL,
const char kSeperator,
bool & ContainsUTF16);
836 static int16 GetHexChar (
const std::string &
string,
int index);
848 static bool16 IsFirstFilePrefixOfSecond(
const IDFile & firstFile,
const IDFile & secondFile);