aboutsummaryrefslogtreecommitdiff
path: root/vis-single.c
diff options
context:
space:
mode:
Diffstat (limited to 'vis-single.c')
-rw-r--r--vis-single.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/vis-single.c b/vis-single.c
index 11af10f..1a1e2c3 100644
--- a/vis-single.c
+++ b/vis-single.c
@@ -19,8 +19,12 @@
#include "vis-single-payload.inc"
+#ifndef VIS_TMP_DIR
+#define VIS_TMP_DIR "/tmp"
+#endif
+
#ifndef VIS_TMP
-#define VIS_TMP "/tmp/.vis-single-XXXXXX"
+#define VIS_TMP ".vis-single-XXXXXX"
#endif
#ifndef VIS_TERMINFO
@@ -94,8 +98,14 @@ static int unlink_cb(const char *path, const struct stat *sb, int typeflag, stru
int main(int argc, char **argv) {
int rc = EXIT_FAILURE;
- char exe[256], path[PATH_MAX];
- char tmp_dirname[] = VIS_TMP;
+ char exe[256], path[PATH_MAX], tmp_dirname[PATH_MAX];
+
+ char *tmpdir = getenv("TMPDIR");
+ if (snprintf(tmp_dirname, sizeof(tmp_dirname), "%s/%s",
+ tmpdir ? tmpdir : VIS_TMP_DIR, VIS_TMP) < 0) {
+ perror("snprintf");
+ return rc;
+ }
if (!mkdtemp(tmp_dirname)) {
perror("mkdtemp");