diff --git a/cmd-command-prompt.c b/cmd-command-prompt.c
index c7da9a2f..6d76b315 100644
--- a/cmd-command-prompt.c
+++ b/cmd-command-prompt.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-command-prompt.c,v 1.21 2009-07-28 22:12:16 tcunha Exp $ */
+/* $Id: cmd-command-prompt.c,v 1.22 2009-08-16 19:29:24 tcunha Exp $ */
 
 /*
  * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -112,7 +112,7 @@ cmd_command_prompt_callback(void *data, const char *s)
 	char				*cause, *ptr, *buf, ch;
 	size_t				 len, slen;
 
-	if (s == NULL)
+	if (s == NULL || *s == '\0')
 		return (0);
 	slen = strlen(s);
 
diff --git a/cmd-confirm-before.c b/cmd-confirm-before.c
index e1db383e..eca42b39 100644
--- a/cmd-confirm-before.c
+++ b/cmd-confirm-before.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-confirm-before.c,v 1.9 2009-07-28 22:12:16 tcunha Exp $ */
+/* $Id: cmd-confirm-before.c,v 1.10 2009-08-16 19:29:24 tcunha Exp $ */
 
 /*
  * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org>
@@ -107,7 +107,9 @@ cmd_confirm_before_callback(void *data, const char *s)
 	struct cmd_ctx	 	 	 ctx;
 	char				*cause;
 
-	if (s == NULL || tolower((u_char) s[0]) != 'y' || s[1] != '\0')
+	if (s == NULL || *s == '\0')
+		return (0);
+	if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')
 		return (0);
 
 	if (cmd_string_parse(cdata->cmd, &cmdlist, &cause) != 0) {
diff --git a/cmd-select-prompt.c b/cmd-select-prompt.c
index 182fef92..6f868252 100644
--- a/cmd-select-prompt.c
+++ b/cmd-select-prompt.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-select-prompt.c,v 1.11 2009-07-28 22:12:16 tcunha Exp $ */
+/* $Id: cmd-select-prompt.c,v 1.12 2009-08-16 19:29:24 tcunha Exp $ */
 
 /*
  * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -66,7 +66,7 @@ cmd_select_prompt_callback(void *data, const char *s)
 	char		 msg[128];
 	u_int		 idx;
 
-	if (s == NULL)
+	if (s == NULL || *s == '\0')
 		return (0);
 
 	idx = strtonum(s, 0, UINT_MAX, &errstr);
diff --git a/mode-key.c b/mode-key.c
index f4a93cad..05804de2 100644
--- a/mode-key.c
+++ b/mode-key.c
@@ -1,4 +1,4 @@
-/* $Id: mode-key.c,v 1.24 2009-08-16 19:26:49 tcunha Exp $ */
+/* $Id: mode-key.c,v 1.25 2009-08-16 19:29:24 tcunha Exp $ */
 
 /*
  * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -181,6 +181,7 @@ struct mode_key_tree mode_key_tree_vi_copy;
 const struct mode_key_entry mode_key_emacs_edit[] = {
 	{ '\001' /* C-a */,	0, MODEKEYEDIT_STARTOFLINE }, 
 	{ '\002' /* C-p */,	0, MODEKEYEDIT_CURSORLEFT },
+	{ '\003' /* C-c */,	0, MODEKEYEDIT_CANCEL },
 	{ '\004' /* C-d */,	0, MODEKEYEDIT_DELETE },
 	{ '\005' /* C-e	*/,	0, MODEKEYEDIT_ENDOFLINE },
 	{ '\006' /* C-f */,	0, MODEKEYEDIT_CURSORRIGHT },
@@ -190,6 +191,7 @@ const struct mode_key_entry mode_key_emacs_edit[] = {
 	{ '\016' /* C-n */,	0, MODEKEYEDIT_HISTORYDOWN },
 	{ '\020' /* C-p */,	0, MODEKEYEDIT_HISTORYUP },
 	{ '\031' /* C-y */,	0, MODEKEYEDIT_PASTE },
+	{ '\033' /* Escape */,	0, MODEKEYEDIT_CANCEL },
 	{ '\r',			0, MODEKEYEDIT_ENTER },
 	{ 'm' | KEYC_ESCAPE,	0, MODEKEYEDIT_STARTOFLINE }, 
 	{ KEYC_BSPACE,		0, MODEKEYEDIT_BACKSPACE },
diff --git a/status.c b/status.c
index 850c513a..a8a7f34b 100644
--- a/status.c
+++ b/status.c
@@ -1,4 +1,4 @@
-/* $Id: status.c,v 1.109 2009-08-09 17:40:17 tcunha Exp $ */
+/* $Id: status.c,v 1.110 2009-08-16 19:29:24 tcunha Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -920,14 +920,11 @@ status_prompt_key(struct client *c, int key)
 		c->flags |= CLIENT_STATUS;
 		break;
  	case MODEKEYEDIT_ENTER:
-		if (*c->prompt_buffer != '\0') {
+		if (*c->prompt_buffer != '\0')
 			status_prompt_add_history(c);
-			if (c->prompt_callbackfn(
-			    c->prompt_data, c->prompt_buffer) == 0)
-				status_prompt_clear(c);
-			break;
-		}
-		/* FALLTHROUGH */
+		if (c->prompt_callbackfn(c->prompt_data, c->prompt_buffer) == 0)
+			status_prompt_clear(c);
+		break;
 	case MODEKEYEDIT_CANCEL:
 		if (c->prompt_callbackfn(c->prompt_data, NULL) == 0)
 			status_prompt_clear(c);