Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
st.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix techo handling of control and multibyte characters.
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
b8bf84b
..
b66791a
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-549,12
+549,10
@@
xrealloc(void *p, size_t len) {
char *
xstrdup(char *s) {
char *
xstrdup(char *s) {
- char *p = strdup(s);
-
- if (!p)
+ if((s = strdup(s)) == NULL)
die("Out of memory\n");
die("Out of memory\n");
- return p;
+ return s;
}
size_t
}
size_t
@@
-1544,8
+1542,7
@@
tsetchar(char *c, Glyph *attr, int x, int y) {
* The table is proudly stolen from rxvt.
*/
if(attr->mode & ATTR_GFX) {
* The table is proudly stolen from rxvt.
*/
if(attr->mode & ATTR_GFX) {
- if(c[0] >= 0x41 && c[0] <= 0x7e
- && vt100_0[c[0] - 0x41]) {
+ if(BETWEEN(c[0], 0x41, 0x7e) && vt100_0[c[0] - 0x41]) {
c = vt100_0[c[0] - 0x41];
}
}
c = vt100_0[c[0] - 0x41];
}
}
@@
-2311,9
+2308,9
@@
techo(char *buf, int len) {
for(; len > 0; buf++, len--) {
char c = *buf;
for(; len > 0; buf++, len--) {
char c = *buf;
- if(c < '\x20') { /* control code */
+ if(c < 0x20 || c == 0177) { /* control code */
if(c != '\n' && c != '\r' && c != '\t') {
if(c != '\n' && c != '\r' && c != '\t') {
- c |= '\x40';
+ c ^= '\x40';
tputc("^", 1);
}
tputc(&c, 1);
tputc("^", 1);
}
tputc(&c, 1);