From: Masatake YAMATO Date: Thu, 14 Oct 2021 13:51:49 +0000 (+0900) Subject: lsfd: (helper) add "offset" parameter to ro-regular-file factory X-Git-Tag: v2.38-rc1~144^2~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6d201bcb508b276bd1725609366e692d42d1aac3;p=thirdparty%2Futil-linux.git lsfd: (helper) add "offset" parameter to ro-regular-file factory Signed-off-by: Masatake YAMATO --- diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c index d318aff2b8..c5d67a0113 100644 --- a/tests/helpers/test_mkfds.c +++ b/tests/helpers/test_mkfds.c @@ -222,12 +222,23 @@ static void open_ro_regular_file(const struct factory *factory, struct fdesc fde int argc, char ** argv) { struct arg file = decode_arg("file", factory->params, argc, argv); + struct arg offset = decode_arg("offset", factory->params, argc, argv); int fd = open(ARG_STRING(file), O_RDONLY); if (fd < 0) err(EXIT_FAILURE, "failed to open: %s", ARG_STRING(file)); free_arg(&file); + if (ARG_INTEGER(offset) != 0) { + if (lseek(fd, (off_t)ARG_INTEGER(offset), SEEK_CUR) < 0) { + int e = errno; + close(fd); + errno = e; + err(EXIT_FAILURE, "failed to seek 0 -> %ld", ARG_INTEGER(offset)); + } + } + free_arg(&offset); + if (dup2(fd, fdescs[0].fd) < 0) { int e = errno; close(fd); @@ -305,6 +316,12 @@ static const struct factory factories[] = { .desc = "file to be opened", .defv.string = "/etc/passwd", }, + { + .name = "offset", + .type = PTYPE_INTEGER, + .desc = "seek bytes after open with SEEK_CUR", + .defv.integer = 0, + }, PARAM_END }, },