bpftool: Use only nftw for file tree parsing
authorTony Ambardar <tony.ambardar@gmail.com>
Tue, 21 Jul 2020 02:48:16 +0000 (19:48 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 21 Jul 2020 21:42:56 +0000 (23:42 +0200)
commit9165e1d70fb34ce438e78aad90408cfa86e4c2d0
tree4ee3fd51ccb60e80ab2b36248670abdcf5ef128e
parent8fca4f98af0bf112b485fff02779b84d3a069eac
bpftool: Use only nftw for file tree parsing

The bpftool sources include code to walk file trees, but use multiple
frameworks to do so: nftw and fts. While nftw conforms to POSIX/SUSv3 and
is widely available, fts is not conformant and less common, especially on
non-glibc systems. The inconsistent framework usage hampers maintenance
and portability of bpftool, in particular for embedded systems.

Standardize code usage by rewriting one fts-based function to use nftw and
clean up some related function warnings by extending use of "const char *"
arguments. This change helps in building bpftool against musl for OpenWrt.

Also fix an unsafe call to dirname() by duplicating the string to pass,
since some implementations may directly alter it. The same approach is
used in libbpf.c.

Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Link: https://lore.kernel.org/bpf/20200721024817.13701-1-Tony.Ambardar@gmail.com
tools/bpf/bpftool/common.c
tools/bpf/bpftool/main.h