yast2-core
|
Wrapper class for ::stat/::lstat and other file/directory related operations. More...
#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) |
Wrapper class for ::stat/::lstat and other file/directory related operations.
typedef std::list<direntry> PathInfo::dircontent |
enum PathInfo::file_type |
enum PathInfo::Mode |
enum PathInfo::ZIP_TYPE |
References operator()().
References operator()().
References operator()().
|
virtual |
|
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(), mode(), and Pathname::relative().
Referenced by ctime(), open_logfile(), and IniParser::write_file().
|
inline |
References Pathname::asString().
Referenced by operator<<().
|
static |
Like '::chmod'. The mode of the file given by path is changed.
References _Log_Result(), Pathname::asString(), DBG, mode(), and stringutil::octstring().
|
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.
Referenced by ctime().
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.
Referenced by ctime().
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.
|
inline |
References assert_dir(), clean_dir(), copy_dir(), isExist(), mkdir(), mode(), path(), readdir(), recursive_rmdir(), rmdir(), and statbuf_C.
|
static |
Erase whatever happens to be located at path (file or directory).
References isDir(), isExist(), LSTAT, recursive_rmdir(), and unlink().
|
inline |
References error_i.
PathInfo::file_type PathInfo::fileType | ( | ) | const |
References PathInfo::stat_mode::fileType(), isExist(), NOT_EXIST, and st_mode().
Referenced by isExist(), readdir(), and PathInfo::stat_mode::stat_mode().
|
inline |
|
inline |
References isExist(), and statbuf_C.
Referenced by operator<<(), and userMay().
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.
|
inline |
References perm().
|
inline |
References isExist(), and statbuf_C.
Referenced by PathInfo::stat_mode::fileType().
|
inline |
References isExist(), and statbuf_C.
Referenced by PathInfo::stat_mode::fileType().
|
inline |
References isExist(), and statbuf_C.
Referenced by clean_dir(), copy(), copy_dir(), copy_file2dir(), erase(), PathInfo::stat_mode::fileType(), and recursive_rmdir().
|
inline |
References error_i, and fileType().
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().
|
inline |
References isExist(), and statbuf_C.
Referenced by PathInfo::stat_mode::fileType().
|
inline |
References isExist(), and statbuf_C.
Referenced by copy(), copy_file2dir(), PathInfo::stat_mode::fileType(), and operator<<().
|
inline |
References isExist(), and statbuf_C.
Referenced by PathInfo::stat_mode::fileType().
|
inline |
References perm().
|
inline |
References isRUsr().
|
inline |
References isExist(), and statbuf_C.
Referenced by isR(), and PathInfo::stat_mode::isR().
|
inline |
References isExist(), and statbuf_C.
Referenced by PathInfo::stat_mode::fileType().
|
inline |
References isWUsr().
|
inline |
References isExist(), and statbuf_C.
Referenced by isW(), and PathInfo::stat_mode::isW().
|
inline |
References isXUsr().
|
inline |
References isExist(), and statbuf_C.
Referenced by isX(), and PathInfo::stat_mode::isX().
|
inline |
References operator()(), setMode(), and setPath().
|
inline |
References operator()(), and setMode().
Referenced by operator()().
|
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, mode(), and stringutil::octstring().
Referenced by assert_dir(), and ctime().
|
inline |
|
inline |
References operator()(), and setPath().
Referenced by operator()().
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().
|
inline |
|
inline |
References isExist(), and statbuf_C.
Referenced by operator<<(), and userMay().
|
inline |
|
inline |
References isExist(), and statbuf_C.
Referenced by hasPerm(), PathInfo::stat_mode::hasPerm(), isPerm(), and PathInfo::stat_mode::isPerm().
|
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.
|
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().
|
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.
Like '::rename'. Renames a file, moving it between directories if required.
References _Log_Result(), Pathname::asString(), and DBG.
|
static |
Like '::rmdir'. Delete a directory, which must be empty.
References _Log_Result(), DBG, and path().
Referenced by ctime().
|
inline |
References path().
Referenced by lstat(), operator()(), and stat().
|
inline |
References isExist(), and statbuf_C.
Referenced by operator<<().
|
inline |
References isExist(), statbuf_C, and userMay().
Referenced by fileType(), and operator<<().
|
inline |
References operator()(), setMode(), setPath(), and STAT.
|
inline |
References operator()(), setMode(), and STAT.
Referenced by operator()().
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.
|
static |
Like '::unlink'. Delete a file (symbolic link, socket, fifo or device).
References _Log_Result(), DBG, and path().
Referenced by erase().
|
inline |
mode_t PathInfo::userMay | ( | ) | const |
References gperm(), group(), isExist(), operm(), owner(), and uperm().
Referenced by st_mode(), userMayR(), userMayRW(), userMayRWX(), userMayRX(), userMayW(), userMayWX(), and userMayX().
|
inline |
References userMay().
|
inline |
References userMay().
|
inline |
References userMay().
|
inline |
References userMay().
|
inline |
References userMay().
|
inline |
References userMay().
|
inline |
References userMay().
|
static |
References Pathname::asString(), ZT_BZ2, ZT_GZ, and ZT_NONE.
|
friend |
|
friend |
|
private |
Referenced by error(), isExist(), and operator()().
|
private |
Referenced by mode(), and operator()().
|
private |
Referenced by operator()(), and path().
|
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().