]> git.ipfire.org Git - thirdparty/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)
committerCole Robinson <crobinso@redhat.com>
Wed, 4 May 2016 23:10:43 +0000 (19:10 -0400)
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>
(cherry picked from commit 4d28d0931f87177a762f6a78cfdbcc2e30d6d4af)

tools/vsh.c

index f033c055cb9a351e38d2ba8ee7beb92e2fbecac5..7458352820ccd9f2289012759ba9a633851c4537 100644 (file)
@@ -377,17 +377,17 @@ vshCmddefOptParse(const vshCmdDef *cmd, uint32_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;
         }
@@ -441,11 +441,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;
@@ -475,8 +475,8 @@ vshCmddefGetData(const vshCmdDef *cmd, uint32_t *opts_need_arg,
     i = ffs(*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;
 }
 
@@ -495,7 +495,7 @@ vshCommandCheckOpts(vshControl *ctl, const vshCmd *cmd, uint32_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,
@@ -1420,7 +1420,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) {