summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2013-08-02 19:19:25 +0200
committerSebastien Helleu <flashcode@flashtux.org>2013-08-02 19:19:25 +0200
commit663de422849a591c2b7fdf47fbabdf6e2ecb98da (patch)
tree9aeb522a13e4232c78ccef92561ab855acd6767e /src/gui
parentfd5fc2e5a35926387eb332f612752a6b0726e10e (diff)
parentade379ac114ba76a142d9f430defc9579ead029a (diff)
downloadweechat-663de422849a591c2b7fdf47fbabdf6e2ecb98da.zip
Merge branch 'secured-data'
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/curses/gui-curses-color.c3
-rw-r--r--src/gui/curses/gui-curses-main.c57
-rw-r--r--src/gui/gui-key.c1
-rw-r--r--src/gui/gui-main.h3
4 files changed, 62 insertions, 2 deletions
diff --git a/src/gui/curses/gui-curses-color.c b/src/gui/curses/gui-curses-color.c
index 8081347fa..77402a835 100644
--- a/src/gui/curses/gui-curses-color.c
+++ b/src/gui/curses/gui-curses-color.c
@@ -945,8 +945,7 @@ gui_color_buffer_display ()
}
/* display palette colors */
- if (hashtable_get_integer (gui_color_hash_palette_color,
- "items_count") > 0)
+ if (gui_color_hash_palette_color->items_count > 0)
{
y++;
gui_chat_printf_y (gui_color_buffer, y++,
diff --git a/src/gui/curses/gui-curses-main.c b/src/gui/curses/gui-curses-main.c
index 88a4a1e6f..0cc13acee 100644
--- a/src/gui/curses/gui-curses-main.c
+++ b/src/gui/curses/gui-curses-main.c
@@ -64,6 +64,63 @@ int gui_term_lines = 0;
/*
+ * Gets a password from user (called on startup, when GUI is not initialized).
+ *
+ * The result is stored in "password" with max "size" bytes (including the
+ * final '\0').
+ */
+
+void
+gui_main_get_password (const char *prompt1, const char *prompt2,
+ const char *prompt3,
+ char *password, int size)
+{
+ int i, ch;
+
+ initscr ();
+ cbreak ();
+ noecho ();
+
+ clear();
+
+ mvprintw (0, 0, "%s", prompt1);
+ mvprintw (1, 0, "%s", prompt2);
+ mvprintw (2, 0, "%s", prompt3);
+ mvprintw (3, 0, "=> ");
+ refresh ();
+
+ memset (password, '\0', size);
+ i = 0;
+ while (i < size - 1)
+ {
+ ch = getch ();
+ if (ch == '\n')
+ break;
+ if (ch == 127)
+ {
+ if (i > 0)
+ {
+ i--;
+ password[i] = '\0';
+ mvprintw (3, 3 + i, " ");
+ move (3, 3 + i);
+ }
+ }
+ else
+ {
+ password[i] = ch;
+ mvprintw (3, 3 + i, "*");
+ i++;
+ }
+ refresh ();
+ }
+ password[i] = '\0';
+
+ refresh ();
+ endwin ();
+}
+
+/*
* Pre-initializes GUI (called before gui_init).
*/
diff --git a/src/gui/gui-key.c b/src/gui/gui-key.c
index 63308b105..771f6135d 100644
--- a/src/gui/gui-key.c
+++ b/src/gui/gui-key.c
@@ -1125,6 +1125,7 @@ gui_key_focus_command (const char *key, int context,
else
{
command = string_replace_with_callback (commands[i],
+ "${", "}",
&gui_key_focus_command_replace_cb,
hashtable,
&errors);
diff --git a/src/gui/gui-main.h b/src/gui/gui-main.h
index d46289073..cf3b5d4af 100644
--- a/src/gui/gui-main.h
+++ b/src/gui/gui-main.h
@@ -22,6 +22,9 @@
/* main functions (GUI dependent) */
+extern void gui_main_get_password (const char *prompt1, const char *prompt2,
+ const char *prompt3,
+ char *password, int size);
extern void gui_main_loop ();
extern void gui_main_pre_init (int *argc, char **argv[]);
extern void gui_main_init ();