summaryrefslogtreecommitdiff
path: root/e2fsprogs
diff options
context:
space:
mode:
Diffstat (limited to 'e2fsprogs')
-rw-r--r--e2fsprogs/chattr.c2
-rw-r--r--e2fsprogs/e2fs_lib.c21
-rw-r--r--e2fsprogs/e2fs_lib.h2
-rw-r--r--e2fsprogs/lsattr.c5
4 files changed, 9 insertions, 21 deletions
diff --git a/e2fsprogs/chattr.c b/e2fsprogs/chattr.c
index b41919b..ab52cb0 100644
--- a/e2fsprogs/chattr.c
+++ b/e2fsprogs/chattr.c
@@ -67,7 +67,7 @@ static int decode_arg(const char *arg, struct globals *gp)
static void change_attributes(const char *name, struct globals *gp);
-static int chattr_dir_proc(const char *dir_name, struct dirent *de, void *gp)
+static int FAST_FUNC chattr_dir_proc(const char *dir_name, struct dirent *de, void *gp)
{
char *path = concat_subpath_file(dir_name, de->d_name);
/* path is NULL if de->d_name is "." or "..", else... */
diff --git a/e2fsprogs/e2fs_lib.c b/e2fsprogs/e2fs_lib.c
index 3e8d956..70ae1f4 100644
--- a/e2fsprogs/e2fs_lib.c
+++ b/e2fsprogs/e2fs_lib.c
@@ -28,33 +28,20 @@ static void close_silently(int fd)
/* Iterate a function on each entry of a directory */
int iterate_on_dir(const char *dir_name,
- int (*func)(const char *, struct dirent *, void *),
- void * private)
+ int FAST_FUNC (*func)(const char *, struct dirent *, void *),
+ void *private)
{
DIR *dir;
- struct dirent *de, *dep;
- int max_len, len;
-
- max_len = PATH_MAX + sizeof(struct dirent);
- de = xmalloc(max_len+1);
- memset(de, 0, max_len+1);
+ struct dirent *de;
dir = opendir(dir_name);
if (dir == NULL) {
- free(de);
return -1;
}
- while ((dep = readdir(dir))) {
- len = sizeof(struct dirent);
- if (len < dep->d_reclen)
- len = dep->d_reclen;
- if (len > max_len)
- len = max_len;
- memcpy(de, dep, len);
+ while ((de = readdir(dir)) != NULL) {
func(dir_name, de, private);
}
closedir(dir);
- free(de);
return 0;
}
diff --git a/e2fsprogs/e2fs_lib.h b/e2fsprogs/e2fs_lib.h
index 25b26d3..3905ee7 100644
--- a/e2fsprogs/e2fs_lib.h
+++ b/e2fsprogs/e2fs_lib.h
@@ -13,7 +13,7 @@ PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
/* Iterate a function on each entry of a directory */
int iterate_on_dir(const char *dir_name,
- int (*func)(const char *, struct dirent *, void *),
+ int FAST_FUNC (*func)(const char *, struct dirent *, void *),
void *private);
/* Get/set a file version on an ext2 file system */
diff --git a/e2fsprogs/lsattr.c b/e2fsprogs/lsattr.c
index 23a54b7..7d475a9 100644
--- a/e2fsprogs/lsattr.c
+++ b/e2fsprogs/lsattr.c
@@ -57,8 +57,9 @@ static void list_attributes(const char *name)
bb_perror_msg("reading %s", name);
}
-static int lsattr_dir_proc(const char *dir_name, struct dirent *de,
- void *private UNUSED_PARAM)
+static int FAST_FUNC lsattr_dir_proc(const char *dir_name,
+ struct dirent *de,
+ void *private UNUSED_PARAM)
{
struct stat st;
char *path;