]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
test: (mkfds::make-regular-file) add a parameter for writing some bytes
authorMasatake YAMATO <yamato@redhat.com>
Tue, 4 Jul 2023 16:54:54 +0000 (01:54 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Wed, 5 Jul 2023 04:51:11 +0000 (13:51 +0900)
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
tests/helpers/test_mkfds.c

index 3d7c9a88a2b7d8404ea7ddc30d092d88f24ad57b..fe3c35ad4e46436ad61913c32dfffdcfafd0dd9d 100644 (file)
@@ -401,6 +401,13 @@ static void *make_w_regular_file(const struct factory *factory, struct fdesc fde
        struct arg delete = decode_arg("delete", factory->params, argc, argv);
        bool bDelete = ARG_BOOLEAN(delete);
 
+       struct arg write_bytes = decode_arg("write-bytes", factory->params, argc, argv);
+       int iWrite_bytes = ARG_INTEGER(write_bytes);
+
+       if (iWrite_bytes < 0)
+               err(EXIT_FAILURE, "write-bytes must be a positive number or zero.");
+
+       free_arg(&write_bytes);
        free_arg(&delete);
        free_arg(&file);
 
@@ -432,6 +439,17 @@ static void *make_w_regular_file(const struct factory *factory, struct fdesc fde
                fname = NULL;
        }
 
+       for (int i = 0; i < iWrite_bytes; i++) {
+               if (write(fd, "z", 1) != 1) {
+                       int e = errno;
+                       close(fd);
+                       if (fname)
+                               unlink(fname);
+                       errno = e;
+                       err(EXIT_FAILURE, "failed to write");
+               }
+       }
+
        fdescs[0] = (struct fdesc){
                .fd    = fdescs[0].fd,
                .close = bDelete? close_fdesc: unlink_and_close_fdesc,
@@ -2627,6 +2645,12 @@ static const struct factory factories[] = {
                                .desc = "delete the file just after making it",
                                .defv.boolean = false,
                        },
+                       {
+                               .name = "write-bytes",
+                               .type = PTYPE_INTEGER,
+                               .desc = "write something (> 0)",
+                               .defv.integer = 0,
+                       },
                        PARAM_END
                },
        },