[libvirt] [PATCH 2/2] maint: forbid 'int foo = true'

Eric Blake eblake at redhat.com
Tue Nov 18 00:36:21 UTC 2014


I noticed this while working on qemuDomainGetBlockInfo.  Assigning
a bool value to an int variable compiles fine, but raises red flags
on the maintenance front as it becomes too easy to assign -1 or 2
or any other non-bool value to the same variable.

* cfg.mk (sc_prohibit_int_assign_bool): New rule.
* src/conf/snapshot_conf.c (virDomainSnapshotRedefinePrep): Fix
offenders.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo)
(qemuDomainSnapshotCreateXML): Likewise.
* src/test/test_driver.c (testDomainSnapshotAlignDisks):
Likewise.
* src/util/vircgroup.c (virCgroupSupportsCpuBW): Likewise.
* src/util/virpci.c (virPCIDeviceBindToStub): Likewise.
* src/util/virutil.c (virIsCapableVport): Likewise.
* tools/virsh-domain-monitor.c (cmdDomMemStat): Likewise.
* tools/virsh-domain.c (cmdBlockResize, cmdScreenshot)
(cmdInjectNMI, cmdSendKey, cmdSendProcessSignal)
(cmdDetachInterface): Likewise.

Signed-off-by: Eric Blake <eblake at redhat.com>
---
 cfg.mk                       |  6 ++++++
 src/conf/snapshot_conf.c     |  2 +-
 src/qemu/qemu_driver.c       |  4 ++--
 src/test/test_driver.c       |  2 +-
 src/util/vircgroup.c         |  2 +-
 src/util/virpci.c            |  2 +-
 src/util/virutil.c           |  2 +-
 tools/virsh-domain-monitor.c |  2 +-
 tools/virsh-domain.c         | 12 ++++++------
 9 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index f188645..c49f4f3 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -584,6 +584,12 @@ sc_prohibit_loop_var_decl:
 	halt='declare loop iterators outside the for statement'		\
 	  $(_sc_search_regexp)

+# Use 'bool', not 'int', when assigning true or false
+sc_prohibit_int_assign_bool:
+	@prohibit='\<int\>.*= *(true|false)'				\
+	halt='use bool type for boolean values'				\
+	  $(_sc_search_regexp)
+
 # Many of the function names below came from this filter:
 # git grep -B2 '\<_('|grep -E '\.c- *[[:alpha:]_][[:alnum:]_]* ?\(.*[,;]$' \
 # |sed 's/.*\.c-  *//'|perl -pe 's/ ?\(.*//'|sort -u \
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index 1f83b2c..c2caf33 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -1182,7 +1182,7 @@ virDomainSnapshotRedefinePrep(virDomainPtr domain,
     virDomainSnapshotDefPtr def = *defptr;
     int ret = -1;
     int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL;
-    int align_match = true;
+    bool align_match = true;
     char uuidstr[VIR_UUID_STRING_BUFLEN];
     virDomainSnapshotObjPtr other;

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index a84fd47..74d1bdc 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -10933,7 +10933,7 @@ qemuDomainGetBlockInfo(virDomainPtr dom,
     struct stat sb;
     int idx;
     int format;
-    int activeFail = false;
+    bool activeFail = false;
     virQEMUDriverConfigPtr cfg = NULL;
     char *alias = NULL;
     char *buf = NULL;
@@ -13809,7 +13809,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
     unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
     virDomainSnapshotObjPtr other = NULL;
     int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL;
-    int align_match = true;
+    bool align_match = true;
     virQEMUDriverConfigPtr cfg = NULL;
     virCapsPtr caps = NULL;

diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index d7844bd..4b7fea1 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -6835,7 +6835,7 @@ testDomainSnapshotAlignDisks(virDomainObjPtr vm,
                              unsigned int flags)
 {
     int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL;
-    int align_match = true;
+    bool align_match = true;

     if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY) {
         align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL;
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 9bbe694..166f4dc 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -3908,7 +3908,7 @@ bool
 virCgroupSupportsCpuBW(virCgroupPtr cgroup)
 {
     char *path = NULL;
-    int ret = false;
+    bool ret = false;

     if (!cgroup)
         return false;
diff --git a/src/util/virpci.c b/src/util/virpci.c
index f60d0fa..cd78212 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -1182,7 +1182,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev,
                        const char *stubDriverName)
 {
     int result = -1;
-    int reprobe = false;
+    bool reprobe = false;
     char *stubDriverPath = NULL;
     char *driverLink = NULL;
     char *path = NULL; /* reused for different purposes */
diff --git a/src/util/virutil.c b/src/util/virutil.c
index 88c8baf..9c40317 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -1995,7 +1995,7 @@ virIsCapableVport(const char *sysfs_prefix,
 {
     char *scsi_host_path = NULL;
     char *fc_host_path = NULL;
-    int ret = false;
+    bool ret = false;

     if (virAsprintf(&fc_host_path,
                     "%s/host%d/%s",
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index 4e434f8..259400f 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
@@ -298,7 +298,7 @@ cmdDomMemStat(vshControl *ctl, const vshCmd *cmd)
     virDomainMemoryStatStruct stats[VIR_DOMAIN_MEMORY_STAT_NR];
     unsigned int nr_stats;
     size_t i;
-    int ret = false;
+    bool ret = false;
     int rv = 0;
     int period = -1;
     bool config = vshCommandOptBool(cmd, "config");
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index a7e9151..d48765a 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -2640,7 +2640,7 @@ cmdBlockResize(vshControl *ctl, const vshCmd *cmd)
     const char *path = NULL;
     unsigned long long size = 0;
     unsigned int flags = 0;
-    int ret = false;
+    bool ret = false;

     if (vshCommandOptStringReq(ctl, cmd, "path", (const char **) &path) < 0)
         return false;
@@ -5163,7 +5163,7 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd)
     virStreamPtr st = NULL;
     unsigned int screen = 0;
     unsigned int flags = 0; /* currently unused */
-    int ret = false;
+    bool ret = false;
     bool created = false;
     bool generated = false;
     char *mime = NULL;
@@ -7615,7 +7615,7 @@ static bool
 cmdInjectNMI(vshControl *ctl, const vshCmd *cmd)
 {
     virDomainPtr dom;
-    int ret = true;
+    bool ret = true;

     if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
         return false;
@@ -7678,7 +7678,7 @@ static bool
 cmdSendKey(vshControl *ctl, const vshCmd *cmd)
 {
     virDomainPtr dom;
-    int ret = false;
+    bool ret = false;
     const char *codeset_option;
     int codeset;
     unsigned int holdtime = 0;
@@ -7809,7 +7809,7 @@ static bool
 cmdSendProcessSignal(vshControl *ctl, const vshCmd *cmd)
 {
     virDomainPtr dom;
-    int ret = false;
+    bool ret = false;
     const char *pidstr;
     const char *signame;
     long long pid_value;
@@ -10592,7 +10592,7 @@ cmdDetachInterface(vshControl *ctl, const vshCmd *cmd)
     int diff_mac;
     size_t i;
     int ret;
-    int functionReturn = false;
+    bool functionReturn = false;
     unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT;
     bool current = vshCommandOptBool(cmd, "current");
     bool config = vshCommandOptBool(cmd, "config");
-- 
1.9.3




More information about the libvir-list mailing list