]> xenbits.xensource.com Git - libvirt.git/commitdiff
virlog: Introduce virLogOutputFree
authorErik Skultety <eskultet@redhat.com>
Mon, 4 Jul 2016 10:19:38 +0000 (12:19 +0200)
committerErik Skultety <eskultet@redhat.com>
Mon, 4 Jul 2016 14:43:48 +0000 (16:43 +0200)
Provide a separate method to free a logging output object. This will come handy
once a method to create an individual logging output object is introduced.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
src/libvirt_private.syms
src/util/virlog.c
src/util/virlog.h

index aa5ae1a615773e42b11fb119733a4dd1eacc5009..553e004421fd95631b02b6aea67b88703e18b6af 100644 (file)
@@ -1822,6 +1822,7 @@ virLogGetNbOutputs;
 virLogGetOutputs;
 virLogLock;
 virLogMessage;
+virLogOutputFree;
 virLogParseDefaultPriority;
 virLogParseFilters;
 virLogParseOutputs;
index 20d014028611d7ff681688e8f6e69b87d1a28901..5c5c5cdbbe57ab1af1594040b1045e11a619303c 100644 (file)
@@ -106,8 +106,6 @@ struct _virLogOutput {
     virLogDestination dest;
     char *name;
 };
-typedef struct _virLogOutput virLogOutput;
-typedef virLogOutput *virLogOutputPtr;
 
 static virLogOutputPtr *virLogOutputs;
 static size_t virLogNbOutputs;
@@ -329,17 +327,27 @@ virLogResetOutputs(void)
 {
     size_t i;
 
-    for (i = 0; i < virLogNbOutputs; i++) {
-        if (virLogOutputs[i]->c != NULL)
-            virLogOutputs[i]->c(virLogOutputs[i]->data);
-        VIR_FREE(virLogOutputs[i]->name);
-        VIR_FREE(virLogOutputs[i]);
-    }
+    for (i = 0; i < virLogNbOutputs; i++)
+        virLogOutputFree(virLogOutputs[i]);
+
     VIR_FREE(virLogOutputs);
     virLogNbOutputs = 0;
 }
 
 
+void
+virLogOutputFree(virLogOutputPtr output)
+{
+    if (!output)
+        return;
+
+    if (output->c)
+        output->c(output->data);
+    VIR_FREE(output->name);
+    VIR_FREE(output);
+
+}
+
 /**
  * virLogDefineOutput:
  * @f: the function to call to output a message
index 3ad00d49c3e6b1423de24eb4c6e73e4f0f178b14..bdd9ae3aacaf96523896221d47156f67f096bf55 100644 (file)
@@ -130,6 +130,9 @@ struct _virLogMetadata {
 typedef struct _virLogMetadata virLogMetadata;
 typedef struct _virLogMetadata *virLogMetadataPtr;
 
+typedef struct _virLogOutput virLogOutput;
+typedef virLogOutput *virLogOutputPtr;
+
 /**
  * virLogOutputFunc:
  * @src: the source of the log message
@@ -187,6 +190,7 @@ int virLogDefineOutput(virLogOutputFunc f,
                        virLogDestination dest,
                        const char *name,
                        unsigned int flags);
+void virLogOutputFree(virLogOutputPtr output);
 
 /*
  * Internal logging API