diff options
Diffstat (limited to 'unsorted/ParserFace.c')
-rw-r--r-- | unsorted/ParserFace.c | 298 |
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; -} |