aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/events.c
diff options
context:
space:
mode:
authorGravatar keis <keijser@gmail.com>2011-01-15 22:15:29 +0100
committerGravatar keis <keijser@gmail.com>2011-02-15 21:17:10 +0100
commit3d658d9c10809ec4ec76fb557535a2f6383cff45 (patch)
tree574c914ee860e5a758e2f2743c85417cc1d65ffa /src/events.c
parent2b7539061d8d437ef1507a8cf68d9b565d07c66e (diff)
quote and escape strings in events
Diffstat (limited to 'src/events.c')
-rw-r--r--src/events.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/events.c b/src/events.c
index b9b5a18..e8c42a3 100644
--- a/src/events.c
+++ b/src/events.c
@@ -5,6 +5,7 @@
#include "uzbl-core.h"
#include "events.h"
+#include "util.h"
UzblCore uzbl;
@@ -140,6 +141,7 @@ send_event_stdout(GString *msg) {
void
vsend_event(int type, const gchar *custom_event, va_list vargs) {
GString *event_message = g_string_sized_new (512);
+
if (type >= LAST_EVENT)
return;
const gchar *event = custom_event ? custom_event : event_table[type];
@@ -149,16 +151,23 @@ vsend_event(int type, const gchar *custom_event, va_list vargs) {
uzbl.state.instance_name, event);
while ((next = va_arg (vargs, int)) != 0) {
+ g_string_append_c(event_message, ' ');
switch(next) {
case TYPE_INT:
- g_string_append_printf (event_message, " %d", va_arg (vargs, int));
+ g_string_append_printf (event_message, "%d", va_arg (vargs, int));
break;
case TYPE_STR:
- g_string_append_printf (event_message, " %s", va_arg (vargs, char*));
+ g_string_append_c (event_message, '\'');
+ append_escaped (event_message, va_arg (vargs, char*));
+ g_string_append_c (event_message, '\'');
+ break;
+ case TYPE_FORMATTEDSTR:
+ case TYPE_NAME:
+ g_string_append (event_message, va_arg (vargs, char*));
break;
case TYPE_FLOAT:
// ‘float’ is promoted to ‘double’ when passed through ‘...’
- g_string_append_printf (event_message, " %.2g", va_arg (vargs, double));
+ g_string_append_printf (event_message, "%.2f", va_arg (vargs, double));
break;
}
}
@@ -202,12 +211,12 @@ key_to_event(guint keyval, gint mode) {
ucs[ulen] = 0;
send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE,
- NULL, TYPE_STR, ucs, NULL);
+ NULL, TYPE_FORMATTEDSTR, ucs, NULL);
}
/* send keysym for non-printable chars */
else {
send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE,
- NULL, TYPE_STR, gdk_keyval_name(keyval), NULL);
+ NULL, TYPE_NAME, gdk_keyval_name(keyval), NULL);
}
}