提交 30c4931d 编写于 作者: M Martin Kletzander

gendispatch: Cluster, don't capture if not needed

We were using parentheses for grouping admin|remote even though we didn't
need to capture what's in it.  That caused some changes to be greater
than needed and, to be honest, some confusion as well.  Let's use it as
it should be used.  It'll also make future changes more consistent.
Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
上级 335bc13c
...@@ -523,16 +523,16 @@ elsif ($mode eq "server") { ...@@ -523,16 +523,16 @@ elsif ($mode eq "server") {
push(@free_list, push(@free_list,
" virObjectUnref(snapshot);\n" . " virObjectUnref(snapshot);\n" .
" virObjectUnref(dom);"); " virObjectUnref(dom);");
} elsif ($args_member =~ m/^(?:(admin|remote)_string|remote_uuid) (\S+)<\S+>;/) { } elsif ($args_member =~ m/^(?:(?:admin|remote)_string|remote_uuid) (\S+)<\S+>;/) {
push_privconn(\@args_list); push_privconn(\@args_list);
push(@args_list, "args->$2.$2_val"); push(@args_list, "args->$1.$1_val");
push(@args_list, "args->$2.$2_len"); push(@args_list, "args->$1.$1_len");
} elsif ($args_member =~ m/^(?:opaque|(admin|remote)_nonnull_string) (\S+)<\S+>;(.*)$/) { } elsif ($args_member =~ m/^(?:opaque|(?:admin|remote)_nonnull_string) (\S+)<\S+>;(.*)$/) {
push_privconn(\@args_list); push_privconn(\@args_list);
my $cast = ""; my $cast = "";
my $arg_name = $2; my $arg_name = $1;
my $annotation = $3; my $annotation = $2;
if ($annotation ne "") { if ($annotation ne "") {
if ($annotation =~ m/\s*\/\*\s*(.*)\s*\*\//) { if ($annotation =~ m/\s*\/\*\s*(.*)\s*\*\//) {
...@@ -571,16 +571,16 @@ elsif ($mode eq "server") { ...@@ -571,16 +571,16 @@ elsif ($mode eq "server") {
push_privconn(\@args_list); push_privconn(\@args_list);
push(@args_list, "(unsigned char *) args->$1"); push(@args_list, "(unsigned char *) args->$1");
} elsif ($args_member =~ m/^(admin|remote)_string (\S+);/) { } elsif ($args_member =~ m/^(?:admin|remote)_string (\S+);/) {
push_privconn(\@args_list); push_privconn(\@args_list);
push(@vars_list, "char *$2"); push(@vars_list, "char *$1");
push(@optionals_list, "$2"); push(@optionals_list, "$1");
push(@args_list, "$2"); push(@args_list, "$1");
} elsif ($args_member =~ m/^(admin|remote)_nonnull_string (\S+);/) { } elsif ($args_member =~ m/^(?:admin|remote)_nonnull_string (\S+);/) {
push_privconn(\@args_list); push_privconn(\@args_list);
push(@args_list, "args->$2"); push(@args_list, "args->$1");
} elsif ($args_member =~ m/^(unsigned )?int (\S+);/) { } elsif ($args_member =~ m/^(unsigned )?int (\S+);/) {
push_privconn(\@args_list); push_privconn(\@args_list);
...@@ -637,52 +637,52 @@ elsif ($mode eq "server") { ...@@ -637,52 +637,52 @@ elsif ($mode eq "server") {
} else { } else {
die "unhandled type for multi-return-value: $ret_member"; die "unhandled type for multi-return-value: $ret_member";
} }
} elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<(\S+)>;\s*\/\*\s*insert@(\d+)\s*\*\//) { } elsif ($ret_member =~ m/^(?:admin|remote)_nonnull_string (\S+)<(\S+)>;\s*\/\*\s*insert@(\d+)\s*\*\//) {
push(@vars_list, "int len"); push(@vars_list, "int len");
splice(@args_list, int($4), 0, ("ret->$2.$2_val")); splice(@args_list, int($3), 0, ("ret->$1.$1_val"));
push(@ret_list, "ret->$2.$2_len = len;"); push(@ret_list, "ret->$1.$1_len = len;");
push(@free_list_on_error, "VIR_FREE(ret->$2.$2_val);"); push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);");
$single_ret_var = "len"; $single_ret_var = "len";
$single_ret_by_ref = 0; $single_ret_by_ref = 0;
$single_ret_check = " < 0"; $single_ret_check = " < 0";
$single_ret_as_list = 1; $single_ret_as_list = 1;
$single_ret_list_name = $2; $single_ret_list_name = $1;
$single_ret_list_max_var = "max$2"; $single_ret_list_max_var = "max$1";
$single_ret_list_max_define = $3; $single_ret_list_max_define = $2;
} elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<\S+>;/) { } elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<\S+>;/) {
# error out on unannotated arrays # error out on unannotated arrays
die "$1_nonnull_string array without insert@<offset> annotation: $ret_member"; die "$1_nonnull_string array without insert@<offset> annotation: $ret_member";
} elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+);/) { } elsif ($ret_member =~ m/^(?:admin|remote)_nonnull_string (\S+);/) {
if ($call->{ProcName} eq "ConnectGetType") { if ($call->{ProcName} eq "ConnectGetType") {
# SPECIAL: virConnectGetType returns a constant string that must # SPECIAL: virConnectGetType returns a constant string that must
# not be freed. Therefore, duplicate the string here. # not be freed. Therefore, duplicate the string here.
push(@vars_list, "const char *$2"); push(@vars_list, "const char *$1");
push(@ret_list, "/* We have to VIR_STRDUP because remoteDispatchClientRequest will"); push(@ret_list, "/* We have to VIR_STRDUP because remoteDispatchClientRequest will");
push(@ret_list, " * free this string after it's been serialised. */"); push(@ret_list, " * free this string after it's been serialised. */");
push(@ret_list, "if (VIR_STRDUP(ret->type, type) < 0)"); push(@ret_list, "if (VIR_STRDUP(ret->type, type) < 0)");
push(@ret_list, " goto cleanup;"); push(@ret_list, " goto cleanup;");
} else { } else {
push(@vars_list, "char *$2"); push(@vars_list, "char *$1");
push(@ret_list, "ret->$2 = $2;"); push(@ret_list, "ret->$1 = $1;");
} }
$single_ret_var = $2; $single_ret_var = $1;
$single_ret_by_ref = 0; $single_ret_by_ref = 0;
$single_ret_check = " == NULL"; $single_ret_check = " == NULL";
} elsif ($ret_member =~ m/^(admin|remote)_string (\S+);/) { } elsif ($ret_member =~ m/^(?:admin|remote)_string (\S+);/) {
push(@vars_list, "char *$2 = NULL"); push(@vars_list, "char *$1 = NULL");
push(@vars_list, "char **$2_p = NULL"); push(@vars_list, "char **$1_p = NULL");
push(@ret_list, "ret->$2 = $2_p;"); push(@ret_list, "ret->$1 = $1_p;");
push(@free_list, " VIR_FREE($2);"); push(@free_list, " VIR_FREE($1);");
push(@free_list_on_error, "VIR_FREE($2_p);"); push(@free_list_on_error, "VIR_FREE($1_p);");
push(@prepare_ret_list, push(@prepare_ret_list,
"if (VIR_ALLOC($2_p) < 0)\n" . "if (VIR_ALLOC($1_p) < 0)\n" .
" goto cleanup;\n" . " goto cleanup;\n" .
"\n" . "\n" .
" if (VIR_STRDUP(*$2_p, $2) < 0)\n". " if (VIR_STRDUP(*$1_p, $1) < 0)\n".
" goto cleanup;\n"); " goto cleanup;\n");
$single_ret_var = $2; $single_ret_var = $1;
$single_ret_by_ref = 0; $single_ret_by_ref = 0;
$single_ret_check = " == NULL"; $single_ret_check = " == NULL";
} elsif ($ret_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|interface|node_device|secret|nwfilter|domain_snapshot) (\S+);/) { } elsif ($ret_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|interface|node_device|secret|nwfilter|domain_snapshot) (\S+);/) {
...@@ -1140,14 +1140,14 @@ elsif ($mode eq "client") { ...@@ -1140,14 +1140,14 @@ elsif ($mode eq "client") {
} elsif ($args_member =~ m/^remote_uuid (\S+);/) { } elsif ($args_member =~ m/^remote_uuid (\S+);/) {
push(@args_list, "const unsigned char *$1"); push(@args_list, "const unsigned char *$1");
push(@setters_list, "memcpy(args.$1, $1, VIR_UUID_BUFLEN);"); push(@setters_list, "memcpy(args.$1, $1, VIR_UUID_BUFLEN);");
} elsif ($args_member =~ m/^(admin|remote)_string (\S+);/) { } elsif ($args_member =~ m/^(?:admin|remote)_string (\S+);/) {
push(@args_list, "const char *$2"); push(@args_list, "const char *$1");
push(@setters_list, "args.$2 = $2 ? (char **)&$2 : NULL;"); push(@setters_list, "args.$1 = $1 ? (char **)&$1 : NULL;");
} elsif ($args_member =~ m/^(admin|remote)_nonnull_string (\S+)<(\S+)>;(.*)$/) { } elsif ($args_member =~ m/^(?:admin|remote)_nonnull_string (\S+)<(\S+)>;(.*)$/) {
my $type_name = "const char **"; my $type_name = "const char **";
my $arg_name = $2; my $arg_name = $1;
my $limit = $3; my $limit = $2;
my $annotation = $4; my $annotation = $3;
if ($annotation ne "") { if ($annotation ne "") {
if ($annotation =~ m/\s*\/\*\s*\((.*)\)\s*\*\//) { if ($annotation =~ m/\s*\/\*\s*\((.*)\)\s*\*\//) {
...@@ -1161,10 +1161,10 @@ elsif ($mode eq "client") { ...@@ -1161,10 +1161,10 @@ elsif ($mode eq "client") {
push(@args_list, "unsigned int ${arg_name}len"); push(@args_list, "unsigned int ${arg_name}len");
push(@setters_list, "args.$arg_name.${arg_name}_val = (char **)$arg_name;"); push(@setters_list, "args.$arg_name.${arg_name}_val = (char **)$arg_name;");
push(@setters_list, "args.$arg_name.${arg_name}_len = ${arg_name}len;"); push(@setters_list, "args.$arg_name.${arg_name}_len = ${arg_name}len;");
push(@args_check_list, { name => "\"$arg_name\"", arg => "${arg_name}len", limit => $3 }); push(@args_check_list, { name => "\"$arg_name\"", arg => "${arg_name}len", limit => $2 });
} elsif ($args_member =~ m/^(admin|remote)_nonnull_string (\S+);/) { } elsif ($args_member =~ m/^(?:admin|remote)_nonnull_string (\S+);/) {
push(@args_list, "const char *$2"); push(@args_list, "const char *$1");
push(@setters_list, "args.$2 = (char *)$2;"); push(@setters_list, "args.$1 = (char *)$1;");
} elsif ($args_member =~ m/^opaque (\S+)<(\S+)>;(.*)$/) { } elsif ($args_member =~ m/^opaque (\S+)<(\S+)>;(.*)$/) {
my $type_name = "const char *"; my $type_name = "const char *";
my $arg_name = $1; my $arg_name = $1;
...@@ -1191,9 +1191,9 @@ elsif ($mode eq "client") { ...@@ -1191,9 +1191,9 @@ elsif ($mode eq "client") {
push(@setters_list, "args.$arg_name.${arg_name}_val = (char *)$arg_name;"); push(@setters_list, "args.$arg_name.${arg_name}_val = (char *)$arg_name;");
push(@setters_list, "args.$arg_name.${arg_name}_len = ${arg_name}len;"); push(@setters_list, "args.$arg_name.${arg_name}_len = ${arg_name}len;");
push(@args_check_list, { name => "\"$arg_name\"", arg => "${arg_name}len", limit => $limit }); push(@args_check_list, { name => "\"$arg_name\"", arg => "${arg_name}len", limit => $limit });
} elsif ($args_member =~ m/^(admin|remote)_string (\S+)<(\S+)>;/) { } elsif ($args_member =~ m/^(?:admin|remote)_string (\S+)<(\S+)>;/) {
my $arg_name = $2; my $arg_name = $1;
my $limit = $3; my $limit = $2;
push(@args_list, "const char *$arg_name"); push(@args_list, "const char *$arg_name");
push(@args_list, "int ${arg_name}len"); push(@args_list, "int ${arg_name}len");
...@@ -1312,25 +1312,25 @@ elsif ($mode eq "client") { ...@@ -1312,25 +1312,25 @@ elsif ($mode eq "client") {
die "unhandled type for multi-return-value for " . die "unhandled type for multi-return-value for " .
"procedure $call->{name}: $ret_member"; "procedure $call->{name}: $ret_member";
} }
} elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<(\S+)>;\s*\/\*\s*insert@(\d+)\s*\*\//) { } elsif ($ret_member =~ m/^(?:admin|remote)_nonnull_string (\S+)<(\S+)>;\s*\/\*\s*insert@(\d+)\s*\*\//) {
splice(@args_list, int($4), 0, ("char **const $2")); splice(@args_list, int($3), 0, ("char **const $1"));
push(@ret_list, "rv = ret.$2.$2_len;"); push(@ret_list, "rv = ret.$1.$1_len;");
$single_ret_var = "int rv = -1"; $single_ret_var = "int rv = -1";
$single_ret_type = "int"; $single_ret_type = "int";
$single_ret_as_list = 1; $single_ret_as_list = 1;
$single_ret_list_name = $2; $single_ret_list_name = $1;
$single_ret_list_max_var = "max$2"; $single_ret_list_max_var = "max$1";
$single_ret_list_max_define = $3; $single_ret_list_max_define = $2;
} elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<\S+>;/) { } elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<\S+>;/) {
# error out on unannotated arrays # error out on unannotated arrays
die "$1_nonnull_string array without insert@<offset> annotation: $ret_member"; die "$1_nonnull_string array without insert@<offset> annotation: $ret_member";
} elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+);/) { } elsif ($ret_member =~ m/^(?:admin|remote)_nonnull_string (\S+);/) {
push(@ret_list, "rv = ret.$2;"); push(@ret_list, "rv = ret.$1;");
$single_ret_var = "char *rv = NULL"; $single_ret_var = "char *rv = NULL";
$single_ret_type = "char *"; $single_ret_type = "char *";
} elsif ($ret_member =~ m/^(admin|remote)_string (\S+);/) { } elsif ($ret_member =~ m/^(?:admin|remote)_string (\S+);/) {
push(@ret_list, "rv = ret.$2 ? *ret.$2 : NULL;"); push(@ret_list, "rv = ret.$1 ? *ret.$1 : NULL;");
push(@ret_list, "VIR_FREE(ret.$2);"); push(@ret_list, "VIR_FREE(ret.$1);");
$single_ret_var = "char *rv = NULL"; $single_ret_var = "char *rv = NULL";
$single_ret_type = "char *"; $single_ret_type = "char *";
} elsif ($ret_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|node_device|interface|secret|nwfilter|domain_snapshot) (\S+);/) { } elsif ($ret_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|node_device|interface|secret|nwfilter|domain_snapshot) (\S+);/) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册