kldxref: Do not depend on the directory order.

Sort the filenames to get a consistent result between machines of the same
architecture.

Also, sort FTS_D entries after other entries so kldxref -R works properly in
the uncommon case that a directory contains both subdirectories and modules.
Previously, this may have happened to work, depending on the order of files
in the directory.

PR:		bin/182098
Submitted by:	Derek Schrock (original version)
Tested by:	Derek Schrock
Approved by:	re (delphij)
MFC after:	1 week
This commit is contained in:
Jilles Tjoelker 2013-10-04 21:25:55 +00:00
parent c28c09c1f0
commit 6d9cb20bd7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=256060

View File

@ -274,6 +274,16 @@ usage(void)
exit(1);
}
int
compare(const FTSENT *const *a, const FTSENT *const *b)
{
if ((*a)->fts_info == FTS_D && (*b)->fts_info != FTS_D)
return 1;
if ((*a)->fts_info != FTS_D && (*b)->fts_info == FTS_D)
return -1;
return strcmp((*a)->fts_name, (*b)->fts_name);
}
int
main(int argc, char *argv[])
{
@ -315,7 +325,7 @@ main(int argc, char *argv[])
err(1, "%s", argv[0]);
}
ftsp = fts_open(argv, fts_options, 0);
ftsp = fts_open(argv, fts_options, compare);
if (ftsp == NULL)
exit(1);