X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fbasic%2Ffileio.c;fp=src%2Fbasic%2Ffileio.c;h=e377a9e00a7e60f18346dbd8c3e01ad28ac7a117;hp=df432eaee4283f9c182fa01301e48cffc869fb13;hb=e4b8356a39a6afcc0b1439397f8c3790332def12;hpb=16235f049fb67ba1756aeaab04eff1f1b5b1cf97 diff --git a/src/basic/fileio.c b/src/basic/fileio.c index df432eaee..e377a9e00 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -1166,8 +1166,8 @@ int tempfn_random_child(const char *p, const char *extra, char **ret) { char *t, *x; uint64_t u; unsigned i; + int r; - assert(p); assert(ret); /* Turns this: @@ -1176,6 +1176,12 @@ int tempfn_random_child(const char *p, const char *extra, char **ret) { * /foo/bar/waldo/.#3c2b6219aa75d7d0 */ + if (!p) { + r = tmp_dir(&p); + if (r < 0) + return r; + } + if (!extra) extra = ""; @@ -1262,10 +1268,13 @@ int fputs_with_space(FILE *f, const char *s, const char *separator, bool *space) int open_tmpfile_unlinkable(const char *directory, int flags) { char *p; - int fd; + int fd, r; - if (!directory) - directory = "/tmp"; + if (!directory) { + r = tmp_dir(&directory); + if (r < 0) + return r; + } /* Returns an unlinked temporary file that cannot be linked into the file system anymore */