View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000423 | Wishes | File System | public | 2007-12-08 14:40 | 2009-10-20 21:24 |
Reporter | alexmitin | Assigned To | DrKnS | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Fixed in Version | 2.0 | ||||
Summary | 0000423: Enchancement: Support for file path length more than MAX_PATH | ||||
Description | FAR 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 Information | FAR 1.80.0.387 | ||||
Tags | No tags attached. | ||||
Build | 1145 | ||||
|
Ну для того в 1.8 и введены динамические строки. Ограничения на размер пути нету вообще (особено для плагинов). Работает ли это и т.п. не проверялось. Знаешь что, где и как надо подправить, вэлком. |
|
Проблем с этом очень много. Практически каждая команда из списка выше не работает с путями превышающими MAX_PATH. Похоже при операциях с файлами и директориями не используется префикс "\\?\". Готовьтесь принимать баг репорты. :) |
|
Есть ещё один момент. В фар-е много где используется SetCurrentDirectory (которая даже в W варианет не работает с длинными путями) и работа путями относительно установленной директории. Это тоже надо перелопачивать. |
|
> В фар-е много где используется SetCurrentDirectory > (которая даже в W варианет не работает с > длинными путями) и работа путями относительно > установленной директории. Это тоже надо перелопачивать. Вот в этом то и заключается основная проблема существующего кода. От вызова этой функции (как и от GetCurrentDirectory) нужно избавляться. Также нужно запретить плагинам использовать SetCurrentDirectory/GetCurrentDirectory. IMHO, единственное место, где нужна функция SetCurrentDirectory - это запуск внешнего процесса. Да и в этом случае можно использовать функции CreateProcess или ShellExecuteEx и передавать текущую директорию через параметр. FAR может хранить текущии директории для активной и неактивной панелей во внутренних переменных (например типа UnicodeString). Также при любой файловой операции нужно использовать полный путь к файлу/директории (включая префикс \\?\). При запуске внешних процессов в случае, если текущая директория (внутренняя переменная) в FAR превышает MAX_PATH нужно выводить предупреждающее сообщение (см. выше). |
|
В общем подумал, этот тикет тоже исправлен. А для currentdirectory - откройте наконец то тикет у которого соответсвующий сабж а не пихайте эту тему в каждый второй тикет. |
|
1145. Готовьтесь ловить баги :) |
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 |