mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
util: add safe_closedir() similar to safe_fclose()
This commit is contained in:
parent
f6d9c616b6
commit
ed0d40229b
27
coccinelle/safe_closedir.cocci
Normal file
27
coccinelle/safe_closedir.cocci
Normal file
@ -0,0 +1,27 @@
|
||||
@@
|
||||
expression p;
|
||||
@@
|
||||
- if (p) {
|
||||
- closedir(p);
|
||||
- p = NULL;
|
||||
- }
|
||||
+ p = safe_closedir(p);
|
||||
@@
|
||||
expression p;
|
||||
@@
|
||||
- if (p)
|
||||
- closedir(p);
|
||||
- p = NULL;
|
||||
+ p = safe_closedir(p);
|
||||
@@
|
||||
expression p;
|
||||
@@
|
||||
- closedir(p);
|
||||
- p = NULL;
|
||||
+ p = safe_closedir(p);
|
||||
@@
|
||||
expression p;
|
||||
@@
|
||||
- if (p)
|
||||
- closedir(p);
|
||||
+ safe_closedir(p);
|
@ -354,6 +354,17 @@ FILE* safe_fclose(FILE *f) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DIR* safe_closedir(DIR *d) {
|
||||
|
||||
if (d) {
|
||||
PROTECT_ERRNO;
|
||||
|
||||
assert_se(closedir(d) >= 0 || errno != EBADF);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int unlink_noerrno(const char *path) {
|
||||
PROTECT_ERRNO;
|
||||
int r;
|
||||
|
@ -151,6 +151,7 @@ void close_many(const int fds[], unsigned n_fd);
|
||||
|
||||
int fclose_nointr(FILE *f);
|
||||
FILE* safe_fclose(FILE *f);
|
||||
DIR* safe_closedir(DIR *f);
|
||||
|
||||
int parse_size(const char *t, uint64_t base, uint64_t *size);
|
||||
|
||||
|
@ -1071,8 +1071,7 @@ static void manager_build_unit_path_cache(Manager *m) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
closedir(d);
|
||||
d = NULL;
|
||||
d = safe_closedir(d);
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -806,8 +806,7 @@ static int set_dependencies_from_rcnd(const LookupPaths *lp, Hashmap *all_servic
|
||||
if (!path)
|
||||
return -ENOMEM;
|
||||
|
||||
if (d)
|
||||
closedir(d);
|
||||
safe_closedir(d);
|
||||
|
||||
d = opendir(path);
|
||||
if (!d) {
|
||||
|
Loading…
Reference in New Issue
Block a user