FarStandardFunctions

Структура FarStandardFunctions содержит указатели на полезные функции используемые в Far.exe
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; // скорректируем адрес в локальной структуре
    ...
} 
Смотрите также:
структуры | PluginStartupInfo