diff --git a/src/cryptsetup.h b/src/cryptsetup.h index 17c2e962..aa908e7f 100644 --- a/src/cryptsetup.h +++ b/src/cryptsetup.h @@ -69,7 +69,7 @@ void clogger(struct crypt_device *cd, int level, const char *file, int line, void tool_log(int level, const char *msg, void *usrptr __attribute__((unused))); void quiet_log(int level, const char *msg, void *usrptr); -int yesDialog(const char *msg, void *usrptr __attribute__((unused))); +int yesDialog(const char *msg, void *usrptr); void show_status(int errcode); const char *uuid_or_device(const char *spec); __attribute__ ((noreturn)) \ diff --git a/src/utils_tools.c b/src/utils_tools.c index ef361cbd..3c35e6ce 100644 --- a/src/utils_tools.c +++ b/src/utils_tools.c @@ -128,12 +128,12 @@ void quiet_log(int level, const char *msg, void *usrptr) tool_log(level, msg, usrptr); } -int yesDialog(const char *msg, void *usrptr) +static int _dialog(const char *msg, void *usrptr, int default_answer) { const char *fail_msg = (const char *)usrptr; char *answer = NULL; size_t size = 0; - int r = 1, block; + int r = default_answer, block; block = tools_signals_blocked(); if (block) @@ -150,9 +150,9 @@ int yesDialog(const char *msg, void *usrptr) log_err(_("Error reading response from terminal.")); else log_dbg("Query interrupted on signal."); - } else if (strcmp(answer, "YES\n")) { - r = 0; - if (fail_msg) + } else { + r = !strcmp(answer, "YES\n"); + if (!r && fail_msg) log_err("%s", fail_msg); } } @@ -164,6 +164,11 @@ int yesDialog(const char *msg, void *usrptr) return r; } +int yesDialog(const char *msg, void *usrptr) +{ + return _dialog(msg, usrptr, 1); +} + void show_status(int errcode) { char *crypt_error;