virLogDestination dest;
char *name;
};
-typedef struct _virLogOutput virLogOutput;
-typedef virLogOutput *virLogOutputPtr;
static virLogOutputPtr *virLogOutputs;
static size_t virLogNbOutputs;
{
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
typedef struct _virLogMetadata virLogMetadata;
typedef struct _virLogMetadata *virLogMetadataPtr;
+typedef struct _virLogOutput virLogOutput;
+typedef virLogOutput *virLogOutputPtr;
+
/**
* virLogOutputFunc:
* @src: the source of the log message
virLogDestination dest,
const char *name,
unsigned int flags);
+void virLogOutputFree(virLogOutputPtr output);
/*
* Internal logging API