]> rtime.felk.cvut.cz Git - sojka/sterm.git/commitdiff
Minor refactoring
authorMichal Sojka <michal.sojka@cvut.cz>
Sat, 4 Jan 2020 13:57:02 +0000 (14:57 +0100)
committerMichal Sojka <michal.sojka@cvut.cz>
Sat, 4 Jan 2020 14:05:06 +0000 (15:05 +0100)
No functional changes, except fixing order of arguments in "Not all
data written to stdout" message.

This is to make the next commit smaller and easier to review.

sterm.c

diff --git a/sterm.c b/sterm.c
index f2bd26a1527e9a344af7610d3c7136319c7f3f61..303c28f45b0e8ffa3aaacabc766a3493eece88a7 100644 (file)
--- a/sterm.c
+++ b/sterm.c
@@ -352,11 +352,12 @@ int main(int argc, char *argv[])
        if (cmd)
                handle_commands(fd);
 
+
+       enum { STDIN, DEV };
        struct pollfd fds[2] = {
-               { .fd = 0,  .events = POLLIN },
-               { .fd = fd, .events = POLLIN },
+               [STDIN] = { .fd = STDIN_FILENO,  .events = POLLIN },
+               [DEV]   = { .fd = fd,            .events = POLLIN },
        };
-       char buf[4096];
 
        if (stdin_tty) {
                tio = stdin_tio_backup;
@@ -368,36 +369,38 @@ int main(int argc, char *argv[])
        if (exit_on_escape)
                VERBOSE("Use '<Enter>~.' sequence to exit.\r\n");
 
+       char buf[4096];
        while (1) {
-               int r1, r2;
-               CHECK(poll(fds, 2, -1));
-               if (fds[0].revents & POLLIN) {
-                       r1 = CHECK(read(0, buf, sizeof(buf)));
-                       if (r1 == 0) {
+               int rlen, wlen;
+               int timeout = -1;
+               CHECK(poll(fds, 2, timeout));
+               if (fds[STDIN].revents & POLLIN) {
+                       rlen = CHECK(read(STDIN_FILENO, buf, sizeof(buf)));
+                       if (rlen == 0) {
                                VERBOSE("EOF on stdin\r\n");
                                break;
                        }
                        if (exit_on_escape)
-                               exit_on_escapeseq(buf, r1);
-                       r2 = CHECK(write(fd, buf, r1));
-                       if (r1 != r2) {
-                               fprintf(stderr, "Not all data written to %s (%d/%d)\n", dev, r1, r2);
+                               exit_on_escapeseq(buf, rlen);
+                       wlen = CHECK(write(fd, buf, rlen));
+                       if (rlen != wlen) {
+                               fprintf(stderr, "Not all data written to %s (%d/%d)\n", dev, rlen, wlen);
                                exit(1);
                        }
                }
-               if (fds[0].revents & POLLHUP) {
+               if (fds[STDIN].revents & POLLHUP) {
                        VERBOSE("HUP on stdin\r\n");
                        break;
                }
-               if (fds[1].revents & POLLIN) {
-                       r1 = CHECK(read(fd, buf, sizeof(buf)));
-                       if (r1 == 0) {
+               if (fds[DEV].revents & POLLIN) {
+                       rlen = CHECK(read(fd, buf, sizeof(buf)));
+                       if (rlen == 0) {
                                VERBOSE("EOF on %s\r\n", dev);
                                break;
                        }
-                       r2 = CHECK(write(1, buf, r1));
-                       if (r1 != r2) {
-                               fprintf(stderr, "Not all data written to stdout (%d/%d)\n", r1, r2);
+                       wlen = CHECK(write(STDOUT_FILENO, buf, rlen));
+                       if (rlen != wlen) {
+                               fprintf(stderr, "Not all data written to stdout (%d/%d)\n", wlen, rlen);
                                exit(1);
                        }
                }