By making use of GNU C's cleanup attribute handled by the
VIR_AUTOPTR macro for declaring aggregate pointer variables,
majority of the calls to *Free functions can be dropped, which
in turn leads to getting rid of most of our cleanup sections.
Signed-off-by: Sukrit Bhatnagar <skrtbhtngr(a)gmail.com>
---
src/util/virkmod.c | 22 ++++++----------------
1 file changed, 6 insertions(+), 16 deletions(-)
diff --git a/src/util/virkmod.c b/src/util/virkmod.c
index d981cd4..9d0375b 100644
--- a/src/util/virkmod.c
+++ b/src/util/virkmod.c
@@ -28,8 +28,7 @@
static int
doModprobe(const char *opts, const char *module, char **outbuf, char **errbuf)
{
- int ret = -1;
- virCommandPtr cmd = NULL;
+ VIR_AUTOPTR(virCommand) cmd = NULL;
cmd = virCommandNew(MODPROBE);
if (opts)
@@ -42,32 +41,23 @@ doModprobe(const char *opts, const char *module, char **outbuf, char
**errbuf)
virCommandSetErrorBuffer(cmd, errbuf);
if (virCommandRun(cmd, NULL) < 0)
- goto cleanup;
+ return -1;
- ret = 0;
-
- cleanup:
- virCommandFree(cmd);
- return ret;
+ return 0;
}
static int
doRmmod(const char *module, char **errbuf)
{
- int ret = -1;
- virCommandPtr cmd = NULL;
+ VIR_AUTOPTR(virCommand) cmd = NULL;
cmd = virCommandNewArgList(RMMOD, module, NULL);
virCommandSetErrorBuffer(cmd, errbuf);
if (virCommandRun(cmd, NULL) < 0)
- goto cleanup;
+ return -1;
- ret = 0;
-
- cleanup:
- virCommandFree(cmd);
- return ret;
+ return 0;
}
/**
--
1.8.3.1