linux: use TMPDIR to store icons if defined

TMPDIR is the canonical environment variable in Unix and POSIX that
should be used to specify a temporary directory:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03

Let's use it if is defined to store temporary icon files and default to
'/tmp' if is not defined.
This commit is contained in:
Ruben Pollan
2018-10-15 12:06:34 -05:00
parent d4613247e5
commit 3c9e56c5b7
+9 -2
View File
@@ -48,9 +48,16 @@ void _unlink_temp_file() {
// runs in main thread, should always return FALSE to prevent gtk to execute it again
gboolean do_set_icon(gpointer data) {
GBytes* bytes = (GBytes*)data;
_unlink_temp_file();
strcpy(temp_file_name, "/tmp/systray_XXXXXX");
char *tmpdir = getenv("TMPDIR");
if (NULL == tmpdir) {
tmpdir = "/tmp";
}
strncpy(temp_file_name, tmpdir, PATH_MAX-1);
strncat(temp_file_name, "/systray_XXXXXX", PATH_MAX-1);
temp_file_name[PATH_MAX-1] = '\0';
GBytes* bytes = (GBytes*)data;
int fd = mkstemp(temp_file_name);
if (fd == -1) {
printf("failed to create temp icon file %s: %s\n", temp_file_name, strerror(errno));