aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/message.c190
1 files changed, 95 insertions, 95 deletions
diff --git a/src/message.c b/src/message.c
index 402b899dd8..897c6a21ff 100644
--- a/src/message.c
+++ b/src/message.c
@@ -2846,7 +2846,6 @@ static char_u *msg_show_console_dialog(char_u *message, char_u *buttons, int dfl
char_u *msgp = NULL;
char_u *hotkp = NULL;
char_u *r;
- int copy;
#define HAS_HOTKEY_LEN 30
char_u has_hotkey[HAS_HOTKEY_LEN];
int first_hotkey = FALSE; /* first char of button is hotkey */
@@ -2854,110 +2853,111 @@ static char_u *msg_show_console_dialog(char_u *message, char_u *buttons, int dfl
has_hotkey[0] = FALSE;
- /*
- * First loop: compute the size of memory to allocate.
- * Second loop: copy to the allocated memory.
- */
- for (copy = 0; copy <= 1; ++copy) {
- r = buttons;
- idx = 0;
- while (*r) {
- if (*r == DLG_BUTTON_SEP) {
- if (copy) {
- *msgp++ = ',';
- *msgp++ = ' '; /* '\n' -> ', ' */
-
- /* advance to next hotkey and set default hotkey */
- if (has_mbyte)
- hotkp += STRLEN(hotkp);
- else
- ++hotkp;
- hotkp[copy_char(r + 1, hotkp, TRUE)] = NUL;
- if (dfltbutton)
- --dfltbutton;
-
- /* If no hotkey is specified first char is used. */
- if (idx < HAS_HOTKEY_LEN - 1 && !has_hotkey[++idx])
- first_hotkey = TRUE;
- } else {
- len += 3; /* '\n' -> ', '; 'x' -> '(x)' */
- lenhotkey += HOTK_LEN; /* each button needs a hotkey */
- if (idx < HAS_HOTKEY_LEN - 1)
- has_hotkey[++idx] = FALSE;
- }
- } else if (*r == DLG_HOTKEY_CHAR || first_hotkey) {
- if (*r == DLG_HOTKEY_CHAR)
- ++r;
- first_hotkey = FALSE;
- if (copy) {
- if (*r == DLG_HOTKEY_CHAR) /* '&&a' -> '&a' */
- *msgp++ = *r;
- else {
- /* '&a' -> '[a]' */
- *msgp++ = (dfltbutton == 1) ? '[' : '(';
- msgp += copy_char(r, msgp, FALSE);
- *msgp++ = (dfltbutton == 1) ? ']' : ')';
-
- /* redefine hotkey */
- hotkp[copy_char(r, hotkp, TRUE)] = NUL;
- }
- } else {
- ++len; /* '&a' -> '[a]' */
- if (idx < HAS_HOTKEY_LEN - 1)
- has_hotkey[idx] = TRUE;
- }
- } else {
- /* everything else copy literally */
- if (copy)
- msgp += copy_char(r, msgp, FALSE);
- }
-
- /* advance to the next character */
- mb_ptr_adv(r);
+ // Compute the size of memory to allocate.
+ r = buttons;
+ idx = 0;
+ while (*r) {
+ if (*r == DLG_BUTTON_SEP) {
+ len += 3; /* '\n' -> ', '; 'x' -> '(x)' */
+ lenhotkey += HOTK_LEN; /* each button needs a hotkey */
+ if (idx < HAS_HOTKEY_LEN - 1)
+ has_hotkey[++idx] = FALSE;
+ } else if (*r == DLG_HOTKEY_CHAR || first_hotkey) {
+ if (*r == DLG_HOTKEY_CHAR)
+ ++r;
+ first_hotkey = FALSE;
+ ++len; /* '&a' -> '[a]' */
+ if (idx < HAS_HOTKEY_LEN - 1)
+ has_hotkey[idx] = TRUE;
}
- if (copy) {
- *msgp++ = ':';
- *msgp++ = ' ';
- *msgp = NUL;
- } else {
- len += (int)(STRLEN(message)
- + 2 /* for the NL's */
- + STRLEN(buttons)
- + 3); /* for the ": " and NUL */
- lenhotkey++; /* for the NUL */
-
- /* If no hotkey is specified first char is used. */
- if (!has_hotkey[0]) {
- first_hotkey = TRUE;
- len += 2; /* "x" -> "[x]" */
- }
+ /* advance to the next character */
+ mb_ptr_adv(r);
+ }
- /*
- * Now allocate and load the strings
- */
- free(confirm_msg);
- confirm_msg = alloc(len);
- *confirm_msg = NUL;
- hotk = alloc(lenhotkey);
+ len += (int)(STRLEN(message)
+ + 2 /* for the NL's */
+ + STRLEN(buttons)
+ + 3); /* for the ": " and NUL */
+ lenhotkey++; /* for the NUL */
- *confirm_msg = '\n';
- STRCPY(confirm_msg + 1, message);
+ /* If no hotkey is specified first char is used. */
+ if (!has_hotkey[0]) {
+ first_hotkey = TRUE;
+ len += 2; /* "x" -> "[x]" */
+ }
- msgp = confirm_msg + 1 + STRLEN(message);
- hotkp = hotk;
+ /*
+ * Now allocate and load the strings
+ */
+ free(confirm_msg);
+ confirm_msg = alloc(len);
+ *confirm_msg = NUL;
+ hotk = alloc(lenhotkey);
+
+ *confirm_msg = '\n';
+ STRCPY(confirm_msg + 1, message);
+
+ msgp = confirm_msg + 1 + STRLEN(message);
+ hotkp = hotk;
+
+ /* Define first default hotkey. Keep the hotkey string NUL
+ * terminated to avoid reading past the end. */
+ hotkp[copy_char(buttons, hotkp, TRUE)] = NUL;
+
+ /* Remember where the choices start, displaying starts here when
+ * "hotkp" typed at the more prompt. */
+ confirm_msg_tail = msgp;
+ *msgp++ = '\n';
+
+ // Copy to the allocated memory.
+ r = buttons;
+ idx = 0;
+ while (*r) {
+ if (*r == DLG_BUTTON_SEP) {
+ *msgp++ = ',';
+ *msgp++ = ' '; /* '\n' -> ', ' */
+
+ /* advance to next hotkey and set default hotkey */
+ if (has_mbyte)
+ hotkp += STRLEN(hotkp);
+ else
+ ++hotkp;
+ hotkp[copy_char(r + 1, hotkp, TRUE)] = NUL;
+ if (dfltbutton)
+ --dfltbutton;
- /* Define first default hotkey. Keep the hotkey string NUL
- * terminated to avoid reading past the end. */
- hotkp[copy_char(buttons, hotkp, TRUE)] = NUL;
+ /* If no hotkey is specified first char is used. */
+ if (idx < HAS_HOTKEY_LEN - 1 && !has_hotkey[++idx])
+ first_hotkey = TRUE;
+ } else if (*r == DLG_HOTKEY_CHAR || first_hotkey) {
+ if (*r == DLG_HOTKEY_CHAR)
+ ++r;
+ first_hotkey = FALSE;
+ if (*r == DLG_HOTKEY_CHAR) /* '&&a' -> '&a' */
+ *msgp++ = *r;
+ else {
+ /* '&a' -> '[a]' */
+ *msgp++ = (dfltbutton == 1) ? '[' : '(';
+ msgp += copy_char(r, msgp, FALSE);
+ *msgp++ = (dfltbutton == 1) ? ']' : ')';
- /* Remember where the choices start, displaying starts here when
- * "hotkp" typed at the more prompt. */
- confirm_msg_tail = msgp;
- *msgp++ = '\n';
+ /* redefine hotkey */
+ hotkp[copy_char(r, hotkp, TRUE)] = NUL;
+ }
+ } else {
+ /* everything else copy literally */
+ msgp += copy_char(r, msgp, FALSE);
}
+
+ /* advance to the next character */
+ mb_ptr_adv(r);
}
+ *msgp++ = ':';
+ *msgp++ = ' ';
+ *msgp = NUL;
+
display_confirm_msg();
return hotk;
}