mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
remote generator, daemon: Output function bodies too
This patch just covers the simple functions without explicit return values. There is more to be handled. The generator collects the members of the XDR argument structs and uses this information to generate the function bodies. Exclude the generated files from offending syntax-checks. Suggested by Richard W.M. Jones
This commit is contained in:
parent
999f5b3ea6
commit
aff1db9fab
8
cfg.mk
8
cfg.mk
@ -590,7 +590,7 @@ exclude_file_name_regexp--sc_avoid_write = \
|
||||
|
||||
exclude_file_name_regexp--sc_bindtextdomain = ^(tests|examples)/
|
||||
|
||||
exclude_file_name_regexp--sc_po_check = ^docs/
|
||||
exclude_file_name_regexp--sc_po_check = ^(docs/|daemon/remote_generator\.pl$$)
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_VIR_ERR_NO_MEMORY = \
|
||||
^(include/libvirt/virterror\.h|daemon/dispatch\.c|src/util/virterror\.c)$$
|
||||
@ -611,7 +611,7 @@ exclude_file_name_regexp--sc_prohibit_close = \
|
||||
exclude_file_name_regexp--sc_prohibit_doubled_word = ^po/
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
||||
(^docs/api_extension/|^tests/qemuhelpdata/|\.(gif|ico|png)$$)
|
||||
(^docs/api_extension/|^tests/qemuhelpdata/|\.(gif|ico|png)$$|daemon/.*_dispatch_bodies\.c$$)
|
||||
|
||||
_src2=src/(util/util|libvirt|lxc/lxc_controller)
|
||||
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
||||
@ -633,9 +633,9 @@ exclude_file_name_regexp--sc_prohibit_strncpy = \
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/xml\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_require_config_h = ^examples/
|
||||
exclude_file_name_regexp--sc_require_config_h = ^(examples/|daemon/.*_dispatch_bodies\.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_require_config_h_first = ^examples/
|
||||
exclude_file_name_regexp--sc_require_config_h_first = ^(examples/|daemon/.*_dispatch_bodies\.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_trailing_blank = (^docs/|\.(fig|gif|ico|png)$$)
|
||||
|
||||
|
@ -24,6 +24,8 @@ AVAHI_SOURCES = \
|
||||
DISTCLEANFILES =
|
||||
EXTRA_DIST = \
|
||||
remote_generator.pl \
|
||||
remote_dispatch_bodies.c \
|
||||
qemu_dispatch_bodies.c \
|
||||
libvirtd.conf \
|
||||
libvirtd.init.in \
|
||||
libvirtd.upstart \
|
||||
@ -204,8 +206,10 @@ endif
|
||||
remote.c: \
|
||||
remote_dispatch_prototypes.h \
|
||||
remote_dispatch_table.h \
|
||||
remote_dispatch_bodies.c \
|
||||
qemu_dispatch_prototypes.h \
|
||||
qemu_dispatch_table.h
|
||||
qemu_dispatch_table.h \
|
||||
qemu_dispatch_bodies.c
|
||||
|
||||
remote.h: \
|
||||
remote_dispatch_args.h \
|
||||
@ -228,6 +232,9 @@ remote_dispatch_args.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
|
||||
remote_dispatch_ret.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -r remote $(REMOTE_PROTOCOL) > $@
|
||||
|
||||
remote_dispatch_bodies.c: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -b remote $(REMOTE_PROTOCOL) > $@
|
||||
|
||||
qemu_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -p qemu $(QEMU_PROTOCOL) > $@
|
||||
|
||||
@ -240,6 +247,9 @@ qemu_dispatch_args.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||
qemu_dispatch_ret.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -r qemu $(QEMU_PROTOCOL) > $@
|
||||
|
||||
qemu_dispatch_bodies.c: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -b qemu $(QEMU_PROTOCOL) > $@
|
||||
|
||||
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
||||
libvirtd.uml.logrotate libvirtd.logrotate
|
||||
|
||||
|
6
daemon/qemu_dispatch_bodies.c
Normal file
6
daemon/qemu_dispatch_bodies.c
Normal file
@ -0,0 +1,6 @@
|
||||
/* Automatically generated by remote_generator.pl.
|
||||
* Do not edit this file. Any changes you make will be lost.
|
||||
*/
|
||||
|
||||
|
||||
/* qemuDispatchMonitorCommand has to be implemented manually */
|
1710
daemon/remote.c
1710
daemon/remote.c
File diff suppressed because it is too large
Load Diff
2048
daemon/remote_dispatch_bodies.c
Normal file
2048
daemon/remote_dispatch_bodies.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -1258,7 +1258,7 @@ static int remoteDispatchNumOfStoragePools(
|
||||
remote_error *rerr,
|
||||
void *args,
|
||||
remote_num_of_storage_pools_ret *ret);
|
||||
static int remoteDispatchNwfilterDefineXml(
|
||||
static int remoteDispatchNWFilterDefineXml(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
@ -1266,7 +1266,7 @@ static int remoteDispatchNwfilterDefineXml(
|
||||
remote_error *rerr,
|
||||
remote_nwfilter_define_xml_args *args,
|
||||
remote_nwfilter_define_xml_ret *ret);
|
||||
static int remoteDispatchNwfilterGetXmlDesc(
|
||||
static int remoteDispatchNWFilterGetXmlDesc(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
@ -1274,7 +1274,7 @@ static int remoteDispatchNwfilterGetXmlDesc(
|
||||
remote_error *rerr,
|
||||
remote_nwfilter_get_xml_desc_args *args,
|
||||
remote_nwfilter_get_xml_desc_ret *ret);
|
||||
static int remoteDispatchNwfilterLookupByName(
|
||||
static int remoteDispatchNWFilterLookupByName(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
@ -1282,7 +1282,7 @@ static int remoteDispatchNwfilterLookupByName(
|
||||
remote_error *rerr,
|
||||
remote_nwfilter_lookup_by_name_args *args,
|
||||
remote_nwfilter_lookup_by_name_ret *ret);
|
||||
static int remoteDispatchNwfilterLookupByUuid(
|
||||
static int remoteDispatchNWFilterLookupByUuid(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
@ -1290,7 +1290,7 @@ static int remoteDispatchNwfilterLookupByUuid(
|
||||
remote_error *rerr,
|
||||
remote_nwfilter_lookup_by_uuid_args *args,
|
||||
remote_nwfilter_lookup_by_uuid_ret *ret);
|
||||
static int remoteDispatchNwfilterUndefine(
|
||||
static int remoteDispatchNWFilterUndefine(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
|
@ -877,18 +877,18 @@
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_update_device_flags_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NwfilterLookupByName => 175 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterLookupByName,
|
||||
{ /* NWFilterLookupByName => 175 */
|
||||
.fn = (dispatch_fn) remoteDispatchNWFilterLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_ret,
|
||||
},
|
||||
{ /* NwfilterLookupByUuid => 176 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterLookupByUuid,
|
||||
{ /* NWFilterLookupByUuid => 176 */
|
||||
.fn = (dispatch_fn) remoteDispatchNWFilterLookupByUuid,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_ret,
|
||||
},
|
||||
{ /* NwfilterGetXmlDesc => 177 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterGetXmlDesc,
|
||||
{ /* NWFilterGetXmlDesc => 177 */
|
||||
.fn = (dispatch_fn) remoteDispatchNWFilterGetXmlDesc,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_ret,
|
||||
},
|
||||
@ -902,13 +902,13 @@
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_nwfilters_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_nwfilters_ret,
|
||||
},
|
||||
{ /* NwfilterDefineXml => 180 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterDefineXml,
|
||||
{ /* NWFilterDefineXml => 180 */
|
||||
.fn = (dispatch_fn) remoteDispatchNWFilterDefineXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_ret,
|
||||
},
|
||||
{ /* NwfilterUndefine => 181 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterUndefine,
|
||||
{ /* NWFilterUndefine => 181 */
|
||||
.fn = (dispatch_fn) remoteDispatchNWFilterUndefine,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_undefine_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
|
@ -13,14 +13,15 @@
|
||||
# remote_generator.pl -t qemu ../src/remote/qemu_protocol.x
|
||||
#
|
||||
# By Richard Jones <rjones@redhat.com>
|
||||
# Extended by Matthias Bolte <matthias.bolte@googlemail.com>
|
||||
|
||||
use strict;
|
||||
|
||||
use Getopt::Std;
|
||||
|
||||
# Command line options.
|
||||
our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c);
|
||||
getopts ('ptardc');
|
||||
our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c, $opt_b);
|
||||
getopts ('ptardcb');
|
||||
|
||||
my $structprefix = $ARGV[0];
|
||||
my $procprefix = uc $structprefix;
|
||||
@ -31,6 +32,7 @@ sub name_to_ProcName {
|
||||
my $name = shift;
|
||||
my @elems = split /_/, $name;
|
||||
@elems = map ucfirst, @elems;
|
||||
@elems = map { $_ eq "Nwfilter" ? "NWFilter" : $_ } @elems;
|
||||
join "", @elems
|
||||
}
|
||||
|
||||
@ -50,8 +52,17 @@ if ($opt_c) {
|
||||
};
|
||||
}
|
||||
|
||||
my $collect_args_members = 0;
|
||||
my $last_name;
|
||||
|
||||
while (<>) {
|
||||
if (/^struct ${structprefix}_(.*)_args/) {
|
||||
if ($collect_args_members) {
|
||||
if (/^};/) {
|
||||
$collect_args_members = 0;
|
||||
} elsif ($_ =~ m/^\s*(.*\S)\s*$/) {
|
||||
push(@{$calls{$name}->{args_members}}, $1);
|
||||
}
|
||||
} elsif (/^struct ${structprefix}_(.*)_args/) {
|
||||
$name = $1;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
|
||||
@ -63,9 +74,12 @@ while (<>) {
|
||||
ProcName => $ProcName,
|
||||
UC_NAME => uc $name,
|
||||
args => "${structprefix}_${name}_args",
|
||||
ret => "void",
|
||||
args_members => [],
|
||||
ret => "void"
|
||||
};
|
||||
|
||||
$collect_args_members = 1;
|
||||
$last_name = $name;
|
||||
} elsif (/^struct ${structprefix}_(.*)_ret/) {
|
||||
$name = $1;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
@ -81,6 +95,8 @@ while (<>) {
|
||||
ret => "${structprefix}_${name}_ret"
|
||||
}
|
||||
}
|
||||
|
||||
$collect_args_members = 0;
|
||||
} elsif (/^struct ${structprefix}_(.*)_msg/) {
|
||||
$name = $1;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
@ -90,13 +106,19 @@ while (<>) {
|
||||
ProcName => $ProcName,
|
||||
UC_NAME => uc $name,
|
||||
msg => "${structprefix}_${name}_msg"
|
||||
}
|
||||
};
|
||||
|
||||
$collect_args_members = 0;
|
||||
} elsif (/^\s*${procprefix}_PROC_(.*?)\s+=\s+(\d+),?$/) {
|
||||
$name = lc $1;
|
||||
$id = $2;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
|
||||
$calls[$id] = $calls{$name};
|
||||
|
||||
$collect_args_members = 0;
|
||||
} else {
|
||||
$collect_args_members = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -193,3 +215,225 @@ elsif ($opt_t) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Bodies for dispatch functions ("remote_dispatch_bodies.c").
|
||||
elsif ($opt_b) {
|
||||
# list of functions that currently are not generatable
|
||||
my @ungeneratable;
|
||||
|
||||
if ($structprefix eq "remote") {
|
||||
@ungeneratable = ("Close",
|
||||
"DomainEventsDeregisterAny",
|
||||
"DomainEventsRegisterAny",
|
||||
"DomainMigratePerform",
|
||||
"DomainMigratePrepareTunnel",
|
||||
"DomainOpenConsole",
|
||||
"DomainPinVcpu",
|
||||
"DomainSetSchedulerParameters",
|
||||
"DomainSetMemoryParameters",
|
||||
"DomainSetBlkioParameters",
|
||||
"Open",
|
||||
"StorageVolUpload",
|
||||
"StorageVolDownload");
|
||||
} elsif ($structprefix eq "qemu") {
|
||||
@ungeneratable = ("MonitorCommand");
|
||||
}
|
||||
|
||||
my %ug = map { $_ => 1 } @ungeneratable;
|
||||
my @keys = sort (keys %calls);
|
||||
|
||||
foreach (@keys) {
|
||||
# skip things which are REMOTE_MESSAGE
|
||||
next if $calls{$_}->{msg};
|
||||
|
||||
# FIXME: skip functions with explicit return value for now
|
||||
if ($calls{$_}->{ret} ne "void" or exists($ug{$calls{$_}->{ProcName}})) {
|
||||
print "\n/* ${structprefix}Dispatch$calls{$_}->{ProcName} has to be implemented manually */\n";
|
||||
next;
|
||||
}
|
||||
|
||||
print "\n";
|
||||
print "static int\n";
|
||||
print "${structprefix}Dispatch$calls{$_}->{ProcName}(\n";
|
||||
print " struct qemud_server *server ATTRIBUTE_UNUSED,\n";
|
||||
print " struct qemud_client *client ATTRIBUTE_UNUSED,\n";
|
||||
print " virConnectPtr conn,\n";
|
||||
print " remote_message_header *hdr ATTRIBUTE_UNUSED,\n";
|
||||
print " remote_error *rerr,\n";
|
||||
print " $calls{$_}->{args} *args";
|
||||
|
||||
if ($calls{$_}->{args} eq "void") {
|
||||
print " ATTRIBUTE_UNUSED"
|
||||
}
|
||||
|
||||
print ",\n";
|
||||
print " $calls{$_}->{ret} *ret";
|
||||
|
||||
if ($calls{$_}->{ret} eq "void") {
|
||||
print " ATTRIBUTE_UNUSED"
|
||||
}
|
||||
|
||||
print ")\n";
|
||||
print "{\n";
|
||||
print " int rv = -1;\n";
|
||||
|
||||
my $has_node_device = 0;
|
||||
my @vars_list = ();
|
||||
my @getters_list = ();
|
||||
my @args_list = ();
|
||||
my @free_list = ();
|
||||
|
||||
if ($calls{$_}->{args} ne "void") {
|
||||
# node device is special, as it's identified by name
|
||||
if ($calls{$_}->{args} =~ m/^remote_node_device/) {
|
||||
$has_node_device = 1;
|
||||
push(@vars_list, "virNodeDevicePtr dev = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(dev = virNodeDeviceLookupByName(conn, args->name)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "dev");
|
||||
push(@free_list,
|
||||
" if (dev)\n" .
|
||||
" virNodeDeviceFree(dev);");
|
||||
}
|
||||
|
||||
foreach my $args_member (@{$calls{$_}->{args_members}}) {
|
||||
if ($args_member =~ m/^remote_nonnull_string name;/ and $has_node_device) {
|
||||
# ignore the name arg for node devices
|
||||
next
|
||||
} elsif ($args_member =~ m/^remote_nonnull_domain /) {
|
||||
push(@vars_list, "virDomainPtr dom = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(dom = get_nonnull_domain(conn, args->dom)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "dom");
|
||||
push(@free_list,
|
||||
" if (dom)\n" .
|
||||
" virDomainFree(dom);");
|
||||
} elsif ($args_member =~ m/^remote_nonnull_network /) {
|
||||
push(@vars_list, "virNetworkPtr net = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(net = get_nonnull_network(conn, args->net)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "net");
|
||||
push(@free_list,
|
||||
" if (net)\n" .
|
||||
" virNetworkFree(net);");
|
||||
} elsif ($args_member =~ m/^remote_nonnull_storage_pool /) {
|
||||
push(@vars_list, "virStoragePoolPtr pool = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(pool = get_nonnull_storage_pool(conn, args->pool)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "pool");
|
||||
push(@free_list,
|
||||
" if (pool)\n" .
|
||||
" virStoragePoolFree(pool);");
|
||||
} elsif ($args_member =~ m/^remote_nonnull_storage_vol /) {
|
||||
push(@vars_list, "virStorageVolPtr vol = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(vol = get_nonnull_storage_vol(conn, args->vol)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "vol");
|
||||
push(@free_list,
|
||||
" if (vol)\n" .
|
||||
" virStorageVolFree(vol);");
|
||||
} elsif ($args_member =~ m/^remote_nonnull_interface /) {
|
||||
push(@vars_list, "virInterfacePtr iface = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(iface = get_nonnull_interface(conn, args->iface)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "iface");
|
||||
push(@free_list,
|
||||
" if (iface)\n" .
|
||||
" virInterfaceFree(iface);");
|
||||
} elsif ($args_member =~ m/^remote_nonnull_secret /) {
|
||||
push(@vars_list, "virSecretPtr secret = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(secret = get_nonnull_secret(conn, args->secret)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "secret");
|
||||
push(@free_list,
|
||||
" if (secret)\n" .
|
||||
" virSecretFree(secret);");
|
||||
} elsif ($args_member =~ m/^remote_nonnull_nwfilter /) {
|
||||
push(@vars_list, "virNWFilterPtr nwfilter = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "nwfilter");
|
||||
push(@free_list,
|
||||
" if (nwfilter)\n" .
|
||||
" virNWFilterFree(nwfilter);");
|
||||
} elsif ($args_member =~ m/^remote_nonnull_domain_snapshot /) {
|
||||
push(@vars_list, "virDomainPtr dom = NULL");
|
||||
push(@vars_list, "virDomainSnapshotPtr snapshot = NULL");
|
||||
push(@getters_list,
|
||||
" if (!(dom = get_nonnull_domain(conn, args->snap.domain)))\n" .
|
||||
" goto cleanup;\n" .
|
||||
"\n" .
|
||||
" if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))\n" .
|
||||
" goto cleanup;\n");
|
||||
push(@args_list, "snapshot");
|
||||
push(@free_list,
|
||||
" if (snapshot)\n" .
|
||||
" virDomainSnapshotFree(snapshot);\n" .
|
||||
" if (dom)\n" .
|
||||
" virDomainFree(dom);");
|
||||
} elsif ($args_member =~ m/(\S+)<\S+>;/) {
|
||||
if (! @args_list) {
|
||||
push(@args_list, "conn");
|
||||
}
|
||||
|
||||
if ($calls{$_}->{ProcName} eq "SecretSetValue") {
|
||||
push(@args_list, "(const unsigned char *)args->$1.$1_val");
|
||||
} else {
|
||||
push(@args_list, "args->$1.$1_val");
|
||||
}
|
||||
|
||||
push(@args_list, "args->$1.$1_len");
|
||||
} elsif ($args_member =~ m/.* (\S+);/) {
|
||||
if (! @args_list) {
|
||||
push(@args_list, "conn");
|
||||
}
|
||||
|
||||
push(@args_list, "args->$1");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $var (@vars_list) {
|
||||
print " $var;\n";
|
||||
}
|
||||
|
||||
print "\n";
|
||||
print " if (!conn) {\n";
|
||||
print " virNetError(VIR_ERR_INTERNAL_ERROR, \"%s\", _(\"connection not open\"));\n";
|
||||
print " goto cleanup;\n";
|
||||
print " }\n";
|
||||
print "\n";
|
||||
|
||||
print join("\n", @getters_list);
|
||||
|
||||
print "\n";
|
||||
|
||||
if ($calls{$_}->{ret} eq "void") {
|
||||
print " if (vir$calls{$_}->{ProcName}(";
|
||||
print join(', ', @args_list);
|
||||
print ") < 0)\n";
|
||||
print " goto cleanup;\n";
|
||||
print "\n";
|
||||
}
|
||||
|
||||
print " rv = 0;\n";
|
||||
print "\n";
|
||||
print "cleanup:\n";
|
||||
print " if (rv < 0)\n";
|
||||
print " remoteDispatchError(rerr);\n";
|
||||
|
||||
print join("\n", @free_list);
|
||||
|
||||
print "\n";
|
||||
print " return rv;\n";
|
||||
print "}\n";
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ daemon/dispatch.c
|
||||
daemon/libvirtd.c
|
||||
daemon/remote.c
|
||||
daemon/stream.c
|
||||
daemon/remote_dispatch_bodies.c
|
||||
src/conf/cpu_conf.c
|
||||
src/conf/domain_conf.c
|
||||
src/conf/domain_event.c
|
||||
|
Loading…
x
Reference in New Issue
Block a user