lib/fileutils: add xreaddir()
Remove duplicate code and keep only one implementation in include/fileutils.h. Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
146900d411
commit
7761bd3bb6
|
@ -4,6 +4,7 @@
|
|||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#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 */
|
||||
|
|
15
lib/path.c
15
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;
|
||||
|
|
15
lib/sysfs.c
15
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];
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue