]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
remote generator: Handle (unsigned) int arrays
authorLai Jiangshan <laijs@cn.fujitsu.com>
Tue, 7 Jun 2011 09:11:11 +0000 (17:11 +0800)
committerEric Blake <eblake@redhat.com>
Tue, 14 Jun 2011 18:38:41 +0000 (12:38 -0600)
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
daemon/remote_generator.pl

index 365cf7c6cb42967ead237e69b189d99051735725..ce35ebe5f5cb0f4f3b64e75a595f7ab8739019aa 100755 (executable)
@@ -407,6 +407,13 @@ elsif ($opt_b) {
                     }
 
                     push(@args_list, "args->$2.$2_len");
+                } elsif ($args_member =~ m/^(?:unsigned )?int (\S+)<\S+>;/) {
+                    if (! @args_list) {
+                        push(@args_list, "conn");
+                    }
+
+                    push(@args_list, "args->$1.$1_val");
+                    push(@args_list, "args->$1.$1_len");
                 } elsif ($args_member =~ m/^remote_typed_param (\S+)<(\S+)>;/) {
                     push(@vars_list, "virTypedParameterPtr $1 = NULL");
                     push(@vars_list, "int n$1");
@@ -988,6 +995,16 @@ elsif ($opt_k) {
                     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/^((?:unsigned )?int) (\S+)<(\S+)>;/) {
+                    my $type_name = $1;
+                    my $arg_name = $2;
+                    my $limit = $3;
+
+                    push(@args_list, "${type_name} *$arg_name");
+                    push(@args_list, "unsigned int ${arg_name}len");
+                    push(@setters_list, "args.$arg_name.${arg_name}_val = $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/^remote_typed_param (\S+)<(\S+)>;/) {
                     push(@args_list, "virTypedParameterPtr $1");
                     push(@args_list, "int n$1");