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 <esaule@bmi.osu.edu>
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2011-07-09 17:48:28 +02:00
parent 585ed53748
commit 34f094312f
3 changed files with 20 additions and 2 deletions

View File

@ -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 *,

View File

@ -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..."));

View File

@ -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.