
On 9/27/19 11:09 AM, Daniel Henrique Barboza wrote:
All the 6 virGetConnect* functions in driver.c shares the same code base. This patch creates a new static function virGetConnectGeneric() that contains the common code to be used with all other virGetConnect*.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> ---
CC'ing Cole Robinson since he reviewed similar patches a few days ago.
src/driver.c | 100 +++++++++++++-------------------------------------- 1 file changed, 25 insertions(+), 75 deletions(-)
diff --git a/src/driver.c b/src/driver.c index ed2d943ddf..8a4bc8ff66 100644 --- a/src/driver.c +++ b/src/driver.c @@ -29,6 +29,7 @@ #include "virfile.h" #include "virlog.h" #include "virmodule.h" +#include "virstring.h" #include "virthread.h" #include "configmake.h"
@@ -96,112 +97,61 @@ virConnectCacheOnceInit(void)
VIR_ONCE_GLOBAL_INIT(virConnectCache);
-virConnectPtr virGetConnectInterface(void) +static virConnectPtr +virGetConnectGeneric(virThreadLocal thread, const char *name) {
virThreadLocal is a struct behind the typedef, so better to make this virThreadLocalPtr. That's also what all other functions that use virThreadLocal take as an argument
virConnectPtr conn;
if (virConnectCacheInitialize() < 0) return NULL;
- conn = virThreadLocalGet(&connectInterface); + conn = virThreadLocalGet(&thread); + if (conn) { - VIR_DEBUG("Return cached interface connection %p", conn); + VIR_DEBUG("Return cached %s connection %p", name, conn); virObjectRef(conn); } else { - conn = virConnectOpen(geteuid() == 0 ? "interface:///system" : "interface:///session"); - VIR_DEBUG("Opened new interface connection %p", conn); + VIR_AUTOFREE(char *) uri = NULL; + const char *uriPath = geteuid() == 0 ? "/system" : "/session"; + + if (virAsprintf(&uri, "%s//%s", name, uriPath) < 0) + return NULL; +
Missing a : here - Cole