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 for multibyte characters in techo.
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
7dd5e04
..
cacbe20
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-149,7
+149,7
@@
enum charset {
enum escape_state {
ESC_START = 1,
ESC_CSI = 2,
enum escape_state {
ESC_START = 1,
ESC_CSI = 2,
- ESC_STR = 4, /* DSC, OSC, PM, APC */
+ ESC_STR = 4, /* DCS, OSC, PM, APC */
ESC_ALTCHARSET = 8,
ESC_STR_END = 16, /* a final string was encountered */
ESC_TEST = 32, /* Enter in test mode */
ESC_ALTCHARSET = 8,
ESC_STR_END = 16, /* a final string was encountered */
ESC_TEST = 32, /* Enter in test mode */
@@
-452,7
+452,7
@@
static char utf8encodebyte(long, size_t);
static size_t utf8len(char *);
static size_t utf8validate(long *, size_t);
static size_t utf8len(char *);
static size_t utf8validate(long *, size_t);
-static ssize_t xwrite(int, char *, size_t);
+static ssize_t xwrite(int, const char *, size_t);
static void *xmalloc(size_t);
static void *xrealloc(void *, size_t);
static char *xstrdup(char *);
static void *xmalloc(size_t);
static void *xrealloc(void *, size_t);
static char *xstrdup(char *);
@@
-518,7
+518,7
@@
static Fontcache frc[16];
static int frclen = 0;
ssize_t
static int frclen = 0;
ssize_t
-xwrite(int fd, char *s, size_t len) {
+xwrite(int fd, const char *s, size_t len) {
size_t aux = len;
while(len > 0) {
size_t aux = len;
while(len > 0) {
@@
-1270,7
+1270,7
@@
ttyread(void) {
void
ttywrite(const char *s, size_t n) {
void
ttywrite(const char *s, size_t n) {
- if(write(cmdfd, s, n) == -1)
+ if(xwrite(cmdfd, s, n) == -1)
die("write error on tty: %s\n", strerror(errno));
}
die("write error on tty: %s\n", strerror(errno));
}
@@
-2169,7
+2169,7
@@
strhandle(void) {
case 'k': /* old title set compatibility */
xsettitle(strescseq.args[0]);
return;
case 'k': /* old title set compatibility */
xsettitle(strescseq.args[0]);
return;
- case 'P': /* DSC -- Device Control String */
+ case 'P': /* DCS -- Device Control String */
case '_': /* APC -- Application Program Command */
case '^': /* PM -- Privacy Message */
return;
case '_': /* APC -- Application Program Command */
case '^': /* PM -- Privacy Message */
return;
@@
-2298,7
+2298,7
@@
techo(char *buf, int len) {
for(; len > 0; buf++, len--) {
char c = *buf;
for(; len > 0; buf++, len--) {
char c = *buf;
- if(c < 0x20 || c == 0177) { /* control code */
+ if(BETWEEN(c, 0x00, 0x1f) || c == 0x7f) { /* control code */
if(c != '\n' && c != '\r' && c != '\t') {
c ^= '\x40';
tputc("^", 1);
if(c != '\n' && c != '\r' && c != '\t') {
c ^= '\x40';
tputc("^", 1);