aboutsummaryrefslogtreecommitdiff
path: root/src/utility/io.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/utility/io.h')
-rw-r--r--src/utility/io.h55
1 files changed, 7 insertions, 48 deletions
diff --git a/src/utility/io.h b/src/utility/io.h
index 4c09b30..1015ddb 100644
--- a/src/utility/io.h
+++ b/src/utility/io.h
@@ -1,67 +1,26 @@
#ifndef CHANGE_SRC_UTILITY_IO_H_
#define CHANGE_SRC_UTILITY_IO_H_
-#include <unistd.h>
-#include <dlfcn.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#include <cstring>
+#include <string>
namespace utility {
class FileDescriptorGuard {
public:
- FileDescriptorGuard(const std::string& path) {
- this->fd_ = open(path.c_str(), O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
-
- if ( !this->fd_ ) {
- this->fd_ = STDERR_FILENO;
- }
- }
-
- ~FileDescriptorGuard() {
- close(this->fd_);
- }
+ FileDescriptorGuard(const std::string& path);
+ ~FileDescriptorGuard();
- operator int() {
- return this->fd_;
- }
+ operator int();
private:
int fd_;
};
-std::string get_file_path(int fd) {
- char proc_link[20];
- char file_name[256];
-
- snprintf(proc_link, sizeof(proc_link), "/proc/self/fd/%d", fd);
- const ssize_t name_size = readlink(proc_link, file_name, sizeof(file_name));
-
- if ( name_size > 0 ) {
- file_name[name_size] = '\0';
-
- return std::string(file_name);
- } else {
- return std::string();
- }
-}
-
-bool is_regular_file(int fd) {
- struct stat fd_stat;
- fstat(fd, &fd_stat);
-
- return S_ISREG(fd_stat.st_mode);
-}
-
-bool is_regular_file(const char* path) {
- struct stat fd_stat;
- lstat(path, &fd_stat);
+std::string get_file_path(int fd);
- return S_ISREG(fd_stat.st_mode);
-}
+bool is_regular_file(int fd);
+bool is_regular_file(const char* path);
}