struct FarStandardFunctions
{
int StructSize;
FARSTDATOI atoi;
FARSTDATOI64 atoi64;
FARSTDITOA itoa;
FARSTDITOA64 itoa64;
FARSTDSPRINTF sprintf;
FARSTDSSCANF sscanf;
FARSTDQSORT qsort;
FARSTDBSEARCH bsearch;
FARSTDQSORT qsortex;
FARSTDSNPRINTF snprintf;
DWORD_PTR Reserved[8];
FARSTDLOCALISLOWER LIsLower;
FARSTDLOCALISUPPER LIsUpper;
FARSTDLOCALISALPHA LIsAlpha;
FARSTDLOCALISALPHANUM LIsAlphanum;
FARSTDLOCALUPPER LUpper;
FARSTDLOCALLOWER LLower;
FARSTDLOCALUPPERBUF LUpperBuf;
FARSTDLOCALLOWERBUF LLowerBuf;
FARSTDLOCALSTRUPR LStrupr;
FARSTDLOCALSTRLWR LStrlwr;
FARSTDLOCALSTRICMP LStricmp;
FARSTDLOCALSTRNICMP LStrnicmp;
FARSTDUNQUOTE Unquote;
FARSTDEXPANDENVIRONMENTSTR ExpandEnvironmentStr;
FARSTDLTRIM LTrim;
FARSTDRTRIM RTrim;
FARSTDTRIM Trim;
FARSTDTRUNCSTR TruncStr;
FARSTDTRUNCPATHSTR TruncPathStr;
FARSTDQUOTESPACEONLY QuoteSpaceOnly;
FARSTDPOINTTONAME PointToName;
FARSTDGETPATHROOT GetPathRoot;
FARSTDADDENDSLASH AddEndSlash;
FARSTDCOPYTOCLIPBOARD CopyToClipboard;
FARSTDPASTEFROMCLIPBOARD PasteFromClipboard;
FARSTDKEYTOKEYNAME FarKeyToName;
FARSTDKEYNAMETOKEY FarNameToKey;
FARSTDINPUTRECORDTOKEY FarInputRecordToKey;
FARSTDXLAT XLat;
FARSTDGETFILEOWNER GetFileOwner;
FARSTDGETNUMBEROFLINKS GetNumberOfLinks;
FARSTDRECURSIVESEARCH FarRecurseSearch;
FARSTDMKTEMP MkTemp;
FARSTDDELETEBUFFER DeleteBuffer;
FARSTDPROCESSNAME ProcessName;
FARSTDMKLINK MkLink;
FARCONVERTNAMETOREAL ConvertNameToReal;
FARGETREPARSEPOINTINFO GetReparsePointInfo;
};
| Сообщение | Описание |
|---|---|
| StructSize | Размер структуры. Если в будущем будут добавлены новые поля в структуре, это поле позволит определить данный факт. |
| atoi | конвертирует строку в целое число типа int (32-битное целое). |
| atoi64 | конвертирует строку в целое число типа __int64 (64-битное целое). |
| itoa | конвертирует целое число типа int (32-битное целое) в строку. |
| itoa64 | конвертирует целое число типа __int64 (64-битное целое) в строку. |
| sprintf | осуществляет форматированный вывод в строку. |
| sscanf | осуществляет форматированный ввод из строки. |
| qsort | осуществляет сортировку данных с использованием алгоритма QuickSort. |
| bsearch | осуществляет двоичный поиск в массиве. |
| qsortex | осуществляет сортировку данных с использованием алгоритма QuickSort. |
| snprintf | осуществляет форматированный вывод в строку с заданным размером. |
| LIsLower | проверяет, является ли символ с указанным кодом буквой в нижнем регистре. |
| LIsUpper | проверяет, является ли символ с указанным кодом буквой в верхнем регистре. |
| LIsAlpha | проверяет, является ли символ с указанным кодом буквой. |
| LIsAlphanum | проверяет, является ли символ с указанным кодом буквой или цифрой. |
| LUpper | преобразует символ в верхний регистр. |
| LLower | преобразует символ в нижний регистр. |
| LUpperBuf | преобразует массив символов указанной длины, (который может содержать нулевые символы) в верхнем регистр. |
| LLowerBuf | преобразует массив символов указанной длины, (который может содержать нулевые символы) в нижний регистр. |
| LStrupr | преобразует строку, оканчивающуюся нулем, в верхний регистр. |
| LStrlwr | преобразует строку, оканчивающуюся нулем, в нижний регистр. |
| LStricmp | сравнивает две строки без учета регистра. |
| LStrnicmp | сравнивает части двух строк без учета регистра. |
| Unquote | убирает из строки все двойные кавычки. |
| ExpandEnvironmentStr | заменяет в строке ссылки на переменные окружения на их значения. |
| LTrim | удаляет ведущие пробелы в строке. |
| RTrim | удаляет конечные пробелы в строке. |
| Trim | удаляет ведущие и конечные пробелы в строке. |
| TruncStr | усекает указанную строку до требуемой длины и вставляет в начало строки многоточие вместо отрезанной части. |
| TruncPathStr | усекает указанный путь до требуемого размера и вставляет при надобности многоточие вместо отрезанной части. |
| QuoteSpaceOnly | заключает строку в кавычки, если она содержит хотя бы один пробел. |
| PointToName | используется для получения указателя на имя файла в данном имени файла с путем. |
| GetPathRoot | используется для получения имени корневого каталога из указанного пути. |
| AddEndSlash | добавляет к строке обратный слеш. |
| CopyToClipboard | копирует текстовую строку в буфер обмена Windows. |
| PasteFromClipboard | используется для получения данных из буфера Windows. |
| FarKeyToName | конвертирует код клавиши во внутреннем формате FAR Manager в строку. |
| FarNameToKey | преобразует символьное представление клавиши во внутренний формат клавиши FAR Manager. |
| FarInputRecordToKey | конвертирует код клавиши из INPUT_RECORD во внутренний формат представления клавиш FAR'а. |
| XLat | используется для конвертирования части строки из одного набора символов (например Русский) в другой (например Латиница). |
| GetFileOwner | используется для определения владельца указанного файла. |
| GetNumberOfLinks | возвращает количество жестких связей для заданного файла. |
| FarRecursiveSearch | осуществляет рекурсивный поиск файлов. |
| MkTemp | создает имя временного файла на основе шаблона. |
| DeleteBuffer | используется для освобождения памяти, запрошенной функцией PasteFromClipboard. |
| ProcessName | позволяет обработать некое имя файла: сравнить с маской, с масками или сгенерировать по маске новое имя. |
| MkLink | создает жесткие и символические связи, а также монтирует локальные диски на файловую систему. |
| ConvertNameToReal | преобразует относительное имя файлового объекта в полное с учетом символических связей (т.н. reparse point в Windows 2000) и текущего каталога. |
| GetReparsePointInfo | позволяет для указанной символической связи получить информацию об источнике - путь к исходному каталогу/диску. |
Сохраните содержимое структуры в локальное пространство плагина:
static struct PluginStartupInfo Info;
static struct FarStandardFunctions FSF;
void _export SetStartupInfo(struct PluginStartupInfo *psInfo)
{
Info=*psInfo;
FSF=*psInfo->FSF;
Info.FSF=&FSF; // скорректируем адрес в локальной структуре
...
}