FarStandardFunctions
содержит указатели на стандартные функции, используемые в Far.exe
struct FarStandardFunctions { size_t StructSize; FARSTDATOI atoi; FARSTDATOI64 atoi64; FARSTDITOA itoa; FARSTDITOA64 itoa64; FARSTDSPRINTF sprintf; FARSTDSSCANF sscanf; FARSTDQSORT qsort; FARSTDBSEARCH bsearch; FARSTDSNPRINTF snprintf; 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; FARSTDLTRIM LTrim; FARSTDRTRIM RTrim; FARSTDTRIM Trim; FARSTDTRUNCSTR TruncStr; FARSTDTRUNCPATHSTR TruncPathStr; FARSTDQUOTESPACEONLY QuoteSpaceOnly; FARSTDPOINTTONAME PointToName; FARSTDGETPATHROOT GetPathRoot; FARSTDADDENDSLASH AddEndSlash; FARSTDCOPYTOCLIPBOARD CopyToClipboard; FARSTDPASTEFROMCLIPBOARD PasteFromClipboard; FARSTDINPUTRECORDTOKEYNAME FarInputRecordToName; FARSTDKEYNAMETOINPUTRECORD FarNameToInputRecord; FARSTDXLAT XLat; FARSTDGETFILEOWNER GetFileOwner; FARSTDGETNUMBEROFLINKS GetNumberOfLinks; FARSTDRECURSIVESEARCH FarRecurseSearch; FARSTDMKTEMP MkTemp; FARSTDPROCESSNAME ProcessName; FARSTDMKLINK MkLink; FARCONVERTPATH ConvertPath; FARGETREPARSEPOINTINFO GetReparsePointInfo; FARGETCURRENTDIRECTORY GetCurrentDirectory; FARFORMATFILESIZE FormatFileSize; FARSTDFARCLOCK FarClock; };
FarStandardFunctions
. Если в будущем будут добавлены новые поля, это поле позволит определить это.Сохраните содержимое структуры в локальное пространство плагина:
static struct PluginStartupInfo Info; static struct FarStandardFunctions FSF; void WINAPI SetStartupInfoW(struct PluginStartupInfo *psInfo) { Info=*psInfo; FSF=*psInfo->FSF; Info.FSF=&FSF; // скорректируем адрес в локальной структуре ... }