diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/change_log.cc | 29 | ||||
-rw-r--r-- | src/tracking/change_tracker.cc (renamed from src/change_tracker.cc) | 10 | ||||
-rw-r--r-- | src/tracking/change_tracker.h (renamed from src/change_tracker.h) | 12 | ||||
-rw-r--r-- | src/utility/io.h (renamed from src/io.h) | 20 | ||||
-rw-r--r-- | src/utility/logger.h (renamed from src/utility.h) | 10 |
6 files changed, 41 insertions, 42 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2be4520..c137942 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ add_library( ChangeLog SHARED src/change_log.cc - src/change_tracker.cc + src/tracking/change_tracker.cc ) target_link_libraries( diff --git a/src/change_log.cc b/src/change_log.cc index e128383..5d16449 100644 --- a/src/change_log.cc +++ b/src/change_log.cc @@ -5,19 +5,20 @@ #include <algorithm> #include <functional> -#include "io.h" -#include "utility.h" #include "actual_function.h" -#include "change_tracker.h" -static std::unique_ptr<io::FileDescriptorGuard> fd_guard; -static std::unique_ptr<utility::Logger> logger; -static std::unique_ptr<utility::ChangeTracker> tracker; +#include "utility/io.h" +#include "utility/logger.h" +#include "tracking/change_tracker.h" + +static std::unique_ptr<utility::FileDescriptorGuard> fd_guard; +static std::unique_ptr<utility::Logger> logger; +static std::unique_ptr<tracking::ChangeTracker> tracker; void init() __attribute__ ((constructor)); void init() { if ( getenv("CHANGE_LOG_TARGET") != NULL ) { - fd_guard = std::make_unique<io::FileDescriptorGuard>( + fd_guard = std::make_unique<utility::FileDescriptorGuard>( getenv("CHANGE_LOG_TARGET") ); logger = std::make_unique<utility::Logger>(*fd_guard); @@ -25,7 +26,7 @@ void init() { logger = std::make_unique<utility::Logger>(STDERR_FILENO); } - tracker = std::make_unique<utility::ChangeTracker>(logger.get()); + tracker = std::make_unique<tracking::ChangeTracker>(logger.get()); } void exit(int status) { @@ -40,8 +41,8 @@ void exit(int status) { } ssize_t write(int fd, const void* buffer, size_t count) { - if ( io::is_regular_file(fd) ) { - const std::string file_name{ io::get_file_name(fd) }; + if ( utility::is_regular_file(fd) ) { + const std::string file_name{ utility::get_file_name(fd) }; if ( !tracker->is_tracked(file_name) ) { tracker->track(file_name); @@ -68,7 +69,7 @@ int rmdir(const char* path) { } int unlink(const char* path) { - if ( io::is_regular_file(path) ) { + if ( utility::is_regular_file(path) ) { logger->append("rm '" + std::string(path) + "'"); } @@ -79,15 +80,15 @@ int unlinkat(int dirfd, const char* path, int flags) { if ( dirfd == AT_FDCWD ) { logger->append("removed '" + std::string(path) + "'"); } else { - logger->append("removed '" + io::get_file_name(dirfd) + path + "'"); + logger->append("removed '" + utility::get_file_name(dirfd) + path + "'"); } return actual::unlinkat(dirfd, path, flags); } void* mmap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) { - if ( ( prot & PROT_WRITE ) && io::is_regular_file(fd) ) { - const std::string file_name{ io::get_file_name(fd) }; + if ( ( prot & PROT_WRITE ) && utility::is_regular_file(fd) ) { + const std::string file_name{ utility::get_file_name(fd) }; if ( !tracker->is_tracked(file_name) ) { tracker->track(file_name); diff --git a/src/change_tracker.cc b/src/tracking/change_tracker.cc index 1373a8a..913604e 100644 --- a/src/change_tracker.cc +++ b/src/tracking/change_tracker.cc @@ -1,7 +1,5 @@ #include "change_tracker.h" -#include <sstream> - #include <boost/optional.hpp> #include <boost/filesystem/fstream.hpp> @@ -12,7 +10,7 @@ constexpr unsigned int EMPLACE_SUCCESS = 1; constexpr unsigned int FILE_NAME = 0; constexpr unsigned int DIFF_PROCESS = 1; -boost::process::context createContext() { +boost::process::context getDefaultContext() { boost::process::context context; context.environment = boost::process::self::get_environment(); @@ -24,7 +22,7 @@ boost::process::context createContext() { } -namespace utility { +namespace tracking { ChangeTracker::ChangeTracker(utility::Logger* logger): logger_(logger), @@ -54,7 +52,7 @@ bool ChangeTracker::is_tracked(const std::string& file_path) const { // is structured in the following sequence: // // diff -p - $file_path -// +// // This means that reading the final file contents is delegated to // `diff` while the initial file contents are read by this method // and written to `diff`'s standard input. @@ -72,7 +70,7 @@ bool ChangeTracker::track(const std::string& file_path) { auto result = this->children_.emplace( file_path, std::make_unique<boost::process::child>( - boost::process::launch_shell("diff -p - " + file_name, createContext()) + boost::process::launch_shell("diff -p - " + file_path, getDefaultContext()) ) ); diff --git a/src/change_tracker.h b/src/tracking/change_tracker.h index e8ffa32..54af4f7 100644 --- a/src/change_tracker.h +++ b/src/tracking/change_tracker.h @@ -1,13 +1,13 @@ -#ifndef CHANGE_SRC_CHANGE_TRACKER_H_ -#define CHANGE_SRC_CHANGE_TRACKER_H_ - -#include "utility.h" +#ifndef CHANGE_SRC_TRACKING_CHANGE_TRACKER_H_ +#define CHANGE_SRC_TRACKING_CHANGE_TRACKER_H_ #include <unordered_map> #include <boost/process.hpp> -namespace utility { +#include "utility/logger.h" + +namespace tracking { class ChangeTracker { public: @@ -29,4 +29,4 @@ class ChangeTracker { } -#endif // CHANGE_SRC_CHANGE_TRACKER_H_ +#endif // CHANGE_SRC_TRACKING_CHANGE_TRACKER_H_ diff --git a/src/io.h b/src/utility/io.h index 69caa5e..ed1f542 100644 --- a/src/io.h +++ b/src/utility/io.h @@ -1,5 +1,5 @@ -#ifndef CHANGE_SRC_IO_H_ -#define CHANGE_SRC_IO_H_ +#ifndef CHANGE_SRC_UTILITY_IO_H_ +#define CHANGE_SRC_UTILITY_IO_H_ #include <unistd.h> #include <dlfcn.h> @@ -8,28 +8,28 @@ #include <cstring> -namespace io { +namespace utility { class FileDescriptorGuard { public: FileDescriptorGuard(const std::string& path) { - this->fd = open(path.c_str(), O_CREAT | O_WRONLY | O_APPEND); + this->fd_ = open(path.c_str(), O_CREAT | O_WRONLY | O_APPEND); - if ( !this->fd ) { - this->fd = STDERR_FILENO; + if ( !this->fd_ ) { + this->fd_ = STDERR_FILENO; } } ~FileDescriptorGuard() { - close(this->fd); + close(this->fd_); } operator int() { - return this->fd; + return this->fd_; } private: - int fd; + int fd_; }; @@ -65,4 +65,4 @@ bool is_regular_file(const char* path) { } -#endif // CHANGE_SRC_IO_H_ +#endif // CHANGE_SRC_UTILITY_IO_H_ diff --git a/src/utility.h b/src/utility/logger.h index 1dc44ed..475f33d 100644 --- a/src/utility.h +++ b/src/utility/logger.h @@ -1,5 +1,5 @@ -#ifndef CHANGE_SRC_UTILITY_H_ -#define CHANGE_SRC_UTILITY_H_ +#ifndef CHANGE_SRC_LOGGER_H_ +#define CHANGE_SRC_LOGGER_H_ #include <ext/stdio_filebuf.h> @@ -13,7 +13,7 @@ class Logger { public: Logger(const int target_fd): buffer_(target_fd, std::ios::out), - stream_(&this->buffer) { } + stream_(&this->buffer_) { } void append(const std::string& msg) { this->stream_ << msg << std::endl; @@ -27,7 +27,7 @@ class Logger { // flag. // void forward(boost::process::pistream& stream) { - this->stream << std::string( + this->stream_ << std::string( (std::istreambuf_iterator<char>(stream)), (std::istreambuf_iterator<char>()) ); @@ -41,4 +41,4 @@ class Logger { } -#endif // CHANGE_SRC_UTILITY_H_ +#endif // CHANGE_SRC_LOGGER_H_ |