24#if !defined(B4CE13E8A2514CC8B46D9F6D49EEDC60)
25#define B4CE13E8A2514CC8B46D9F6D49EEDC60
27#include <miktex/Core/config.h>
29#if defined(MIKTEX_WINDOWS)
41#include <miktex/Configuration/ConfigurationProvider>
42#include <miktex/Configuration/HasNamedValues>
43#include <miktex/Configuration/TriState>
44#include <miktex/Core/Text>
45#include <miktex/Util/OptionSet>
46#include <miktex/Util/PathName>
47#include <miktex/Trace/TraceCallback>
48#include <miktex/Util/DateUtil>
50#include "Exceptions.h"
54#include "RootDirectoryInfo.h"
55#include "VersionNumber.h"
59#define MIKTEX_SESSION() ([]() \
61 auto session = MiKTeX::Core::Session::TryGet(); \
62 if (session == nullptr) \
64 MIKTEX_UNEXPECTED(); \
72MIKTEX_CORE_BEGIN_NAMESPACE;
89inline std::ostream& operator<<(std::ostream& os,
const MiKTeXConfiguration& miktexConfiguration)
91 switch (miktexConfiguration)
93 case MiKTeXConfiguration::None: os <<
"None";
break;
94 case MiKTeXConfiguration::Regular: os <<
"Regular";
break;
95 case MiKTeXConfiguration::Direct: os <<
"Direct";
break;
96 case MiKTeXConfiguration::Portable: os <<
"Portable";
break;
111inline std::ostream& operator<<(std::ostream& os,
const ConfigurationScope& scope)
115 case ConfigurationScope::None: os <<
"None";
break;
116 case ConfigurationScope::User: os <<
"User";
break;
117 case ConfigurationScope::Common: os <<
"Common";
break;
159inline std::ostream& operator<<(std::ostream& os,
const StartupConfig& startupConfig)
175 os <<
"UserRoots=" << startupConfig.
userRoots <<
",";
195 os <<
"CommonRoots=" << startupConfig.
commonRoots <<
",";
201 os <<
"MiKTeXConfiguration=" << startupConfig.
config;
207 std::time_t setupDate = MiKTeX::Util::DateUtil::UNDEFINED_TIME_T_VALUE;
215 static MIKTEXCORECEEAPI(
PaperSizeInfo) Parse(
const std::string &spec);
220 std::string dvipsName;
232 std::string mnemonic;
233 std::string description;
234 int horizontalResolution;
235 int verticalResolution;
258 std::string fileName;
259 std::string packageName;
266 enum { Developer = 1, Contributor = 2, Sponsor = 4, KnownUser = 8 };
267 enum { Individual = 100 };
270 std::string organization;
274 std::time_t expirationDate = MiKTeX::Util::DateUtil::UNDEFINED_TIME_T_VALUE;
275 bool IsMember ()
const
277 return level >= Individual && (!MiKTeX::Util::DateUtil::IsDefined(expirationDate) || expirationDate >= std::time(
nullptr));
279 bool IsDeveloper ()
const {
return IsMember() && (role & Developer) != 0; }
280 bool IsContributor ()
const {
return IsMember() && (role & Contributor) != 0; }
281 bool IsSponsor ()
const {
return IsMember() && (role & Sponsor) != 0; }
282 bool IsKnownUser ()
const {
return IsMember() && (role & KnownUser) != 0; }
303 bool exclude =
false;
305 bool noExecutable =
false;
316 std::string synonyms;
318 std::string patterns;
319 std::string hyphenation;
320 std::string luaspecial;
321 int lefthyphenmin = -1;
322 int righthyphenmin = -1;
323 bool exclude =
false;
343#if defined(MIKTEX_WINDOWS)
392 bool searchFileSystem =
false;
393 std::string searchPath;
397 std::vector<MiKTeX::Util::PathName> pathNames;
447 InitInfo(
const std::string& programInvocationName) :
448 programInvocationName(programInvocationName)
457 programInvocationName(programInvocationName)
465 this->options = options;
479 this->options += option;
486 this->programInvocationName = programInvocationName;
493 return programInvocationName;
500 this->theNameOfTheGame = theNameOfTheGame;
507 return theNameOfTheGame;
514 this->startupConfig = startupConfig;
521 return startupConfig;
528 this->traceFlags = traceFlags;
542 traceCallback = callback;
549 return traceCallback;
554 std::string programInvocationName;
555 std::string theNameOfTheGame;
557 std::string traceFlags;
564 const FILE* file =
nullptr;
565 std::string fileName;
572 static MIKTEXCORECEEAPI(std::shared_ptr<Session>)
TryGet();
577 static MIKTEXCORECEEAPI(std::shared_ptr<Session>)
Create(
const InitInfo& initInfo);
579 virtual MIKTEXTHISCALL
~Session() noexcept = 0;
582 virtual
void MIKTEXTHISCALL Close() = 0;
585 virtual
void MIKTEXTHISCALL Reset() = 0;
589 virtual
void MIKTEXTHISCALL PushAppName(const std::
string& name) = 0;
593 virtual
void MIKTEXTHISCALL PushBackAppName(const std::
string& name) = 0;
598 virtual
void MIKTEXTHISCALL AddInputDirectory(const MiKTeX::Util::PathName& path,
bool atEnd) = 0;
606 virtual
unsigned MIKTEXTHISCALL GetNumberOfTEXMFRoots() = 0;
611 virtual MiKTeX::Util::PathName MIKTEXTHISCALL GetRootDirectoryPath(
unsigned r) = 0;
616 virtual
bool MIKTEXTHISCALL IsCommonRootDirectory(
unsigned r) = 0;
621 virtual
bool MIKTEXTHISCALL IsOtherRootDirectory(
unsigned r) = 0;
625 virtual MiKTeX::Util::PathName MIKTEXTHISCALL GetMpmRootPath() = 0;
629 virtual MiKTeX::Util::PathName MIKTEXTHISCALL GetMpmDatabasePathName() = 0;
634 virtual
unsigned MIKTEXTHISCALL TryDeriveTEXMFRoot(const MiKTeX::Util::PathName& path) = 0;
639 virtual
unsigned MIKTEXTHISCALL DeriveTEXMFRoot(const MiKTeX::Util::PathName& path) = 0;
645 virtual
bool MIKTEXTHISCALL FindFilenameDatabase(
unsigned r, MiKTeX::Util::PathName& path) = 0;
650 virtual MiKTeX::Util::PathName MIKTEXTHISCALL GetFilenameDatabasePathName(
unsigned r) = 0;
655 virtual
bool MIKTEXTHISCALL UnloadFilenameDatabase() = 0;
661 virtual
bool MIKTEXTHISCALL UnloadFilenameDatabase(std::chrono::duration<
double> minIdleTime) = 0;
668 virtual
unsigned MIKTEXTHISCALL SplitTEXMFPath(const MiKTeX::Util::PathName& path, MiKTeX::Util::PathName& root, MiKTeX::Util::PathName& relative) = 0;
678 virtual
void MIKTEXTHISCALL RegisterRootDirectory(const MiKTeX::Util::PathName& path,
bool other) = 0;
683 virtual
void MIKTEXTHISCALL UnregisterRootDirectory(const MiKTeX::Util::PathName& path,
bool other) = 0;
687 virtual
void MIKTEXTHISCALL MoveRootDirectoryUp(
unsigned r) = 0;
691 virtual
void MIKTEXTHISCALL MoveRootDirectoryDown(
unsigned r) = 0;
695 virtual
bool MIKTEXTHISCALL IsMiKTeXDirect() = 0;
699 virtual
bool MIKTEXTHISCALL IsMiKTeXPortable() = 0;
705 virtual
bool MIKTEXTHISCALL GetMETAFONTMode(
unsigned idx,
MIKTEXMFMODE& mode) = 0;
711 virtual
bool MIKTEXTHISCALL DetermineMETAFONTMode(
unsigned dpi,
MIKTEXMFMODE& Mode) = 0;
715 virtual std::
string MIKTEXTHISCALL GetEngineName() = 0;
723 virtual FILE* MIKTEXTHISCALL OpenFile(const MiKTeX::Util::PathName& path,
FileMode mode,
FileAccess access,
bool isTextFile) = 0;
732 virtual FILE* MIKTEXTHISCALL TryOpenFile(const MiKTeX::Util::PathName& path,
FileMode mode,
FileAccess access,
bool isTextFile) = 0;
738 virtual std::pair<
bool,
OpenFileInfo> MIKTEXTHISCALL TryGetOpenFileInfo(FILE* file) = 0;
742 virtual
void MIKTEXTHISCALL CloseFile(FILE* file,
int& exitCode) = 0;
746 virtual
void MIKTEXTHISCALL CloseFile(FILE* file) = 0;
751 virtual
bool MIKTEXTHISCALL IsOutputFile(const FILE* file) = 0;
753#if defined(MIKTEX_WINDOWS)
764#if defined(MIKTEX_WINDOWS)
809 virtual bool MIKTEXTHISCALL
FindFile(
const std::string& fileName,
const std::string& searchPath,
FindFileOptionSet options, std::vector<MiKTeX::Util::PathName>& result) = 0;
816 virtual bool MIKTEXTHISCALL
FindFile(
const std::string& fileName,
const std::string& searchPath, std::vector<MiKTeX::Util::PathName>& result) = 0;
846 virtual bool MIKTEXTHISCALL
FindFile(
const std::string& fileName,
FileType fileType, std::vector<MiKTeX::Util::PathName>& result) = 0;
889 virtual void MIKTEXTHISCALL
SplitFontPath(
const MiKTeX::Util::PathName& fontPath, std::string* fontType, std::string* supplier, std::string* typeface, std::string* fontName, std::string* pointSize) = 0;
897 virtual bool MIKTEXTHISCALL
GetFontInfo(
const std::string& fontName, std::string& supplier, std::string& typeface,
double* genSize) = 0;
935#if defined(MIKTEX_WINDOWS)
940 virtual int MIKTEXTHISCALL
RunBatch(
int argc,
const char** argv) = 0;
947 virtual int MIKTEXTHISCALL
RunExe(
int argc,
const char** argv) = 0;
955#if !defined(MIKTEX_WINDOWS)
960 virtual int MIKTEXTHISCALL RunSh(
int argc,
const char** argv) = 0;
967 virtual int MIKTEXTHISCALL
RunPerl(
int argc,
const char** argv) = 0;
973 virtual int MIKTEXTHISCALL
RunPython(
int argc,
const char** argv) = 0;
979 virtual int MIKTEXTHISCALL
RunJava(
int argc,
const char** argv) = 0;
981#if defined(MIKTEX_WINDOWS)
995 virtual std::vector<FormatInfo> MIKTEXTHISCALL
GetFormats() = 0;
1042 virtual void MIKTEXTHISCALL
SetAdminMode(
bool adminMode,
bool force =
false) = 0;
1107 virtual std::string
Expand(
const std::string& toBeExpanded) = 0;
1126#if HAVE_MIKTEX_USER_INFO
1133#if HAVE_MIKTEX_USER_INFO
1167 virtual std::tuple<ExamineCommandLineResult, std::string, std::string>
ExamineCommandLine(
const std::string& commandLine) = 0;
1174 static MIKTEXCOREEXPORT MIKTEXNORETURN
void MIKTEXCEECALL
FatalCrtError(
const std::string& functionName,
int errorCode,
const MiKTeXException::KVMAP& info,
const SourceLocation& sourceLocation);
1183 static MIKTEXCOREEXPORT MIKTEXNORETURN
void MIKTEXCEECALL
FatalMiKTeXError(
const std::string& message,
const std::string& description,
const std::string& remedy,
const std::string& tag,
const MiKTeXException::KVMAP& info,
const SourceLocation& sourceLocation);
1185#if defined(MIKTEX_WINDOWS)
1194 static MIKTEXCOREEXPORT MIKTEXNORETURN
void MIKTEXCEECALL
FatalWindowsError(
const std::string& functionName,
unsigned long errorCode,
const std::string& description,
const std::string& remedy,
const std::string& tag,
const MiKTeXException::KVMAP& info,
const SourceLocation& sourceLocation);
1198MIKTEX_CORE_END_NAMESPACE;
1200#define MIKTEX_FATAL_ERROR(message) \
1201 MiKTeX::Core::Session::FatalMiKTeXError(message, "", "", "", MiKTeX::Core::MiKTeXException::KVMAP(), MIKTEX_SOURCE_LOCATION())
1203#define MIKTEX_FATAL_ERROR_2(message, ...) \
1204 MiKTeX::Core::Session::FatalMiKTeXError(message, "", "", "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
1206#define MIKTEX_FATAL_ERROR_3(message, description, ...) \
1207 MiKTeX::Core::Session::FatalMiKTeXError(message, description, "", "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
1209#define MIKTEX_FATAL_ERROR_4(message, description, remedy, ...) \
1210 MiKTeX::Core::Session::FatalMiKTeXError(message, description, remedy, "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
1212#define MIKTEX_FATAL_ERROR_5(message, description, remedy, tag, ...) \
1213 MiKTeX::Core::Session::FatalMiKTeXError(message, description, remedy, tag, MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
1215#define MIKTEX_STRINGIFY_(x) #x
1216#define MIKTEX_STRINGIFY(x) MIKTEX_STRINGIFY_(x)
1218#define MIKTEX_INTERNAL_ERROR() MIKTEX_FATAL_ERROR("internal error")
1220#define MIKTEX_UNEXPECTED() MIKTEX_INTERNAL_ERROR()
1222#define MIKTEX_EXPECT(p) if (!(p)) { MIKTEX_UNEXPECTED(); }
1224#define MIKTEX_FATAL_CRT_ERROR(functionName) \
1226 int errorCode = errno; \
1227 MiKTeX::Core::Session::FatalCrtError(functionName, errorCode, MiKTeX::Core::MiKTeXException::KVMAP(), MIKTEX_SOURCE_LOCATION()); \
1230#define MIKTEX_FATAL_CRT_ERROR_2(functionName, ...) \
1232 int errorCode = errno; \
1233 MiKTeX::Core::Session::FatalCrtError(functionName, errorCode, MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION()); \
1236#define MIKTEX_FATAL_CRT_RESULT(functionName, errorCode) \
1237 MiKTeX::Core::Session::FatalCrtError(functionName, errorCode, MiKTeX::Core::MiKTeXException::KVMAP(), MIKTEX_SOURCE_LOCATION());
1239#define MIKTEX_FATAL_CRT_RESULT_2(functionName, errorCode, ...) \
1240 MiKTeX::Core::Session::FatalCrtError(functionName, errorCode, MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION());
1242#if defined(MIKTEX_WINDOWS)
1244#define MIKTEX_FATAL_WINDOWS_ERROR(functionName) \
1246 unsigned long errorCode = GetLastError(); \
1247 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, "", "", "", MiKTeX::Core::MiKTeXException::KVMAP(), MIKTEX_SOURCE_LOCATION()); \
1250#define MIKTEX_FATAL_WINDOWS_ERROR_2(functionName, ...) \
1252 unsigned long errorCode = GetLastError(); \
1253 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, "", "", "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION()); \
1256#define MIKTEX_FATAL_WINDOWS_ERROR_3(functionName, description, ...) \
1258 unsigned long errorCode = GetLastError(); \
1259 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, description, "", "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION()); \
1262#define MIKTEX_FATAL_WINDOWS_ERROR_4(functionName, description, remedy, ...) \
1264 unsigned long errorCode = GetLastError(); \
1265 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, description, remedy, "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION()); \
1268#define MIKTEX_FATAL_WINDOWS_ERROR_5(functionName, description, remedy, tag, ...) \
1270 unsigned long errorCode = GetLastError(); \
1271 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, description, remedy, tag, MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION()); \
1274#define MIKTEX_FATAL_WINDOWS_RESULT(functionName, errorCode) \
1275 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, "", "", "", MiKTeX::Core::MiKTeXException::KVMAP(), MIKTEX_SOURCE_LOCATION())
1277#define MIKTEX_FATAL_WINDOWS_RESULT_2(functionName, errorCode, ...) \
1278 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, "", "", "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
1280#define MIKTEX_FATAL_WINDOWS_RESULT_3(functionName, errorCode, description, ...) \
1281 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, description, "", "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
1283#define MIKTEX_FATAL_WINDOWS_RESULT_4(functionName, errorCode, description, remedy, ...) \
1284 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, description, remedy, "", MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
1286#define MIKTEX_FATAL_WINDOWS_RESULT_5(functionName, errorCode, description, remedy, tag, ...) \
1287 MiKTeX::Core::Session::FatalWindowsError(functionName, errorCode, description, remedy, tag, MiKTeX::Core::MiKTeXException::KVMAP(__VA_ARGS__), MIKTEX_SOURCE_LOCATION())
TriState
Tri-state enum class.
Definition: TriState.h:22
The MiKTeX ConfigurationProvider interface.
Definition: ConfigurationProvider.h:89
Definition: HasNamedValues.h:23
Find file callback interface.
Definition: Session.h:370
virtual bool TryCreateFile(const MiKTeX::Util::PathName &fileName, FileType fileType)=0
virtual bool InstallPackage(const std::string &packageId, const MiKTeX::Util::PathName &trigger, MiKTeX::Util::PathName &installRoot)=0
Run process callback interface.
Definition: Process.h:47
Extended initialization options.
Definition: Session.h:436
std::string GetTraceFlags() const
Definition: Session.h:533
void SetTraceCallback(MiKTeX::Trace::TraceCallback *callback)
Definition: Session.h:540
void SetProgramInvocationName(const std::string &programInvocationName)
Definition: Session.h:484
std::string GetProgramInvocationName() const
Definition: Session.h:491
void SetOptions(InitOptionSet options)
Definition: Session.h:463
void AddOption(InitOption option)
Definition: Session.h:477
InitInfo(const std::string &programInvocationName)
Definition: Session.h:447
InitOptionSet GetOptions() const
Definition: Session.h:470
MiKTeX::Trace::TraceCallback * GetTraceCallback()
Definition: Session.h:547
std::string GetTheNameOfTheGame() const
Definition: Session.h:505
void SetTheNameOfTheGame(const std::string &theNameOfTheGame)
Definition: Session.h:498
StartupConfig GetStartupConfig() const
Definition: Session.h:519
InitInfo(const std::string &programInvocationName, InitOptionSet options)
Definition: Session.h:455
void SetTraceFlags(const std::string &traceFlags)
Definition: Session.h:526
void SetStartupConfig(const StartupConfig &startupConfig)
Definition: Session.h:512
The MiKTeX session interface.
Definition: Session.h:403
virtual bool GetFontInfo(const std::string &fontName, std::string &supplier, std::string &typeface, double *genSize)=0
virtual bool FindFile(const std::string &fileName, const std::string &searchPath, MiKTeX::Util::PathName &result)=0
virtual int RunPerl(int argc, const char **argv)=0
virtual void ConfigureFile(const MiKTeX::Util::PathName &pathIn, const MiKTeX::Util::PathName &pathOut, MiKTeX::Configuration::HasNamedValues *callback=nullptr)=0
virtual bool GetPaperSizeInfo(int idx, PaperSizeInfo &paperSize)=0
virtual bool IsAdminMode()=0
virtual bool ConvertToBitmapFile(const MiKTeX::Util::PathName &sourceFileName, MiKTeX::Util::PathName &destFileName, IRunProcessCallback *callback)=0
virtual void SetLanguageInfo(const LanguageInfo &languageInfo)=0
virtual MiKTeX::Util::PathName GetMyLocation(bool canonicalized)=0
virtual void SetFormatInfo(const FormatInfo &formatInfo)=0
virtual std::vector< FileInfoRecord > GetFileInfoRecords()=0
virtual int RunPython(int argc, const char **argv)=0
virtual void ScheduleSystemCommand(const std::string &commandLine)=0
virtual FileTypeInfo GetFileTypeInfo(FileType fileType)=0
virtual PaperSizeInfo GetPaperSizeInfo(const std::string &dvipsName)=0
static void FatalCrtError(const std::string &functionName, int errorCode, const MiKTeXException::KVMAP &info, const SourceLocation &sourceLocation)
virtual std::vector< std::string > GetAllowedShellCommands()=0
virtual bool FindFile(const std::string &fileName, FileType fileType, FindFileOptionSet options, MiKTeX::Util::PathName &result)=0
MiKTeX::Util::OptionSet< InitOption > InitOptionSet
Init flags enum.
Definition: Session.h:432
virtual LocateResult Locate(const std::string &fileName, const LocateOptions &options)=0
virtual bool GetMakeFontsFlag()=0
virtual bool ShowManualPageAndWait(HWND hWnd, unsigned long topic)=0
virtual bool FindFile(const std::string &fileName, const std::string &searchPath, std::vector< MiKTeX::Util::PathName > &result)=0
virtual bool FindFile(const std::string &fileName, const std::string &searchPath, FindFileOptionSet options, std::vector< MiKTeX::Util::PathName > &result)=0
virtual MiKTeX::Util::PathName GetGhostscript(unsigned long *versionNumber)=0
virtual std::string Expand(const std::string &toBeExpanded, MiKTeX::Configuration::HasNamedValues *callback)=0
virtual bool FindFile(const std::string &fileName, FileType fileType, MiKTeX::Util::PathName &result)=0
virtual int RunJava(int argc, const char **argv)=0
virtual MiKTeX::Util::PathName GetMyProgramFile(bool canonicalized)=0
virtual void RecordFileInfo(const MiKTeX::Util::PathName &path, FileAccess access)=0
static std::shared_ptr< Session > Create(const InitInfo &initInfo)
virtual std::vector< FormatInfo > GetFormats()=0
virtual std::vector< std::string > MakeMakePkCommandLine(const std::string &fontName, int dpi, int baseDpi, const std::string &mfMode, MiKTeX::Util::PathName &fileName, MiKTeX::Configuration::TriState enableInstaller)=0
static void FatalWindowsError(const std::string &functionName, unsigned long errorCode, const std::string &description, const std::string &remedy, const std::string &tag, const MiKTeXException::KVMAP &info, const SourceLocation &sourceLocation)
virtual void SetFindFileCallback(IFindFileCallback *callback)=0
virtual std::tuple< ExamineCommandLineResult, std::string, std::string > ExamineCommandLine(const std::string &commandLine)=0
virtual std::vector< std::string > GetFontDirectories()=0
virtual bool IsFileAlreadyOpen(const MiKTeX::Util::PathName &fileName)=0
ExamineCommandLineResult
Result of a command-line examination.
Definition: Session.h:1150
virtual bool StartFileInfoRecorder()=0
virtual bool EnableFontMaker(bool enable)=0
virtual std::vector< FileTypeInfo > GetFileTypes()=0
virtual int RunBatch(int argc, const char **argv)=0
virtual std::string GetExpandedSearchPath(FileType fileType)=0
FindFileOption
Find file options.
Definition: Session.h:407
virtual bool FindFile(const std::string &fileName, FileType fileType, FindFileOptionSet options, std::vector< MiKTeX::Util::PathName > &result)=0
virtual void SetDefaultPaperSize(const std::string &dvipsName)=0
virtual std::string Expand(const std::string &toBeExpanded)=0
virtual void SetRecorderPath(const MiKTeX::Util::PathName &path)=0
virtual std::vector< LanguageInfo > GetLanguages()=0
virtual void DeleteFormatInfo(const std::string &key)=0
virtual bool StartFileInfoRecorder(bool recordPackageNames)=0
virtual bool FindPkFile(const std::string &fontName, const std::string &mfMode, int dpi, MiKTeX::Util::PathName &result)=0
virtual SetupConfig GetSetupConfig()=0
virtual std::string Expand(const std::string &toBeExpanded, ExpandOptionSet options, MiKTeX::Configuration::HasNamedValues *callback)=0
virtual int RunExe(int argc, const char **argv)=0
static std::shared_ptr< Session > TryGet()
virtual void SetTheNameOfTheGame(const std::string &name)=0
virtual bool TryGetFormatInfo(const std::string &key, FormatInfo &formatInfo)=0
static void FatalMiKTeXError(const std::string &message, const std::string &description, const std::string &remedy, const std::string &tag, const MiKTeXException::KVMAP &info, const SourceLocation &sourceLocation)
virtual MiKTeX::Util::PathName GetMyPrefix(bool canonicalized)=0
virtual bool RunningAsAdministrator()=0
virtual void ConfigureFile(const MiKTeX::Util::PathName &pathRel, MiKTeX::Configuration::HasNamedValues *callback=nullptr)=0
virtual int RunGhostscript(int argc, const char **argv)=0
virtual void SplitFontPath(const MiKTeX::Util::PathName &fontPath, std::string *fontType, std::string *supplier, std::string *typeface, std::string *fontName, std::string *pointSize)=0
virtual void SetAdminMode(bool adminMode, bool force=false)=0
virtual bool FindFile(const std::string &fileName, const std::string &searchPath, FindFileOptionSet options, MiKTeX::Util::PathName &result)=0
virtual ShellCommandMode GetShellCommandMode()=0
virtual bool FindFile(const std::string &fileName, FileType fileType, std::vector< MiKTeX::Util::PathName > &result)=0
virtual bool IsUserAnAdministrator()=0
InitOption
Initialization options.
Definition: Session.h:422
virtual void ScheduleFileRemoval(const MiKTeX::Util::PathName &path)=0
virtual bool IsSharedSetup()=0
virtual bool FindTfmFile(const std::string &fontName, MiKTeX::Util::PathName &result, bool create)=0
virtual FileType DeriveFileType(const MiKTeX::Util::PathName &fileName)=0
virtual bool TryCreateFromTemplate(const MiKTeX::Util::PathName &path)=0
virtual FormatInfo GetFormatInfo(const std::string &key)=0
Definition: TraceCallback.h:45
bool Empty() const
Definition: CharBuffer.h:239
Definition: OptionSet.h:37
Instances of this class can be used to store path names.
Definition: PathName.h:73
ConfigurationScope
MiKTeX configuration scope.
Definition: Session.h:103
@ User
User configuration scope.
@ Common
Common (system-wide) configuration scope.
FileAccess
File access options.
Definition: File.h:72
ShellCommandMode
Shell command mode.
Definition: Session.h:357
@ Forbidden
Shell commands are forbidden.
@ Unrestricted
All shell commands are allowed.
@ Restricted
Only some shell commands are allowed.
constexpr unsigned INVALID_ROOT_INDEX
An invalid TEXMF root index.
Definition: Session.h:75
FileMode
How to open a file.
Definition: File.h:54
@ Create
The file will be created, if it doesn't already exist.
MiKTeXConfiguration
MiKTeX configurations.
Definition: Session.h:79
@ Regular
Regular MiKTeX configuration.
@ Direct
MiKTeXDirect (CD/DVD) configuration.
@ Portable
MiKTeX Portable configuration.
ExpandOption
Expansion options.
Definition: Session.h:329
@ PathPatterns
Expand path patterns.
FileType
File type enum class.
Definition: FileType.h:33
RegisterRootDirectoriesOption
Root registration options.
Definition: Session.h:342
@ Temporary
Only temporary registration.
@ Review
Check if the registration is valid.
@ NoRegistry
Don't store in registry.
File information.
Definition: Session.h:257
File type information.
Definition: Session.h:240
std::vector< std::string > alternateExtensions
Extra list of file name extensions associated with the file type.
Definition: Session.h:248
std::vector< std::string > searchPath
Search path for files.
Definition: Session.h:250
std::vector< std::string > envVarNames
List of environment variable names.
Definition: Session.h:252
std::string fileTypeString
The file type as a string.
Definition: Session.h:244
std::vector< std::string > fileNameExtensions
List of file name extensions associated with the file type.
Definition: Session.h:246
Language information.
Definition: Session.h:314
Definition: Session.h:386
Definition: Session.h:396
METAFONT mode.
Definition: Session.h:231
User information.
Definition: Session.h:265
Paper size information.
Definition: Session.h:214
int height
Paper height (in 72nds of an inch).
Definition: Session.h:226
std::string name
Paper name (e.g., A4)
Definition: Session.h:218
int width
Paper width (in 72nds of an inch).
Definition: Session.h:223
Definition: RootDirectoryInfo.h:35
Information about an open file.
Definition: Session.h:563
Definition: Session.h:206
Definition: Exceptions.h:38
Startup configuration.
Definition: Session.h:124
MiKTeX::Util::PathName userInstallRoot
User installation root directory.
Definition: Session.h:132
MiKTeX::Util::PathName commonConfigRoot
System-wide configuration root directory.
Definition: Session.h:141
std::string otherUserRoots
User root directories defined by other TeX systems.
Definition: Session.h:138
MiKTeXConfiguration config
The MiKTeX configuration type.
Definition: Session.h:156
std::string otherCommonRoots
System-wide root directories defined by other TeX systems.
Definition: Session.h:153
MiKTeX::Util::PathName userDataRoot
User data root directory.
Definition: Session.h:129
MiKTeX::Util::PathName commonInstallRoot
System-wide installation root directory.
Definition: Session.h:147
MiKTeX::Util::PathName commonDataRoot
System-wide data root directory.
Definition: Session.h:144
std::string commonRoots
Additional TEXMF root defined by the admin.
Definition: Session.h:150
MiKTeX::Util::PathName userConfigRoot
User configuration root directory.
Definition: Session.h:126
std::string userRoots
Additional TEXMF roots defined by the user.
Definition: Session.h:135
An instance of this struct represents a version number.
Definition: VersionNumber.h:36