diff options
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/util.cc | 10 | ||||
-rw-r--r-- | src/libutil/util.hh | 3 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 27df7a1aaa52..65c3b15397c7 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -271,6 +271,16 @@ Path createTempDir() } +void createDirs(const Path & path) +{ + if (path == "") return; + createDirs(dirOf(path)); + if (!pathExists(path)) + if (mkdir(path.c_str(), 0777) == -1) + throw SysError(format("creating directory `%1%'") % path); +} + + void writeStringToFile(const Path & path, const string & s) { AutoCloseFD fd(open(path.c_str(), diff --git a/src/libutil/util.hh b/src/libutil/util.hh index 2577f79e1b87..beb98fe7c6e9 100644 --- a/src/libutil/util.hh +++ b/src/libutil/util.hh @@ -107,6 +107,9 @@ void makePathReadOnly(const Path & path); /* Create a temporary directory. */ Path createTempDir(); +/* Create a directory and all its parents, if necessary. */ +void createDirs(const Path & path); + /* Create a file and write the given text to it. The file is written in binary mode (i.e., no end-of-line conversions). The path should not already exist. */ |