util: Add helpers for auto-freeing GSList filled with strings

glib's 'g_autoslist()' doesn't support lists of 'char *' strings. Add a
type alias 'virGSListString' so that we can register an 'autoptr'
function for it for simple usage of GSList with strings.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Peter Krempa 2021-02-04 17:58:23 +01:00
parent b020663381
commit 0ec601bc48
4 changed files with 60 additions and 0 deletions

View File

@ -2304,6 +2304,10 @@ virGICVersionTypeFromString;
virGICVersionTypeToString;
# util/virglibutil.h
virGSListStringFree;
# util/virhash.h
virHashAddEntry;
virHashAtomicNew;

View File

@ -35,6 +35,7 @@ util_sources = [
'virgdbus.c',
'virgettext.c',
'virgic.c',
'virglibutil.c',
'virhash.c',
'virhashcode.c',
'virhook.c',

27
src/util/virglibutil.c Normal file
View File

@ -0,0 +1,27 @@
/*
* virglibutil.c: Utilities helping with glib usage
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include "virglibutil.h"
void
virGSListStringFree(GSList *l)
{
g_slist_free_full(l, g_free);
}

28
src/util/virglibutil.h Normal file
View File

@ -0,0 +1,28 @@
/*
* virglibutil.h: Utilities helping with glib usage
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "internal.h"
void
virGSListStringFree(GSList *l);
typedef GSList virGSListString;
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virGSListString, virGSListStringFree);