]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: Fix support for 64 migration options
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Wed, 20 Apr 2016 13:51:43 +0000 (16:51 +0300)
committerJiri Denemark <jdenemar@redhat.com>
Thu, 28 Apr 2016 18:16:41 +0000 (20:16 +0200)
Add ULL suffix to all related operands of << or shift will give
all zeros instead of correct mask.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
tools/vsh.c

index a80e85103a84d4b5af13c4e63dee004666924ccf..605c5745c4a2778bd0c2a5e73817169c5ad759d9 100644 (file)
@@ -376,17 +376,17 @@ vshCmddefOptParse(const vshCmdDef *cmd, uint64_t *opts_need_arg,
         }
         if (opt->flags & VSH_OFLAG_REQ_OPT) {
             if (opt->flags & VSH_OFLAG_REQ)
-                *opts_required |= 1 << i;
+                *opts_required |= 1ULL << i;
             else
                 optional = true;
             continue;
         }
 
-        *opts_need_arg |= 1 << i;
+        *opts_need_arg |= 1ULL << i;
         if (opt->flags & VSH_OFLAG_REQ) {
             if (optional && opt->type != VSH_OT_ARGV)
                 return -1; /* mandatory options must be listed first */
-            *opts_required |= 1 << i;
+            *opts_required |= 1ULL << i;
         } else {
             optional = true;
         }
@@ -440,11 +440,11 @@ vshCmddefGetOption(vshControl *ctl, const vshCmdDef *cmd, const char *name,
                 }
                 continue;
             }
-            if ((*opts_seen & (1 << i)) && opt->type != VSH_OT_ARGV) {
+            if ((*opts_seen & (1ULL << i)) && opt->type != VSH_OT_ARGV) {
                 vshError(ctl, _("option --%s already seen"), name);
                 goto cleanup;
             }
-            *opts_seen |= 1 << i;
+            *opts_seen |= 1ULL << i;
             *opt_index = i;
             ret = opt;
             goto cleanup;
@@ -474,8 +474,8 @@ vshCmddefGetData(const vshCmdDef *cmd, uint64_t *opts_need_arg,
     i = ffsl(*opts_need_arg) - 1;
     opt = &cmd->opts[i];
     if (opt->type != VSH_OT_ARGV)
-        *opts_need_arg &= ~(1 << i);
-    *opts_seen |= 1 << i;
+        *opts_need_arg &= ~(1ULL << i);
+    *opts_seen |= 1ULL << i;
     return opt;
 }
 
@@ -494,7 +494,7 @@ vshCommandCheckOpts(vshControl *ctl, const vshCmd *cmd, uint64_t opts_required,
         return 0;
 
     for (i = 0; def->opts[i].name; i++) {
-        if (opts_required & (1 << i)) {
+        if (opts_required & (1ULL << i)) {
             const vshCmdOptDef *opt = &def->opts[i];
 
             vshError(ctl,
@@ -1419,7 +1419,7 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser)
                         goto syntaxError;
                     }
                     if (opt->type != VSH_OT_ARGV)
-                        opts_need_arg &= ~(1 << opt_index);
+                        opts_need_arg &= ~(1ULL << opt_index);
                 } else {
                     tkdata = NULL;
                     if (optstr) {