From 34f094312fc2e9dce7621449e07f25c748039f97 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 9 Jul 2011 17:48:28 +0200 Subject: Honor "TMPDIR" environment variable Replace all hardcoded paths referring to "/tmp" with a new function that honors the "TMPDIR" environment variable as well as P_tmpdir and uses "/tmp" as a fallback. Thanks-to: Erik Saule Signed-off-by: Lukas Fleischer --- src/calcurse.h | 1 + src/io.c | 6 ++++-- src/utils.c | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/calcurse.h b/src/calcurse.h index 6642ae9..e3822ef 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -854,6 +854,7 @@ long now (void); char *nowstr (void); long mystrtol (const char *); void print_bool_option_incolor (WINDOW *, unsigned, int, int); +const char *get_tempdir (void); char *new_tempfile (const char *, int); void erase_note (char **, enum eraseflg); int parse_date (char *, enum datefmt, int *, int *, int *, diff --git a/src/io.c b/src/io.c index f82de50..74a8089 100644 --- a/src/io.c +++ b/src/io.c @@ -220,7 +220,8 @@ get_export_stream (enum export_type type) (void)snprintf (stream_name, BUFSIZ, "%s/calcurse.%s", home, file_ext[type]); else - (void)snprintf (stream_name, BUFSIZ, "/tmp/calcurse.%s", file_ext[type]); + (void)snprintf (stream_name, BUFSIZ, "%s/calcurse.%s", get_tempdir (), + file_ext[type]); while (stream == NULL) { @@ -2857,10 +2858,11 @@ io_import_data (enum import_type type, struct conf *conf, char *stream_name) struct io_file * io_log_init (void) { - const char *logprefix = "/tmp/calcurse_log."; + char logprefix[BUFSIZ]; char *logname; struct io_file *log; + snprintf (logprefix, BUFSIZ, "%s/calcurse_log.", get_tempdir ()); logname = new_tempfile (logprefix, NOTESIZ); RETVAL_IF (logname == NULL, 0, _("Warning: could not create temporary log file, Aborting...")); diff --git a/src/utils.c b/src/utils.c index c861195..b165111 100644 --- a/src/utils.c +++ b/src/utils.c @@ -726,6 +726,21 @@ print_bool_option_incolor (WINDOW *win, unsigned option, int pos_y, int pos_x) wins_doupdate (); } + +/* + * Get the name of the default directory for temporary files. + */ +const char * +get_tempdir (void) +{ + if (getenv ("TMPDIR")) + return getenv ("TMPDIR"); + else if (P_tmpdir) + return P_tmpdir; + else + return "/tmp"; +} + /* * Create a new unique file, and return a newly allocated string which contains * the random part of the file name. -- cgit v1.2.3