From 7761bd3bb6c56a375ad8d027c20d020aaa33e2d8 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 11 Apr 2019 13:11:53 +0200 Subject: lib/fileutils: add xreaddir() Remove duplicate code and keep only one implementation in include/fileutils.h. Signed-off-by: Karel Zak --- include/fileutils.h | 15 +++++++++++++++ lib/path.c | 15 --------------- lib/sysfs.c | 15 --------------- misc-utils/lsblk.c | 19 +------------------ 4 files changed, 16 insertions(+), 48 deletions(-) diff --git a/include/fileutils.h b/include/fileutils.h index 8a7e66261..043f2ca44 100644 --- a/include/fileutils.h +++ b/include/fileutils.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "c.h" @@ -57,4 +58,18 @@ extern int get_fd_tabsize(void); extern int mkdir_p(const char *path, mode_t mode); extern char *stripoff_last_component(char *path); +/* This is readdir()-like function, but skips "." and ".." directory entries */ +static inline struct dirent *xreaddir(DIR *dp) +{ + struct dirent *d; + + while ((d = readdir(dp))) { + if (!strcmp(d->d_name, ".") || + !strcmp(d->d_name, "..")) + continue; + break; + } + return d; +} + #endif /* UTIL_LINUX_FILEUTILS */ diff --git a/lib/path.c b/lib/path.c index a9c47f2a1..00152f54c 100644 --- a/lib/path.c +++ b/lib/path.c @@ -910,21 +910,6 @@ int ul_path_writef_u64(struct path_cxt *pc, uint64_t num, const char *path, ...) } -static struct dirent *xreaddir(DIR *dp) -{ - struct dirent *d; - - while ((d = readdir(dp))) { - if (!strcmp(d->d_name, ".") || - !strcmp(d->d_name, "..")) - continue; - - /* blacklist here? */ - break; - } - return d; -} - int ul_path_count_dirents(struct path_cxt *pc, const char *path) { DIR *dir; diff --git a/lib/sysfs.c b/lib/sysfs.c index 6916c2584..9e336adcf 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -200,21 +200,6 @@ char *sysfs_blkdev_get_name(struct path_cxt *pc, char *buf, size_t bufsiz) return buf; } -static struct dirent *xreaddir(DIR *dp) -{ - struct dirent *d; - - while ((d = readdir(dp))) { - if (!strcmp(d->d_name, ".") || - !strcmp(d->d_name, "..")) - continue; - - /* blacklist here? */ - break; - } - return d; -} - int sysfs_blkdev_is_partition_dirent(DIR *dir, struct dirent *d, const char *parent_name) { char path[NAME_MAX + 6 + 1]; diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c index ad5af4721..915a062ba 100644 --- a/misc-utils/lsblk.c +++ b/misc-utils/lsblk.c @@ -49,6 +49,7 @@ #include "sysfs.h" #include "closestream.h" #include "optutils.h" +#include "fileutils.h" #include "lsblk.h" @@ -328,24 +329,6 @@ static int is_dm(const char *name) return strncmp(name, "dm-", 3) ? 0 : 1; } -/* This is readdir()-like function, but skips "." and ".." directory entries */ -static struct dirent *xreaddir(DIR *dp) -{ - struct dirent *d; - - assert(dp); - - while ((d = readdir(dp))) { - if (!strcmp(d->d_name, ".") || - !strcmp(d->d_name, "..")) - continue; - - /* blacklist here? */ - break; - } - return d; -} - /* Returns full pat to the device node (TODO: what about sysfs_blkdev_get_path()) */ static char *get_device_path(struct lsblk_device *dev) { -- cgit v1.2.3-55-g7522