From: olegrok@tarantool.org To: imun@tarantool.org, v.shpilevoy@tarantool.org Cc: tarantool-patches@dev.tarantool.org Subject: [Tarantool-patches] [PATCH] fio: provide access to stdin/stdout/stderr Date: Sat, 4 Apr 2020 12:53:15 +0300 [thread overview] Message-ID: <20200404095315.32905-1-olegrok@tarantool.org> (raw) From: Oleg Babin <babinoleg@mail.ru> This patch introduces fio API for interaction with stdin/stdout/stderr streams. Closes #1338 @TarantoolBot document Title: fio provides access to stdin/stdout/stderr Now access to standard streams is available via: * fio.stdin * fio.stdout * fio.stderr Each of this streams have usual fio file interface. Example: ```lua fio.stdin:read(5) -- read 5 bytes from stdin fio.stdout:write("Hello") -- write "Hello" to stdout fio.stderr:write("Error") -- write "Error" to stderr ``` --- Issue: https://github.com/tarantool/tarantool/issues/1338 Branch: https://github.com/tarantool/tarantool/tree/olegrok/1338-fio-std-streams @ChangeLog - fio provides access to stdin/stdout/stderr (gh-1338) src/lua/fio.lua | 10 ++++++++++ test/app/fio.result | 27 +++++++++++++++++++++++++++ test/app/fio.test.lua | 11 +++++++++++ 3 files changed, 48 insertions(+) diff --git a/src/lua/fio.lua b/src/lua/fio.lua index 83fddaa0a..1eaa085ae 100644 --- a/src/lua/fio.lua +++ b/src/lua/fio.lua @@ -17,6 +17,12 @@ ffi.cdef[[ }; ]] +local filenos = { + STDIN = 0, + STDOUT = 1, + STDERR = 2, +} + local const_char_ptr_t = ffi.typeof('const char *') local internal = fio.internal @@ -522,6 +528,10 @@ fio.utime = function(path, atime, mtime) return internal.utime(path, atime, mtime) end +fio.stdin = ffi.new('struct fio_handle', filenos.STDIN) +fio.stdout = ffi.new('struct fio_handle', filenos.STDOUT) +fio.stderr = ffi.new('struct fio_handle', filenos.STDERR) + fio.path = {} fio.path.is_file = function(filename) local fs = fio.stat(filename) diff --git a/test/app/fio.result b/test/app/fio.result index 783fa4fab..3c6649c8b 100644 --- a/test/app/fio.result +++ b/test/app/fio.result @@ -1524,3 +1524,30 @@ tmpdir = nil os.setenv('TMPDIR', old_tmpdir) --- ... +-- +-- gh-1338: provide access to stdin/stdout/stderr +-- +fio.stdin.fh == 0 +--- +- true +... +fio.stdout.fh == 1 +--- +- true +... +fio.stderr.fh == 2 +--- +- true +... +fio.stdin:read(0) +--- +- +... +fio.stdout:write('\0') +--- +- true +... +fio.stderr:write('\0') +--- +- true +... diff --git a/test/app/fio.test.lua b/test/app/fio.test.lua index 6825b882f..f55747c18 100644 --- a/test/app/fio.test.lua +++ b/test/app/fio.test.lua @@ -502,3 +502,14 @@ fio.tempdir() tmpdir = nil os.setenv('TMPDIR', old_tmpdir) + +-- +-- gh-1338: provide access to stdin/stdout/stderr +-- +fio.stdin.fh == 0 +fio.stdout.fh == 1 +fio.stderr.fh == 2 + +fio.stdin:read(0) +fio.stdout:write('\0') +fio.stderr:write('\0') -- 2.23.0
next reply other threads:[~2020-04-04 9:53 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-04 9:53 olegrok [this message] 2020-04-26 17:47 ` Vladislav Shpilevoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200404095315.32905-1-olegrok@tarantool.org \ --to=olegrok@tarantool.org \ --cc=imun@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH] fio: provide access to stdin/stdout/stderr' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox