long _cdecl vdf_initall(long numdisks, const char* cdid, long* cddrives, long* disksfound) { if(!IsVdfs()) { if(!IsSpacer()) { InstallSteamOverlayFix(); InstallKillerFix(); TStringArray Libraries; if(PlatformReadTextFile(_T("System\\post.load"), Libraries)) { for(uInt l = 0; l < Libraries.Size(); l++) { if(!LoadLibrary(TString(_T("System\\")) + Libraries[l])) { RedirectIOToConsole(); _tprintf(_T("%s not loaded\n"), Libraries[l].GetData()); } } } } if(VdfsBase.Init()) return 0; // Ok return -1; // No files } return 0; }
int CubeLexer::SortText(char *SourceText) { unsigned long Offset=0; if (m_Sources) { free(m_Sources); m_SourceOffset=0; m_SortStatus=SORT_STATUS_NORMAL; } if ((m_Sources=(char *)malloc(strlen(SourceText)+1))==NULL) { return FALSE; } m_SortStatus=SORT_STATUS_NEWLINE; while(*SourceText) { if (NextChar(*SourceText)) { if(IsNewLine(*SourceText)&&IsSpacer(m_Sources[Offset-1])) Offset--; if(IsCommentStart(*SourceText)&&IsSpacer(m_Sources[Offset-1])) Offset--; if(IsDelimiter(*SourceText)&&IsSpacer(m_Sources[Offset-1])) Offset--; if(IsSpacer(*SourceText)&&IsDelimiter(m_Sources[Offset-1])) { SourceText++; continue; } m_Sources[Offset++]=*(SourceText); } SourceText++; } m_Sources[Offset]='\0'; return TRUE; }
unsigned int CubeLexer::GetNextLexeme() { int iLem=0; char chBegin; if (m_Sources[m_SourceOffset]=='\0') { //printf("<End>\n"); m_Symbol='0'; m_CurLexeme[0]='\0'; return CUBE_LEXER_LEXEME_TYPE_END; } if (IsSpacer(m_Sources[m_SourceOffset])) { m_Symbol=m_Sources[m_SourceOffset]; m_CurLexeme[0]=m_Sources[m_SourceOffset]; m_CurLexeme[1]='\0'; m_SourceOffset++; //printf("<Spacer>\n"); return CUBE_LEXER_LEXEME_TYPE_SPACER; } if (IsNewLine(m_Sources[m_SourceOffset])) { m_Symbol=m_Sources[m_SourceOffset]; m_CurLexeme[0]=m_Sources[m_SourceOffset]; m_CurLexeme[1]='\0'; m_SourceOffset++; //printf("<New line>\n"); return CUBE_LEXER_LEXEME_TYPE_NEWLINE; } if (IsContainerStart((chBegin=m_Sources[m_SourceOffset]))) { iLem=0; m_CurLexeme[iLem++]=m_Sources[m_SourceOffset]; m_SourceOffset++; while (!IsSourcsEnd()&&!IsContainerEnd(chBegin,m_Sources[m_SourceOffset])) { m_CurLexeme[iLem++]=m_Sources[m_SourceOffset++]; } m_CurLexeme[iLem++]=m_Sources[m_SourceOffset]; m_CurLexeme[iLem]='\0'; m_SourceOffset++; //printf("<Container> %s\n",m_CurLexeme); return CUBE_LEXER_LEXEME_TYPE_CONATINER; } if (IsDelimiter(m_Sources[m_SourceOffset])) { m_Symbol=m_Sources[m_SourceOffset]; m_CurLexeme[0]=m_Sources[m_SourceOffset]; m_CurLexeme[1]='\0'; //printf("<Delimiter> %c\n",m_Sources[m_SourceOffset]); m_SourceOffset++; return CUBE_LEXER_LEXEME_TYPE_DELIMITER; } iLem=0; m_Symbol='\0'; while (!IsSourcsEnd()&&!IsDelimiter(m_Sources[m_SourceOffset])&&!IsSpacer(m_Sources[m_SourceOffset])&&!IsNewLine(m_Sources[m_SourceOffset])&&!IsContainerStart(m_Sources[m_SourceOffset])) { m_CurLexeme[iLem++]=m_Sources[m_SourceOffset++]; } m_CurLexeme[iLem]='\0'; //printf("<Token> %s\n",m_CurLexeme); return CUBE_LEXER_LEXEME_TYPE_TOKEN; }
int CubeLexer::NextChar(char ch) { switch(m_SortStatus) { case SORT_STATUS_NORMAL: if (IsSpacer(ch)) { m_SortStatus=SORT_STATUS_SPACER; return TRUE; } if (IsCommentStart(ch)) { m_SortStatus=SORT_STATUS_COMMENT; m_SortComment=ch; return FALSE; } if (IsNewLine(ch)) { m_SortStatus=SORT_STATUS_NEWLINE; return TRUE; } return TRUE; break; case SORT_STATUS_SPACER: if (IsSpacer(ch)) { return FALSE; } if (IsCommentStart(ch)) { m_SortStatus=SORT_STATUS_COMMENT; m_SortComment=ch; return FALSE; } if (IsNewLine(ch)) { m_SortStatus=SORT_STATUS_NEWLINE; return TRUE; } m_SortStatus=SORT_STATUS_NORMAL; return TRUE; break; case SORT_STATUS_COMMENT: if (IsCommentEnd(m_SortComment,ch)) { if(IsNewLine(ch)&&m_SortStatus!=SORT_STATUS_NEWLINE) { m_SortStatus=SORT_STATUS_NEWLINE; return TRUE; } m_SortStatus=SORT_STATUS_NORMAL; } return FALSE; break; case SORT_STATUS_NEWLINE: if (IsSpacer(ch)||IsNewLine(ch)) { return FALSE; } if (IsCommentStart(ch)) { m_SortStatus=SORT_STATUS_COMMENT; m_SortComment=ch; return FALSE; } m_SortStatus=SORT_STATUS_NORMAL; return TRUE; } return TRUE; }
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: { bool Ok = true; if(!IsVdfs()) { if(!IsSpacer()) { bool ChangeWorkDir = false; TString WorkPath; if(PlatformGetWorkPath(WorkPath) && WorkPath.TruncateBeforeLast(_T("\\")) && WorkPath.Compare(_T("System"), true)) ChangeWorkDir = (SetCurrentDirectory(_T("..\\")) == TRUE); TStringArray Libraries; if(PlatformReadTextFile(_T("System\\pre.load"), Libraries)) { for(uInt l = 0; l < Libraries.Size(); l++) { if(!LoadLibrary(TString(_T("System\\")) + Libraries[l])) { RedirectIOToConsole(); _tprintf(_T("%s not loaded\n"), Libraries[l].GetData()); } } } if(ChangeWorkDir) SetCurrentDirectory(_T("System\\")); } Ok = Ok && InstallFsHook(VdfsBase); if(!Ok) { RedirectIOToConsole(); printf("InstallFsHook failed\n"); } Ok = Ok && InstallSendMsgFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallSendMsgFix failed\n"); } if(!IsSpacer()) { Ok = Ok && PreInstallKillerFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallKillerFix failed\n"); } Ok = Ok && InstallGUXFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallGUXFix failed\n"); } Ok = Ok && InstallD3DFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallD3DFix failed\n"); } Ok = Ok && InstallIniFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallIniFix failed\n"); } Ok = Ok && InstallBinkFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallBinkFix failed\n"); } Ok = Ok && InstallSplashFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallSplashFix failed\n"); } Ok = Ok && InstallMssFix(); if(!Ok) { RedirectIOToConsole(); printf("InstallMssFix failed\n"); } Ok = Ok && PrepareSteamOverlayFix(); if(!Ok) { RedirectIOToConsole(); printf("PrepareSteamOverlayFix failed\n"); } } } return Ok ? TRUE : FALSE; } break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: { if(!IsVdfs() && !IsSpacer()) { RemoveMssFix(); RemoveSplashFix(); RemoveBinkFix(); RemoveIniFix(); RemoveD3DFix(); RemoveKillerFix(); } } break; } return TRUE; }