mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-01 22:58:47 -04:00
have make_random_dir respect $TMPDIR
with the attached patch, make_random_dir first tries to use $TMPDIR, then $TMP finally defaulting to "/tmp" Signed-off-by: Lennart Poettering <lennart@poettering.net>
This commit is contained in:
parent
f5c301d9f4
commit
564ef2b71f
1 changed files with 19 additions and 7 deletions
|
|
@ -1315,31 +1315,43 @@ static char* make_random_dir(mode_t m) {
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
"0123456789";
|
"0123456789";
|
||||||
|
|
||||||
char fn[24] = "/tmp/pulse-";
|
const char *tmpdir;
|
||||||
|
char *fn;
|
||||||
|
size_t pathlen;
|
||||||
|
|
||||||
fn[sizeof(fn)-1] = 0;
|
if (!(tmpdir = getenv("TMPDIR")))
|
||||||
|
if (!(tmpdir = getenv("TMP")))
|
||||||
|
if (!(tmpdir = getenv("TEMP")))
|
||||||
|
tmpdir = getenv("TEMPDIR");
|
||||||
|
|
||||||
|
if (!tmpdir || !pa_is_path_absolute(tmpdir))
|
||||||
|
tmpdir = "/tmp";
|
||||||
|
|
||||||
|
fn = pa_sprintf_malloc("%s/pulse-XXXXXXXXXXXX", tmpdir);
|
||||||
|
pathlen = strlen(fn);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
unsigned i;
|
size_t i;
|
||||||
int r;
|
int r;
|
||||||
mode_t u;
|
mode_t u;
|
||||||
int saved_errno;
|
int saved_errno;
|
||||||
|
|
||||||
for (i = 11; i < sizeof(fn)-1; i++)
|
for (i = pathlen - 12; i < pathlen; i++)
|
||||||
fn[i] = table[rand() % (sizeof(table)-1)];
|
fn[i] = table[rand() % (sizeof(table)-1)];
|
||||||
|
|
||||||
u = umask((~m) & 0777);
|
u = umask((~m) & 0777);
|
||||||
r = mkdir(fn, m);
|
r = mkdir(fn, m);
|
||||||
|
|
||||||
saved_errno = errno;
|
saved_errno = errno;
|
||||||
umask(u);
|
umask(u);
|
||||||
|
errno = saved_errno;
|
||||||
|
|
||||||
if (r >= 0)
|
if (r >= 0)
|
||||||
return pa_xstrdup(fn);
|
return fn;
|
||||||
|
|
||||||
errno = saved_errno;
|
|
||||||
|
|
||||||
if (errno != EEXIST) {
|
if (errno != EEXIST) {
|
||||||
pa_log_error("Failed to create random directory %s: %s", fn, pa_cstrerror(errno));
|
pa_log_error("Failed to create random directory %s: %s", fn, pa_cstrerror(errno));
|
||||||
|
pa_xfree(fn);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue