diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 5c99409edb..146e8403cf 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -523,16 +523,16 @@ elsif ($mode eq "server") { push(@free_list, " virObjectUnref(snapshot);\n" . " 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(@args_list, "args->$2.$2_val"); - push(@args_list, "args->$2.$2_len"); - } elsif ($args_member =~ m/^(?:opaque|(admin|remote)_nonnull_string) (\S+)<\S+>;(.*)$/) { + push(@args_list, "args->$1.$1_val"); + push(@args_list, "args->$1.$1_len"); + } elsif ($args_member =~ m/^(?:opaque|(?:admin|remote)_nonnull_string) (\S+)<\S+>;(.*)$/) { push_privconn(\@args_list); my $cast = ""; - my $arg_name = $2; - my $annotation = $3; + my $arg_name = $1; + my $annotation = $2; if ($annotation ne "") { if ($annotation =~ m/\s*\/\*\s*(.*)\s*\*\//) { @@ -571,16 +571,16 @@ elsif ($mode eq "server") { push_privconn(\@args_list); 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(@vars_list, "char *$2"); - push(@optionals_list, "$2"); - push(@args_list, "$2"); - } elsif ($args_member =~ m/^(admin|remote)_nonnull_string (\S+);/) { + push(@vars_list, "char *$1"); + push(@optionals_list, "$1"); + push(@args_list, "$1"); + } elsif ($args_member =~ m/^(?:admin|remote)_nonnull_string (\S+);/) { push_privconn(\@args_list); - push(@args_list, "args->$2"); + push(@args_list, "args->$1"); } elsif ($args_member =~ m/^(unsigned )?int (\S+);/) { push_privconn(\@args_list); @@ -637,52 +637,52 @@ elsif ($mode eq "server") { } else { 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"); - splice(@args_list, int($4), 0, ("ret->$2.$2_val")); - push(@ret_list, "ret->$2.$2_len = len;"); - push(@free_list_on_error, "VIR_FREE(ret->$2.$2_val);"); + splice(@args_list, int($3), 0, ("ret->$1.$1_val")); + push(@ret_list, "ret->$1.$1_len = len;"); + push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);"); $single_ret_var = "len"; $single_ret_by_ref = 0; $single_ret_check = " < 0"; $single_ret_as_list = 1; - $single_ret_list_name = $2; - $single_ret_list_max_var = "max$2"; - $single_ret_list_max_define = $3; + $single_ret_list_name = $1; + $single_ret_list_max_var = "max$1"; + $single_ret_list_max_define = $2; } elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<\S+>;/) { # error out on unannotated arrays die "$1_nonnull_string array without insert@ 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") { # SPECIAL: virConnectGetType returns a constant string that must # 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, " * free this string after it's been serialised. */"); push(@ret_list, "if (VIR_STRDUP(ret->type, type) < 0)"); push(@ret_list, " goto cleanup;"); } else { - push(@vars_list, "char *$2"); - push(@ret_list, "ret->$2 = $2;"); + push(@vars_list, "char *$1"); + push(@ret_list, "ret->$1 = $1;"); } - $single_ret_var = $2; + $single_ret_var = $1; $single_ret_by_ref = 0; $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/^(admin|remote)_string (\S+);/) { - push(@vars_list, "char *$2 = NULL"); - push(@vars_list, "char **$2_p = NULL"); - push(@ret_list, "ret->$2 = $2_p;"); - push(@free_list, " VIR_FREE($2);"); - push(@free_list_on_error, "VIR_FREE($2_p);"); + } elsif ($ret_member =~ m/^(?:admin|remote)_string (\S+);/) { + push(@vars_list, "char *$1 = NULL"); + push(@vars_list, "char **$1_p = NULL"); + push(@ret_list, "ret->$1 = $1_p;"); + push(@free_list, " VIR_FREE($1);"); + push(@free_list_on_error, "VIR_FREE($1_p);"); push(@prepare_ret_list, - "if (VIR_ALLOC($2_p) < 0)\n" . + "if (VIR_ALLOC($1_p) < 0)\n" . " goto cleanup;\n" . "\n" . - " if (VIR_STRDUP(*$2_p, $2) < 0)\n". + " if (VIR_STRDUP(*$1_p, $1) < 0)\n". " goto cleanup;\n"); - $single_ret_var = $2; + $single_ret_var = $1; $single_ret_by_ref = 0; $single_ret_check = " == NULL"; } 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") { } elsif ($args_member =~ m/^remote_uuid (\S+);/) { push(@args_list, "const unsigned char *$1"); push(@setters_list, "memcpy(args.$1, $1, VIR_UUID_BUFLEN);"); - } elsif ($args_member =~ m/^(admin|remote)_string (\S+);/) { - push(@args_list, "const char *$2"); - push(@setters_list, "args.$2 = $2 ? (char **)&$2 : NULL;"); - } elsif ($args_member =~ m/^(admin|remote)_nonnull_string (\S+)<(\S+)>;(.*)$/) { + } elsif ($args_member =~ m/^(?:admin|remote)_string (\S+);/) { + push(@args_list, "const char *$1"); + push(@setters_list, "args.$1 = $1 ? (char **)&$1 : NULL;"); + } elsif ($args_member =~ m/^(?:admin|remote)_nonnull_string (\S+)<(\S+)>;(.*)$/) { my $type_name = "const char **"; - my $arg_name = $2; - my $limit = $3; - my $annotation = $4; + my $arg_name = $1; + my $limit = $2; + my $annotation = $3; if ($annotation ne "") { if ($annotation =~ m/\s*\/\*\s*\((.*)\)\s*\*\//) { @@ -1161,10 +1161,10 @@ elsif ($mode eq "client") { 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}_len = ${arg_name}len;"); - push(@args_check_list, { name => "\"$arg_name\"", arg => "${arg_name}len", limit => $3 }); - } elsif ($args_member =~ m/^(admin|remote)_nonnull_string (\S+);/) { - push(@args_list, "const char *$2"); - push(@setters_list, "args.$2 = (char *)$2;"); + push(@args_check_list, { name => "\"$arg_name\"", arg => "${arg_name}len", limit => $2 }); + } elsif ($args_member =~ m/^(?:admin|remote)_nonnull_string (\S+);/) { + push(@args_list, "const char *$1"); + push(@setters_list, "args.$1 = (char *)$1;"); } elsif ($args_member =~ m/^opaque (\S+)<(\S+)>;(.*)$/) { my $type_name = "const char *"; my $arg_name = $1; @@ -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}_len = ${arg_name}len;"); push(@args_check_list, { name => "\"$arg_name\"", arg => "${arg_name}len", limit => $limit }); - } elsif ($args_member =~ m/^(admin|remote)_string (\S+)<(\S+)>;/) { - my $arg_name = $2; - my $limit = $3; + } elsif ($args_member =~ m/^(?:admin|remote)_string (\S+)<(\S+)>;/) { + my $arg_name = $1; + my $limit = $2; push(@args_list, "const char *$arg_name"); push(@args_list, "int ${arg_name}len"); @@ -1312,25 +1312,25 @@ elsif ($mode eq "client") { die "unhandled type for multi-return-value for " . "procedure $call->{name}: $ret_member"; } - } elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<(\S+)>;\s*\/\*\s*insert@(\d+)\s*\*\//) { - splice(@args_list, int($4), 0, ("char **const $2")); - push(@ret_list, "rv = ret.$2.$2_len;"); + } elsif ($ret_member =~ m/^(?:admin|remote)_nonnull_string (\S+)<(\S+)>;\s*\/\*\s*insert@(\d+)\s*\*\//) { + splice(@args_list, int($3), 0, ("char **const $1")); + push(@ret_list, "rv = ret.$1.$1_len;"); $single_ret_var = "int rv = -1"; $single_ret_type = "int"; $single_ret_as_list = 1; - $single_ret_list_name = $2; - $single_ret_list_max_var = "max$2"; - $single_ret_list_max_define = $3; + $single_ret_list_name = $1; + $single_ret_list_max_var = "max$1"; + $single_ret_list_max_define = $2; } elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+)<\S+>;/) { # error out on unannotated arrays die "$1_nonnull_string array without insert@ annotation: $ret_member"; - } elsif ($ret_member =~ m/^(admin|remote)_nonnull_string (\S+);/) { - push(@ret_list, "rv = ret.$2;"); + } elsif ($ret_member =~ m/^(?:admin|remote)_nonnull_string (\S+);/) { + push(@ret_list, "rv = ret.$1;"); $single_ret_var = "char *rv = NULL"; $single_ret_type = "char *"; - } elsif ($ret_member =~ m/^(admin|remote)_string (\S+);/) { - push(@ret_list, "rv = ret.$2 ? *ret.$2 : NULL;"); - push(@ret_list, "VIR_FREE(ret.$2);"); + } elsif ($ret_member =~ m/^(?:admin|remote)_string (\S+);/) { + push(@ret_list, "rv = ret.$1 ? *ret.$1 : NULL;"); + push(@ret_list, "VIR_FREE(ret.$1);"); $single_ret_var = "char *rv = NULL"; $single_ret_type = "char *"; } elsif ($ret_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|node_device|interface|secret|nwfilter|domain_snapshot) (\S+);/) {