clitar.c, client.c: add flag to know if there's a tar operation to do.
authorAurélien Aptel <aurelien.aptel@gmail.com>
Tue, 9 Jul 2013 13:10:44 +0000 (15:10 +0200)
committerAndreas Schneider <asn@samba.org>
Wed, 19 Feb 2014 17:22:26 +0000 (18:22 +0100)
- remove tar_type global.

Signed-off-by: Aurélien Aptel <aurelien.aptel@gmail.com>
[ddiss@samba.org: rebase against lp_cli_maxprotocol() changes]
Reviewed-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/client/client.c
source3/client/clitar.c
source3/client/clitar_proto.h

index b85da0856ab4c3373934303ae00da6799ee8791f..b74ec73370e44080fa8c559f4842b4210dc53055 100644 (file)
@@ -47,7 +47,6 @@
 extern int do_smb_browse(void); /* mDNS browsing */
 
 extern bool override_logfile;
-extern char tar_type;
 
 static int port = 0;
 static char *service;
@@ -5379,7 +5378,7 @@ static int do_message_op(struct user_auth_info *a_info)
   main program
 ****************************************************************************/
 
- int main(int argc,char *argv[])
+int main(int argc,char *argv[])
 {
        const char **const_argv = discard_const_p(const char *, argv);
        char *base_directory = NULL;
@@ -5392,6 +5391,8 @@ static int do_message_op(struct user_auth_info *a_info)
        int rc = 0;
        bool tar_opt = false;
        bool service_opt = false;
+    extern struct tar tar_ctx;
+
        struct poptOption long_options[] = {
                POPT_AUTOHELP
 
@@ -5508,7 +5509,6 @@ static int do_message_op(struct user_auth_info *a_info)
                         * position of the -T option in the raw argv[]. */
                        {
                                int i;
-                               extern struct tar tar_ctx;
 
                                for (i = 1; i < argc; i++) {
                                        if (strncmp("-T", argv[i],2)==0)
@@ -5608,7 +5608,7 @@ static int do_message_op(struct user_auth_info *a_info)
        if(new_name_resolve_order)
                lp_set_cmdline("name resolve order", new_name_resolve_order);
 
-       if (!tar_type && !query_host && !service && !message) {
+       if (!tar_to_process(&tar_ctx) && !query_host && !service && !message) {
                poptPrintUsage(pc, stderr, 0);
                exit(1);
        }
@@ -5623,7 +5623,7 @@ static int do_message_op(struct user_auth_info *a_info)
 
        max_protocol = lp_client_max_protocol();
 
-       if (tar_type) {
+       if (!tar_to_process(&tar_ctx)) {
                if (cmdstr)
                        process_command_string(cmdstr);
                rc = do_tar_op(base_directory);
index 6c3bbd7d4fce42f0278ebdaf7258a4c5f33390eb..83b4a96fc5e8974c338b10e2a70f838b2c3ac48c 100644 (file)
 
 #define LEN(x) (sizeof(x)/sizeof((x)[0]))
 #define TAR_MAX_BLOCK_SIZE 65535
-/*
- * XXX: used in client.c, we have to export it for now.
- * corresponds to the transfer operation. Can be '\0', 'c' or 'x'
- */
-char tar_type = 0;
 
 enum tar_operation {
     TAR_NO_OPERATION,
@@ -51,6 +46,8 @@ enum {
 };
 
 struct tar {
+    bool to_process;
+
     /* flags */
     struct tar_mode {
         enum tar_operation operation; /* create, extract */
@@ -145,6 +142,7 @@ static void tar_dump(struct tar *t)
         XSET(TAR_EXCLUDE),
     };
 
+    XBOOL(t->to_process);
     XTABLE(t->mode.operation, op);
     XTABLE(t->mode.selection, sel);
     XINT(t->mode.blocksize);
@@ -218,6 +216,11 @@ static bool tar_read_inclusion_file (struct tar *t, const char* filename)
     return 1;
 }
 
+bool tar_to_process (struct tar *t)
+{
+    return t->to_process;
+}
+
 /**
  * cmd_block - interactive command to change tar blocksize
  *
@@ -461,6 +464,7 @@ int tar_parse_args(struct tar* t, const char *flag, const char **val, int valsiz
     t->mode.operation = TAR_NO_OPERATION;
     t->mode.selection = TAR_NO_SELECTION;
     t->mode.dry = false;
+    t->to_process = false;
 
     while (*flag) {
         switch(*flag++) {
@@ -609,6 +613,7 @@ int tar_parse_args(struct tar* t, const char *flag, const char **val, int valsiz
         }
     }
 
+    t->to_process = true;
     tar_dump(t);
     return 1;
 }
index e66c9f9ad8929e31641382d6158b00623fdd74f3..1069070362e73e2296fd882bbd0f79f89358def0 100644 (file)
@@ -28,5 +28,6 @@ int cmd_setmode(void);
 int cmd_tar(void);
 int process_tar(void);
 int tar_parse_args(struct tar *tar, const char *flag, const char **val, int valsize);
+bool tar_to_process(struct tar *tar);
 
 #endif /* _CLITAR_PROTO_H_ */