Permalink
Browse files

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
  • Loading branch information...
1 parent cf59042 commit 64b622034f8aa86dc97f56d045d65e54cdd1f951 @jillest jillest committed Oct 4, 2013
Showing with 11 additions and 1 deletion.
  1. +11 −1 usr.sbin/kldxref/kldxref.c
@@ -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);

0 comments on commit 64b6220

Please sign in to comment.