Don't leak /etc/passwd in test results
Don't pollute test dir
Add AtomicFile
Remove tempfile on failure
Add AtomicFile::abort()
Rename AtomicFile::close() to commit()
AtomicFile: Force using open()
AtomicFile: Allow passing in a mode to set on commit
AtomicFile: Deleting or going out of scope without commit will abort
These really should be inlined
AtomiFile: Make open() return is_open() to avoid calling it
AtomiFile: Fix absolute path handling
Merge branch 'AtomicFile' into maint

* AtomicFile:
  AtomiFile: Fix absolute path handling
  AtomiFile: Make open() return is_open() to avoid calling it
  These really should be inlined
  AtomicFile: Deleting or going out of scope without commit will abort
  AtomicFile: Allow passing in a mode to set on commit
  AtomicFile: Force using open()
  Rename AtomicFile::close() to commit()
  Add AtomicFile::abort()
  Remove tempfile on failure
  Add AtomicFile
  Don't pollute test dir
  Don't leak /etc/passwd in test results