JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
It's 2014 now.
[st.git] / st.c
diff --git a/st.c b/st.c
index df660ff..019f53c 100644 (file)
--- a/st.c
+++ b/st.c
@@ -65,10 +65,9 @@ char *argv0;
 #define REDRAW_TIMEOUT (80*1000) /* 80 ms */
 
 /* macros */
-#define SERRNO strerror(errno)
 #define MIN(a, b)  ((a) < (b) ? (a) : (b))
 #define MAX(a, b)  ((a) < (b) ? (b) : (a))
-#define LEN(a)     (sizeof(a) / sizeof(a[0]))
+#define LEN(a)     (sizeof(a) / sizeof(a)[0])
 #define DEFAULT(a, b)     (a) = (a) ? (a) : (b)
 #define BETWEEN(x, a, b)  ((a) <= (x) && (x) <= (b))
 #define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
@@ -76,6 +75,7 @@ char *argv0;
 #define IS_SET(flag) ((term.mode & (flag)) != 0)
 #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_usec-t2.tv_usec)/1000)
 #define CEIL(x) (((x) != (int) (x)) ? (x) + 1 : (x))
+#define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
 
 #define TRUECOLOR(r,g,b) (1 << 24 | (r) << 16 | (g) << 8 | (b))
 #define IS_TRUECOL(x)    (1 << 24 & (x))
@@ -1181,7 +1181,7 @@ sigchld(int a) {
        int stat = 0;
 
        if(waitpid(pid, &stat, 0) < 0)
-               die("Waiting for pid %hd failed: %s\n", pid, SERRNO);
+               die("Waiting for pid %hd failed: %s\n", pid, strerror(errno));
 
        if(WIFEXITED(stat)) {
                exit(WEXITSTATUS(stat));
@@ -1197,7 +1197,7 @@ ttynew(void) {
 
        /* seems to work fine on linux, openbsd and freebsd */
        if(openpty(&m, &s, NULL, NULL, &w) < 0)
-               die("openpty failed: %s\n", SERRNO);
+               die("openpty failed: %s\n", strerror(errno));
 
        switch(pid = fork()) {
        case -1:
@@ -1209,7 +1209,7 @@ ttynew(void) {
                dup2(s, STDOUT_FILENO);
                dup2(s, STDERR_FILENO);
                if(ioctl(s, TIOCSCTTY, NULL) < 0)
-                       die("ioctl TIOCSCTTY failed: %s\n", SERRNO);
+                       die("ioctl TIOCSCTTY failed: %s\n", strerror(errno));
                close(s);
                close(m);
                execsh();
@@ -1252,7 +1252,7 @@ ttyread(void) {
 
        /* append read bytes to unprocessed bytes */
        if((ret = read(cmdfd, buf+buflen, LEN(buf)-buflen)) < 0)
-               die("Couldn't read from shell: %s\n", SERRNO);
+               die("Couldn't read from shell: %s\n", strerror(errno));
 
        /* process every complete utf8 char */
        buflen += ret;
@@ -1271,7 +1271,7 @@ ttyread(void) {
 void
 ttywrite(const char *s, size_t n) {
        if(write(cmdfd, s, n) == -1)
-               die("write error on tty: %s\n", SERRNO);
+               die("write error on tty: %s\n", strerror(errno));
 }
 
 void
@@ -1290,7 +1290,7 @@ ttyresize(void) {
        w.ws_xpixel = xw.tw;
        w.ws_ypixel = xw.th;
        if(ioctl(cmdfd, TIOCSWINSZ, &w) < 0)
-               fprintf(stderr, "Couldn't set window size: %s\n", SERRNO);
+               fprintf(stderr, "Couldn't set window size: %s\n", strerror(errno));
 }
 
 int
@@ -1785,8 +1785,6 @@ tsetscroll(int t, int b) {
        term.bot = b;
 }
 
-#define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
-
 void
 tsetmode(bool priv, bool set, int *args, int narg) {
        int *lim, mode;
@@ -2318,10 +2316,7 @@ techo(char *buf, int len) {
        for(; len > 0; buf++, len--) {
                char c = *buf;
 
-               if(c == '\033') { /* escape */
-                       tputc("^", 1);
-                       tputc("[", 1);
-               } else if(c < '\x20') { /* control code */
+               if(c < '\x20') { /* control code */
                        if(c != '\n' && c != '\r' && c != '\t') {
                                c |= '\x40';
                                tputc("^", 1);
@@ -2356,10 +2351,9 @@ tdeftran(char ascii) {
 
 void
 tselcs(void) {
-       if (term.trantbl[term.charset] == CS_GRAPHIC0)
-               term.c.attr.mode |= ATTR_GFX;
-       else
-               term.c.attr.mode &= ~ATTR_GFX;
+       MODBIT(term.c.attr.mode,
+              term.trantbl[term.charset] == CS_GRAPHIC0,
+              ATTR_GFX);
 }
 
 void
@@ -3753,7 +3747,7 @@ run(void) {
                if(select(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, tv) < 0) {
                        if(errno == EINTR)
                                continue;
-                       die("select failed: %s\n", SERRNO);
+                       die("select failed: %s\n", strerror(errno));
                }
                if(FD_ISSET(cmdfd, &rfd)) {
                        ttyread();
@@ -3821,7 +3815,7 @@ run(void) {
 
 void
 usage(void) {
-       die("%s " VERSION " (c) 2010-2013 st engineers\n" \
+       die("%s " VERSION " (c) 2010-2014 st engineers\n" \
        "usage: st [-a] [-v] [-c class] [-f font] [-g geometry] [-o file]" \
        " [-t title] [-w windowid] [-e command ...]\n", argv0);
 }