示例#1
0
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;
}
示例#2
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;
}
示例#3
0
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;
}
示例#4
0
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;
}
示例#5
0
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;
}