blob: 3b3575ea5ff09baba708a79070b7abc2b58e3792 [file] [log] [blame]
//========= Copyright Valve Corporation ============//
#pragma once
#include <stdint.h>
#include <string>
#if !defined(_WIN32)
#include <sys/types.h>
#include <sys/stat.h>
#endif
extern bool BCreateDirectoryRecursive( const char *pchPath );
extern bool BCreateDirectory( const char *pchPath );
#if !defined( VRCORE_NO_PLATFORM )
// for finddata_t
#include <vrcore/platform.h>
typedef void *HMDHANDLE;
// iterator class, initialize with the path & pattern you want to want files/dirs for.
//
// all string setters and accessors use UTF-8 encoding.
class CDirIterator
{
public:
CDirIterator( const char *pchPath, const char *pchPattern );
~CDirIterator();
bool IsValid() const;
// fetch the next file
bool BNextFile();
// name of the current file - file portion only, not full path
std::string CurrentFileName();
// size of the current file
int64_t CurrentFileLength() const;
// creation time of the current file
int64_t CurrentFileCreateTime() const;
// mod time of the current file
int64_t CurrentFileWriteTime() const;
// mode/type checks:
// is the current file actually a directory?
bool BCurrentIsDir() const;
// is the current file hidden?
bool BCurrentIsHidden() const;
// is the current file read-only?
bool BCurrentIsReadOnly() const;
// is the current file a system file?
bool BCurrentIsSystem() const;
// is the current file's archive bit set?
bool BCurrentIsMarkedForArchive() const;
private:
void Init( const std::string &sPathAndPattern );
bool BValidFilename();
bool m_bNoFiles, m_bUsedFirstFile;
#if defined( _WIN32 )
HMDHANDLE m_hFind;
struct _WIN32_FIND_DATAW *m_pFindData;
std::string m_sFilename;
#else
int64_t m_hFind;
struct _finddata_t *m_pFindData;
#endif
};
#endif // VRCORE_NO_PLATFORM