+ if (wwsettty(w->ww_pty, &wwwintty, (struct ww_tty *)0) < 0)
+ goto bad;
+ winsize.ws_row = nrow;
+ winsize.ws_col = ncol;
+ winsize.ws_xpixel = winsize.ws_ypixel = 0;
+ if (ioctl(w->ww_pty, (int)TIOCSWINSZ, (char *)&winsize) < 0) {
+ wwerrno = WWE_SYS;
+ goto bad;
+ }
+ w->ww_ispty = 1;
+ } else if (flags & WWO_SOCKET) {
+ int d[2];
+ if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, d) < 0) {
+ wwerrno = WWE_SYS;
+ goto bad;
+ }
+ w->ww_pty = d[0];
+ w->ww_socket = d[1];
+ }
+ if (flags & (WWO_PTY|WWO_SOCKET)) {
+ if ((w->ww_ob = malloc(512)) == 0) {
+ wwerrno = WWE_NOMEM;