diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-03-12 15:43:17 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-03-12 15:43:17 +0200 |
commit | cf6b3e34b59ad120111e0c1ead779bbb3a70c38d (patch) | |
tree | 424e9def98c65d9080e72a69064334c6716fb82b /build/filesystem | |
parent | 5925c11a1fe8b2e02b790dd40b031ae005d5b68f (diff) |
Implement clean operation
Diffstat (limited to 'build/filesystem')
-rw-r--r-- | build/filesystem | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/build/filesystem b/build/filesystem new file mode 100644 index 0000000..8fa76c2 --- /dev/null +++ b/build/filesystem @@ -0,0 +1,40 @@ +// file : build/filesystem -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD_FILESYSTEM +#define BUILD_FILESYSTEM + +#include <sys/types.h> // mode_t + +#include <build/path> + +namespace build +{ + // Note that you should probably use the default mode 0777 and let + // the umask mechanism adjust it to the user's preferences. Errors + // are reported by throwing std::system_error. + // + void + mkdir (const path&, mode_t = 0777); + + // Try to remove the directory returning not_exist if it does not + // exist and not_empty if it is not empty. All other errors are + // reported by throwing std::system_error. + // + enum class rmdir_status {success, not_exist, not_empty}; + + rmdir_status + try_rmdir (const path&); + + // Try to remove the file (or symbolic link) returning not_exist if + // it does not exist. All other errors are reported by throwing + // std::system_error. + // + enum class rmfile_status {success, not_exist}; + + rmfile_status + try_rmfile (const path&); +} + +#endif // BUILD_FILESYSTEM |