File 0106-Fix-sub-snap-parameter-handling.patch of Package btrfsprogs

From 33be6f1695e8bd450be2e22fbf88b826488186a1 Mon Sep 17 00:00:00 2001
From: Hugo Mills <hugo@carfax.org.uk>
Date: Sun, 30 Oct 2011 20:17:07 +0000
Subject: [PATCH 07/35] Fix sub snap parameter handling

btrfs sub snap uses a local copy of optind, which causes the number of
parameters to be miscounted, preventing it from working properly. This
patch, originally from Arne Jansen <sensille@gmx.net>, fixes it.

Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
---
 btrfs_cmds.c |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/btrfs_cmds.c b/btrfs_cmds.c
index b59e9cb..9252ffa 100644
--- a/btrfs_cmds.c
+++ b/btrfs_cmds.c
@@ -304,7 +304,8 @@ int do_subvol_list(int argc, char **argv)
 	int ret;
 	int print_parent = 0;
 	char *subvol;
-        int optind = 1;
+
+	optind = 1;
 
 	while(1) {
 		int c = getopt(argc, argv, "p");
@@ -312,7 +313,6 @@ int do_subvol_list(int argc, char **argv)
 		switch(c) {
 		case 'p':
 			print_parent = 1;
-			optind++;
 			break;
 		}
 	}
@@ -347,11 +347,13 @@ int do_subvol_list(int argc, char **argv)
 
 int do_clone(int argc, char **argv)
 {
-	char	*subvol, *dst;
-	int	res, fd, fddst, len, e, optind = 0, readonly = 0;
-	char	*newname;
-	char	*dstdir;
-	struct btrfs_ioctl_vol_args_v2	args;
+	char    *subvol, *dst;
+	int     res, fd, fddst, len, e, readonly = 0;
+	char    *newname;
+	char    *dstdir;
+	struct btrfs_ioctl_vol_args_v2  args;
+
+	optind = 1;
 
 	memset(&args, 0, sizeof(args));
 
@@ -362,7 +364,6 @@ int do_clone(int argc, char **argv)
 			break;
 		switch (c) {
 		case 'r':
-			optind++;
 			readonly = 1;
 			break;
 		default:
@@ -372,14 +373,14 @@ int do_clone(int argc, char **argv)
 			return 1;
 		}
 	}
-	if (argc - optind != 3) {
+	if (argc - optind != 2) {
 		fprintf(stderr, "Invalid arguments for subvolume snapshot\n");
 		free(argv);
 		return 1;
 	}
 
-	subvol = argv[optind+1];
-	dst = argv[optind+2];
+	subvol = argv[optind];
+	dst = argv[optind+1];
 
 	res = test_issubvolume(subvol);
 	if(res<0){
-- 
1.7.6.233.gd79bc

openSUSE Build Service is sponsored by