FarManager icon indicating copy to clipboard operation
FarManager copied to clipboard

Advanced compare plugin v57

Open check4game opened this issue 1 year ago • 0 comments

Far Manager version

3.0.6402.4055

OS version

10.0.19045.4170

Other software

No response

Steps to reproduce

сравнение директории на локальном диске с сетевым ресурсом или сравнение двух сетевых ресурсов

D:\folder1 и \\server\share\folder1 или \\server\share\folder1 и \\server\share\folder2

для сетевого пути больше чем MAX_PATH, FindFirstFile возвращает ошибку 3

очевидно что использование UNC формата для сетевого пути, решает проблему, но это не удобно да и не всем очевидно

\\?\UNC\server\share\folder1

Expected behavior

No response

Actual behavior

Compare.cpp/class FileName/BuildName

https://github.com/FarGroup/FarManager/blob/e5c8e536ecdc616a284eb21d1b928b6e15702d94/plugins/compare/Compare.cpp#L566-L582

код обрабатывает только вариант только для локальных путей

https://github.com/FarGroup/FarManager/blob/e5c8e536ecdc616a284eb21d1b928b6e15702d94/plugins/compare/Compare.cpp#L575-L579

предлагается изменить код плагина

https://github.com/FarGroup/FarManager/blob/e5c8e536ecdc616a284eb21d1b928b6e15702d94/plugins/compare/Compare.cpp#L568

	int mlen = lstrlen(dir) + lstrlen(file) + 6 + 2; 

https://github.com/FarGroup/FarManager/blob/e5c8e536ecdc616a284eb21d1b928b6e15702d94/plugins/compare/Compare.cpp#L575-L578

	*pBuff = L'\0';

	if (mlen >= MAX_PATH)
	{
		if (dir[0] != L'\\')
		{
			lstrcpy(pBuff, L"\\\\?\\");
		}
		else if (dir[1] == L'\\' && dir[2] != L'?' && dir[2] != L'.')
		{
			lstrcpy(pBuff, L"\\\\?\\UNC");
			dir++; // cut first slash
		}
	}

check4game avatar Dec 14 '24 14:12 check4game