diff options
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -539,7 +539,7 @@ int prune_empty_directories(const char *path, const char *root) { if (rmdir(rpath) < 0) { - if (errno == ENOTEMPTY) + if (errno == ENOTEMPTY || errno == EBUSY) break; if (errno != ENOENT) { @@ -750,8 +750,8 @@ ssize_t loop_read(int fd, void *d, size_t l) { return p-d; } -ssize_t loop_write(int fd, void *d, size_t l) { - void *p = d; +ssize_t loop_write(int fd, const void *d, size_t l) { + const void *p = d; while (l > 0) { ssize_t r; @@ -790,3 +790,16 @@ off_t filesize2(const char *p) { return st.st_size; } + +#define TMPDIR_ENV "TMPDIR" + +void set_tmp_dir(const char *s) { +#ifdef HAVE_SETENV + setenv(TMPDIR_ENV, s, 1); +#else + char *tmp = malloc(strlen(s) + sizeof(TMPDIR_ENV) + 1); + assert(tmp); + sprintf(tmp, "%s=%s", TMPDIR_ENV, s); + putenv(tmp); +#endif +} |