smbclient-tar.patch   [plain text]


diff -uNr samba-3.0.0beta2.orig/source/client/client.c samba-3.0.0beta2/source/client/client.c
--- samba-3.0.0beta2.orig/source/client/client.c	2003-07-01 22:36:24.000000000 -0500
+++ samba-3.0.0beta2/source/client/client.c	2003-07-06 15:17:36.000000000 -0500
@@ -2731,6 +2731,7 @@
 	int opt;
 	pstring query_host;
 	BOOL message = False;
+	char* tar_args = NULL;
 	extern char tar_type;
 	pstring term_code;
 	static const char *new_name_resolve_order = NULL;
@@ -2816,7 +2817,7 @@
 			max_protocol = interpret_protocol(poptGetOptArg(pc), max_protocol);
 			break;
 		case 'T':
-			if (!tar_parseargs(argc, argv, poptGetOptArg(pc), optind)) {
+			if (!(tar_args = poptGetOptArg(pc))) {
 				poptPrintUsage(pc, stderr, 0);
 				exit(1);
 			}
@@ -2848,6 +2849,22 @@
 		pstrcpy(cmdline_auth_info.password,poptGetArg(pc));  
 	}
 
+	/* The tar command may take a number of string options; pass
+	   everything we have left to tar_parseargs(). */
+	if (tar_args) {
+		const char **argv2 = poptGetArgs(pc);
+		int argc2 = 0;
+
+		if (argv2) {
+			while (argv2[argc2]) argc2++;
+		}
+		
+		if (!tar_parseargs(argc2, argv2, tar_args, 0)) {
+			poptPrintUsage(pc, stderr, 0);
+			exit(1);
+		}
+	}
+
 	init_names();
 
 	if(new_name_resolve_order)