Fill in the tty name in SunOS's forkpty compat, and use it in osdep_getname.

From Todd Carson.

Tweaked by me to nuke (void) casts. Say no to lint appeasement! ;-)
pull/1/head
Nicholas Marriott 2009-10-15 07:11:25 +00:00
parent 8085adb8a2
commit 0614ca434a
2 changed files with 10 additions and 11 deletions

View File

@ -1,4 +1,4 @@
/* $Id: forkpty-sunos.c,v 1.8 2009-09-20 18:31:16 nicm Exp $ */
/* $Id: forkpty-sunos.c,v 1.9 2009-10-15 07:11:25 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@ -27,7 +27,7 @@
#include "tmux.h"
pid_t
forkpty(int *master, unused char *name, struct termios *tio, struct winsize *ws)
forkpty(int *master, char *name, struct termios *tio, struct winsize *ws)
{
int slave;
char *path;
@ -42,6 +42,8 @@ forkpty(int *master, unused char *name, struct termios *tio, struct winsize *ws)
if ((path = ptsname(*master)) == NULL)
goto out;
if (name != NULL)
strlcpy(name, path, TTY_NAME_MAX);
if ((slave = open(path, O_RDWR|O_NOCTTY)) == -1)
goto out;

View File

@ -1,4 +1,4 @@
/* $Id: osdep-sunos.c,v 1.1 2009-10-14 10:14:21 nicm Exp $ */
/* $Id: osdep-sunos.c,v 1.2 2009-10-15 07:11:25 nicm Exp $ */
/*
* Copyright (c) 2009 Todd Carson <toc@daybefore.net>
@ -28,7 +28,7 @@
#include "tmux.h"
char *
osdep_get_name(int fd, unused char *tty)
osdep_get_name(int fd, char *tty)
{
struct psinfo p;
struct stat st;
@ -37,18 +37,15 @@ osdep_get_name(int fd, unused char *tty)
int f;
pid_t pgrp;
if ((path = ptsname(fd)) == NULL)
return (NULL);
if ((f = open(path, O_RDONLY)) < 0)
if ((f = open(tty, O_RDONLY)) < 0)
return (NULL);
if ((fstat(f, &st) != 0) ||
(ioctl(f, TIOCGPGRP, &pgrp) != 0)) {
(void) close(f);
close(f);
return (NULL);
}
(void) close(f);
close(f);
xasprintf(&path, "/proc/%hu/psinfo", pgrp);
f = open(path, O_RDONLY);
@ -57,7 +54,7 @@ osdep_get_name(int fd, unused char *tty)
return (NULL);
bytes = read(f, &p, sizeof(p));
(void) close(f);
close(f);
if (bytes != sizeof(p))
return (NULL);