diff options
author | Leah Neukirchen <leah@vuxu.org> | 2017-10-29 22:08:32 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2017-10-29 22:08:32 +0100 |
commit | 00a1382175020c51c564bde0173c31892a0a0877 (patch) | |
tree | 07341b0c11e9e8dcfd0d3a2417d3b6ddd496a622 /mlist.c | |
parent | 4e7a5c5ab6dcdc18a83ac388cb9c44146c035f8e (diff) | |
download | mblaze-00a1382175020c51c564bde0173c31892a0a0877.tar.gz mblaze-00a1382175020c51c564bde0173c31892a0a0877.tar.xz mblaze-00a1382175020c51c564bde0173c31892a0a0877.zip |
mlist: use a static buffer, clean up control flow
Diffstat (limited to 'mlist.c')
-rw-r--r-- | mlist.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/mlist.c b/mlist.c index ddc23c9..01c0f7a 100644 --- a/mlist.c +++ b/mlist.c @@ -105,15 +105,15 @@ struct linux_dirent64 { char d_name[]; /* Filename (null-terminated) */ }; #define BUF_SIZE 1024000 +char buf[BUF_SIZE]; void listdir(char *dir) { int fd; ssize_t nread; - char buf[BUF_SIZE]; + ssize_t bpos; struct linux_dirent64 *d; - int bpos; fd = open(dir, O_RDONLY | O_DIRECTORY); if (fd == -1) { @@ -131,15 +131,13 @@ listdir(char *dir) if (nread == 0) break; - for (bpos = 0; bpos < nread; ) { + for (bpos = 0; bpos < nread; bpos += d->d_reclen) { d = (struct linux_dirent64 *)(buf + bpos); if (d->d_type != DT_REG && d->d_type != DT_UNKNOWN) - goto next; + continue; if (d->d_name[0] == '.') - goto next; + continue; list(dir, d->d_name); -next: - bpos += d->d_reclen; } } |