forked from lix-project/lix
Move createTempFile to libutil
This commit is contained in:
parent
dea18ff999
commit
8ec77614f6
|
@ -461,6 +461,17 @@ Path createTempDir(const Path & tmpRoot, const Path & prefix,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::pair<AutoCloseFD, Path> createTempFile(const Path & prefix)
|
||||||
|
{
|
||||||
|
Path tmpl(getEnv("TMPDIR", "/tmp") + "/" + prefix + ".XXXXXX");
|
||||||
|
// Strictly speaking, this is UB, but who cares...
|
||||||
|
AutoCloseFD fd(mkstemp((char *) tmpl.c_str()));
|
||||||
|
if (!fd)
|
||||||
|
throw SysError("creating temporary file '%s'", tmpl);
|
||||||
|
return {std::move(fd), tmpl};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static Lazy<Path> getHome2([]() {
|
static Lazy<Path> getHome2([]() {
|
||||||
Path homeDir = getEnv("HOME");
|
Path homeDir = getEnv("HOME");
|
||||||
if (homeDir.empty()) {
|
if (homeDir.empty()) {
|
||||||
|
|
|
@ -118,10 +118,6 @@ void deletePath(const Path & path);
|
||||||
|
|
||||||
void deletePath(const Path & path, unsigned long long & bytesFreed);
|
void deletePath(const Path & path, unsigned long long & bytesFreed);
|
||||||
|
|
||||||
/* Create a temporary directory. */
|
|
||||||
Path createTempDir(const Path & tmpRoot = "", const Path & prefix = "nix",
|
|
||||||
bool includePid = true, bool useGlobalCounter = true, mode_t mode = 0755);
|
|
||||||
|
|
||||||
/* Return $HOME or the user's home directory from /etc/passwd. */
|
/* Return $HOME or the user's home directory from /etc/passwd. */
|
||||||
Path getHome();
|
Path getHome();
|
||||||
|
|
||||||
|
@ -199,6 +195,14 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Create a temporary directory. */
|
||||||
|
Path createTempDir(const Path & tmpRoot = "", const Path & prefix = "nix",
|
||||||
|
bool includePid = true, bool useGlobalCounter = true, mode_t mode = 0755);
|
||||||
|
|
||||||
|
/* Create a temporary file, returning a file handle and its path. */
|
||||||
|
std::pair<AutoCloseFD, Path> createTempFile(const Path & prefix = "nix");
|
||||||
|
|
||||||
|
|
||||||
class Pipe
|
class Pipe
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -166,16 +166,6 @@ struct Common : InstallableCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::pair<AutoCloseFD, Path> createTempFile(const Path & prefix = "nix")
|
|
||||||
{
|
|
||||||
Path tmpl(getEnv("TMPDIR", "/tmp") + "/" + prefix + ".XXXXXX");
|
|
||||||
// Strictly speaking, this is UB, but who cares...
|
|
||||||
AutoCloseFD fd(mkstemp((char *) tmpl.c_str()));
|
|
||||||
if (!fd)
|
|
||||||
throw SysError("creating temporary file '%s'", tmpl);
|
|
||||||
return {std::move(fd), tmpl};
|
|
||||||
}
|
|
||||||
|
|
||||||
struct CmdDevShell : Common
|
struct CmdDevShell : Common
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue