]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsfd: (helper) add "dir" parameter to directory factory
authorMasatake YAMATO <yamato@redhat.com>
Thu, 14 Oct 2021 15:01:49 +0000 (00:01 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Thu, 21 Oct 2021 12:06:39 +0000 (21:06 +0900)
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
tests/helpers/test_mkfds.c

index c5d67a0113322e50d95440a38d22d87e69583dda..5b5b39de9f6106edabe5a195321baaa6a2069b61 100644 (file)
@@ -277,14 +277,15 @@ static void make_pipe(const struct factory *factory _U_, struct fdesc fdescs[],
        }
 }
 
-static void open_directory(const struct factory *factory _U_, struct fdesc fdescs[], pid_t * child _U_,
-                          int argc _U_, char ** argv _U_)
+static void open_directory(const struct factory *factory, struct fdesc fdescs[], pid_t * child _U_,
+                          int argc, char ** argv)
 {
-       const char *dir = "/";
+       struct arg dir = decode_arg("dir", factory->params, argc, argv);
 
-       int fd = open(dir, O_RDONLY|O_DIRECTORY);
+       int fd = open(ARG_STRING(dir), O_RDONLY|O_DIRECTORY);
        if (fd < 0)
-               err(EXIT_FAILURE, "failed to open: %s", dir);
+               err(EXIT_FAILURE, "failed to open: %s", ARG_STRING(dir));
+       free_arg(&dir);
 
        if (dup2(fd, fdescs[0].fd) < 0) {
                int e = errno;
@@ -335,11 +336,20 @@ static const struct factory factories[] = {
        },
        {
                .name = "directory",
-               .desc = "directory (/)",
+               .desc = "directory",
                .priv = false,
                .N    = 1,
                .fork = false,
-               .make = open_directory
+               .make = open_directory,
+               .params = (struct parameter []) {
+                       {
+                               .name = "dir",
+                               .type = PTYPE_STRING,
+                               .desc = "directory to be opened",
+                               .defv.string = "/",
+                       },
+                       PARAM_END
+               },
        },
 };