diff options
author | Michael Vogt <mvo@debian.org> | 2014-03-27 15:20:49 +0100 |
---|---|---|
committer | Michael Vogt <mvo@debian.org> | 2014-03-27 15:20:49 +0100 |
commit | 355a960dd8bfbe2606be95d38aafd6bc0675d76f (patch) | |
tree | 67c58c736cee0f96f65b3de5e1070e1e1af92672 /cmdline | |
parent | fa211e2d3b0305cfdd184cdba9750259f6d9c98e (diff) | |
parent | 62f1ee1cc7a5e16ca0cbfbee3c00cefab1892f87 (diff) |
Merge branch 'debian/sid' into feature/more-fancy-progress
Diffstat (limited to 'cmdline')
-rw-r--r-- | cmdline/apt-extracttemplates.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc index a82623444..e4428e051 100644 --- a/cmdline/apt-extracttemplates.cc +++ b/cmdline/apt-extracttemplates.cc @@ -37,6 +37,7 @@ #include <stdio.h> #include <string.h> #include <unistd.h> +#include <stdlib.h> #include "apt-extracttemplates.h" @@ -239,23 +240,25 @@ static int ShowHelp(void) static string WriteFile(const char *package, const char *prefix, const char *data) { char fn[512]; - static int i; std::string tempdir = GetTempDir(); - snprintf(fn, sizeof(fn), "%s/%s.%s.%u%d", + snprintf(fn, sizeof(fn), "%s/%s.%s.XXXXXX", _config->Find("APT::ExtractTemplates::TempDir", tempdir.c_str()).c_str(), - package, prefix, getpid(), i++); + package, prefix); FileFd f; if (data == NULL) data = ""; - - if (!f.Open(fn, FileFd::WriteTemp, 0600)) + int fd = mkstemp(fn); + if (fd < 0) { + _error->Errno("ofstream::ofstream",_("Unable to mkstemp %s"),fn); + return string(); + } + if (!f.OpenDescriptor(fd, FileFd::WriteOnly, FileFd::None, true)) { _error->Errno("ofstream::ofstream",_("Unable to write to %s"),fn); return string(); } - f.Write(data, strlen(data)); f.Close(); return fn; |