Author: jilles
Date: Mon Dec 23 22:38:41 2013
New Revision: 259799
URL: http://svnweb.freebsd.org/changeset/base/259799

Log:
  MFC r256060,r256650: 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

Modified:
  stable/9/usr.sbin/kldxref/kldxref.c
Directory Properties:
  stable/9/usr.sbin/kldxref/   (props changed)

Modified: stable/9/usr.sbin/kldxref/kldxref.c
==============================================================================
--- stable/9/usr.sbin/kldxref/kldxref.c Mon Dec 23 22:37:59 2013        
(r259798)
+++ stable/9/usr.sbin/kldxref/kldxref.c Mon Dec 23 22:38:41 2013        
(r259799)
@@ -274,6 +274,16 @@ usage(void)
        exit(1);
 }
 
+static 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);
 
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to