|
|
@ -893,68 +893,17 @@ bool FileManager::loadFileData(Document doc, const TCHAR * filename, Utf8_16_Rea
|
|
|
|
return success;
|
|
|
|
return success;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BufferID FileManager::getBufferFromName(const TCHAR * name)
|
|
|
|
BufferID FileManager::getBufferFromName(const TCHAR * name)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Attempt to match by name first.
|
|
|
|
|
|
|
|
TCHAR fullpath[MAX_PATH];
|
|
|
|
TCHAR fullpath[MAX_PATH];
|
|
|
|
::GetFullPathName(name, MAX_PATH, fullpath, NULL);
|
|
|
|
::GetFullPathName(name, MAX_PATH, fullpath, NULL);
|
|
|
|
::GetLongPathName(fullpath, fullpath, MAX_PATH);
|
|
|
|
::GetLongPathName(fullpath, fullpath, MAX_PATH);
|
|
|
|
for(size_t i = 0; i < _buffers.size(); ++i)
|
|
|
|
for(size_t i = 0; i < _buffers.size(); i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!lstrcmpi(name, _buffers.at(i)->getFullPathName()))
|
|
|
|
if (!lstrcmpi(name, _buffers.at(i)->getFullPathName()))
|
|
|
|
return _buffers.at(i)->getID();
|
|
|
|
return _buffers.at(i)->getID();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return BUFFER_INVALID;
|
|
|
|
// If no buffer matches exactly by name, try another method.
|
|
|
|
|
|
|
|
HANDLE givenFile = ::CreateFile(name,
|
|
|
|
|
|
|
|
GENERIC_READ,
|
|
|
|
|
|
|
|
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
|
|
|
|
|
|
|
|
NULL,
|
|
|
|
|
|
|
|
OPEN_EXISTING,
|
|
|
|
|
|
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
|
|
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BY_HANDLE_FILE_INFORMATION givenFileInfo, currentFileInfo;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(givenFile == INVALID_HANDLE_VALUE)
|
|
|
|
|
|
|
|
return BUFFER_INVALID;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(! ::GetFileInformationByHandle(givenFile, &givenFileInfo))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
::CloseHandle(givenFile);
|
|
|
|
|
|
|
|
return BUFFER_INVALID;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
::CloseHandle(givenFile);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const unsigned int bufferSize = _buffers.size();
|
|
|
|
|
|
|
|
for(size_t i = 0; i < bufferSize; ++i)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
HANDLE currentFile = ::CreateFile(_buffers.at(i)->getFullPathName(),
|
|
|
|
|
|
|
|
GENERIC_READ,
|
|
|
|
|
|
|
|
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
|
|
|
|
|
|
|
|
NULL,
|
|
|
|
|
|
|
|
OPEN_EXISTING,
|
|
|
|
|
|
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
|
|
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(currentFile != INVALID_HANDLE_VALUE)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if(::GetFileInformationByHandle(currentFile, ¤tFileInfo))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if(currentFileInfo.dwVolumeSerialNumber == givenFileInfo.dwVolumeSerialNumber &&
|
|
|
|
|
|
|
|
currentFileInfo.nFileIndexLow == givenFileInfo.nFileIndexLow &&
|
|
|
|
|
|
|
|
currentFileInfo.nFileIndexHigh == givenFileInfo.nFileIndexHigh)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
::CloseHandle(currentFile);
|
|
|
|
|
|
|
|
return _buffers.at(i)->getID();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
::CloseHandle(currentFile);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return BUFFER_INVALID;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BufferID FileManager::getBufferFromDocument(Document doc) {
|
|
|
|
BufferID FileManager::getBufferFromDocument(Document doc) {
|
|
|
|