xsel

Program for manipulating the X clipboard
git clone https://git.sinitax.com/kfish/xsel
Log | Files | Refs | README | LICENSE | sfeed.txt

commit f55ee4ade3427a75bf6dae3b1e20abf6d8e18e0c
parent aa7f57eed805adb09e9c59c8ea841870e8206b81
Author: Carlos Maddela <e7appew@gmail.com>
Date:   Thu, 30 Mar 2017 04:41:15 +1100

Perform fstat on stdin and stdout only if required.

Diffstat:
Mxsel.c | 24++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/xsel.c b/xsel.c @@ -2117,18 +2117,22 @@ main(int argc, char *argv[]) exit (0); } - if (fstat (0, &in_statbuf) == -1) { - exit_err ("fstat error on stdin"); - } - if (fstat (1, &out_statbuf) == -1) { - exit_err ("fstat error on stdout"); + if (do_input || force_input) { + if (fstat (0, &in_statbuf) == -1) { + exit_err ("fstat error on stdin"); + } + if (S_ISDIR(in_statbuf.st_mode)) { + exit_err ("-: Is a directory\n"); + } } - if (S_ISDIR(in_statbuf.st_mode)) { - exit_err ("-: Is a directory\n"); - } - if (S_ISDIR(out_statbuf.st_mode)) { - exit_err ("stdout: Is a directory\n"); + if (do_output || force_output) { + if (fstat (1, &out_statbuf) == -1) { + exit_err ("fstat error on stdout"); + } + if (S_ISDIR(out_statbuf.st_mode)) { + exit_err ("stdout: Is a directory\n"); + } } timeout = timeout_ms * 1000;