Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: A collection of utility classes to simplify file I/O, and
// as much as possible contain portability problems. Here avoiding
// including windows.h.
//
//=============================================================================
#ifndef FILEIO_H
#define FILEIO_H
#if defined (_WIN32)
#else
#include <sys/types.h>
#include <sys/stat.h>
#if !defined( _PS3 )
#include <signal.h>
#endif // _PS3
#endif
#include "tier0/platform.h"
#include "tier1/utlstring.h"
#include "tier1/utllinkedlist.h"
const int64 k_nMillion = 1000000; const int64 k_nThousand = 1000; const int64 k_nKiloByte = 1024; const int64 k_nMegabyte = k_nKiloByte * k_nKiloByte; const int64 k_nGigabyte = k_nMegabyte * k_nKiloByte;
class CPathString { public:
// Constructors: Automatically fixes slashes and removes double slashes when the object is
// constructed, and then knows how to append magic \\?\ on Windows for unicode paths
CPathString( const char *pchUTF8Path ); ~CPathString();
// Gets the path in UTF8
const char *GetUTF8Path();
// Gets wchar_t based path, with \\?\ pre-pended (allowing long paths on Win32, should only be used with unicode aware filesystem calls)
const wchar_t *GetWCharPathPrePended();
private:
void PopulateWCharPath();
char *m_pchUTF8Path; wchar_t *m_pwchWideCharPathPrepended;
};
#if !defined(_PS3)
//-----------------------------------------------------------------------------
// Purpose: Encapsulates watching a directory for file changes
//-----------------------------------------------------------------------------
class CDirWatcher { public: CDirWatcher(); ~CDirWatcher();
// only one directory can be watched at a time
void SetDirToWatch( const char *pchDir );
// retrieve any changes
bool GetChangedFile( CUtlString *psFile );
#ifdef DBGFLAG_VALIDATE
void Validate( CValidator &validator, const char *pchName ); #endif
private: CUtlLinkedList<CUtlString> m_listChangedFiles; void *m_hFile; void *m_pOverlapped; void *m_pFileInfo; #ifdef OSX
public: struct timespec m_modTime; void AddFileToChangeList( const char *pchFile ); CUtlString m_BaseDir; private: void *m_WatcherStream; #endif
friend class CDirWatcherFriend;
#ifdef LINUX
void AddFileToChangeList( const char *pchFile ); #endif
#ifdef WIN32
// used by callback functions to push a file onto the list
void AddFileToChangeList( const char *pchFile ); void PostDirWatch(); #endif
}; #endif // _PS3
#endif // FILEIO_H
|