diff options
author | Ash Wolf <ninji@wuffs.org> | 2022-10-13 17:56:43 +0100 |
---|---|---|
committer | Ash Wolf <ninji@wuffs.org> | 2022-10-13 17:56:43 +0100 |
commit | b8df05413a4e8b299de07b915cddce73a3bb16e3 (patch) | |
tree | 74260aa4137676a7dc40fab0d07526d39a1de688 /UCLTMain.c | |
parent | 59a724bd4cc7a543686c633572510e6763b34d39 (diff) | |
download | MWCC-b8df05413a4e8b299de07b915cddce73a3bb16e3.tar.gz MWCC-b8df05413a4e8b299de07b915cddce73a3bb16e3.zip |
finish CLMain.c
Diffstat (limited to '')
-rw-r--r-- | UCLTMain.c | 390 |
1 files changed, 0 insertions, 390 deletions
diff --git a/UCLTMain.c b/UCLTMain.c deleted file mode 100644 index 22359dc..0000000 --- a/UCLTMain.c +++ /dev/null @@ -1,390 +0,0 @@ -#include "UCWInterface.h" - -static short CLT_dummymain(void *context) { - return 0; -} - -static short CLT_GetDropInFlags(const DropInFlags **flags, long *flagsSize) { - static const DropInFlags sFlags = { - kCurrentDropInFlagsVersion, - CWFOURCHAR('c','l','d','r'), - 7, - 0, - 0, - 12 - }; - *flags = &sFlags; - *flagsSize = sizeof(sFlags); - return 0; -} - -static short CLT_GetDropInName(const char **dropinName) { - static const char *sDropInName = "Command-Line Driver"; - *dropinName = sDropInName; - return 0; -} - -static short CLT_GetDisplayName(const char **displayName) { - static const char *sDisplayName = "Command-Line Driver"; - *displayName = sDisplayName; - return 0; -} - -static short CLT_GetPanelList(const CWPanelList **panelList) { - static const char *sPanelNames[4]; - static CWPanelList sPanelList = { - kCurrentCWPanelListVersion, - 4, - sPanelNames - }; - - sPanelNames[0] = "CmdLine Panel"; - if (clState.plugintype == CWDROPINCOMPILERTYPE) { - sPanelNames[1] = "CmdLine Compiler Panel"; - sPanelNames[2] = "CmdLine Linker Panel"; - sPanelList.count = 3; - } else { - sPanelNames[1] = "CmdLine Linker Panel"; - sPanelList.count = 2; - } - *panelList = &sPanelList; - return 0; -} - -static short CLT_GetTargetList(const CWTargetList **targetList) { - static CWDataType sCPU = CWFOURCHAR('*','*','*','*'); - static CWDataType sOS = CWFOURCHAR('*','*','*','*'); - static CWTargetList sTargetList = { - kCurrentCWTargetListVersion, - 1, - &sCPU, - 1, - &sOS - }; - *targetList = &sTargetList; - return 0; -} - -static short CLT_GetVersionInfo(const VersionInfo **versioninfo) { - static const VersionInfo vi = { - 3, 0, 0, 0 - }; - *versioninfo = &vi; - return 0; -} - -static short CLT_GetFileTypeMappings(const OSFileTypeMappingList **mappinglist) { - static const OSFileTypeMapping ftmes[2] = { - {CWFOURCHAR('B','r','w','s'), "DubL", 4, 0, 0}, - {CWFOURCHAR('M','M','P','r'), "looc", 4, 0, 0} - }; - static const OSFileTypeMappingList ftml = { - 2, - ftmes - }; - *mappinglist = &ftml; - return 0; -} - -static BasePluginCallbacks clcb = { - CLT_dummymain, - CLT_GetDropInFlags, - CLT_GetDisplayName, - CLT_GetDropInName, - CLT_GetPanelList, - 0, - 0, - CLT_GetVersionInfo, - CLT_GetFileTypeMappings -}; - -static int RegisterStaticCmdLinePlugin() { - return RegisterStaticPlugin(&clcb); -} - -// TODO do me later - this comes from CmdLine/Project/Resources/CLErrors.r -const char *STR12000[100]; - -static int RegisterCmdLineResources() { - return RegisterResource("Command-line strings", 12000, &STR12000); -} - -static int special_debug(unsigned char pre, char *) { - if (pre) { - SetupDebuggingTraps(); - return 1; - } else { - return 0; - } -} - -static int special_plugin_debug(unsigned char pre, char *) { - if (pre) { - clState.pluginDebug = 1; - return 1; - } else { - return clState.pluginDebug; - } -} - -static int special_stdout_base(unsigned char pre, char *) { - if (pre) { - return 1; - } else { - return clState.stdoutBase != 0; - } -} - -struct SpecialOption { - const char *optname; - char **argp; - int (*func)(unsigned char a, char *b); -}; -static struct SpecialOption special_options[3] = { - {"", 0, special_debug}, - {"--plugin-debug", 0, special_plugin_debug}, - {"--stdout", /*TODO clState*/ 0, special_stdout_base} -}; - -void Main_PreParse(int *pArgc, char ***pArgv) { - struct SpecialOption *so; - int idx; - - if (*pArgc > 1) { - restart: - for (idx = 0, so = &special_options[0]; idx < 3; idx++, so++) { - if (!strcmp(so->optname, (*pArgv)[1])) { - if (so->argp) { - *so->argp = (*pArgv)[2]; - so->func(1, *so->argp); - (*pArgv)[1] = (*pArgv)[0]; - (*pArgc)--; - (*pArgv)++; - - (*pArgv)[1] = (*pArgv)[0]; - (*pArgc)--; - (*pArgv)++; - } else { - so->func(1, 0); - (*pArgv)[1] = (*pArgv)[0]; - (*pArgc)--; - (*pArgv)++; - } - break; - } - } - - if ((*pArgc) > 1 && idx < 3) - goto restart; - } -} - -void Main_PassSpecialArgs(void *unk1, void *unk2) { - struct SpecialOption *so; - int idx; - - for (idx = 0; idx < 3; idx++) { - so = &special_options[idx]; - if (so->func(0, 0)) { - AppendArgumentList(unk1, unk2, so->optname); - if (so->argp) - AppendArgumentList(unk1, unk2, (*so->argp) ? *so->argp : ""); - } - } -} - -static int MainInitialized; -void *gProj; -PCmdLine optsCmdLine; -PCmdLineEnvir optsEnvir; -PCmdLineCompiler optsCompiler; -PCmdLineLinker optsLinker; - -int Main_Initialize(int argc, const char **argv) { - static char secret[8]; - char exename[256]; - - OS_InitProgram(&argc, &argv); - memset(&clState, 0, sizeof(CLState)); - special_options[0].optname = secret; - secret[7] = 0; - secret[4] = 'b'; - secret[1] = '-'; - secret[5] = 'u'; - secret[2] = 'd'; - secret[0] = '-'; - secret[3] = 'e'; - secret[6] = 'g'; - - Main_PreParse(&argc, &argv); - clState.argc = argc; - clState.argv = argv; - // TODO more shite - - MainInitialized = 1; - return 0; -} - -int Main_Terminate(int exitcode) { - if (MainInitialized) { - Plugins_Term(); - License_Terminate(); - Proj_Terminate(gProj); - IO_Terminate(); - MainInitialized = 0; - } - return exitcode; -} - -static int Main_ParseCommandLine() { - // TODO: clState, Plugins, gTarg, ... - long vislang; - int x, y; - CWCommandLineArgs myargs; -} - -static int Main_SetupParamBlock() { - // TODO: OS, PrefPanes, clState, ... - PrefPanelsChangedCallback(0); -} - -static int Main_ResolveProject() { - // TODO: Various project things - int err; - long startTime, endTime; -} - -static int UpdatePCmdLineFromVersion(const PCmdLine *given, PCmdLine *target) { - static unsigned char warned; - short version = given->version; - *target = *given; - - // TODO: clState - return 0; -} - -static int UpdatePCmdLineEnvirFromVersion(const PCmdLineEnvir *given, PCmdLineEnvir *target) { - static unsigned char warned; - short version = given->version; - *target = *given; - - // TODO: clState - return 0; -} - -static int UpdatePCmdLineCompilerFromVersion(const PCmdLineCompiler *given, PCmdLineCompiler *target) { - static unsigned char warned; - short version = given->version; - *target = *given; - - // TODO: clState - return 0; -} - -static int UpdatePCmdLineLinkerFromVersion(const PCmdLineLinker *given, PCmdLineLinker *target) { - static unsigned char warned; - short version = given->version; - *target = *given; - - // TODO: clState - return 0; -} - -static int UpdatePrefPanels(const char *name) { - PrefPanel *panel; - Handle h; - - if (!name || !ustrcmp(name, "CmdLine Panel")) { - if ((panel = Prefs_FindPanel("CmdLine Panel")) && (h = PrefPanel_GetHandle(panel))) { - if (name) { - if (!UpdatePCmdLineFromVersion((PCmdLine *) *h, &optsCmdLine)) - return 0; - } - } else { - CLReportError(91, "CmdLine Panel"); - return 0; - } - } - - if (!name || !ustrcmp(name, "CmdLine Environment")) { - if ((panel = Prefs_FindPanel("CmdLine Environment")) && (h = PrefPanel_GetHandle(panel))) { - if (name) { - if (!UpdatePCmdLineEnvirFromVersion((PCmdLineEnvir *) *h, &optsEnvir)) - return 0; - } - } else { - CLReportError(91, "CmdLine Environment"); - return 0; - } - } - - if (!name || !ustrcmp(name, "CmdLine Compiler Panel")) { - if ((panel = Prefs_FindPanel("CmdLine Compiler Panel")) && (h = PrefPanel_GetHandle(panel))) { - if (name) { - if (!UpdatePCmdLineCompilerFromVersion((PCmdLineCompiler *) *h, &optsCompiler)) - return 0; - } - } else { - CLReportError(91, "CmdLine Compiler Panel"); - return 0; - } - } - - if (!name || !ustrcmp(name, "CmdLine Linker Panel")) { - if ((panel = Prefs_FindPanel("CmdLine Linker Panel")) && (h = PrefPanel_GetHandle(panel))) { - if (name) { - if (!UpdatePCmdLineLinkerFromVersion((PCmdLineLinker *) *h, &optsLinker)) - return 0; - } - } else { - CLReportError(91, "CmdLine Linker Panel"); - return 0; - } - } - - return 1; -} - -static int SetupCmdLinePrefPanels() { - int ret; - - PrefPanelsChangedCallback = UpdatePrefPanels; - ret = Prefs_AddPanel( - PrefPanel_New("CmdLine Environment", &optsEnvir, sizeof(PCmdLineEnvir)) - ); - ret |= ( - Prefs_AddPanel(PrefPanel_New("CmdLine Panel", 0, sizeof(PCmdLine))) - && Prefs_AddPanel(PrefPanel_New("CmdLine Compiler Panel", 0, sizeof(PCmdLineCompiler))) - && Prefs_AddPanel(PrefPanel_New("CmdLine Linker Panel", 0, sizeof(PCmdLineLinker))) - ); - - return ret; -} - -static int Main_SetupContext() { - // TODO Target, Plugins, clState - return 1; -} - -jmp_buf exit_program; - -int Main_Driver() { - volatile int result; - - result = setjmp(exit_program); - if (!result) { - if (!SetupCmdLinePrefPanels()) - CLFatalError("Could not initialize preferences"); - - Main_SetupContext(); - if (!(result = Main_ParseCommandLine())) { - if (!(result = Main_SetupParamBlock())) - result = Main_ResolveProject(); - } - } else { - result = 1; - } - - return result; -} - |