Commit 4bbb568f58ea70018c7d613f00af0f61fcca36f0
authorUffe Jakobsen <uffe@uffe.org>
Tue, 29 Jan 2019 08:06:31 +0000 (09:06 +0100)
committerUffe Jakobsen <uffe@uffe.org>
Tue, 29 Jan 2019 08:06:31 +0000 (09:06 +0100)
2 files changed:
examples/parts/uart_pty.c
examples/parts/uart_pty.h

index 3282ac98d3a2b4164c85a0259da4542d15ff342b..dfe3fe7959d7e782442a8b756192fa49be83a8d4 100644 (file)
@@ -240,15 +240,16 @@ uart_pty_init(
        p->irq = avr_alloc_irq(&avr->irq_pool, 0, IRQ_UART_PTY_COUNT, irq_names);
        avr_irq_register_notify(p->irq + IRQ_UART_PTY_BYTE_IN, uart_pty_in_hook, p);
 
-       int hastap = (getenv("SIMAVR_UART_TAP") && atoi(getenv("SIMAVR_UART_TAP"))) ||
-                       (getenv("SIMAVR_UART_XTERM") && atoi(getenv("SIMAVR_UART_XTERM"))) ;
+       const int hastap = (getenv("SIMAVR_UART_TAP") && atoi(getenv("SIMAVR_UART_TAP"))) ||
+                       (getenv("SIMAVR_UART_XTERM") && atoi(getenv("SIMAVR_UART_XTERM")));
+       p->hastap = hastap;
 
        for (int ti = 0; ti < 1 + hastap; ti++) {
                int m, s;
 
                if (openpty(&m, &s, p->port[ti].slavename, NULL, NULL) < 0) {
                        fprintf(stderr, "%s: Can't create pty: %s", __FUNCTION__, strerror(errno));
-                       return ;
+                       return;
                }
                struct termios tio;
                tcgetattr(m, &tio);
@@ -302,9 +303,9 @@ uart_pty_connect(
        if (xoff)
                avr_irq_register_notify(xoff, uart_pty_xoff_hook, p);
 
-       for (int ti = 0; ti < 1; ti++) if (p->port[ti].s) {
+       for (int ti = 0; ti < 1+(p->hastap?1:0); ti++) if (p->port[ti].s) {
                char link[128];
-               sprintf(link, "/tmp/simavr-uart%s%c", ti == 1 ? "tap" : "", uart);
+               snprintf(link, sizeof(link), "/tmp/simavr-uart%c%s", uart, ti == 1 ? "-tap" : "");
                unlink(link);
                if (symlink(p->port[ti].slavename, link) != 0) {
                        fprintf(stderr, "WARN %s: Can't create %s: %s", __func__, link, strerror(errno));
@@ -320,4 +321,3 @@ uart_pty_connect(
        } else
                printf("note: export SIMAVR_UART_XTERM=1 and install picocom to get a terminal\n");
 }
-
index a75f9f5b25f63d5ceb440a4cab130996763a7fad..c851ab188e05b821cc6d40122306c3374b10acdc 100644 (file)
@@ -51,6 +51,7 @@ typedef struct uart_pty_t {
 
        pthread_t       thread;
        int                     xon;
+       int                     hastap;
 
        union {
                struct {