22 #include <sbuild/sbuild-environment.h> 23 #include <sbuild/sbuild-error.h> 24 #include <sbuild/sbuild-regex.h> 25 #include <sbuild/sbuild-types.h> 31 #include <sys/types.h> 102 bool lsb_mode =
true);
134 std::string
const& separator);
150 template <
typename S>
158 typename S::size_type last_pos =
159 value.find_first_not_of(separator, 0);
161 typename S::size_type pos = value.find_first_of(separator, last_pos);
163 while (pos !=S::npos || last_pos != S::npos)
166 ret.push_back(value.substr(last_pos, pos - last_pos));
168 last_pos = value.find_first_not_of(separator, pos);
169 pos = value.find_first_of(separator, last_pos);
186 std::vector<std::string>
188 std::string
const& separator);
204 template <
typename S>
212 typename S::size_type last_pos = 0;
214 typename S::size_type pos = value.find_first_of(separator, last_pos);
216 while (pos !=S::npos || last_pos != S::npos)
219 if (pos == std::string::npos)
221 ret.push_back(value.substr(last_pos, pos));
224 ret.push_back(value.substr(last_pos, pos - last_pos));
227 last_pos = pos + separator.length();
228 pos = value.find_first_of(separator, last_pos);
245 std::vector<std::string>
247 std::string
const& separator);
287 std::string
const& path,
288 std::string
const& prefix);
322 exec (std::string
const& file,
375 stat (
const char *file,
383 stat (std::string
const& file,
392 stat (std::string
const& file,
413 if (!this->file.empty())
417 std::ostringstream str;
607 (
static_cast<int>(lhs) | static_cast<int>(rhs));
621 (lhs |
static_cast<int>(rhs));
635 (
static_cast<int>(lhs) | rhs);
649 (
static_cast<int>(lhs) & static_cast<int>(rhs));
663 (lhs &
static_cast<int>(rhs));
677 (
static_cast<int>(lhs) & rhs);
712 return (static_cast<stat::mode_bits>(
status.st_mode) & mask) == mask;
739 passwd (
const char *name);
746 passwd (std::string
const& name);
761 query_uid (uid_t
uid);
769 query_name (
const char *name);
777 query_name (std::string
const& name);
816 group (
const char *name);
823 group (std::string
const& name);
838 query_gid (gid_t
gid);
846 query_name (
const char *name);
854 query_name (std::string
const& name);
virtual ~stat()
The destructor.
Definition: sbuild-util.cc:566
Other execute permission.
Definition: sbuild-util.h:364
custom_error< error_code > error
Exception type.
Definition: sbuild-util.h:368
mode_bits
Mode bits.
Definition: sbuild-util.h:340
dev_t device() const
Get the device the file resides on.
Definition: sbuild-util.h:437
Named pipe (FIFO) file type.
Definition: sbuild-util.h:349
time_t mtime() const
Get the file modification time.
Definition: sbuild-util.h:517
Directory file type.
Definition: sbuild-util.h:347
std::wstring widen_string(std::string const &str, std::locale locale)
Widen a string.
Definition: sbuild-util.cc:332
std::string unique_identifier()
Get a unique string for use as a session identifier.
Definition: sbuild-util.cc:235
Failed to stat file descriptor.
Definition: sbuild-util.h:336
Symbolic link file type.
Definition: sbuild-util.h:344
bool is_character() const
Is the file a character device?
Definition: sbuild-util.h:689
struct::stat const & get_detail()
Get the struct stat used internally.
Definition: sbuild-util.h:429
Mask for user permissions.
Definition: sbuild-util.h:353
Debian source builder components.
Definition: sbuild-auth-null.h:24
int exec(std::string const &file, string_list const &command, environment const &env)
execve wrapper.
Definition: sbuild-util.cc:490
bool is_block() const
Is the file a block device?
Definition: sbuild-util.h:693
std::string getcwd()
Get the current working directory.
Definition: sbuild-util.cc:220
std::string basename(std::string name)
Strip the directory path from a filename.
Definition: sbuild-util.cc:100
std::vector< char > buffer_type
A buffer for reentrant passwd functions.
Definition: sbuild-util.h:722
mode_t mode() const
Get the mode of the file.
Definition: sbuild-util.h:453
chroot::session_flags operator&(chroot::session_flags const &lhs, chroot::session_flags const &rhs)
Bitwise-AND of specifed session properties.
Definition: sbuild-chroot.h:860
void check() const
Check if the file status was obtained.
Definition: sbuild-util.h:409
User execute permission.
Definition: sbuild-util.h:356
bool is_regular() const
Is the file a regular file?
Definition: sbuild-util.h:681
Block device file type.
Definition: sbuild-util.h:346
Character device file type.
Definition: sbuild-util.h:348
Container of environment variables.
Definition: sbuild-environment.h:38
Sticky permission.
Definition: sbuild-util.h:352
blksize_t blocksize() const
Get the file block size.
Definition: sbuild-util.h:493
bool check_mode(mode_bits mask) const
Check if particular mode bits are set.
Definition: sbuild-util.h:709
buffer_type buffer
Query result buffer.
Definition: sbuild-util.h:864
Set user ID permission.
Definition: sbuild-util.h:350
Get file status.
Definition: sbuild-util.h:329
nlink_t links() const
Get the number of hard links to the file.
Definition: sbuild-util.h:461
std::vector< S > split_string(S const &value, S const &separator)
Split a string into a string_list.
Definition: sbuild-util.h:152
time_t atime() const
Get the file access time.
Definition: sbuild-util.h:509
Socket file type.
Definition: sbuild-util.h:343
struct::stat status
The stat(2) results.
Definition: sbuild-util.h:593
chroot::session_flags operator|(chroot::session_flags const &lhs, chroot::session_flags const &rhs)
Bitwise-OR of specifed session properties.
Definition: sbuild-chroot.h:846
bool valid
Object validity.
Definition: sbuild-util.h:789
Other write permission.
Definition: sbuild-util.h:363
std::string file
The filename being checked (if specified).
Definition: sbuild-util.h:587
Mask for group permissions.
Definition: sbuild-util.h:357
bool is_valid_filename(std::string const &name, bool lsb_mode=true)
Check if a filename matches the allowed pattern(s).
Definition: sbuild-util.cc:191
bool is_directory() const
Is the file a directory?
Definition: sbuild-util.h:685
std::vector< std::string > string_list
A string vector.
Definition: sbuild-types.h:38
error_code
Error codes.
Definition: sbuild-util.h:333
Custom error.
Definition: sbuild-custom-error.h:32
Group execute permission.
Definition: sbuild-util.h:360
off_t size() const
Get the file size.
Definition: sbuild-util.h:485
bool is_absname(std::string const &name)
Check if a pathname is absolute.
Definition: sbuild-util.cc:164
Group write permission.
Definition: sbuild-util.h:359
System group database entry.
Definition: sbuild-util.h:795
uid_t uid() const
Get the user id owning the file.
Definition: sbuild-util.h:469
Mask for other permissions.
Definition: sbuild-util.h:361
bool is_socket() const
Is the file a socket?
Definition: sbuild-util.h:705
stat(const char *file, bool link=false)
The constructor.
Definition: sbuild-util.cc:507
int fd
The file descriptor being checked (if specified).
Definition: sbuild-util.h:589
bool is_fifo() const
Is the file a named pipe (FIFO)?
Definition: sbuild-util.h:697
Group read permission.
Definition: sbuild-util.h:358
std::string normalname(std::string name)
Normalise a pathname.
Definition: sbuild-util.cc:150
blkcnt_t blocks() const
Get the file block count.
Definition: sbuild-util.h:501
void strv_delete(char **strv)
Delete a string vector.
Definition: sbuild-util.cc:482
std::string dirname(std::string name)
Strip the fileame from a pathname.
Definition: sbuild-util.cc:125
bool is_valid_sessionname(std::string const &name)
Check if a filename matches the allowed pattern(s).
Definition: sbuild-util.cc:173
ino_t inode() const
Get the inode of the file.
Definition: sbuild-util.h:445
std::vector< S > split_string_strict(S const &value, S const &separator)
Split a string into a string_list.
Definition: sbuild-util.h:206
std::string narrow_string(std::wstring const &str, std::locale locale)
Narrow a string.
Definition: sbuild-util.cc:379
buffer_type buffer
Query result buffer.
Definition: sbuild-util.h:787
std::vector< char > buffer_type
A buffer for reentrant group functions.
Definition: sbuild-util.h:799
System passwd database entry.
Definition: sbuild-util.h:718
char ** string_list_to_strv(string_list const &str)
Create a string vector from a string_list.
Definition: sbuild-util.cc:464
Mask for file type bit fields.
Definition: sbuild-util.h:342
int errorno
The error number set after stat(2) error.
Definition: sbuild-util.h:591
std::string string_list_to_string(string_list const &list, std::string const &separator)
Convert a string_list into a string.
Definition: sbuild-util.cc:256
User write permission.
Definition: sbuild-util.h:355
Regular file type.
Definition: sbuild-util.h:345
std::string find_program_in_path(std::string const &program, std::string const &path, std::string const &prefix)
Find a program in the PATH search path.
Definition: sbuild-util.cc:426
gid_t gid() const
Get the group id owning the file.
Definition: sbuild-util.h:477
User read permission.
Definition: sbuild-util.h:354
bool valid
Object validity.
Definition: sbuild-util.h:866
time_t ctime() const
Get the file creation time.
Definition: sbuild-util.h:525
Set group ID permission.
Definition: sbuild-util.h:351
bool is_link() const
Is the file a symbolic link?
Definition: sbuild-util.h:701
Failed to stat file.
Definition: sbuild-util.h:335
Other read permission.
Definition: sbuild-util.h:362