aboutsummaryrefslogtreecommitdiff
path: root/src/utility
AgeCommit message (Collapse)Author
2016-02-20Interpose `open` library functionAdrian Kummerlaender
`open` is not as side effect free as I had imagined - i.e. if the flag `O_TRUNC` is passed it truncates the file contents alongside opening the file descriptor. In practice this is done by _emacs_ prior to writing the new file content and as such needs to be intercepted so we can start tracking the file before it is changed. Interposing `open` required some changes to make the library work without including `fcntl.h`. This header not only defines some of the flags we require to check if a library call actually is able to change files but also defines the `open` library function. While implementing this change I noticed that the function interpositions implemented in C++ actually need to be declared as `external "C"` so their names do not get wrangled during compilation. I suspect that this was previously implicitly done for e.g. `mmap` and `write` by the included C standard library headers. However this did not work for `open` which is why all function interpositions are now explicitly declared external. End result: _emacs_ file changes are now tracked correctly.
2016-02-19Rename some functions to match overall naming schemeAdrian Kummerlaender
2016-02-17Move io utilities into separate compilation unitAdrian Kummerlaender
2016-02-14Reduce `ChangeTracker` public _interface_ to `track`Adrian Kummerlaender
2016-02-13Reimplement locking in `Logger::append`Adrian Kummerlaender
2016-02-10Replace macro argument expansion with more idiomatic recursive templateAdrian Kummerlaender
2016-02-07Increase log message generation readabilityAdrian Kummerlaender
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-24Match namespace and directory structureAdrian Kummerlaender