sbuild 1.4.23
Public Types | Public Member Functions | Private Attributes
sbuild::stat Class Reference

Get file status. More...

#include <sbuild-util.h>

Collaboration diagram for sbuild::stat:

List of all members.

Public Types

enum  error_code { FILE, FD }
 Error codes. More...
enum  mode_bits {
  FILE_TYPE_MASK = S_IFMT, FILE_TYPE_SOCKET = S_IFSOCK, FILE_TYPE_LINK = S_IFLNK, FILE_TYPE_REGULAR = S_IFREG,
  FILE_TYPE_BLOCK = S_IFBLK, FILE_TYPE_DIRECTORY = S_IFDIR, FILE_TYPE_CHARACTER = S_IFCHR, FILE_TYPE_FIFO = S_IFIFO,
  PERM_SETUID = S_ISUID, PERM_SETGIT = S_ISGID, PERM_STICKY = S_ISVTX, PERM_USER_MASK = S_IRWXU,
  PERM_USER_READ = S_IRUSR, PERM_USER_WRITE = S_IWUSR, PERM_USER_EXECUTE = S_IXUSR, PERM_GROUP_MASK = S_IRWXG,
  PERM_GROUP_READ = S_IRGRP, PERM_GROUP_WRITE = S_IWGRP, PERM_GROUP_EXECUTE = S_IXGRP, PERM_OTHER_MASK = S_IRWXO,
  PERM_OTHER_READ = S_IROTH, PERM_OTHER_WRITE = S_IWOTH, PERM_OTHER_EXECUTE = S_IXOTH
}
 Mode bits. More...
typedef custom_error< error_codeerror
 Exception type.

Public Member Functions

 stat (const char *file)
 The constructor.
 stat (std::string const &file)
 The constructor.
 stat (std::string const &file, int fd)
 The constructor.
 stat (int fd)
 The constructor.
virtual ~stat ()
 The destructor.
void check () const
 Check if the file status was obtained.
struct::stat const & get_detail ()
 Get the struct stat used internally.
dev_t device () const
 Get the device the file resides on.
ino_t inode () const
 Get the inode of the file.
mode_t mode () const
 Get the mode of the file.
nlink_t links () const
 Get the number of hard links to the file.
uid_t uid () const
 Get the user id owning the file.
gid_t gid () const
 Get the group id owning the file.
off_t size () const
 Get the file size.
blksize_t blocksize () const
 Get the file block size.
blkcnt_t blocks () const
 Get the file block count.
time_t atime () const
 Get the file access time.
time_t mtime () const
 Get the file modification time.
time_t ctime () const
 Get the file creation time.
bool is_regular () const
 Is the file a regular file?
bool is_directory () const
 Is the file a directory?
bool is_character () const
 Is the file a character device?
bool is_block () const
 Is the file a block device?
bool is_fifo () const
 Is the file a named pipe (FIFO)?
bool is_link () const
 Is the file a symbolic link?
bool is_socket () const
 Is the file a socket?
bool check_mode (mode_bits mask) const
 Check if particular mode bits are set.

Private Attributes

std::string file
 The filename being checked (if specified).
int fd
 The file descriptor being checked (if specified).
int errorno
 The error number set after stat(2) error.
struct::stat status
 The stat(2) results.

Detailed Description

Get file status.

stat(2) wrapper.


Member Enumeration Documentation

Error codes.

Enumerator:
FILE 

Failed to stat file.

FD 

Failed to stat file descriptor.

Mode bits.

Enumerator:
FILE_TYPE_MASK 

Mask for file type bit fields.

FILE_TYPE_SOCKET 

Socket file type.

FILE_TYPE_LINK 

Symbolic link file type.

FILE_TYPE_REGULAR 

Regular file type.

FILE_TYPE_BLOCK 

Block device file type.

FILE_TYPE_DIRECTORY 

Directory file type.

FILE_TYPE_CHARACTER 

Character device file type.

FILE_TYPE_FIFO 

Named pipe (FIFO) file type.

PERM_SETUID 

Set user ID permission.

PERM_SETGIT 

Set group ID permission.

PERM_STICKY 

Sticky permission.

PERM_USER_MASK 

Mask for user permissions.

PERM_USER_READ 

User read permission.

PERM_USER_WRITE 

User write permission.

PERM_USER_EXECUTE 

User execute permission.

PERM_GROUP_MASK 

Mask for group permissions.

PERM_GROUP_READ 

Group read permission.

PERM_GROUP_WRITE 

Group write permission.

PERM_GROUP_EXECUTE 

Group execute permission.

PERM_OTHER_MASK 

Mask for other permissions.

PERM_OTHER_READ 

Other read permission.

PERM_OTHER_WRITE 

Other write permission.

PERM_OTHER_EXECUTE 

Other execute permission.


Constructor & Destructor Documentation

sbuild::stat::stat ( const char *  file)

The constructor.

Parameters:
filethe filename to use.

References errorno, and status.

Referenced by stat().

Here is the caller graph for this function:

sbuild::stat::stat ( std::string const &  file)

The constructor.

Parameters:
filethe filename to use.

References errorno, stat(), and status.

sbuild::stat::stat ( std::string const &  file,
int  fd 
)

