snprintf (answer_string, COLS + 1, " ([%s]/%s): ", def ? yes : no, def ? no : yes);
snprintf (answer_string, COLS + 1, " ([%s]/%s): ", def == M_YES ? yes : no, def == M_NO ? no : yes);
int mutt_yesorno (const char *msg, int def){  event_t ch;  char *yes = _("yes");  char *no = _("no");  char *answer_string;  size_t answer_string_len;#ifdef HAVE_LANGINFO_YESEXPR  char *expr;  regex_t reyes;  regex_t reno;  int reyes_ok;  int reno_ok;  char answer[2];  answer[1] = 0;    reyes_ok = (expr = nl_langinfo (YESEXPR)) && expr[0] == '^' &&	     !regcomp (&reyes, expr, REG_NOSUB|REG_EXTENDED);  reno_ok = (expr = nl_langinfo (NOEXPR)) && expr[0] == '^' &&            !regcomp (&reno, expr, REG_NOSUB|REG_EXTENDED);#endif  CLEARLINE(LINES-1);  /*   * In order to prevent the default answer to the question to wrapped   * around the screen in the even the question is wider than the screen,   * ensure there is enough room for the answer and truncate the question   * to fit.   */  answer_string = safe_malloc (COLS + 1);  snprintf (answer_string, COLS + 1, " ([%s]/%s): ", def ? yes : no, def ? no : yes);  answer_string_len = strlen (answer_string);  printw ("%.*s%s", COLS - answer_string_len, msg, answer_string);  FREE (&answer_string);  FOREVER  {    mutt_refresh ();    ch = mutt_getch ();    if (CI_is_return (ch.ch))      break;    if (ch.ch == -1)    {      def = -1;      break;    }#ifdef HAVE_LANGINFO_YESEXPR    answer[0] = ch.ch;    if (reyes_ok ? 	(regexec (& reyes, answer, 0, 0, 0) == 0) :#else    if (#endif	(tolower (ch.ch) == 'y'))    {      def = 1;      break;    }    else if (#ifdef HAVE_LANGINFO_YESEXPR	     reno_ok ?	     (regexec (& reno, answer, 0, 0, 0) == 0) :#endif	     (tolower (ch.ch) == 'n'))    {      def = 0;      break;    }    else    {      BEEP();    }  }#ifdef HAVE_LANGINFO_YESEXPR      if (reyes_ok)    regfree (& reyes);  if (reno_ok)    regfree (& reno);#endif  if (def >= 0)  {    addstr ((char *) (def ? yes : no));    mutt_refresh ();  }  return (def);}