Introduction
Introduction Statistics Contact Development Disclaimer Help
tSimplify Mod1 logic in kpress(), eliminating locals and a memcpy. - st - [fork…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27
parent 7a4eefe87cb7661c8a77286d05b6c3afb467f806
Author: Mark Edgar <[email protected]>
Date: Sat, 5 Oct 2013 11:45:17 +0200
Simplify Mod1 logic in kpress(), eliminating locals and a memcpy.
Diffstat:
M st.c | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -3563,8 +3563,8 @@ void
kpress(XEvent *ev) {
XKeyEvent *e = &ev->xkey;
KeySym ksym;
- char xstr[31], buf[32], *customkey, *cp = buf;
- int len, ret;
+ char buf[32], *customkey;
+ int len;
long c;
Status status;
Shortcut *bp;
t@@ -3572,7 +3572,7 @@ kpress(XEvent *ev) {
if(IS_SET(MODE_KBDLOCK))
return;
- len = XmbLookupString(xw.xic, e, xstr, sizeof(xstr), &ksym, &status);
+ len = XmbLookupString(xw.xic, e, buf, sizeof buf, &ksym, &status);
e->state &= ~Mod2Mask;
/* 1. shortcuts */
for(bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
t@@ -3586,26 +3586,23 @@ kpress(XEvent *ev) {
if((customkey = kmap(ksym, e->state))) {
len = strlen(customkey);
memcpy(buf, customkey, len);
- /* 3. hardcoded (overrides X lookup) */
+ /* 3. composed string from input method */
} else {
if(len == 0)
return;
if(len == 1 && e->state & Mod1Mask) {
if(IS_SET(MODE_8BIT)) {
- if(*xstr < 0177) {
- c = *xstr | 0x80;
- ret = utf8encode(&c, cp);
- cp += ret;
- len = 0;
+ if(*buf < 0177) {
+ c = *buf | 0x80;
+ len = utf8encode(&c, buf);
}
} else {
- *cp++ = '\033';
+ buf[1] = buf[0];
+ buf[0] = '\033';
+ len = 2;
}
}
-
- memcpy(cp, xstr, len);
- len = cp - buf + len;
}
ttywrite(buf, len);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.