84 lines
3.5 KiB
Diff
84 lines
3.5 KiB
Diff
From e4d9ee3fbc58c5993db0c75c647fdf904c520918 Mon Sep 17 00:00:00 2001
|
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
Date: Tue, 12 Aug 2025 14:04:42 +0100
|
|
Subject: [PATCH] generator: Allow StringList(Pathname) parameters
|
|
|
|
This was previously not implemented. It just requires us to call
|
|
ABS_PATH on each parameter. ABS_PATH checks the parameter is an
|
|
absolute path.
|
|
---
|
|
generator/checks.ml | 1 -
|
|
generator/daemon.ml | 16 ++++++++++++----
|
|
2 files changed, 12 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/generator/checks.ml b/generator/checks.ml
|
|
index d64d49d66..4207c0677 100644
|
|
--- a/generator/checks.ml
|
|
+++ b/generator/checks.ml
|
|
@@ -166,7 +166,6 @@ let () =
|
|
| StringList (FileIn, _)
|
|
| StringList (FileOut, _)
|
|
| StringList (Mountable, _)
|
|
- | StringList (Pathname, _)
|
|
| StringList (Dev_or_Path, _)
|
|
| StringList (Mountable_or_Path, _)
|
|
| StringList (Key, _)
|
|
diff --git a/generator/daemon.ml b/generator/daemon.ml
|
|
index 2b74f3059..6197288df 100644
|
|
--- a/generator/daemon.ml
|
|
+++ b/generator/daemon.ml
|
|
@@ -173,7 +173,7 @@ let generate_daemon_stubs actions () =
|
|
| String ((Mountable|Mountable_or_Path), n) ->
|
|
pr " CLEANUP_FREE_MOUNTABLE mountable_t %s\n" n;
|
|
pr " = { .device = NULL, .volume = NULL };\n"
|
|
- | StringList ((PlainString|Filename), n) ->
|
|
+ | StringList ((PlainString|Filename|Pathname), n) ->
|
|
pr " char **%s;\n" n
|
|
| StringList (Device, n) ->
|
|
pr " CLEANUP_FREE_STRING_LIST char **%s = NULL;\n" n
|
|
@@ -184,7 +184,7 @@ let generate_daemon_stubs actions () =
|
|
pr " const char *%s;\n" n;
|
|
pr " size_t %s_size;\n" n
|
|
| String ((FileIn|FileOut|Filename), _)
|
|
- | StringList ((Mountable|Pathname|FileIn|FileOut|Key|GUID
|
|
+ | StringList ((Mountable|FileIn|FileOut|Key|GUID
|
|
|Dev_or_Path|Mountable_or_Path), _)
|
|
| Pointer _ -> assert false
|
|
) args_passed_to_daemon
|
|
@@ -260,7 +260,7 @@ let generate_daemon_stubs actions () =
|
|
n n is_filein;
|
|
| String ((PlainString|Key|GUID), n) -> pr_args n
|
|
| OptString n -> pr " %s = args.%s ? *args.%s : NULL;\n" n n n
|
|
- | StringList ((PlainString|Filename) as arg, n) ->
|
|
+ | StringList ((PlainString|Filename|Pathname) as arg, n) ->
|
|
(match arg with
|
|
| Filename ->
|
|
pr " {\n";
|
|
@@ -275,6 +275,14 @@ let generate_daemon_stubs actions () =
|
|
pr " }\n";
|
|
pr " }\n";
|
|
pr " }\n"
|
|
+ | Pathname ->
|
|
+ pr " {\n";
|
|
+ pr " size_t i;\n";
|
|
+ pr " for (i = 0; i < args.%s.%s_len; ++i) {\n" n n;
|
|
+ pr " ABS_PATH (args.%s.%s_val[i], %b, return);\n"
|
|
+ n n is_filein;
|
|
+ pr " }\n";
|
|
+ pr " }\n"
|
|
| _ -> ()
|
|
);
|
|
pr " /* Ugly, but safe and avoids copying the strings. */\n";
|
|
@@ -307,7 +315,7 @@ let generate_daemon_stubs actions () =
|
|
pr " %s = args.%s.%s_val;\n" n n n;
|
|
pr " %s_size = args.%s.%s_len;\n" n n n
|
|
| String ((FileIn|FileOut|Filename), _)
|
|
- | StringList ((Mountable|Pathname|FileIn|FileOut|Key|GUID
|
|
+ | StringList ((Mountable|FileIn|FileOut|Key|GUID
|
|
|Dev_or_Path|Mountable_or_Path), _)
|
|
| Pointer _ -> assert false
|
|
) args_passed_to_daemon;
|
|
--
|
|
2.47.1
|
|
|