summaryrefslogtreecommitdiff
path: root/unsorted/ParserFace.c
diff options
context:
space:
mode:
Diffstat (limited to 'unsorted/ParserFace.c')
-rw-r--r--unsorted/ParserFace.c298
1 files changed, 0 insertions, 298 deletions
diff --git a/unsorted/ParserFace.c b/unsorted/ParserFace.c
deleted file mode 100644
index a005ece..0000000
--- a/unsorted/ParserFace.c
+++ /dev/null
@@ -1,298 +0,0 @@
-#include "parser.h"
-
-const char *failedCallback;
-jmp_buf exit_plugin;
-ParseOptsType parseopts;
-
-static CWResult SetupParamBlock(CWPluginContext context) {
- CWResult result;
- int x;
- Handle h;
- PCmdLineEnvir cle;
-
- memset(&parseopts, 0, sizeof(parseopts));
- parseopts.context = context;
-
- result = CWSecretGetNamedPreferences(context, "CmdLine Environment", &h);
- if (result)
- return result;
-
- cle = **((PCmdLineEnvir **) h);
- parseopts.underIDE = cle.underIDE;
- parseopts.ioRows = cle.rows;
- parseopts.ioCols = cle.cols;
-
- result = CWParserGetCommandLine(context, &parseopts.args);
- if (result)
- return result;
-
- result = CWParserGetToolInfo(context, &parseopts.toolVersion);
- if (result)
- return result;
-
- result = CWParserGetTargetInfo(context, &parseopts.cpu, &parseopts.os);
- if (result)
- return result;
-
- result = CWParserGetPanels(context, &parseopts.numPanels, &parseopts.panelNames);
- if (result)
- return result;
-
- result = CWParserGetPlugins(context, &parseopts.numPlugins, &parseopts.plugins);
- if (result)
- return result;
-
- parseopts.passingArgs = 0;
- for (x = 0; x < parseopts.numPlugins; x++) {
- if (parseopts.plugins[x].storeCommandLine)
- parseopts.passingArgs = 1;
- }
-
- return 0;
-}
-
-static CWResult SetupOptions(CWPluginContext context) {
- if (!pTool) {
- return 2;
- } else {
- SetupParserToolOptions();
- return 0;
- }
-}
-
-static CWResult Parse(CWPluginContext context) {
- CWResult result;
-
- parseopts.success = 1;
- parseopts.currentSegment = 1;
- parseopts.currentOverlayGroup = 0;
- parseopts.currentOverlay = 0;
-
- Arg_InitToolArgs(&linkargs);
- Arg_InitToolArgs(&prelinkargs);
- Arg_InitToolArgs(&postlinkargs);
-
- if (pTool->PreParse)
- parseopts.success &= pTool->PreParse();
-
- Arg_Init(parseopts.args->argc, parseopts.args->argv);
- parseopts.noOptions = Arg_IsEmpty();
- parseopts.success &= Options_Parse(Options_GetOptions(), OFLAGS_1) && !parseopts.hadErrors;
- Arg_Reset();
-
- result = Parser_StorePanels(context);
- if (result)
- return result;
-
- if (pTool->MidParse && parseopts.success)
- parseopts.success &= pTool->MidParse();
-
- result = Parser_StorePanels(context);
- if (result)
- return result;
-
- if (parseopts.showHelp && parseopts.success)
- parseopts.success &= Options_DisplayHelp();
-
- Arg_Reset();
- if (parseopts.success)
- parseopts.success &= Options_Parse(Options_GetOptions(), 0) && !parseopts.hadErrors;
-
- if (pTool->PostParse && parseopts.success)
- parseopts.success &= pTool->PostParse();
-
- Arg_Terminate();
-
- return (parseopts.success && !parseopts.hadErrors) ? cwNoErr : cwErrRequestFailed;
-}
-
-Handle Parser_FindPrefPanel(const char *name) {
- int idx;
- Handle h;
-
- for (idx = 0; idx < pTool->numPrefDataPanels; idx++) {
- if (!ustrcmp(name, pTool->prefDataPanels[idx].name)) {
- h = NewHandle(pTool->prefDataPanels[idx].size);
- if (!h)
- return NULL;
-
- HLock(h);
- memcpy(*h, pTool->prefDataPanels[idx].ptr, pTool->prefDataPanels[idx].size);
- HUnlock(h);
- return h;
- }
- }
-
- return NULL;
-}
-
-CWResult Parser_StorePanels(CWPluginContext context) {
- int idx;
- CWResult result;
- const char *name;
- Handle h;
-
- for (idx = 0; idx < parseopts.numPanels; idx++) {
- name = parseopts.panelNames[idx];
- h = Parser_FindPrefPanel(name);
- if (h) {
- result = CWParserSetNamedPreferences(parseopts.context, name, h);
- if (result) {
- CLPReportError(CLPStr68, name);
- return result;
- }
- }
- }
-
- return cwNoErr;
-}
-
-static CWResult StoreResults(CWPluginContext context) {
- int idx; // r25
- CWResult result;
- CWCommandLineArgs args;
- UInt32 id; // r8
- UInt32 lg; // r10
-
- result = Parser_StorePanels(context);
- if (result)
- return result;
-
- for (idx = 0; idx < parseopts.numPlugins; idx++) {
- if (parseopts.plugins[idx].plugintype == CWDROPINLINKERTYPE && parseopts.plugins[idx].storeCommandLine) {
- if (parseopts.plugins[idx].dropinflags & isPreLinker) {
- Arg_ToolArgsForPlugin(&prelinkargs, &args);
- } else if (parseopts.plugins[idx].dropinflags & isPostLinker) {
- Arg_ToolArgsForPlugin(&postlinkargs, &args);
- } else {
- Arg_ToolArgsForPlugin(&linkargs, &args);
- }
- result = CWParserStoreCommandLineForPlugin(parseopts.context, idx, &args);
- if (result)
- return result;
- } else if (parseopts.plugins[idx].storeCommandLine) {
- id = parseopts.plugins[idx].plugintype;
- lg = parseopts.plugins[idx].language;
- fprintf(stderr,
- "*** No support for %c%c%c%c/%c%c%c%c tool\n",
- (id & 0xFF000000) >> 24,
- (id & 0x00FF0000) >> 16,
- (id & 0x0000FF00) >> 8,
- (id & 0x000000FF),
- (lg & 0xFF000000) >> 24,
- (lg & 0x00FF0000) >> 16,
- (lg & 0x0000FF00) >> 8,
- (lg & 0x000000FF)
- );
- }
- }
-
- return cwNoErr;
-}
-
-CWPLUGIN_ENTRY (CWParser_GetDropInFlags)(const DropInFlags **flags, SInt32 *flagsSize) {
- static const DropInFlags sFlags = {
- kCurrentDropInFlagsVersion,
- CWDROPINPARSERTYPE,
- 7,
- 0,
- 'Seep',
- 12
- };
- *flags = &sFlags;
- *flagsSize = sizeof(sFlags);
- return 0;
-}
-
-CWPLUGIN_ENTRY (CWParser_GetDropInName)(const char **dropinName) {
- static const char *sDropInName = "Command-Line Parser";
- *dropinName = sDropInName;
- return 0;
-}
-
-CWPLUGIN_ENTRY (CWParser_GetDisplayName)(const char **displayName) {
- static const char *sDisplayName = "Command-Line Parser";
- *displayName = sDisplayName;
- return 0;
-}
-
-CWPLUGIN_ENTRY (CWParser_GetPanelList)(const CWPanelList **panelList) {
- static CWPanelList sPanelList = {
- kCurrentCWFamilyListVersion,
- 0,
- 0
- };
- *panelList = &sPanelList;
- return 0;
-}
-
-CWPLUGIN_ENTRY (CWParser_GetTargetList)(const CWTargetList **targetList) {
- static CWDataType sCPU = '****';
- static CWDataType sOS = '****';
- static CWTargetList sTargetList = {
- kCurrentCWTargetListVersion,
- 1,
- &sCPU,
- 1,
- &sOS
- };
- *targetList = &sTargetList;
- return 0;
-}
-
-CWPLUGIN_ENTRY (CWParser_GetVersionInfo)(const VersionInfo **versioninfo) {
- static const VersionInfo vi = {
- 1, 1, 0, 0
- };
- *versioninfo = &vi;
- return 0;
-}
-
-CWPLUGIN_ENTRY (Parser_SupportsPlugin)(const struct CLPluginInfo *pluginfo, CWDataType cpu, CWDataType os, Boolean *isSupported) {
- *isSupported = ParserToolMatchesPlugin(pluginfo->plugintype, pluginfo->language, cpu, os);
- return 0;
-}
-
-CWPLUGIN_ENTRY (Parser_SupportsPanels)(int numPanels, const char **panelNames, Boolean *isSupported) {
- *isSupported = ParserToolHandlesPanels(numPanels, panelNames);
- return 0;
-}
-
-CWPLUGIN_ENTRY (parser_main)(CWPluginContext context) {
- CWResult result;
- SInt32 request;
-
- CWGetPluginRequest(context, &request);
- result = setjmp(exit_plugin);
- if (result == 0) {
- switch (request) {
- case reqInitialize:
- result = 0;
- break;
- case 0:
- break;
- case 1:
- result = SetupParamBlock(context);
- if (!result)
- result = Parser_StorePanels(context);
- break;
- case 2:
- result = SetupParamBlock(context);
- if (!result) {
- result = SetupOptions(context);
- if (!result) {
- result = Parse(context);
- if (!result)
- result = StoreResults(context);
- }
- }
- break;
- }
- } else {
- if (failedCallback && result != 1)
- fprintf(stderr, "Unexpected error in %s [%d]\n", failedCallback, result);
- }
- CWDonePluginRequest(context, result);
-
- return result;
-}