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*\*\//) {
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);
} 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@<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") {
# 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+);/) {
} 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*\*\//) {
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;
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");
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@<offset> 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+);/) {