From 1b655b61c9bd70a9c872521ac01fa35fc415ab71 Mon Sep 17 00:00:00 2001 From: Ryo Nakamura Date: Thu, 27 Feb 2025 14:36:06 +0900 Subject: [PATCH] fix -q to redirect stdout to /dev/null (#30) --- src/main.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index d3c15fb..8d941a2 100644 --- a/src/main.c +++ b/src/main.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -311,6 +312,24 @@ long atol_with_unit(char *value, bool i) return v * factor; } +int to_dev_null(int fd) +{ + int nfd = open("/dev/null", O_WRONLY); + if (nfd < 0) { + pr_err("open /dev/null: %s", strerrno()); + return -1; + } + + if (dup2(nfd, fd) < 0) { + pr_err("dup2: %s", strerrno()); + return -1; + } + + close(nfd); + + return 0; +} + int main(int argc, char **argv) { struct mscp_ssh_opts s; @@ -320,7 +339,7 @@ int main(int argc, char **argv) int ch, n, i, ret; int direction = 0; char *remote = NULL, *checkpoint_save = NULL, *checkpoint_load = NULL; - bool dryrun = false, resume = false; + bool quiet = false, dryrun = false, resume = false; int nr_options = 0; memset(&s, 0, sizeof(s)); @@ -378,7 +397,7 @@ int main(int argc, char **argv) o.severity++; break; case 'q': - o.severity = MSCP_SEVERITY_NONE; + quiet = true; break; case 'D': dryrun = true; @@ -441,6 +460,9 @@ int main(int argc, char **argv) } } + if (quiet) + to_dev_null(STDOUT_FILENO); + s.password = getenv(ENV_SSH_AUTH_PASSWORD); s.passphrase = getenv(ENV_SSH_AUTH_PASSPHRASE);