From 0614ca434a6ff0995ea52b1852cc4639252931cb Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Thu, 15 Oct 2009 07:11:25 +0000 Subject: [PATCH] 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! ;-) --- compat/forkpty-sunos.c | 6 ++++-- osdep-sunos.c | 15 ++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/compat/forkpty-sunos.c b/compat/forkpty-sunos.c index 8d7caac5..67d8a029 100644 --- a/compat/forkpty-sunos.c +++ b/compat/forkpty-sunos.c @@ -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 @@ -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; diff --git a/osdep-sunos.c b/osdep-sunos.c index a1abcbff..d2681d04 100644 --- a/osdep-sunos.c +++ b/osdep-sunos.c @@ -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 @@ -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);