- _ShiftTime.lua
- (8.64 KiB) Downloaded 5 times
...oaming\Far Manager\Profile\Macros\scripts\_ShiftTime.lua:46: attempt to redefine '_FILETIME' at line 11 stack traceback: [C]: in function 'cdef' ...oaming\Far Manager\Profile\Macros\scripts\_ShiftTime.lua:46: in function <...oaming\Far Manager\Profile\Macros\scripts\_ShiftTime.lua:10>
Секция с описанием ffi.cdef выглядит
Code: Select all
-- Far Manager Lua Macro Script
-- Shifts creation and modification times of selected files/folders by specified amounts
-- Usage: Assign to a key, e.g., Alt+Shift+T in Shell area
-- Input format: y m d h min s (e.g., 1 2 3 4 5 6 for +1y +2m +3d +4h +5m +6s)
Macro {
area = "Shell";
description = "Shift file times";
key = "AltShiftT";
action = function ()
local ffi = require "ffi"
ffi.cdef[[
typedef unsigned long DWORD;
typedef unsigned int UINT;
typedef void* HANDLE;
typedef void* LPSECURITY_ATTRIBUTES;
typedef void* LPCWSTR;
typedef const char* LPCCH;
typedef const FILETIME* LPCFILETIME;
typedef FILETIME* PFILETIME;
typedef const SYSTEMTIME* LPCSYSTEMTIME;
typedef SYSTEMTIME* LPSYSTEMTIME;
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
typedef struct _SYSTEMTIME {
unsigned short wYear;
unsigned short wMonth;
unsigned short wDayOfWeek;
unsigned short wDay;
unsigned short wHour;
unsigned short wMinute;
unsigned short wSecond;
unsigned short wMilliseconds;
} SYSTEMTIME;
int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPCWSTR lpWideCharStr, int cchWideChar);
BOOL FileTimeToSystemTime(LPCFILETIME lpFileTime, LPSYSTEMTIME lpSystemTime);
BOOL SystemTimeToFileTime(LPCSYSTEMTIME lpSystemTime, PFILETIME lpFileTime);
HANDLE CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
BOOL GetFileTime(HANDLE hFile, PFILETIME lpCreationTime, PFILETIME lpLastAccessTime, PFILETIME lpLastWriteTime);
BOOL SetFileTime(HANDLE hFile, LPCFILETIME lpCreationTime, LPCFILETIME lpLastAccessTime, LPCFILETIME lpLastWriteTime);
BOOL CloseHandle(HANDLE hObject);
]]Команда lm:load не решает проблему. Спасает только перезапуск Far.
Вопрос, что и как надо исправить. Почему это происходит тоже интересно.