kldxref: do not error out if specified path is not directory, for -d mode

kldxref(8) is the only tool that can dump FreeBSD kernel module
metadata, with the -d option. But the command line requirements for that
are inconvenient, since parser requires that argv[1] is a directory
containing whole set of modules to generate xref file.

For -d, allow argv[0] to be a regular file, now it is possible to do e.g.
   $ kldxref -d /boot/kernel/ufs.ko
to see only ufs.ko metadata.

Reviewed by:	emaste
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D30368
This commit is contained in:
Konstantin Belousov 2021-05-20 22:12:11 +03:00
parent 5d698386fb
commit d7751071bc

View File

@ -716,7 +716,7 @@ main(int argc, char *argv[])
if (stat(argv[0], &sb) != 0)
err(1, "%s", argv[0]);
if ((sb.st_mode & S_IFDIR) == 0) {
if ((sb.st_mode & S_IFDIR) == 0 && !dflag) {
errno = ENOTDIR;
err(1, "%s", argv[0]);
}