Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

132 lines
2.8 KiB

//========= Copyright 1996-2005, Valve Corporation, All rights reserved. ============//
//
// File Utilities.
//
//=====================================================================================//
#ifdef _WIN32
#pragma once
#endif
#define _CRT_SECURE_NO_DEPRECATE 1
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <string.h>
#ifdef POSIX
#include <unistd.h>
#endif
#if defined( LINUX ) || defined( _LINUX )
#include <sys/io.h>
#endif
#include "tier0/platform.h"
#include "../vpccrccheck/crccheck_shared.h"
template< class T, class NullType, int nMax >
class CSimplePointerStack
{
public:
inline CSimplePointerStack()
{
m_nCount = 0;
}
inline void Purge()
{
for ( int i=0; i < m_nCount; i++ )
m_Values[i] = (NullType)NULL;
m_nCount = 0;
}
inline int Count()
{
return m_nCount;
}
inline T& Top()
{
Assert( m_nCount > 0 );
return m_Values[m_nCount-1];
}
inline void Pop( T &val )
{
Assert( m_nCount > 0 );
--m_nCount;
val = m_Values[m_nCount];
m_Values[m_nCount] = (NullType)NULL;
}
inline void Pop()
{
Assert( m_nCount > 0 );
--m_nCount;
m_Values[m_nCount] = (NullType)NULL;
}
inline void Push( T &val )
{
Assert( m_nCount+1 < nMax );
m_Values[m_nCount] = val;
++m_nCount;
}
public:
T m_Values[nMax];
int m_nCount;
};
class CXMLWriter
{
public:
CXMLWriter();
bool Open( const char *pFilename, bool bIs2010Format = false );
void Close();
void PushNode( const char *pName );
void PopNode( bool bEmitLabel );
void WriteLineNode( const char *pName, const char *pExtra, const char *pString );
void PushNode( const char *pName, const char *pString );
void Write( const char *p );
CUtlString FixupXMLString( const char *pInput );
private:
void Indent();
bool m_b2010Format;
FILE *m_fp;
CSimplePointerStack< char *, char *, 128 > m_Nodes;
};
long Sys_FileLength( const char* filename, bool bText = false );
int Sys_LoadFile( const char *filename, void **bufferptr, bool bText = false );
void Sys_StripPath( const char *path, char *outpath );
bool Sys_Exists( const char *filename );
bool Sys_FileInfo( const char *pFilename, int64 &nFileSize, int64 &nModifyTime );
bool Sys_StringToBool( const char *pString );
bool Sys_ReplaceString( const char *pStream, const char *pSearch, const char *pReplace, char *pOutBuff, int outBuffSize );
bool Sys_StringPatternMatch( char const *pSrcPattern, char const *pString );
bool Sys_EvaluateEnvironmentExpression( const char *pExpression, const char *pDefault, char *pOutBuff, int nOutBuffSize );
bool Sys_GetActualFilenameCase( const char *pFilename, char *pOutputBuffer, int nOutputBufferSize );
bool Sys_IsFilenameCaseConsistent( const char *pFilename, char *pOutputBuffer, int nOutputBufferSize );