git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
inspect: Abstract the wrapper that sets up Augeas.
[libguestfs.git]
/
generator
/
generator_daemon.ml
diff --git
a/generator/generator_daemon.ml
b/generator/generator_daemon.ml
index
4ac2a6e
..
e3d87e5
100644
(file)
--- a/
generator/generator_daemon.ml
+++ b/
generator/generator_daemon.ml
@@
-33,7
+33,7
@@
open Generator_c
let generate_daemon_actions_h () =
generate_header CStyle GPLv2plus;
let generate_daemon_actions_h () =
generate_header CStyle GPLv2plus;
- pr "#include \"
../src/
guestfs_protocol.h\"\n";
+ pr "#include \"guestfs_protocol.h\"\n";
pr "\n";
List.iter (
pr "\n";
List.iter (
@@
-58,17
+58,20
@@
and generate_daemon_actions () =
pr "\n";
pr "#include \"daemon.h\"\n";
pr "#include \"c-ctype.h\"\n";
pr "\n";
pr "#include \"daemon.h\"\n";
pr "#include \"c-ctype.h\"\n";
- pr "#include \"
../src/
guestfs_protocol.h\"\n";
+ pr "#include \"guestfs_protocol.h\"\n";
pr "#include \"actions.h\"\n";
pr "\n";
List.iter (
pr "#include \"actions.h\"\n";
pr "\n";
List.iter (
- fun (name, style, _, _, _, _, _) ->
+ fun (name, (ret, args, optargs), _, _, _, _, _) ->
+ if optargs <> [] then
+ failwithf "optional arguments not supported in the daemon yet";
+
(* Generate server-side stubs. *)
pr "static void %s_stub (XDR *xdr_in)\n" name;
pr "{\n";
let error_code =
(* Generate server-side stubs. *)
pr "static void %s_stub (XDR *xdr_in)\n" name;
pr "{\n";
let error_code =
- match
fst style
with
+ match
ret
with
| RErr | RInt _ -> pr " int r;\n"; "-1"
| RInt64 _ -> pr " int64_t r;\n"; "-1"
| RBool _ -> pr " int r;\n"; "-1"
| RErr | RInt _ -> pr " int r;\n"; "-1"
| RInt64 _ -> pr " int64_t r;\n"; "-1"
| RBool _ -> pr " int r;\n"; "-1"
@@
-83,7
+86,7
@@
and generate_daemon_actions () =
pr " char *r;\n";
"NULL" in
pr " char *r;\n";
"NULL" in
- (match
snd style
with
+ (match
args
with
| [] -> ()
| args ->
pr " struct guestfs_%s_args args;\n" name;
| [] -> ()
| args ->
pr " struct guestfs_%s_args args;\n" name;
@@
-102,14
+105,15
@@
and generate_daemon_actions () =
| BufferIn n ->
pr " const char *%s;\n" n;
pr " size_t %s_size;\n" n
| BufferIn n ->
pr " const char *%s;\n" n;
pr " size_t %s_size;\n" n
+ | Pointer _ -> assert false
) args
);
pr "\n";
let is_filein =
) args
);
pr "\n";
let is_filein =
- List.exists (function FileIn _ -> true | _ -> false)
(snd style)
in
+ List.exists (function FileIn _ -> true | _ -> false)
args
in
- (match
snd style
with
+ (match
args
with
| [] -> ()
| args ->
pr " memset (&args, 0, sizeof args);\n";
| [] -> ()
| args ->
pr " memset (&args, 0, sizeof args);\n";
@@
-171,12
+175,13
@@
and generate_daemon_actions () =
| BufferIn n ->
pr " %s = args.%s.%s_val;\n" n n n;
pr " %s_size = args.%s.%s_len;\n" n n n
| BufferIn n ->
pr " %s = args.%s.%s_val;\n" n n n;
pr " %s_size = args.%s.%s_len;\n" n n n
+ | Pointer _ -> assert false
) args;
pr "\n"
);
(* this is used at least for do_equal *)
) args;
pr "\n"
);
(* this is used at least for do_equal *)
- if List.exists (function Pathname _ -> true | _ -> false)
(snd style)
then (
+ if List.exists (function Pathname _ -> true | _ -> false)
args
then (
(* Emit NEED_ROOT just once, even when there are two or
more Pathname args *)
pr " NEED_ROOT (%s, goto done);\n"
(* Emit NEED_ROOT just once, even when there are two or
more Pathname args *)
pr " NEED_ROOT (%s, goto done);\n"
@@
-187,13
+192,12
@@
and generate_daemon_actions () =
* parameters, since these go "outside" the RPC protocol.
*)
let args' =
* parameters, since these go "outside" the RPC protocol.
*)
let args' =
- List.filter (function FileIn _ | FileOut _ -> false | _ -> true)
- (snd style) in
+ List.filter (function FileIn _ | FileOut _ -> false | _ -> true) args in
pr " r = do_%s " name;
pr " r = do_%s " name;
- generate_c_call_args (
fst style, args'
);
+ generate_c_call_args (
ret, args', optargs
);
pr ";\n";
pr ";\n";
- (match
fst style
with
+ (match
ret
with
| RErr | RInt _ | RInt64 _ | RBool _
| RConstString _ | RConstOptString _
| RString _ | RStringList _ | RHashtable _
| RErr | RInt _ | RInt64 _ | RBool _
| RConstString _ | RConstOptString _
| RString _ | RStringList _ | RHashtable _
@@
-216,11
+220,11
@@
and generate_daemon_actions () =
* send its own reply.
*)
let no_reply =
* send its own reply.
*)
let no_reply =
- List.exists (function FileOut _ -> true | _ -> false)
(snd style)
in
+ List.exists (function FileOut _ -> true | _ -> false)
args
in
if no_reply then
pr " /* do_%s has already sent a reply */\n" name
else (
if no_reply then
pr " /* do_%s has already sent a reply */\n" name
else (
- match
fst style
with
+ match
ret
with
| RErr -> pr " reply (NULL, NULL);\n"
| RInt n | RInt64 n | RBool n ->
pr " struct guestfs_%s_ret ret;\n" name;
| RErr -> pr " reply (NULL, NULL);\n"
| RInt n | RInt64 n | RBool n ->
pr " struct guestfs_%s_ret ret;\n" name;
@@
-267,7
+271,7
@@
and generate_daemon_actions () =
(* Free the args. *)
pr "done:\n";
(* Free the args. *)
pr "done:\n";
- (match
snd style
with
+ (match
args
with
| [] -> ()
| _ ->
pr " xdr_free ((xdrproc_t) xdr_guestfs_%s_args, (char *) &args);\n"
| [] -> ()
| _ ->
pr " xdr_free ((xdrproc_t) xdr_guestfs_%s_args, (char *) &args);\n"
@@
-283,7
+287,7
@@
and generate_daemon_actions () =
pr " switch (proc_nr) {\n";
List.iter (
pr " switch (proc_nr) {\n";
List.iter (
- fun (name,
style
, _, _, _, _, _) ->
+ fun (name,
_
, _, _, _, _, _) ->
pr " case GUESTFS_PROC_%s:\n" (String.uppercase name);
pr " %s_stub (xdr_in);\n" name;
pr " break;\n"
pr " case GUESTFS_PROC_%s:\n" (String.uppercase name);
pr " %s_stub (xdr_in);\n" name;
pr " break;\n"