[Reproducible-commits] [disorderfs] 01/01: Add --sort-dirents=yes|no option for forcing deterministic.

Chris Lamb chris at chris-lamb.co.uk
Tue Aug 23 12:14:57 UTC 2016


This is an automated email from the git hooks/post-receive script.

lamby pushed a commit to branch master
in repository disorderfs.

commit 2aae3259c22c9c992db09f9d450d4bae51a59936
Author: Chris Lamb <lamby at debian.org>
Date:   Tue Aug 23 13:13:23 2016 +0100

    Add --sort-dirents=yes|no option for forcing deterministic.
    
    Signed-off-by: Chris Lamb <lamby at debian.org>
---
 disorderfs.1.txt | 6 ++++++
 disorderfs.cpp   | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/disorderfs.1.txt b/disorderfs.1.txt
index a38e41c..807dc87 100644
--- a/disorderfs.1.txt
+++ b/disorderfs.1.txt
@@ -51,6 +51,12 @@ Options specific to *disorderfs*:
 *--reverse-dirents=yes|no*::
   Whether or not to return directory entries in reverse order (default: yes).
 
+*--sort-dirents=yes|no*::
+  Whether or not to return directory entries in sorted order (default: no).
+  +
+  Note that you need to explictly override the default *--reverse-dirents=no*
+  to get results in expected order.
+
 *--pad-blocks='N'*::
   Add 'N' to the st_blocks field in struct stat(2) (default: 1).
 
diff --git a/disorderfs.cpp b/disorderfs.cpp
index 6272897..75d38db 100644
--- a/disorderfs.cpp
+++ b/disorderfs.cpp
@@ -53,6 +53,7 @@ namespace {
 		int			multi_user{0};
 		int			shuffle_dirents{0};
 		int			reverse_dirents{1};
+		int			sort_dirents{0};
 		int			pad_blocks{1};
 		int			share_locks{0};
 	};
@@ -189,6 +190,8 @@ namespace {
 		DISORDERFS_OPT("--shuffle-dirents=yes", shuffle_dirents, true),
 		DISORDERFS_OPT("--reverse-dirents=no", reverse_dirents, false),
 		DISORDERFS_OPT("--reverse-dirents=yes", reverse_dirents, true),
+		DISORDERFS_OPT("--sort-dirents=no", sort_dirents, false),
+		DISORDERFS_OPT("--sort-dirents=yes", sort_dirents, true),
 		DISORDERFS_OPT("--pad-blocks=%i", pad_blocks, 0),
 		DISORDERFS_OPT("--share-locks=no", share_locks, false),
 		DISORDERFS_OPT("--share-locks=yes", share_locks, true),
@@ -214,6 +217,7 @@ namespace {
 			std::clog << "    --multi-user=yes|no    allow multiple users to access overlay (requires root; default: no)" << std::endl;
 			std::clog << "    --shuffle-dirents=yes|no  randomly shuffle dirents? (default: no)" << std::endl;
 			std::clog << "    --reverse-dirents=yes|no  reverse dirent order? (default: yes)" << std::endl;
+			std::clog << "    --sort-dirents=yes|no  sort dirents deterministically instead (default: no)" << std::endl;
 			std::clog << "    --pad-blocks=N         add N to st_blocks (default: 1)" << std::endl;
 			std::clog << "    --share-locks=yes|no   share locks with underlying filesystem (BUGGY; default: no)" << std::endl;
 			std::clog << std::endl;
@@ -406,6 +410,9 @@ int	main (int argc, char** argv)
 		while ((res = readdir_r(d, &dirent_storage, &dirent_p)) == 0 && dirent_p) {
 			dirents->emplace_back(dirent_p->d_name);
 		}
+		if (config.sort_dirents) {
+			std::sort(dirents->begin(), dirents->end());
+		}
 		if (config.reverse_dirents) {
 			std::reverse(dirents->begin(), dirents->end());
 		}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/disorderfs.git



More information about the Reproducible-commits mailing list