summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp')
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp
index d1622fb66f5..d884be4ab7e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp
@@ -27,16 +27,21 @@
#include "utility.hpp"
#ifdef _WIN32
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <windows.h>
+# include <fcntl.h>
+# include <sys/stat.h>
+# include <windows.h>
+#else
+# include <config.h>
+# ifdef HAVE_UMASK
+# include <sys/stat.h>
+# endif
#endif
#ifdef _MSC_VER
-#include <io.h>
+# include <io.h>
#else
-#include <cstdlib>
-#include <unistd.h>
+# include <cstdlib>
+# include <unistd.h>
#endif
using namespace std;
@@ -60,8 +65,14 @@ bool TemporaryFile::create () {
_path = FileSystem::tmpdir();
#ifndef _WIN32
_path += "stdinXXXXXX";
+#ifdef HAVE_UMASK
+ mode_t mode_mask = umask(S_IXUSR | S_IRWXG | S_IRWXO); // set file permissions to 0600
+#endif
_fd = mkstemp(&_path[0]);
-#else
+#ifdef HAVE_UMASK
+ umask(mode_mask);
+#endif
+#else // !_WIN32
char fname[MAX_PATH];
std::replace(_path.begin(), _path.end(), '/', '\\');
if (GetTempFileName(_path.c_str(), "stdin", 0, fname)) {