mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-04-26 15:14:42 +00:00
util: Move the VIR_AUTO(CLEAN|PTR) helper macros into a separate header
Keeping them with viralloc.h forcibly pulls in the other stuff from viralloc.h into other header files. This in turn creates a mess as more and more headers pull in the 'viral' header file. If we want to make 'viralloc.h' omnipresent we should pick a different approach. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
9895f00126
commit
a4bfc2521f
@ -662,6 +662,7 @@ libvirt_setuid_rpc_client_la_SOURCES = \
|
|||||||
util/virarch.c \
|
util/virarch.c \
|
||||||
util/viratomic.c \
|
util/viratomic.c \
|
||||||
util/viratomic.h \
|
util/viratomic.h \
|
||||||
|
util/virautoclean.h \
|
||||||
util/virbitmap.c \
|
util/virbitmap.c \
|
||||||
util/virbuffer.c \
|
util/virbuffer.c \
|
||||||
util/vircgroup.c \
|
util/vircgroup.c \
|
||||||
@ -874,6 +875,7 @@ libvirt_nss_la_SOURCES = \
|
|||||||
util/viralloc.h \
|
util/viralloc.h \
|
||||||
util/viratomic.c \
|
util/viratomic.c \
|
||||||
util/viratomic.h \
|
util/viratomic.h \
|
||||||
|
util/virautoclean.h \
|
||||||
util/virbitmap.c \
|
util/virbitmap.c \
|
||||||
util/virbitmap.h \
|
util/virbitmap.h \
|
||||||
util/virbuffer.c \
|
util/virbuffer.c \
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "domain_conf.h"
|
# include "domain_conf.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef const char * (*virDomainCapsValToStr)(int value);
|
typedef const char * (*virDomainCapsValToStr)(int value);
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
# include "device_conf.h"
|
# include "device_conf.h"
|
||||||
# include "object_event.h"
|
# include "object_event.h"
|
||||||
# include "storage_adapter_conf.h"
|
# include "storage_adapter_conf.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# include <libxml/tree.h>
|
# include <libxml/tree.h>
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
# include "domain_conf.h"
|
# include "domain_conf.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
# include "qemu_conf.h"
|
# include "qemu_conf.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _qemuFirmware qemuFirmware;
|
typedef struct _qemuFirmware qemuFirmware;
|
||||||
typedef qemuFirmware *qemuFirmwarePtr;
|
typedef qemuFirmware *qemuFirmwarePtr;
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
# include "virxml.h"
|
# include "virxml.h"
|
||||||
# include "qemu_monitor.h"
|
# include "qemu_monitor.h"
|
||||||
# include "qemu_conf.h"
|
# include "qemu_conf.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
QEMU_MIGRATION_CAP_XBZRLE,
|
QEMU_MIGRATION_CAP_XBZRLE,
|
||||||
|
@ -15,6 +15,7 @@ UTIL_SOURCES = \
|
|||||||
util/virauth.h \
|
util/virauth.h \
|
||||||
util/virauthconfig.c \
|
util/virauthconfig.c \
|
||||||
util/virauthconfig.h \
|
util/virauthconfig.h \
|
||||||
|
util/virautoclean.h \
|
||||||
util/virbitmap.c \
|
util/virbitmap.c \
|
||||||
util/virbitmap.h \
|
util/virbitmap.h \
|
||||||
util/virbuffer.c \
|
util/virbuffer.c \
|
||||||
|
@ -606,42 +606,6 @@ int virAllocTestCount(void);
|
|||||||
void virAllocTestOOM(int n, int m);
|
void virAllocTestOOM(int n, int m);
|
||||||
void virAllocTestHook(void (*func)(int, void*), void *data);
|
void virAllocTestHook(void (*func)(int, void*), void *data);
|
||||||
|
|
||||||
# define VIR_AUTOPTR_FUNC_NAME(type) type##AutoPtrFree
|
|
||||||
|
|
||||||
/**
|
|
||||||
* VIR_DEFINE_AUTOPTR_FUNC:
|
|
||||||
* @type: type of the variable to be freed automatically
|
|
||||||
* @func: cleanup function to be automatically called
|
|
||||||
*
|
|
||||||
* This macro defines a function for automatic freeing of
|
|
||||||
* resources allocated to a variable of type @type. This newly
|
|
||||||
* defined function works as a necessary wrapper around @func.
|
|
||||||
*/
|
|
||||||
# define VIR_DEFINE_AUTOPTR_FUNC(type, func) \
|
|
||||||
static inline void VIR_AUTOPTR_FUNC_NAME(type)(type **_ptr) \
|
|
||||||
{ \
|
|
||||||
if (*_ptr) \
|
|
||||||
(func)(*_ptr); \
|
|
||||||
*_ptr = NULL; \
|
|
||||||
}
|
|
||||||
|
|
||||||
# define VIR_AUTOCLEAN_FUNC_NAME(type) type##AutoClean
|
|
||||||
|
|
||||||
/**
|
|
||||||
* VIR_DEFINE_AUTOCLEAN_FUNC:
|
|
||||||
* @type: type of the variable to be cleared automatically
|
|
||||||
* @func: cleanup function to be automatically called
|
|
||||||
*
|
|
||||||
* This macro defines a function for automatic clearing of
|
|
||||||
* resources in a stack'd variable of type @type. Note that @func must
|
|
||||||
* take pointer to @type.
|
|
||||||
*/
|
|
||||||
# define VIR_DEFINE_AUTOCLEAN_FUNC(type, func) \
|
|
||||||
static inline void VIR_AUTOCLEAN_FUNC_NAME(type)(type *_ptr) \
|
|
||||||
{ \
|
|
||||||
(func)(_ptr); \
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* VIR_AUTOFREE:
|
* VIR_AUTOFREE:
|
||||||
* @type: type of the variable to be freed automatically
|
* @type: type of the variable to be freed automatically
|
||||||
@ -652,34 +616,4 @@ void virAllocTestHook(void (*func)(int, void*), void *data);
|
|||||||
*/
|
*/
|
||||||
# define VIR_AUTOFREE(type) __attribute__((cleanup(virFree))) type
|
# define VIR_AUTOFREE(type) __attribute__((cleanup(virFree))) type
|
||||||
|
|
||||||
/**
|
|
||||||
* VIR_AUTOPTR:
|
|
||||||
* @type: type of the variable to be freed automatically
|
|
||||||
*
|
|
||||||
* Macro to automatically free the memory allocated to
|
|
||||||
* the variable declared with it by calling the function
|
|
||||||
* defined by VIR_DEFINE_AUTOPTR_FUNC when the variable
|
|
||||||
* goes out of scope.
|
|
||||||
*
|
|
||||||
* Note that this macro must NOT be used with vectors! The freeing function
|
|
||||||
* will not free any elements beyond the first.
|
|
||||||
*/
|
|
||||||
# define VIR_AUTOPTR(type) \
|
|
||||||
__attribute__((cleanup(VIR_AUTOPTR_FUNC_NAME(type)))) type *
|
|
||||||
|
|
||||||
/**
|
|
||||||
* VIR_AUTOCLEAN:
|
|
||||||
* @type: type of the variable to be cleared automatically
|
|
||||||
*
|
|
||||||
* Macro to automatically call clearing function registered for variable of @type
|
|
||||||
* when the variable goes out of scope.
|
|
||||||
* The cleanup function is registered by VIR_DEFINE_AUTOCLEAN_FUNC macro for
|
|
||||||
* the given type.
|
|
||||||
*
|
|
||||||
* Note that this macro must NOT be used with vectors! The cleaning function
|
|
||||||
* will not clean any elements beyond the first.
|
|
||||||
*/
|
|
||||||
# define VIR_AUTOCLEAN(type) \
|
|
||||||
__attribute__((cleanup(VIR_AUTOCLEAN_FUNC_NAME(type)))) type
|
|
||||||
|
|
||||||
#endif /* LIBVIRT_VIRALLOC_H */
|
#endif /* LIBVIRT_VIRALLOC_H */
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _virAuthConfig virAuthConfig;
|
typedef struct _virAuthConfig virAuthConfig;
|
||||||
typedef virAuthConfig *virAuthConfigPtr;
|
typedef virAuthConfig *virAuthConfigPtr;
|
||||||
|
90
src/util/virautoclean.h
Normal file
90
src/util/virautoclean.h
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
* virautoclean.h: automatic scope-based memory clearing helper macros for
|
||||||
|
* use in header files
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LIBVIRT_VIRAUTOCLEAN_H
|
||||||
|
# define LIBVIRT_VIRAUTOCLEAN_H
|
||||||
|
|
||||||
|
# define VIR_AUTOPTR_FUNC_NAME(type) type##AutoPtrFree
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VIR_DEFINE_AUTOPTR_FUNC:
|
||||||
|
* @type: type of the variable to be freed automatically
|
||||||
|
* @func: cleanup function to be automatically called
|
||||||
|
*
|
||||||
|
* This macro defines a function for automatic freeing of
|
||||||
|
* resources allocated to a variable of type @type. This newly
|
||||||
|
* defined function works as a necessary wrapper around @func.
|
||||||
|
*/
|
||||||
|
# define VIR_DEFINE_AUTOPTR_FUNC(type, func) \
|
||||||
|
static inline void VIR_AUTOPTR_FUNC_NAME(type)(type **_ptr) \
|
||||||
|
{ \
|
||||||
|
if (*_ptr) \
|
||||||
|
(func)(*_ptr); \
|
||||||
|
*_ptr = NULL; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# define VIR_AUTOCLEAN_FUNC_NAME(type) type##AutoClean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VIR_DEFINE_AUTOCLEAN_FUNC:
|
||||||
|
* @type: type of the variable to be cleared automatically
|
||||||
|
* @func: cleanup function to be automatically called
|
||||||
|
*
|
||||||
|
* This macro defines a function for automatic clearing of
|
||||||
|
* resources in a stack'd variable of type @type. Note that @func must
|
||||||
|
* take pointer to @type.
|
||||||
|
*/
|
||||||
|
# define VIR_DEFINE_AUTOCLEAN_FUNC(type, func) \
|
||||||
|
static inline void VIR_AUTOCLEAN_FUNC_NAME(type)(type *_ptr) \
|
||||||
|
{ \
|
||||||
|
(func)(_ptr); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VIR_AUTOPTR:
|
||||||
|
* @type: type of the variable to be freed automatically
|
||||||
|
*
|
||||||
|
* Macro to automatically free the memory allocated to
|
||||||
|
* the variable declared with it by calling the function
|
||||||
|
* defined by VIR_DEFINE_AUTOPTR_FUNC when the variable
|
||||||
|
* goes out of scope.
|
||||||
|
*
|
||||||
|
* Note that this macro must NOT be used with vectors! The freeing function
|
||||||
|
* will not free any elements beyond the first.
|
||||||
|
*/
|
||||||
|
# define VIR_AUTOPTR(type) \
|
||||||
|
__attribute__((cleanup(VIR_AUTOPTR_FUNC_NAME(type)))) type *
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VIR_AUTOCLEAN:
|
||||||
|
* @type: type of the variable to be cleared automatically
|
||||||
|
*
|
||||||
|
* Macro to automatically call clearing function registered for variable of @type
|
||||||
|
* when the variable goes out of scope.
|
||||||
|
* The cleanup function is registered by VIR_DEFINE_AUTOCLEAN_FUNC macro for
|
||||||
|
* the given type.
|
||||||
|
*
|
||||||
|
* Note that this macro must NOT be used with vectors! The cleaning function
|
||||||
|
* will not clean any elements beyond the first.
|
||||||
|
*/
|
||||||
|
# define VIR_AUTOCLEAN(type) \
|
||||||
|
__attribute__((cleanup(VIR_AUTOCLEAN_FUNC_NAME(type)))) type
|
||||||
|
|
||||||
|
#endif /* LIBVIRT_VIRAUTOCLEAN_H */
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "virbuffer.h"
|
# include "virbuffer.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _virCommand virCommand;
|
typedef struct _virCommand virCommand;
|
||||||
typedef virCommand *virCommandPtr;
|
typedef virCommand *virCommandPtr;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# define VIR_ERROR_MAX_LENGTH 1024
|
# define VIR_ERROR_MAX_LENGTH 1024
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
# include "virbitmap.h"
|
# include "virbitmap.h"
|
||||||
# include "virstoragefile.h"
|
# include "virstoragefile.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_FILE_CLOSE_PRESERVE_ERRNO = 1 << 0,
|
VIR_FILE_CLOSE_PRESERVE_ERRNO = 1 << 0,
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _virFirewall virFirewall;
|
typedef struct _virFirewall virFirewall;
|
||||||
typedef virFirewall *virFirewallPtr;
|
typedef virFirewall *virFirewallPtr;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
|
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The hash table.
|
* The hash table.
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
# include "virbitmap.h"
|
# include "virbitmap.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
# include "virbuffer.h"
|
# include "virbuffer.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# include <stdarg.h>
|
# include <stdarg.h>
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# define VIR_MAC_BUFLEN 6
|
# define VIR_MAC_BUFLEN 6
|
||||||
# define VIR_MAC_HEXLEN (VIR_MAC_BUFLEN * 2)
|
# define VIR_MAC_HEXLEN (VIR_MAC_BUFLEN * 2)
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
# include "virobject.h"
|
# include "virobject.h"
|
||||||
# include "virutil.h"
|
# include "virutil.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_MDEV_MODEL_TYPE_VFIO_PCI = 0,
|
VIR_MDEV_MODEL_TYPE_VFIO_PCI = 0,
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
# include "virpci.h"
|
# include "virpci.h"
|
||||||
# include "virnetdevvlan.h"
|
# include "virnetdevvlan.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# ifdef HAVE_STRUCT_IFREQ
|
# ifdef HAVE_STRUCT_IFREQ
|
||||||
typedef struct ifreq virIfreq;
|
typedef struct ifreq virIfreq;
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
# define LIBVIRT_VIRNETDEVIP_H
|
# define LIBVIRT_VIRNETDEVIP_H
|
||||||
|
|
||||||
# include "virsocketaddr.h"
|
# include "virsocketaddr.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _virNetDevIPAddr virNetDevIPAddr;
|
typedef struct _virNetDevIPAddr virNetDevIPAddr;
|
||||||
typedef virNetDevIPAddr *virNetDevIPAddrPtr;
|
typedef virNetDevIPAddr *virNetDevIPAddrPtr;
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
# include <virutil.h>
|
# include <virutil.h>
|
||||||
|
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_NATIVE_VLAN_MODE_DEFAULT = 0,
|
VIR_NATIVE_VLAN_MODE_DEFAULT = 0,
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "virmacaddr.h"
|
# include "virmacaddr.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# if defined(__linux__) && defined(HAVE_LIBNL)
|
# if defined(__linux__) && defined(HAVE_LIBNL)
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
# include "virobject.h"
|
# include "virobject.h"
|
||||||
# include "virutil.h"
|
# include "virutil.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _virPCIDevice virPCIDevice;
|
typedef struct _virPCIDevice virPCIDevice;
|
||||||
typedef virPCIDevice *virPCIDevicePtr;
|
typedef virPCIDevice *virPCIDevicePtr;
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
# include "virutil.h"
|
# include "virutil.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
/* Some Intel processor families introduced some RDT (Resource Director
|
/* Some Intel processor families introduced some RDT (Resource Director
|
||||||
* Technology) features to monitor or control shared resource based on
|
* Technology) features to monitor or control shared resource based on
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "virobject.h"
|
# include "virobject.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _virSCSIDevice virSCSIDevice;
|
typedef struct _virSCSIDevice virSCSIDevice;
|
||||||
typedef virSCSIDevice *virSCSIDevicePtr;
|
typedef virSCSIDevice *virSCSIDevicePtr;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
# include "virobject.h"
|
# include "virobject.h"
|
||||||
# include "virutil.h"
|
# include "virutil.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
typedef struct _virSCSIVHostDevice virSCSIVHostDevice;
|
typedef struct _virSCSIVHostDevice virSCSIVHostDevice;
|
||||||
typedef virSCSIVHostDevice *virSCSIVHostDevicePtr;
|
typedef virSCSIVHostDevice *virSCSIVHostDevicePtr;
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
/* On architectures which lack these limits, define them (ie. Cygwin).
|
/* On architectures which lack these limits, define them (ie. Cygwin).
|
||||||
* Note that the libvirt code should be robust enough to handle the
|
* Note that the libvirt code should be robust enough to handle the
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
# include "virstorageencryption.h"
|
# include "virstorageencryption.h"
|
||||||
# include "virutil.h"
|
# include "virutil.h"
|
||||||
# include "virsecret.h"
|
# include "virsecret.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
/* Minimum header size required to probe all known formats with
|
/* Minimum header size required to probe all known formats with
|
||||||
* virStorageFileProbeFormat, or obtain metadata from a known format.
|
* virStorageFileProbeFormat, or obtain metadata from a known format.
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
# include "internal.h"
|
# include "internal.h"
|
||||||
# include "virobject.h"
|
# include "virobject.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
# define USB_DEVFS "/dev/bus/usb/"
|
# define USB_DEVFS "/dev/bus/usb/"
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
# include <libxml/relaxng.h>
|
# include <libxml/relaxng.h>
|
||||||
|
|
||||||
# include "virbuffer.h"
|
# include "virbuffer.h"
|
||||||
|
# include "virautoclean.h"
|
||||||
|
|
||||||
int virXPathBoolean(const char *xpath,
|
int virXPathBoolean(const char *xpath,
|
||||||
xmlXPathContextPtr ctxt);
|
xmlXPathContextPtr ctxt);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user