diff --git a/libbpf b/libbpf index 8f8369223c327743277a8e4fcbf87c5d9d6f3c88..c91f1175e2273825767160fdc54448c19c97ba13 160000 --- a/libbpf +++ b/libbpf @@ -1 +1 @@ -Subproject commit 8f8369223c327743277a8e4fcbf87c5d9d6f3c88 +Subproject commit c91f1175e2273825767160fdc54448c19c97ba13 diff --git a/src/task_find.bpf.c b/src/task_find.bpf.c index 5f84a91552dd5ac9f71d34ce50feeb1e5cb6a7ca..676717e1778fced3c50ef2d6d4ff281424123490 100644 --- a/src/task_find.bpf.c +++ b/src/task_find.bpf.c @@ -28,7 +28,7 @@ void *u_newline; void *u_iterdents64_buf; size_t root_namelen; -static long iter_dir(size_t namelen) { +static long iter_dir(size_t namelen, bool print) { long err = 0; if (namelen + 1 > PATHLEN) { @@ -66,8 +66,10 @@ static long iter_dir(size_t namelen) { int dfd = openat(*parent_dfd, name_user, O_RDONLY | O_DIRECTORY, 0777); if (dfd < 0) { bpf_printk("file, depth = %d", depth); - write(STDOUT_FILENO, name_user, namelen); - write(STDOUT_FILENO, u_newline, 1); + if (print) { + write(STDOUT_FILENO, name_user, namelen); + write(STDOUT_FILENO, u_newline, 1); + } /* Not a directory, no need to iterate. */ goto end; } @@ -118,7 +120,7 @@ int entry(void *ctx) { long err = 0; - err = iter_dir(root_namelen); + err = iter_dir(root_namelen, false); if (err) { goto end; } @@ -129,12 +131,14 @@ end: SEC("iterdents64") int process_dirent(struct bpf_dirent64 *d) { int err = 0; + bool match = false; /* Skip "." and "..": */ if (!(d->name + 2 > (char *) d->name_end)) { if (d->name[0] == '.' && d->namelen == 1) { goto end; } + match = d->name[0] == 'a'; } if (!(d->name + 3 > (char *) d->name_end)) { @@ -143,7 +147,7 @@ int process_dirent(struct bpf_dirent64 *d) { } } - err = iter_dir(d->namelen); + err = iter_dir(d->namelen, match); if (err) { goto end; } diff --git a/src/task_lib.bpf.h b/src/task_lib.bpf.h index e4e17843716b9656d8e890780a9e95ace3edc7e5..84c7af24abbf97a2d84d04e71932f144611f6f33 100644 --- a/src/task_lib.bpf.h +++ b/src/task_lib.bpf.h @@ -11,6 +11,7 @@ #define NULL ((void *) 0) +typedef int bool; #define false ((bool) 0) #define true ((bool) 1)