X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftext.c;h=3c8ffd36133f3558e3a51a485b12a27c2ad8eec7;hb=bb60713620f4f061bb5baa42a2f0ecf0655f1220;hp=f3a09e843da1997acf28763c7d13b6c2ad6f3549;hpb=769b91c580832eea279770d8a14f8aa23bf16f34;p=platform%2Fupstream%2Flibxkbcommon.git diff --git a/src/text.c b/src/text.c index f3a09e8..3c8ffd3 100644 --- a/src/text.c +++ b/src/text.c @@ -24,6 +24,8 @@ * ********************************************************/ +#include "config.h" + #include "keymap.h" #include "text.h" @@ -204,32 +206,23 @@ const LookupEntry symInterpretMatchMaskNames[] = { { "AnyOf", MATCH_ANY }, { "AllOf", MATCH_ALL }, { "Exactly", MATCH_EXACTLY }, + { NULL, 0 }, }; const char * -ModIndexText(const struct xkb_keymap *keymap, xkb_mod_index_t ndx) +ModIndexText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_index_t ndx) { if (ndx == XKB_MOD_INVALID) return "none"; - if (ndx >= darray_size(keymap->mods)) - return NULL; - - return xkb_atom_text(keymap->ctx, darray_item(keymap->mods, ndx).name); -} - -xkb_mod_index_t -ModNameToIndex(const struct xkb_keymap *keymap, xkb_atom_t name, - enum mod_type type) -{ - xkb_mod_index_t i; - const struct xkb_mod *mod; + if (ndx == XKB_MOD_NONE) + return "None"; - darray_enumerate(i, mod, keymap->mods) - if ((mod->type & type) && name == mod->name) - return i; + if (ndx >= mods->num_mods) + return NULL; - return XKB_MOD_INVALID; + return xkb_atom_text(ctx, mods->mods[ndx].name); } const char * @@ -264,9 +257,10 @@ SIMatchText(enum xkb_match_operation type) } const char * -ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask) +ModMaskText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_mask_t mask) { - char buf[1024]; + char buf[1024] = {0}; size_t pos = 0; xkb_mod_index_t i; const struct xkb_mod *mod; @@ -277,7 +271,7 @@ ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask) if (mask == MOD_REAL_MASK_ALL) return "all"; - darray_enumerate(i, mod, keymap->mods) { + xkb_mods_enumerate(i, mod, mods) { int ret; if (!(mask & (1u << i))) @@ -285,20 +279,20 @@ ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask) ret = snprintf(buf + pos, sizeof(buf) - pos, "%s%s", pos == 0 ? "" : "+", - xkb_atom_text(keymap->ctx, mod->name)); + xkb_atom_text(ctx, mod->name)); if (ret <= 0 || pos + ret >= sizeof(buf)) break; else pos += ret; } - return strcpy(xkb_context_get_buffer(keymap->ctx, pos + 1), buf); + return strncpy(xkb_context_get_buffer(ctx, pos + 1), buf, pos + 1); } const char * LedStateMaskText(struct xkb_context *ctx, enum xkb_state_component mask) { - char buf[1024]; + char buf[1024] = {0}; size_t pos = 0; if (mask == 0) @@ -321,13 +315,13 @@ LedStateMaskText(struct xkb_context *ctx, enum xkb_state_component mask) pos += ret; } - return strcpy(xkb_context_get_buffer(ctx, pos + 1), buf); + return strncpy(xkb_context_get_buffer(ctx, pos + 1), buf, pos + 1); } const char * ControlMaskText(struct xkb_context *ctx, enum xkb_action_controls mask) { - char buf[1024]; + char buf[1024] = {0}; size_t pos = 0; if (mask == 0) @@ -353,5 +347,5 @@ ControlMaskText(struct xkb_context *ctx, enum xkb_action_controls mask) pos += ret; } - return strcpy(xkb_context_get_buffer(ctx, pos + 1), buf); + return strncpy(xkb_context_get_buffer(ctx, pos + 1), buf, pos + 1); }