[PATCH] btrfs-progs: restore: use long option for the path regex

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Current way of specifying the path to match is not very comfortable, but
the feature itself is very useful. Let's save the short option -m for a
more user friendly syntax and keep a long option --path-regex with the
current syntax.

CC: Peter Stuge <peter@xxxxxxxx>
Signed-off-by: David Sterba <dsterba@xxxxxxx>
---
 cmds-restore.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/cmds-restore.c b/cmds-restore.c
index 52852bc..8a4f75a 100644
--- a/cmds-restore.c
+++ b/cmds-restore.c
@@ -32,6 +32,7 @@
 #include <lzo/lzo1x.h>
 #include <zlib.h>
 #include <regex.h>
+#include <getopt.h>
 
 #include "ctree.h"
 #include "disk-io.h"
@@ -924,6 +925,11 @@ out:
 	return ret;
 }
 
+static struct option long_options[] = {
+	{ "path-regex", 1, NULL, 256},
+	{ 0, 0, 0, 0}
+};
+
 const char * const cmd_restore_usage[] = {
 	"btrfs restore [options] <device>",
 	"Try to restore files from a damaged filesystem (unmounted)",
@@ -936,6 +942,10 @@ const char * const cmd_restore_usage[] = {
 	"-f <offset>     filesystem location",
 	"-u <block>      super mirror",
 	"-d              find dir",
+	"--path-regex <regex>",
+	"                restore only filenames matching regex,",
+	"                you have to use following syntax (possibly quoted):",
+	"                ^/(|home(|/username(|/Desktop(|/.*))))$",
 	NULL
 };
 
@@ -950,6 +960,7 @@ int cmd_restore(int argc, char **argv)
 	int len;
 	int ret;
 	int opt;
+	int option_index = 0;
 	int super_mirror = 0;
 	int find_dir = 0;
 	int list_roots = 0;
@@ -958,7 +969,8 @@ int cmd_restore(int argc, char **argv)
 	regex_t match_reg, *mreg = NULL;
 	char reg_err[256];
 
-	while ((opt = getopt(argc, argv, "sviot:u:df:r:lcm:")) != -1) {
+	while ((opt = getopt_long(argc, argv, "sviot:u:df:r:lc", long_options,
+					&option_index)) != -1) {
 
 		switch (opt) {
 			case 's':
@@ -1016,7 +1028,8 @@ int cmd_restore(int argc, char **argv)
 			case 'c':
 				match_cflags |= REG_ICASE;
 				break;
-			case 'm':
+			/* long option without single letter alternative */
+			case 256:
 				match_regstr = optarg;
 				break;
 			default:
-- 
1.8.2

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux