summaryrefslogtreecommitdiff
path: root/src/shared/util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-04-04 03:39:39 +0200
committerLennart Poettering <lennart@poettering.net>2013-04-04 03:39:39 +0200
commit5c0d398dfc4d79df2209515d28cafd9dc129838e (patch)
tree5ee8d20442689e6e50e3747e95ae939ce3815957 /src/shared/util.c
parent2fa4092c2829dd14e50c430ae2f23551d23c6c1d (diff)
util: add a bit of syntactic sugar to run short code fragments with a different umask
Diffstat (limited to 'src/shared/util.c')
-rw-r--r--src/shared/util.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index d861ca9f09..1bffd84d1f 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -5732,12 +5732,12 @@ int search_and_fopen_nulstr(const char *path, const char *mode, const char *sear
int create_tmp_dir(char template[], char** dir_name) {
int r = 0;
char *d, *dt;
- mode_t _cleanup_umask_ u;
assert(dir_name);
- u = umask(0077);
- d = mkdtemp(template);
+ RUN_WITH_UMASK(0077) {
+ d = mkdtemp(template);
+ }
if (!d) {
log_error("Can't create directory %s: %m", template);
return -errno;
@@ -5749,9 +5749,10 @@ int create_tmp_dir(char template[], char** dir_name) {
goto fail3;
}
- umask(0000);
- r = mkdir(dt, 0777);
- if (r) {
+ RUN_WITH_UMASK(0000) {
+ r = mkdir(dt, 0777);
+ }
+ if (r < 0) {
log_error("Can't create directory %s: %m", dt);
r = -errno;
goto fail2;