Commit 9892fbfb24009f98c60ce50155e7e6c5d7aa6b7b

Authored by blueswir1
1 parent a10ea30b

Enable pty/tty functions for BSDs too (initial patch from Xen)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5079 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 17 additions and 4 deletions
... ... @@ -109,6 +109,10 @@ int inet_aton(const char *cp, struct in_addr *ia);
109 109 #include "libslirp.h"
110 110 #endif
111 111  
  112 +#if defined(__OpenBSD__)
  113 +#include <util.h>
  114 +#endif
  115 +
112 116 #if defined(CONFIG_VDE)
113 117 #include <libvdeplug.h>
114 118 #endif
... ... @@ -2465,7 +2469,8 @@ void cfmakeraw (struct termios *termios_p)
2465 2469 }
2466 2470 #endif
2467 2471  
2468   -#if defined(__linux__) || defined(__sun__)
  2472 +#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
  2473 + || defined(__NetBSD__) || defined(__OpenBSD__)
2469 2474  
2470 2475 typedef struct {
2471 2476 int fd;
... ... @@ -2593,6 +2598,13 @@ static CharDriverState *qemu_chr_open_pty(void)
2593 2598 PtyCharDriver *s;
2594 2599 struct termios tty;
2595 2600 int slave_fd;
  2601 +#if defined(__OpenBSD__)
  2602 + char pty_name[PATH_MAX];
  2603 +#define q_ptsname(x) pty_name
  2604 +#else
  2605 + char *pty_name = NULL;
  2606 +#define q_ptsname(x) ptsname(x)
  2607 +#endif
2596 2608  
2597 2609 chr = qemu_mallocz(sizeof(CharDriverState));
2598 2610 if (!chr)
... ... @@ -2603,7 +2615,7 @@ static CharDriverState *qemu_chr_open_pty(void)
2603 2615 return NULL;
2604 2616 }
2605 2617  
2606   - if (openpty(&s->fd, &slave_fd, NULL, NULL, NULL) < 0) {
  2618 + if (openpty(&s->fd, &slave_fd, pty_name, NULL, NULL) < 0) {
2607 2619 return NULL;
2608 2620 }
2609 2621  
... ... @@ -2612,7 +2624,7 @@ static CharDriverState *qemu_chr_open_pty(void)
2612 2624 tcsetattr(slave_fd, TCSAFLUSH, &tty);
2613 2625 close(slave_fd);
2614 2626  
2615   - fprintf(stderr, "char device redirected to %s\n", ptsname(s->fd));
  2627 + fprintf(stderr, "char device redirected to %s\n", q_ptsname(s->fd));
2616 2628  
2617 2629 chr->opaque = s;
2618 2630 chr->chr_write = pty_chr_write;
... ... @@ -3819,7 +3831,8 @@ CharDriverState *qemu_chr_open(const char *filename)
3819 3831 return qemu_chr_open_pp(filename);
3820 3832 } else
3821 3833 #endif
3822   -#if defined(__linux__) || defined(__sun__)
  3834 +#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
  3835 + || defined(__NetBSD__) || defined(__OpenBSD__)
3823 3836 if (strstart(filename, "/dev/", NULL)) {
3824 3837 return qemu_chr_open_tty(filename);
3825 3838 } else
... ...