The constructor.

Parameters:
filethe filename to use (only used for error reporting).
fdthe file descriptor to use.

References errorno, and status.

sbuild::stat::stat ( int  fd)

The constructor.

Parameters:
fdthe file descriptor to use.

References errorno, and status.


Member Function Documentation

time_t sbuild::stat::atime ( ) const [inline]

Get the file access time.

Returns:
the access time.

References check(), and status.

blkcnt_t sbuild::stat::blocks ( ) const [inline]

Get the file block count.

Returns:
the block count.

References check(), and status.

blksize_t sbuild::stat::blocksize ( ) const [inline]

Get the file block size.

Returns:
the block size.

References check(), and status.

void sbuild::stat::check ( ) const [inline]

Check if the file status was obtained.

An error will be thrown if stat(2) failed to get the file status.

References errorno, FD, fd, FILE, and file.

Referenced by atime(), blocks(), blocksize(), check_mode(), ctime(), device(), sbuild::session::get_shell(), gid(), inode(), links(), mode(), mtime(), size(), and uid().

Here is the caller graph for this function:

bool sbuild::stat::check_mode ( mode_bits  mask) const [inline]

Check if particular mode bits are set.

Parameters:
maskA bitmask containing the bits to check are set.
Returns:
true if all the bits in mask are set, otherwise false.

References check(), and status.

Referenced by is_block(), is_character(), is_directory(), is_fifo(), is_link(), is_regular(), is_socket(), sbuild::chroot_config::load_data(), sbuild::chroot_loopback::setup_lock(), and sbuild::chroot_file::setup_lock().

Here is the caller graph for this function:

time_t sbuild::stat::ctime ( ) const [inline]

Get the file creation time.

Returns:
the creation time.

References check(), and status.

dev_t sbuild::stat::device ( ) const [inline]

Get the device the file resides on.

Returns:
the device.

References check(), and status.

struct ::stat const& sbuild::stat::get_detail ( ) [inline]

Get the struct stat used internally.

This is returned by stat(2).

Returns:
the stat struct.

References status.

gid_t sbuild::stat::gid ( ) const [inline]

Get the group id owning the file.

Returns:
the uid.

References check(), and status.

ino_t sbuild::stat::inode ( ) const [inline]

Get the inode of the file.

Returns:
the inode.

References check(), and status.

bool sbuild::stat::is_block ( ) const [inline]

Is the file a block device?

Returns:
true if a block device, otherwise false.

References check_mode(), FILE_TYPE_BLOCK, and FILE_TYPE_MASK.

Referenced by sbuild::chroot_lvm_snapshot::setup_lock().

Here is the caller graph for this function:

bool sbuild::stat::is_character ( ) const [inline]

Is the file a character device?

Returns:
true if a character device, otherwise false.

References check_mode(), FILE_TYPE_CHARACTER, and FILE_TYPE_MASK.

bool sbuild::stat::is_directory ( ) const [inline]

Is the file a directory?

Returns:
true if a directory, otherwise false.

References check_mode(), FILE_TYPE_DIRECTORY, and FILE_TYPE_MASK.

bool sbuild::stat::is_fifo ( ) const [inline]

Is the file a named pipe (FIFO)?

Returns:
true if a named pipe, otherwise false.

References check_mode(), FILE_TYPE_FIFO, and FILE_TYPE_MASK.

bool sbuild::stat::is_link ( ) const [inline]

Is the file a symbolic link?

Returns:
true if a symbolic link, otherwise false.

References check_mode(), FILE_TYPE_LINK, and FILE_TYPE_MASK.

bool sbuild::stat::is_regular ( ) const [inline]

Is the file a regular file?

Returns:
true if regular, otherwise false.

References check_mode(), FILE_TYPE_MASK, and FILE_TYPE_REGULAR.

Referenced by sbuild::chroot_config::add_config_directory(), sbuild::find_program_in_path(), sbuild::chroot_config::load_data(), sbuild::chroot_loopback::setup_lock(), and sbuild::chroot_file::setup_lock().

Here is the caller graph for this function:

bool sbuild::stat::is_socket ( ) const [inline]

Is the file a socket?

Returns:
true if a socket, otherwise false.

References check_mode(), FILE_TYPE_MASK, and FILE_TYPE_SOCKET.

nlink_t sbuild::stat::links ( ) const [inline]

Get the number of hard links to the file.

Returns:
the hard link count.

References check(), and status.

mode_t sbuild::stat::mode ( ) const [inline]

Get the mode of the file.

Returns:
the mode.

References check(), and status.

time_t sbuild::stat::mtime ( ) const [inline]

Get the file modification time.

Returns:
the modification time.

References check(), and status.

off_t sbuild::stat::size ( ) const [inline]

Get the file size.

Returns:
the file size.

References check(), and status.

uid_t sbuild::stat::uid ( ) const [inline]

Get the user id owning the file.

Returns:
the uid.

References check(), and status.

Referenced by sbuild::chroot_config::load_data(), sbuild::chroot_loopback::setup_lock(), and sbuild::chroot_file::setup_lock().

Here is the caller graph for this function:


The documentation for this class was generated from the following files: