aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/fs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/os/fs.c')
-rw-r--r--src/nvim/os/fs.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c
index dce95eb3c9..46aea2bf36 100644
--- a/src/nvim/os/fs.c
+++ b/src/nvim/os/fs.c
@@ -3,6 +3,13 @@
#include <assert.h>
+// TODO(hinidu): remove after implementing `os_mkdtemp` on top of libuv
+#ifdef WIN32
+# include <io.h>
+#else
+# include <stdlib.h>
+#endif
+
#include "nvim/os/os.h"
#include "nvim/ascii.h"
#include "nvim/memory.h"
@@ -285,6 +292,21 @@ int os_mkdir(const char *path, int32_t mode)
return result;
}
+/// Create a unique temporary directory.
+/// TODO(hinidu): Implement on top of libuv. ref #850
+///
+/// @param[in,out] template Template of the path to the directory with XXXXXX
+/// which would be replaced by random chars.
+/// @return Pointer to changed `template` for success, `NULL` for failure.
+char *os_mkdtemp(char *template)
+{
+#ifdef WIN32
+ return _mktemp(template) && os_mkdir(template, 0700) == 0 ? template : NULL;
+#else
+ return mkdtemp(template);
+#endif
+}
+
/// Remove a directory.
///
/// @return `0` for success, non-zero for failure.