22 #include <sbuild/environment.h>
23 #include <sbuild/error.h>
24 #include <sbuild/regex.h>
25 #include <sbuild/types.h>
31 #include <sys/types.h>
107 bool lsb_mode =
true);
137 const std::string& separator);
153 template <
typename S>
161 typename S::size_type last_pos =
162 value.find_first_not_of(separator, 0);
164 typename S::size_type pos = value.find_first_of(separator, last_pos);
166 while (pos !=S::npos || last_pos != S::npos)
169 ret.push_back(value.substr(last_pos, pos - last_pos));
171 last_pos = value.find_first_not_of(separator, pos);
172 pos = value.find_first_of(separator, last_pos);
189 std::vector<std::string>
191 const std::string& separator);
207 template <
typename S>
215 typename S::size_type last_pos = 0;
217 typename S::size_type pos = value.find_first_of(separator, last_pos);
219 while (pos !=S::npos || last_pos != S::npos)
222 if (pos == std::string::npos)
224 ret.push_back(value.substr(last_pos, pos));
227 ret.push_back(value.substr(last_pos, pos - last_pos));
230 last_pos = pos + separator.length();
231 pos = value.find_first_of(separator, last_pos);
248 std::vector<std::string>
250 const std::string& separator);
290 const std::string& path,
291 const std::string& prefix);
325 exec (
const std::string& file,
327 const environment& env);
332 template <
typename T>
338 const std::type_info& info =
typeid(T);
342 char *demangled = abi::__cxa_demangle(info.name(), 0, 0, &status);
442 if (!this->
file.empty())
446 std::ostringstream str;
636 (
static_cast<int>(lhs) | static_cast<int>(rhs));
650 (lhs |
static_cast<int>(rhs));
664 (
static_cast<int>(lhs) | rhs);
678 (
static_cast<int>(lhs) & static_cast<int>(rhs));
692 (lhs &
static_cast<int>(rhs));
706 (
static_cast<int>(lhs) & rhs);
741 return (static_cast<stat::mode_bits>(
status.st_mode) & mask) == mask;
768 passwd (
const char *name);
775 passwd (
const std::string& name);
845 group (
const char *name);
852 group (
const std::string& name);
virtual ~stat()
The destructor.
Definition: util.cc:546
Other execute permission.
Definition: util.h:393
custom_error< error_code > error
Exception type.
Definition: util.h:397
mode_bits
Mode bits.
Definition: util.h:369
dev_t device() const
Get the device the file resides on.
Definition: util.h:466
Named pipe (FIFO) file type.
Definition: util.h:378
time_t mtime() const
Get the file modification time.
Definition: util.h:546
Directory file type.
Definition: util.h:376
std::string unique_identifier()
Get a unique string for use as a session identifier.
Definition: util.cc:215
Failed to stat file descriptor.
Definition: util.h:365
Symbolic link file type.
Definition: util.h:373
bool is_character() const
Is the file a character device?
Definition: util.h:718
Mask for user permissions.
Definition: util.h:382
Debian source builder components.
Definition: ctty.cc:31
bool is_block() const
Is the file a block device?
Definition: util.h:722
std::string getcwd()
Get the current working directory.
Definition: util.cc:200
std::string basename(std::string name)
Strip the directory path from a filename.
Definition: util.cc:80
std::vector< char > buffer_type
A buffer for reentrant passwd functions.
Definition: util.h:751
string_list split_string_strict(const std::string &value, const std::string &separator)
Split a string into a string_list.
Definition: util.cc:286
std::string narrow_string(const std::wstring &str, std::locale locale)
Narrow a string.
Definition: util.cc:361
bool is_valid_sessionname(const std::string &name)
Check if a filename matches the allowed pattern(s).
Definition: util.cc:153
mode_t mode() const
Get the mode of the file.
Definition: util.h:482
void check() const
Check if the file status was obtained.
Definition: util.h:438
User execute permission.
Definition: util.h:385
bool is_regular() const
Is the file a regular file?
Definition: util.h:710
Block device file type.
Definition: util.h:375
Character device file type.
Definition: util.h:377
bool operator!() const
Check if the query result is valid.
Definition: util.cc:766
Sticky permission.
Definition: util.h:381
passwd()
The contructor.
Definition: util.cc:550
blksize_t blocksize() const
Get the file block size.
Definition: util.h:522
bool check_mode(mode_bits mask) const
Check if particular mode bits are set.
Definition: util.h:738
buffer_type buffer
Query result buffer.
Definition: util.h:893
string_list split_string(const std::string &value, const std::string &separator)
Split a string into a string_list.
Definition: util.cc:256
Set user ID permission.
Definition: util.h:379
Get file status.
Definition: util.h:358
nlink_t links() const
Get the number of hard links to the file.
Definition: util.h:490
const struct::stat & get_detail()
Get the struct stat used internally.
Definition: util.h:458
time_t atime() const
Get the file access time.
Definition: util.h:538
bool is_absname(const std::string &name)
Check if a pathname is absolute.
Definition: util.cc:144
Socket file type.
Definition: util.h:372
std::string find_program_in_path(const std::string &program, const std::string &path, const std::string &prefix)
Find a program in the PATH search path.
Definition: util.cc:408
struct::stat status
The stat(2) results.
Definition: util.h:622
bool valid
Object validity.
Definition: util.h:818
std::wstring widen_string(const std::string &str, std::locale locale)
Widen a string.
Definition: util.cc:314
void clear()
Clear search result.
Definition: util.cc:589
Other write permission.
Definition: util.h:392
std::string file
The filename being checked (if specified).
Definition: util.h:616
Mask for group permissions.
Definition: util.h:386
bool is_directory() const
Is the file a directory?
Definition: util.h:714
std::vector< std::string > string_list
A string vector.
Definition: types.h:38
error_code
Error codes.
Definition: util.h:362
group()
The constructor.
Definition: util.cc:662
Custom error.
Definition: custom-error.h:31
std::string string_list_to_string(const string_list &list, const std::string &separator)
Convert a string_list into a string.
Definition: util.cc:238
Group execute permission.
Definition: util.h:389
stat::mode_bits operator|(const stat::mode_bits &lhs, const stat::mode_bits &rhs)
Bitwise-OR of specifed mode bits.
Definition: util.h:632
off_t size() const
Get the file size.
Definition: util.h:514
Group write permission.
Definition: util.h:388
System group database entry.
Definition: util.h:824
uid_t uid() const
Get the user id owning the file.
Definition: util.h:498
Mask for other permissions.
Definition: util.h:390
bool is_socket() const
Is the file a socket?
Definition: util.h:734
stat(const char *file, bool link=false)
The constructor.
Definition: util.cc:487
int fd
The file descriptor being checked (if specified).
Definition: util.h:618
bool is_fifo() const
Is the file a named pipe (FIFO)?
Definition: util.h:726
Group read permission.
Definition: util.h:387
std::string normalname(std::string name)
Normalise a pathname.
Definition: util.cc:130
blkcnt_t blocks() const
Get the file block count.
Definition: util.h:530
void query_gid(gid_t gid)
Query using a GID.
Definition: util.cc:714
bool is_valid_filename(const std::string &name, bool lsb_mode)
Check if a filename matches the allowed pattern(s).
Definition: util.cc:171
void strv_delete(char **strv)
Delete a string vector.
Definition: util.cc:462
std::string dirname(std::string name)
Strip the fileame from a pathname.
Definition: util.cc:105
ino_t inode() const
Get the inode of the file.
Definition: util.h:474
void clear()
Clear search result.
Definition: util.cc:701
buffer_type buffer
Query result buffer.
Definition: util.h:816
std::vector< char > buffer_type
A buffer for reentrant group functions.
Definition: util.h:828
std::string type_name()
Get the type name of a type, demangled if possible.
Definition: util.h:334
System passwd database entry.
Definition: util.h:747
stat::mode_bits operator&(const stat::mode_bits &lhs, const stat::mode_bits &rhs)
Bitwise-AND of specifed mode bits.
Definition: util.h:674
void query_name(const char *name)
Query using a name.
Definition: util.cc:628
Mask for file type bit fields.
Definition: util.h:371
int errorno
The error number set after stat(2) error.
Definition: util.h:620
User write permission.
Definition: util.h:384
Regular file type.
Definition: util.h:374
bool operator!() const
Check if the query result is valid.
Definition: util.cc:657
void query_uid(uid_t uid)
Query using a UID.
Definition: util.cc:605
gid_t gid() const
Get the group id owning the file.
Definition: util.h:506
void query_name(const char *name)
Query using a name.
Definition: util.cc:737
User read permission.
Definition: util.h:383
bool valid
Object validity.
Definition: util.h:895
int exec(const std::string &file, const string_list &command, const environment &env)
execve wrapper.
Definition: util.cc:470
time_t ctime() const
Get the file creation time.
Definition: util.h:554
Set group ID permission.
Definition: util.h:380
bool is_link() const
Is the file a symbolic link?
Definition: util.h:730
Failed to stat file.
Definition: util.h:364
char ** string_list_to_strv(const string_list &str)
Create a string vector from a string_list.
Definition: util.cc:444
Other read permission.
Definition: util.h:391