chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
277d0c5
)
tree-wide: replace all readdir cycles with FOREACH_DIRENT{,_ALL} (#4853)
author
Reverend Homer
<mk.43.ecko@gmail.com>
Fri, 9 Dec 2016 09:04:30 +0000
(12:04 +0300)
committer
Sven Eden
<yamakuzure@gmx.net>
Mon, 17 Jul 2017 15:58:35 +0000
(17:58 +0200)
src/basic/fd-util.c
patch
|
blob
|
history
src/basic/fs-util.c
patch
|
blob
|
history
src/basic/rm-rf.c
patch
|
blob
|
history
src/basic/util.c
patch
|
blob
|
history
src/libelogind/sd-login/sd-login.c
patch
|
blob
|
history
src/login/logind-dbus.c
patch
|
blob
|
history
diff --git
a/src/basic/fd-util.c
b/src/basic/fd-util.c
index 3eb3324b57bc2ae53ecbca7e4baf65be3c3f50ab..13b025f4407ea6d8fe3df72273d2562b78bb42ae 100644
(file)
--- a/
src/basic/fd-util.c
+++ b/
src/basic/fd-util.c
@@
-234,12
+234,9
@@
int close_all_fds(const int except[], unsigned n_except) {
return r;
}
return r;
}
-
while ((de = readdir(d))
) {
+
FOREACH_DIRENT(de, d, return -errno
) {
int fd = -1;
int fd = -1;
- if (hidden_or_backup_file(de->d_name))
- continue;
-
if (safe_atoi(de->d_name, &fd) < 0)
/* Let's better ignore this, just in case */
continue;
if (safe_atoi(de->d_name, &fd) < 0)
/* Let's better ignore this, just in case */
continue;
diff --git
a/src/basic/fs-util.c
b/src/basic/fs-util.c
index 471708bbea8f85ba939d4b313befea2cc2cbc87c..05f10c86f827a9c9f86aa73794f8f014dddf6138 100644
(file)
--- a/
src/basic/fs-util.c
+++ b/
src/basic/fs-util.c
@@
-17,7
+17,6
@@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <dirent.h>
#include <errno.h>
#include <stddef.h>
#include <stdio.h>
#include <errno.h>
#include <stddef.h>
#include <stdio.h>
@@
-450,6
+449,7
@@
int mkfifo_atomic(const char *path, mode_t mode) {
int get_files_in_directory(const char *path, char ***list) {
_cleanup_closedir_ DIR *d = NULL;
int get_files_in_directory(const char *path, char ***list) {
_cleanup_closedir_ DIR *d = NULL;
+ struct dirent *de;
size_t bufsize = 0, n = 0;
_cleanup_strv_free_ char **l = NULL;
size_t bufsize = 0, n = 0;
_cleanup_strv_free_ char **l = NULL;
@@
-463,16
+463,7
@@
int get_files_in_directory(const char *path, char ***list) {
if (!d)
return -errno;
if (!d)
return -errno;
- for (;;) {
- struct dirent *de;
-
- errno = 0;
- de = readdir(d);
- if (!de && errno > 0)
- return -errno;
- if (!de)
- break;
-
+ FOREACH_DIRENT_ALL(de, d, return -errno) {
dirent_ensure_type(d, de);
if (!dirent_is_file(de))
dirent_ensure_type(d, de);
if (!dirent_is_file(de))
@@
-813,10
+804,8
@@
int chase_symlinks(const char *path, const char *original_root, unsigned flags,
return -ENOMEM;
}
return -ENOMEM;
}
- if (ret) {
- *ret = done;
- done = NULL;
- }
+ *ret = done;
+ done = NULL;
return exists;
}
return exists;
}
diff --git
a/src/basic/rm-rf.c
b/src/basic/rm-rf.c
index 78de895d35d7188aebd699f632ceaa088d735fbb..a9035919471e1d241b6b61c07288486c448c1792 100644
(file)
--- a/
src/basic/rm-rf.c
+++ b/
src/basic/rm-rf.c
@@
-17,7
+17,6
@@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <stdbool.h>
#include <errno.h>
#include <fcntl.h>
#include <stdbool.h>
@@
-43,6
+42,7
@@
static bool is_physical_fs(const struct statfs *sfs) {
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
_cleanup_closedir_ DIR *d = NULL;
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
_cleanup_closedir_ DIR *d = NULL;
+ struct dirent *de;
int ret = 0, r;
struct statfs sfs;
int ret = 0, r;
struct statfs sfs;
@@
-78,19
+78,10
@@
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
return errno == ENOENT ? 0 : -errno;
}
return errno == ENOENT ? 0 : -errno;
}
- for (;;) {
- struct dirent *de;
+ FOREACH_DIRENT_ALL(de, d, return -errno) {
bool is_dir;
struct stat st;
bool is_dir;
struct stat st;
- errno = 0;
- de = readdir(d);
- if (!de) {
- if (errno > 0 && ret == 0)
- ret = -errno;
- return ret;
- }
-
if (streq(de->d_name, ".") || streq(de->d_name, ".."))
continue;
if (streq(de->d_name, ".") || streq(de->d_name, ".."))
continue;
@@
-180,6
+171,7
@@
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
}
}
}
}
}
}
+ return ret;
}
int rm_rf(const char *path, RemoveFlags flags) {
}
int rm_rf(const char *path, RemoveFlags flags) {
diff --git
a/src/basic/util.c
b/src/basic/util.c
index f8ecc929be2f597d7476061b34c6ff419fec1eea..9741f04aae0e71cf5f0da453e84409a216b74f57 100644
(file)
--- a/
src/basic/util.c
+++ b/
src/basic/util.c
@@
-498,7
+498,7
@@
void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
u = nmemb;
while (l < u) {
idx = (l + u) / 2;
u = nmemb;
while (l < u) {
idx = (l + u) / 2;
- p = (
const char *) base + idx * size
;
+ p = (
void *)(((const char *) base) + (idx * size))
;
comparison = compar(key, p, arg);
if (comparison < 0)
u = idx;
comparison = compar(key, p, arg);
if (comparison < 0)
u = idx;
@@
-513,28
+513,17
@@
void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
int on_ac_power(void) {
bool found_offline = false, found_online = false;
_cleanup_closedir_ DIR *d = NULL;
int on_ac_power(void) {
bool found_offline = false, found_online = false;
_cleanup_closedir_ DIR *d = NULL;
+ struct dirent *de;
d = opendir("/sys/class/power_supply");
if (!d)
return errno == ENOENT ? true : -errno;
d = opendir("/sys/class/power_supply");
if (!d)
return errno == ENOENT ? true : -errno;
- for (;;) {
- struct dirent *de;
+ FOREACH_DIRENT(de, d, return -errno) {
_cleanup_close_ int fd = -1, device = -1;
char contents[6];
ssize_t n;
_cleanup_close_ int fd = -1, device = -1;
char contents[6];
ssize_t n;
- errno = 0;
- de = readdir(d);
- if (!de && errno > 0)
- return -errno;
-
- if (!de)
- break;
-
- if (hidden_or_backup_file(de->d_name))
- continue;
-
device = openat(dirfd(d), de->d_name, O_DIRECTORY|O_RDONLY|O_CLOEXEC|O_NOCTTY);
if (device < 0) {
if (errno == ENOENT || errno == ENOTDIR)
device = openat(dirfd(d), de->d_name, O_DIRECTORY|O_RDONLY|O_CLOEXEC|O_NOCTTY);
if (device < 0) {
if (errno == ENOENT || errno == ENOTDIR)
diff --git
a/src/libelogind/sd-login/sd-login.c
b/src/libelogind/sd-login/sd-login.c
index 9d096841430be92e5af2ba785e47fd504a1d2c6e..e3cc3628f50741151d029e731fd8e9f63ab88354 100644
(file)
--- a/
src/libelogind/sd-login/sd-login.c
+++ b/
src/libelogind/sd-login/sd-login.c
@@
-845,6
+845,7
@@
_public_ int sd_get_sessions(char ***sessions) {
_public_ int sd_get_uids(uid_t **users) {
_cleanup_closedir_ DIR *d;
_public_ int sd_get_uids(uid_t **users) {
_cleanup_closedir_ DIR *d;
+ struct dirent *de;
int r = 0;
unsigned n = 0;
_cleanup_free_ uid_t *l = NULL;
int r = 0;
unsigned n = 0;
_cleanup_free_ uid_t *l = NULL;
@@
-853,19
+854,10
@@
_public_ int sd_get_uids(uid_t **users) {
if (!d)
return -errno;
if (!d)
return -errno;
- for (;;) {
- struct dirent *de;
+ FOREACH_DIRENT_ALL(de, d, return -errno) {
int k;
uid_t uid;
int k;
uid_t uid;
- errno = 0;
- de = readdir(d);
- if (!de && errno > 0)
- return -errno;
-
- if (!de)
- break;
-
dirent_ensure_type(d, de);
if (!dirent_is_file(de))
dirent_ensure_type(d, de);
if (!dirent_is_file(de))
diff --git
a/src/login/logind-dbus.c
b/src/login/logind-dbus.c
index a605666429ce2fb00880a32a2be03abe1c717df7..d1eabdbf63a350623366ebfd6b413347c00d3463 100644
(file)
--- a/
src/login/logind-dbus.c
+++ b/
src/login/logind-dbus.c
@@
-1301,8
+1301,7
@@
static int flush_devices(Manager *m) {
} else {
struct dirent *de;
} else {
struct dirent *de;
- while ((de = readdir(d))) {
-
+ FOREACH_DIRENT_ALL(de, d, break) {
if (!dirent_is_file(de))
continue;
if (!dirent_is_file(de))
continue;