Browse Source

lib/path: add ul_path_next_dirent()

Signed-off-by: Karel Zak <kzak@redhat.com>
pull/1487/head
Karel Zak 11 months ago
parent
commit
ae838009d2
  1. 2
      include/path.h
  2. 21
      lib/path.c

2
include/path.h

@ -128,6 +128,8 @@ int ul_path_count_dirents(struct path_cxt *pc, const char *path);
int ul_path_countf_dirents(struct path_cxt *pc, const char *path, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
int ul_path_next_dirent(struct path_cxt *pc, DIR **sub, const char *dirname, struct dirent **d);
FILE *ul_prefix_fopen(const char *prefix, const char *path, const char *mode);

21
lib/path.c

@ -968,6 +968,27 @@ int ul_path_countf_dirents(struct path_cxt *pc, const char *path, ...)
return !p ? -errno : ul_path_count_dirents(pc, p);
}
/* first call (when @sub is NULL) opens the directory, last call closes the diretory */
int ul_path_next_dirent(struct path_cxt *pc, DIR **sub, const char *dirname, struct dirent **d)
{
if (!pc || !sub || !d)
return -EINVAL;
if (!*sub) {
*sub = ul_path_opendir(pc, dirname);
if (!*sub)
return -errno;
}
*d = xreaddir(*sub);
if (*d)
return 0;
closedir(*sub);
*sub = NULL;
return 1;
}
/*
* Like fopen() but, @path is always prefixed by @prefix. This function is
* useful in case when ul_path_* API is overkill.

Loading…
Cancel
Save