View Issue Details

IDProjectCategoryView StatusLast Update
0000423WishesFile Systempublic2009-10-20 21:24
Reporteralexmitin Assigned ToDrKnS  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Fixed in Version2.0 
Summary0000423: Enchancement: Support for file path length more than MAX_PATH
DescriptionFAR should support file operations for the long paths.
The long path is a path exceeding MAX_PATH, the maximum length up to 32000 characters.

See the following link for the maximum path limitations for Unicode functions:

http://msdn2.microsoft.com/en-us/library/aa365247.aspx

Each component in the long path can be up to 255 characters with the total path length not exceeding 32000 characters.

The file operations are the following:
1) Create directory (F7)
2) Delete directory (F8)
3) Rename directory (F6 and Shift+F6)
4) Copy directory/file (F5 and Shift+F5)
5) Move directory/file (F6 and Shift+F6)
6) Create file (Shift+F4)
7) Edit file (F4)
8) View file (F3)
9) Delete file (F8 and Shift+Del)
10) Create symbolic link (Alt+F6)
11) Create hard link (Alt+F6)
12) Change file attributes (Ctrl+A)

The long path should be available to plugins too.

To command execution is a different story. Creating a new process requires the current directory for the process. The SetCurrentDirectory() and GetCurrentDirectory() functions cannot handle path longer MAX_PATH. If the total length of the current directory exceeds MAX_PATH and the user tries to execute command from the command prompt the FAR should prompt the user for the confirmation:

------------------------------------------
The current directory path exceeds 255 characters.
Some programs have problems with using long path.

Do you still want to run the "xxxx" command?
                  Yes No
------------------------------------------
Additional InformationFAR 1.80.0.387
TagsNo tags attached.
Build1145

Activities

alexy

2007-12-08 14:59

administrator   bugnote:0000977

Ну для того в 1.8 и введены динамические строки. Ограничения на размер пути нету вообще (особено для плагинов). Работает ли это и т.п. не проверялось. Знаешь что, где и как надо подправить, вэлком.

alexmitin

2007-12-08 15:26

reporter   bugnote:0000979

Проблем с этом очень много. Практически каждая команда из списка выше не работает с путями превышающими MAX_PATH.

Похоже при операциях с файлами и директориями не используется префикс "\\?\".

Готовьтесь принимать баг репорты. :)

DiRTy_GaRRy

2007-12-09 04:14

developer   bugnote:0000981

Есть ещё один момент. В фар-е много где используется SetCurrentDirectory (которая даже в W варианет не работает с длинными путями) и работа путями относительно установленной директории. Это тоже надо перелопачивать.

alexmitin

2007-12-14 12:33

reporter   bugnote:0001040

> В фар-е много где используется SetCurrentDirectory
> (которая даже в W варианет не работает с
> длинными путями) и работа путями относительно
> установленной директории. Это тоже надо перелопачивать.

Вот в этом то и заключается основная проблема существующего кода. От вызова этой функции (как и от GetCurrentDirectory) нужно избавляться. Также нужно запретить плагинам использовать SetCurrentDirectory/GetCurrentDirectory.

IMHO, единственное место, где нужна функция SetCurrentDirectory - это запуск внешнего процесса. Да и в этом случае можно использовать функции CreateProcess или ShellExecuteEx и передавать текущую директорию через параметр.

FAR может хранить текущии директории для активной и неактивной панелей во внутренних переменных (например типа UnicodeString). Также при любой файловой операции нужно использовать полный путь к файлу/директории (включая префикс \\?\).

При запуске внешних процессов в случае, если текущая директория (внутренняя переменная) в FAR превышает MAX_PATH нужно выводить предупреждающее сообщение (см. выше).

alexy

2009-04-05 13:14

administrator   bugnote:0002889

В общем подумал, этот тикет тоже исправлен. А для currentdirectory - откройте наконец то тикет у которого соответсвующий сабж а не пихайте эту тему в каждый второй тикет.

DrKnS

2009-09-26 23:14

administrator   bugnote:0004127

1145.

Готовьтесь ловить баги :)

Issue History

Date Modified Username Field Change
2007-12-08 14:40 alexmitin New Issue
2007-12-08 14:54 alexy Project Far Manager => Wishes
2007-12-08 14:59 alexy Note Added: 0000977
2007-12-08 15:26 alexmitin Note Added: 0000979
2007-12-09 04:14 DiRTy_GaRRy Note Added: 0000981
2007-12-14 12:33 alexmitin Note Added: 0001040
2009-04-05 13:14 alexy Build => 796
2009-04-05 13:14 alexy Note Added: 0002889
2009-04-05 13:14 alexy Assigned To => DrKnS
2009-04-05 13:14 alexy Status new => assigned
2009-04-05 13:14 alexy Fixed in Version => 2.0
2009-09-26 23:14 DrKnS Note Added: 0004127
2009-09-26 23:14 DrKnS Status assigned => feedback
2009-10-20 21:24 DrKnS Build 796 => 1145
2009-10-20 21:24 DrKnS Status feedback => closed
2009-10-20 21:24 DrKnS Resolution open => fixed