Author: tkreuzer Date: Sun Nov 21 17:23:40 2010 New Revision: 49693
URL: http://svn.reactos.org/svn/reactos?rev=49693&view=rev Log: [SPEC2DEF] Fix handling of redirections
Modified: branches/cmake-bringup/tools/spec2def/spec2def.c
Modified: branches/cmake-bringup/tools/spec2def/spec2def.c URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/tools/spec2def/spe... ============================================================================== --- branches/cmake-bringup/tools/spec2def/spec2def.c [iso-8859-1] (original) +++ branches/cmake-bringup/tools/spec2def/spec2def.c [iso-8859-1] Sun Nov 21 17:23:40 2010 @@ -58,6 +58,16 @@ return 1; }
+int +ScanToken(const char *token, char chr) +{ + while (!IsSeparator(*token)) + { + if (*token++ == chr) return 1; + } + return 0; +} + char * NextLine(char *pc) { @@ -165,13 +175,23 @@
if (exp->pcRedirection && !no_redirections) { - if (exp->nCallingConvention == CC_FASTCALL && !no_decoration) + int bAddDecorations = 1; + + fprintf(fileDest, "="); + + /* No decorations, if switch was passed or this is an external */ + if (no_decoration || ScanToken(exp->pcRedirection, '.')) + { + bAddDecorations = 0; + } + + if (exp->nCallingConvention == CC_FASTCALL && bAddDecorations) { fprintf(fileDest, "@"); } - fprintf(fileDest, "=%.*s", exp->nRedirectionLength, exp->pcRedirection); + fprintf(fileDest, "%.*s", exp->nRedirectionLength, exp->pcRedirection); if ((exp->nCallingConvention == CC_STDCALL || - exp->nCallingConvention == CC_FASTCALL) && !no_decoration) + exp->nCallingConvention == CC_FASTCALL) && bAddDecorations) { fprintf(fileDest, "@%d", exp->nStackBytes); }