X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftty-ask-password-agent%2Ftty-ask-password-agent.c;h=fa8448cfaec51128ec54b7e56d899b91068e00e1;hb=7dcd79c295fb1f4bcdda5ead43739acf34100ef8;hp=8a02fb0b5e72c1e82ecab28b124c576b72028265;hpb=1d749d044bf0e95697b6649e046aab82b0f02aa0;p=elogind.git diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index 8a02fb0b5..fa8448cfa 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -90,10 +90,8 @@ static int ask_password_plymouth( return -errno; r = connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)); - if (r < 0) { - log_error("Failed to connect to Plymouth: %m"); - return -errno; - } + if (r < 0) + return log_error_errno(errno, "Failed to connect to Plymouth: %m"); if (accept_cached) { packet = strdup("c"); @@ -183,7 +181,7 @@ static int ask_password_plymouth( uint32_t size; char **l; - /* One ore more answers */ + /* One or more answers */ if (p < 5) continue; @@ -214,7 +212,7 @@ static int parse_password(const char *filename, char **wall) { _cleanup_free_ char *socket_name = NULL, *message = NULL, *packet = NULL; uint64_t not_after = 0; unsigned pid = 0; - bool accept_cached = false; + bool accept_cached = false, echo = false; const ConfigTableItem items[] = { { "Ask", "Socket", config_parse_string, 0, &socket_name }, @@ -222,6 +220,7 @@ static int parse_password(const char *filename, char **wall) { { "Ask", "Message", config_parse_string, 0, &message }, { "Ask", "PID", config_parse_unsigned, 0, &pid }, { "Ask", "AcceptCached", config_parse_bool, 0, &accept_cached }, + { "Ask", "Echo", config_parse_bool, 0, &echo }, {} }; @@ -314,7 +313,7 @@ static int parse_password(const char *filename, char **wall) { return tty_fd; } - r = ask_password_tty(message, not_after, filename, &password); + r = ask_password_tty(message, not_after, echo, filename, &password); if (arg_console) { safe_close(tty_fd); @@ -337,16 +336,12 @@ static int parse_password(const char *filename, char **wall) { /* If the query went away, that's OK */ return 0; - if (r < 0) { - log_error("Failed to query password: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Failed to query password: %m"); socket_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); - if (socket_fd < 0) { - log_error("socket(): %m"); - return -errno; - } + if (socket_fd < 0) + return log_error_errno(errno, "socket(): %m"); sa.un.sun_family = AF_UNIX; strncpy(sa.un.sun_path, socket_name, sizeof(sa.un.sun_path)); @@ -354,7 +349,7 @@ static int parse_password(const char *filename, char **wall) { r = sendto(socket_fd, packet, packet_length, MSG_NOSIGNAL, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(socket_name)); if (r < 0) { - log_error("Failed to send: %m"); + log_error_errno(errno, "Failed to send: %m"); return r; } } @@ -429,7 +424,7 @@ static int show_passwords(void) { if (errno == ENOENT) return 0; - log_error("opendir(/run/systemd/ask-password): %m"); + log_error_errno(errno, "opendir(/run/systemd/ask-password): %m"); return -errno; } @@ -503,7 +498,7 @@ static int watch_passwords(void) { for (;;) { r = show_passwords(); if (r < 0) - log_error("Failed to show password: %s", strerror(-r)); + log_error_errno(r, "Failed to show password: %m"); if (poll(pollfd, _FD_MAX, -1) < 0) { if (errno == EINTR) @@ -641,7 +636,7 @@ int main(int argc, char *argv[]) { r = show_passwords(); if (r < 0) - log_error("Error: %s", strerror(-r)); + log_error_errno(r, "Error: %m"); finish: return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;