aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-02-13Add `README.md`Adrian Kummerlaender
2016-02-13Add filesystem exception handling where requiredAdrian Kummerlaender
2016-02-13Reimplement locking in `Logger::append`Adrian Kummerlaender
2016-02-11Delay tracking activationAdrian Kummerlaender
Introduce global static `enabled` variable used to signal the interposed functions to either start tracking or perform plain forwarding without any additional logic. This is required as e.g. `nvim` crashed when wrapped in `libChangeLog` because it called interposed functions during library initialization.
2016-02-11Extract file descriptor filter logicAdrian Kummerlaender
2016-02-11Extract child emplacement into thread safe memberAdrian Kummerlaender
2016-02-10Replace macro argument expansion with more idiomatic recursive templateAdrian Kummerlaender
2016-02-07Increase log message generation readabilityAdrian Kummerlaender
2016-02-06Prevent deleted files from being displayed using `diff`Adrian Kummerlaender
2016-02-06Track `writev` system callAdrian Kummerlaender
2016-02-06Preserve pre-change file content as tracking stateAdrian Kummerlaender
Relying on `diff` for storing the pre-change content did not work out as it opens the file descriptors to soon and only reads the first block of pre-change file content until the remaining content is actually required. This obviously led to problems when tracking actually changing files.
2015-12-27Introduce thread synchronization for tracking init and loggingAdrian Kummerlaender
This obviously leads to synchronizing syscalls that would otherwise happen in parallel. Luckily the goal of this library is to monitor file changes performed by single, user facing applications and as such it doesn't matter if some operations are slightly slower.
2015-12-27Explicitly set log file permissionsAdrian Kummerlaender
This ensures that the log file is actually accessable - there was a problem where e.g. `change rm test` did not create the log file correctly.
2015-12-24Evaluate all `change` arguments sans the first oneAdrian Kummerlaender
i.e. enable writing `change vim test` instead of `change "vim test"`.
2015-12-24Add installation rules to `CMakeLists.txt`Adrian Kummerlaender
2015-12-24Implement basic library usage helperAdrian Kummerlaender
`change` calls the given command wrapped in `libChangeLog` and prints the recorded change log afterwards.
2015-12-24Prevent the libraries own log writes from being trackedAdrian Kummerlaender
2015-12-24Add path label for the file provided via standard inputAdrian Kummerlaender
2015-12-24Use full path for change trackingAdrian Kummerlaender
Prevents the same file being tracked multiple times due to relative input paths.
2015-12-24Add support for changing the `diff` command via an environment variableAdrian Kummerlaender
While the file arguments remain fixed the actual `diff` application and its output style can be changed using the `CHANGE_LOG_DIFF_CMD` environment variable.
2015-12-24Remove unnecessary headersAdrian Kummerlaender
2015-12-24Remove `exit` logging and interpositionAdrian Kummerlaender
The library is designed to track the file changes performed by a single process, i.e. there is no need for explicitly stating when the process has exited. Furthermore this reduces the set of function interpositions to the ones handled by the `get_actual_function` method template.
2015-12-24Match namespace and directory structureAdrian Kummerlaender
2015-12-23Implement file change tracking using `diff`Adrian Kummerlaender
The newly introduced `ChangeTracker` class is now keeping track of all tracked file in addition to spawning and managing a corresponding `diff` instance that enables printing pretty _patch-style_ change summaries to the logging target. This commit introduces `boost-process` and `diff` as dependencies of this library.
2015-12-21Add file mode check in `unlink`Adrian Kummerlaender
2015-11-30Extract actual function acquisitionAdrian Kummerlaender
The pointers to the actual function implementations are now fetched inside the `actual` namespace declared in the `actual_function.h` header. Fixed source of _noreturn_ related warning during compilation by adding the appropriate flag. Sadly this means that we can not use `std::function` in this context as it doesn't seem to carry these _c-like_ flags.
2015-11-14Fix rename tracking and enable logfile creationAdrian Kummerlaender
2015-10-18Implement logging of writable `mmap` creationsAdrian Kummerlaender
2015-10-18Add cmake build instructionsAdrian Kummerlaender
2015-10-18Prevent external changes to `FileDescriptorGuard`'s fd memberAdrian Kummerlaender
2015-10-18Move io and logging functionality into separate namespacesAdrian Kummerlaender
2015-10-18Implement support for sending logs to an arbitrary fileAdrian Kummerlaender
The `CHANGE_LOG_TARGET` environment variable enables passing the path of an arbitrary target file to the preloaded library. This may be used to e.g. print the log to a separate `cat` instance and is necessary for logging change events without altering the output of the wrapped process.
2015-10-17Implement basic logging of write, rename, rmdir, unlinkAdrian Kummerlaender
2015-10-10Implement basic `read` and `write` interpositionAdrian Kummerlaender
The goal is to implement a shared library to be loaded using `LD_PRELOAD` that tracks all file changes performed by a process. This information is required to enable general purpose change logging inside a shell session. i.e. I want to be able to display diffs and before- / after-hashes of all changes performed by every single command without requiring every changed file to be known prior to execution.