#include <PathInfo.h>
Classes | |
class | devino_cache |
Simple cache remembering device/inode to detect hardlinks. More... | |
struct | direntry |
class | stat_mode |
Wrapper class for mode_t values as derived from stat. More... | |
Public Types | |
enum | Mode { STAT, LSTAT } |
enum | file_type { NOT_AVAIL = 0x00, NOT_EXIST = 0x01, T_FILE = 0x02, T_DIR = 0x04, T_CHARDEV = 0x08, T_BLOCKDEV = 0x10, T_FIFO = 0x20, T_LINK = 0x40, T_SOCKET = 0x80 } |
enum | ZIP_TYPE { ZT_NONE, ZT_GZ, ZT_BZ2 } |
typedef std::list< direntry > | dircontent |
Public Member Functions | |
PathInfo (const Pathname &path="", Mode initial=STAT) | |
PathInfo (const std::string &path, Mode initial=STAT) | |
PathInfo (const char *path, Mode initial=STAT) | |
virtual | ~PathInfo () |
const Pathname & | path () const |
const std::string & | asString () const |
Mode | mode () const |
int | error () const |
void | setPath (const Pathname &path) |
void | setMode (Mode mode) |
bool | stat (const Pathname &path) |
bool | lstat (const Pathname &path) |
bool | operator() (const Pathname &path) |
bool | stat () |
bool | lstat () |
bool | operator() () |
bool | isExist () const |
file_type | fileType () const |
bool | isFile () const |
bool | isDir () const |
bool | isLink () const |
bool | isChr () const |
bool | isBlk () const |
bool | isFifo () const |
bool | isSock () const |
nlink_t | nlink () const |
uid_t | owner () const |
gid_t | group () const |
bool | isRUsr () const |
bool | isWUsr () const |
bool | isXUsr () const |
bool | isR () const |
bool | isW () const |
bool | isX () const |
bool | isRGrp () const |
bool | isWGrp () const |
bool | isXGrp () const |
bool | isROth () const |
bool | isWOth () const |
bool | isXOth () const |
bool | isUid () const |
bool | isGid () const |
bool | isVtx () const |
mode_t | uperm () const |
mode_t | gperm () const |
mode_t | operm () const |
mode_t | perm () const |
bool | isPerm (mode_t m) const |
bool | hasPerm (mode_t m) const |
mode_t | st_mode () const |
mode_t | userMay () const |
bool | userMayR () const |
bool | userMayW () const |
bool | userMayX () const |
bool | userMayRW () const |
bool | userMayRX () const |
bool | userMayWX () const |
bool | userMayRWX () const |
dev_t | dev () const |
dev_t | rdev () const |
ino_t | ino () const |
off_t | size () const |
unsigned long | blksize () const |
unsigned long | blocks () const |
time_t | atime () const |
time_t | mtime () const |
time_t | ctime () const |
Static Public Member Functions | |
static int | mkdir (const Pathname &path, unsigned mode=0755) |
static int | assert_dir (const Pathname &path, unsigned mode=0755) |
static int | rmdir (const Pathname &path) |
static int | recursive_rmdir (const Pathname &path) |
static int | clean_dir (const Pathname &path) |
static int | copy_dir (const Pathname &srcpath, const Pathname &destpath) |
static int | readdir (std::list< std::string > &retlist, const Pathname &path, bool dots=true) |
static int | readdir (dircontent &retlist, const Pathname &path, bool dots=true, Mode statmode=STAT) |
static int | unlink (const Pathname &path) |
static int | rename (const Pathname &oldpath, const Pathname &newpath) |
static int | copy (const Pathname &file, const Pathname &dest) |
static int | symlink (const Pathname &oldpath, const Pathname &newpath) |
static int | hardlink (const Pathname &oldpath, const Pathname &newpath) |
static int | copy_file2dir (const Pathname &file, const Pathname &dest) |
static int | erase (const Pathname &path) |
static int | chmod (const Pathname &path, mode_t mode) |
static ZIP_TYPE | zipType (const Pathname &file) |
Private Attributes | |
Pathname | path_t |
struct stat | statbuf_C |
Mode | mode_e |
int | error_i |
Friends | |
std::ostream & | operator<< (std::ostream &str, const PathInfo &obj) |
std::ostream & | operator<< (std::ostream &str, file_type obj) |
typedef std::list<direntry> PathInfo::dircontent |
enum PathInfo::file_type |
enum PathInfo::Mode |
enum PathInfo::ZIP_TYPE |
References operator()().
PathInfo::PathInfo | ( | const std::string & | path, | |
Mode | initial = STAT | |||
) |
References operator()().
PathInfo::PathInfo | ( | const char * | path, | |
Mode | initial = STAT | |||
) |
References operator()().
PathInfo::~PathInfo | ( | ) | [virtual] |
int PathInfo::assert_dir | ( | const Pathname & | path, | |
unsigned | mode = 0755 | |||
) | [static] |
Like 'mkdir -p'. No error if directory exists. Make parent directories as needed. mode specifies the permissions to use, if directories have to be created. It is modified by the process's umask in the usual way.
References Pathname::asString(), Pathname::empty(), mkdir(), and Pathname::relative().
Referenced by open_logfile(), and IniParser::write().
const std::string& PathInfo::asString | ( | ) | const [inline] |
int PathInfo::chmod | ( | const Pathname & | path, | |
mode_t | mode | |||
) | [static] |
Like 'chmod'. The mode of the file given by path is changed.
References _Log_Result(), Pathname::asString(), DBG, and stringutil::octstring().
int PathInfo::clean_dir | ( | const Pathname & | path | ) | [static] |
Like 'rm -r DIR/ *'. Delete directory contents, but keep the directory itself.
References _Log_Result(), ExternalProgram::close(), DBG, stringutil::form(), isDir(), isExist(), output(), ExternalDataSource::receiveLine(), and ExternalProgram::Stderr_To_Stdout.
Like 'cp file dest'. Copy file to destination file.
References _Log_Result(), Pathname::asString(), ExternalProgram::close(), DBG, isDir(), isFile(), output(), ExternalDataSource::receiveLine(), and ExternalProgram::Stderr_To_Stdout.
Like 'cp -a srcpath destpath'. Copy directory tree. srcpath/destpath must be directories. 'basename srcpath' must not exist in destpath.
References _Log_Result(), Pathname::asString(), Pathname::basename(), ExternalProgram::close(), DBG, isDir(), output(), ExternalDataSource::receiveLine(), and ExternalProgram::Stderr_To_Stdout.
Like 'cp file dest'. Copy file to dest dir.
References _Log_Result(), Pathname::asString(), ExternalProgram::close(), DBG, isDir(), isFile(), output(), ExternalDataSource::receiveLine(), and ExternalProgram::Stderr_To_Stdout.
int PathInfo::erase | ( | const Pathname & | path | ) | [static] |
Erase whatever happens to be located at path (file or directory).
References isDir(), isExist(), LSTAT, recursive_rmdir(), and unlink().
int PathInfo::error | ( | ) | const [inline] |
References error_i.
PathInfo::file_type PathInfo::fileType | ( | ) | const |
mode_t PathInfo::gperm | ( | ) | const [inline] |
gid_t PathInfo::group | ( | ) | const [inline] |
Like 'link'. Creates a hard link named newpath to an existing file oldpath. If newpath exists it will not be overwritten.
References _Log_Result(), Pathname::asString(), and DBG.
bool PathInfo::hasPerm | ( | mode_t | m | ) | const [inline] |
References perm().
bool PathInfo::isDir | ( | ) | const [inline] |
References isExist(), and statbuf_C.
Referenced by clean_dir(), copy(), copy_dir(), copy_file2dir(), erase(), and recursive_rmdir().
bool PathInfo::isExist | ( | ) | const [inline] |
References error_i.
Referenced by atime(), blksize(), blocks(), clean_dir(), ctime(), dev(), erase(), fileType(), gperm(), group(), ino(), isBlk(), isChr(), isDir(), isFifo(), isFile(), isGid(), isLink(), isRGrp(), isROth(), isRUsr(), isSock(), isUid(), isVtx(), isWGrp(), isWOth(), isWUsr(), isXGrp(), isXOth(), isXUsr(), mtime(), nlink(), operator<<(), operm(), owner(), perm(), rdev(), recursive_rmdir(), size(), st_mode(), uperm(), and userMay().
bool PathInfo::isFile | ( | ) | const [inline] |
bool PathInfo::isPerm | ( | mode_t | m | ) | const [inline] |
References perm().
bool PathInfo::isR | ( | ) | const [inline] |
References isRUsr().
bool PathInfo::isW | ( | ) | const [inline] |
References isWUsr().
bool PathInfo::isX | ( | ) | const [inline] |
References isXUsr().
bool PathInfo::lstat | ( | ) | [inline] |
bool PathInfo::lstat | ( | const Pathname & | path | ) | [inline] |
References LSTAT, operator()(), setMode(), and setPath().
int PathInfo::mkdir | ( | const Pathname & | path, | |
unsigned | mode = 0755 | |||
) | [static] |
Like 'mkdir'. Attempt to create a new directory named path. mode specifies the permissions to use. It is modified by the process's umask in the usual way.
References _Log_Result(), Pathname::asString(), DBG, and stringutil::octstring().
Referenced by assert_dir().
bool PathInfo::operator() | ( | ) |
References Pathname::asString(), Pathname::empty(), error_i, lstat(), LSTAT, mode_e, path_t, stat(), STAT, and statbuf_C.
Referenced by lstat(), PathInfo(), and stat().
bool PathInfo::operator() | ( | const Pathname & | path | ) | [inline] |
mode_t PathInfo::operm | ( | ) | const [inline] |
uid_t PathInfo::owner | ( | ) | const [inline] |
mode_t PathInfo::perm | ( | ) | const [inline] |
int PathInfo::readdir | ( | dircontent & | retlist, | |
const Pathname & | path, | |||
bool | dots = true , |
|||
Mode | statmode = STAT | |||
) | [static] |
Return content of directory via retlist. If dots is false entries starting with '.' are not reported. "." and ".." are never reported.
The type of individual directory entries is determined accoding to statmode (i.e. via stat or lstat).
References fileType(), and readdir().
int PathInfo::readdir | ( | std::list< std::string > & | retlist, | |
const Pathname & | path, | |||
bool | dots = true | |||
) | [static] |
Return content of directory via retlist. If dots is false entries starting with '.' are not reported. "." and ".." are never reported.
References _Log_Result(), and DBG.
Referenced by readdir().
int PathInfo::recursive_rmdir | ( | const Pathname & | path | ) | [static] |
Like 'rm -r DIR'. Delete a directory, recursively removing its contents.
References _Log_Result(), ExternalProgram::close(), DBG, isDir(), isExist(), output(), ExternalDataSource::receiveLine(), and ExternalProgram::Stderr_To_Stdout.
Referenced by erase().
Like 'rename'. Renames a file, moving it between directories if required.
References _Log_Result(), Pathname::asString(), and DBG.
int PathInfo::rmdir | ( | const Pathname & | path | ) | [static] |
Like 'rmdir'. Delete a directory, which must be empty.
References _Log_Result(), and DBG.
void PathInfo::setMode | ( | Mode | mode | ) | [inline] |
void PathInfo::setPath | ( | const Pathname & | path | ) | [inline] |
off_t PathInfo::size | ( | ) | const [inline] |
mode_t PathInfo::st_mode | ( | ) | const [inline] |
bool PathInfo::stat | ( | ) | [inline] |
bool PathInfo::stat | ( | const Pathname & | path | ) | [inline] |
References operator()(), setMode(), setPath(), and STAT.
Like 'symlink'. Creates a symbolic link named newpath which contains the string oldpath. If newpath exists it will not be overwritten.
References _Log_Result(), Pathname::asString(), and DBG.
int PathInfo::unlink | ( | const Pathname & | path | ) | [static] |
Like 'unlink'. Delete a file (symbolic link, socket, fifo or device).
References _Log_Result(), and DBG.
Referenced by erase().
mode_t PathInfo::uperm | ( | ) | const [inline] |
mode_t PathInfo::userMay | ( | ) | const |
References gperm(), group(), isExist(), operm(), owner(), and uperm().
Referenced by userMayR(), userMayRW(), userMayRWX(), userMayRX(), userMayW(), userMayWX(), and userMayX().
bool PathInfo::userMayR | ( | ) | const [inline] |
References userMay().
bool PathInfo::userMayRW | ( | ) | const [inline] |
References userMay().
bool PathInfo::userMayRWX | ( | ) | const [inline] |
References userMay().
bool PathInfo::userMayRX | ( | ) | const [inline] |
References userMay().
bool PathInfo::userMayW | ( | ) | const [inline] |
References userMay().
bool PathInfo::userMayWX | ( | ) | const [inline] |
References userMay().
bool PathInfo::userMayX | ( | ) | const [inline] |
References userMay().
PathInfo::ZIP_TYPE PathInfo::zipType | ( | const Pathname & | file | ) | [static] |
References Pathname::asString(), ZT_BZ2, ZT_GZ, and ZT_NONE.
std::ostream& operator<< | ( | std::ostream & | str, | |
PathInfo::file_type | obj | |||
) | [friend] |
std::ostream& operator<< | ( | std::ostream & | str, | |
const PathInfo & | obj | |||
) | [friend] |
int PathInfo::error_i [private] |
Referenced by error(), isExist(), operator()(), setMode(), and setPath().
Mode PathInfo::mode_e [private] |
Referenced by mode(), operator()(), and setMode().
Pathname PathInfo::path_t [private] |
Referenced by asString(), operator()(), path(), and setPath().
struct stat PathInfo::statbuf_C [read, private] |
Referenced by atime(), blksize(), blocks(), ctime(), dev(), gperm(), group(), ino(), isBlk(), isChr(), isDir(), isFifo(), isFile(), isGid(), isLink(), isRGrp(), isROth(), isRUsr(), isSock(), isUid(), isVtx(), isWGrp(), isWOth(), isWUsr(), isXGrp(), isXOth(), isXUsr(), mtime(), nlink(), operator()(), operm(), owner(), perm(), rdev(), size(), st_mode(), and uperm().