#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Filesystem { enum DIR_Permissions { P_LIST = 0x01,//List P_RETR = 0x02,//Retrieve P_STOR = 0x04,//Store P_RNFT = 0x08,//Rename From/To P_DELE = 0x10,//Delete P_MKD = 0x20,//Make directory P_RMD = 0x40,//Remove directory }; enum DIR_Show { S_NONE = 0x00, S_ACTIVE = 0x01, S_INACTIVE = 0x02, S_ALL = 0x03, }; class Directory { public: Directory( std::string PathName = "", std::string BasePath = "."); ~Directory( ); void Print( ); bool IsDir( ); std::string PWD( ); std::string LIST( std::vector ActiveStreams = std::vector() ); bool CWD( std::string Path ); bool CDUP( ); bool DELE( std::string Path ); bool MKD( std::string Path ); std::string RETR( std::string Path ); void STOR( std::string Path, std::string Data ); bool Rename( std::string From, std::string To ); void SetPermissions( std::string PathName, char Permissions ); bool HasPermission( char Permission ); void SetVisibility( std::string Pathname, char Visible ); private: bool ValidDir; bool SimplifyPath( ); void FillEntries( ); std::string MyBase; std::string MyPath; std::map< std::string, struct stat > Entries; std::map< std::string, char > MyPermissions; std::map< std::string, char > MyVisible; };//Directory Class };//Filesystem namespace