input: use bstr_xappend()

To get rid of mp_append_utf8_buffer().
This commit is contained in:
wm4 2013-12-30 22:44:56 +01:00
parent 963a3d2c64
commit b0efd3f36a
3 changed files with 25 additions and 15 deletions

View File

@ -596,7 +596,7 @@ static void interpret_key(struct input_ctx *ictx, int code, double scale)
if (mp_msg_test(ictx->log, MSGL_DEBUG)) {
int noflags = code & ~(MP_KEY_STATE_DOWN | MP_KEY_STATE_UP);
char *key = mp_input_get_key_name(noflags, NULL);
char *key = mp_input_get_key_name(noflags);
MP_DBG(ictx, "key code=%#x '%s'%s%s\n",
code, key, (code & MP_KEY_STATE_DOWN) ? " down" : "",
(code & MP_KEY_STATE_UP) ? " up" : "");

View File

@ -251,39 +251,49 @@ found:
return -1;
}
char *mp_input_get_key_name(int key, char *ret)
static void mp_input_append_key_name(bstr *buf, int key)
{
for (int i = 0; modifier_names[i].name; i++) {
if (modifier_names[i].key & key) {
ret = talloc_asprintf_append_buffer(ret, "%s+",
modifier_names[i].name);
bstr_xappend_asprintf(NULL, buf, "%s+", modifier_names[i].name);
key -= modifier_names[i].key;
}
}
for (int i = 0; key_names[i].name != NULL; i++) {
if (key_names[i].key == key)
return talloc_asprintf_append_buffer(ret, "%s", key_names[i].name);
if (key_names[i].key == key) {
bstr_xappend_asprintf(NULL, buf, "%s", key_names[i].name);
return;
}
}
// printable, and valid unicode range
if (key >= 32 && key <= 0x10FFFF)
return mp_append_utf8_buffer(ret, key);
if (key >= 32 && key <= 0x10FFFF) {
mp_append_utf8_bstr(NULL, buf, key);
return;
}
// Print the hex key code
return talloc_asprintf_append_buffer(ret, "%#-8x", key);
bstr_xappend_asprintf(NULL, buf, "%#-8x", key);
}
char *mp_input_get_key_name(int key)
{
bstr dst = {0};
mp_input_append_key_name(&dst, key);
return dst.start;
}
char *mp_input_get_key_combo_name(int *keys, int max)
{
char *ret = talloc_strdup(NULL, "");
bstr dst = {0};
while (max > 0) {
ret = mp_input_get_key_name(*keys, ret);
mp_input_append_key_name(&dst, *keys);
if (--max && *++keys)
ret = talloc_asprintf_append_buffer(ret, "-");
bstr_xappend(NULL, &dst, bstr0("-"));
else
break;
}
return ret;
return dst.start;
}
int mp_input_get_keys_from_string(char *name, int max_num_keys,

View File

@ -256,8 +256,8 @@
// Get input key from its name.
int mp_input_get_key_from_name(const char *name);
// Append given key by name to ret, return ret.
char *mp_input_get_key_name(int key, char *ret);
// Return given key (plus modifiers) as talloc'ed name.
char *mp_input_get_key_name(int key);
// Combination of multiple keys to string.
char *mp_input_get_key_combo_name(int *keys, int max);