diff options
author | Lennart Poettering <lennart@poettering.net> | 2021-06-23 13:45:31 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2021-06-24 13:25:39 +0200 |
commit | b80ef40cafad78173cc87274b026c50badbd504a (patch) | |
tree | 6c6f053f79b6163fbbdfa02c29b24f36a2944555 /src/ask-password | |
parent | Merge pull request #20002 from yuwata/sd-dhcp-client-ignore-forcerenew (diff) | |
download | systemd-b80ef40cafad78173cc87274b026c50badbd504a.tar.xz systemd-b80ef40cafad78173cc87274b026c50badbd504a.zip |
ask-password: add "-n" switch for disabling trailing newline
This is similar to the "-n" switch of the "echo" command.
Diffstat (limited to 'src/ask-password')
-rw-r--r-- | src/ask-password/ask-password.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/ask-password/ask-password.c b/src/ask-password/ask-password.c index 6a09a9a35c..45305dec1f 100644 --- a/src/ask-password/ask-password.c +++ b/src/ask-password/ask-password.c @@ -24,6 +24,7 @@ static usec_t arg_timeout = DEFAULT_TIMEOUT_USEC; static bool arg_multiple = false; static bool arg_no_output = false; static AskPasswordFlags arg_flags = ASK_PASSWORD_PUSH_CACHE; +static bool arg_newline = true; STATIC_DESTRUCTOR_REGISTER(arg_message, freep); @@ -54,6 +55,8 @@ static int help(void) { " --accept-cached Accept cached passwords\n" " --multiple List multiple passwords if available\n" " --no-output Do not print password to standard output\n" + " -n Do not suffix password written to standard output with\n" + " newline\n" "\nSee the %2$s for details.\n", program_invocation_short_name, link, @@ -104,7 +107,7 @@ static int parse_argv(int argc, char *argv[]) { /* Note the asymmetry: the long option --echo= allows an optional argument, the short option does * not. */ - while ((c = getopt_long(argc, argv, "+he", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "+hen", options, NULL)) >= 0) switch (c) { @@ -177,6 +180,10 @@ static int parse_argv(int argc, char *argv[]) { arg_credential_name = optarg; break; + case 'n': + arg_newline = false; + break; + case '?': return -EINVAL; @@ -237,8 +244,14 @@ static int run(int argc, char *argv[]) { return log_error_errno(r, "Failed to query password: %m"); STRV_FOREACH(p, l) { - if (!arg_no_output) - puts(*p); + if (!arg_no_output) { + if (arg_newline) + puts(*p); + else + fputs(*p, stdout); + } + + fflush(stdout); if (!arg_multiple) break; |