X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fptsname.c;h=102a65c90a65eae441998cd68ee894da8efb75da;hb=78232883c8c01a22307bb38793928f2b9a5a6159;hp=a62ef2104af2c61e117581da19d86f2ac1ec4429;hpb=3b7b97813fbb7f37f07f2acb8e0b0106efa3bf93;p=gnulib.git diff --git a/lib/ptsname.c b/lib/ptsname.c index a62ef2104..102a65c90 100644 --- a/lib/ptsname.c +++ b/lib/ptsname.c @@ -1,5 +1,5 @@ /* Determine name of the slave side of a pseudo-terminal. - Copyright (C) 1998, 2002, 2010 Free Software Foundation, Inc. + Copyright (C) 1998, 2002, 2010-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,32 +18,8 @@ #include -#include -#include -#include -#include - -#ifdef _LIBC -# include -#else -# ifndef _PATH_TTY -# define _PATH_TTY "/dev/tty" -# endif -# ifndef _PATH_DEV -# define _PATH_DEV "/dev/" -# endif - -# define __set_errno(e) errno = (e) -# define __isatty isatty -# define __stat stat -# define __ttyname_r ttyname_r - -static int __ptsname_r (int fd, char *buf, size_t buflen); -#endif - - /* Static buffer for `ptsname'. */ -static char buffer[sizeof (_PATH_TTY) + 2]; +static char buffer[64]; /* Return the pathname of the pseudo terminal slave associated with @@ -52,43 +28,5 @@ static char buffer[sizeof (_PATH_TTY) + 2]; char * ptsname (int fd) { - return __ptsname_r (fd, buffer, sizeof (buffer)) != 0 ? NULL : buffer; -} - - -/* Store at most BUFLEN characters of the pathname of the slave pseudo - terminal associated with the master FD is open on in BUF. - Return 0 on success, otherwise an error number. */ -static int -__ptsname_r (int fd, char *buf, size_t buflen) -{ - int save_errno = errno; - struct stat st; - - if (buf == NULL) - { - __set_errno (EINVAL); - return EINVAL; - } - - if (!__isatty (fd)) - /* We rely on isatty to set errno properly (i.e. EBADF or ENOTTY). */ - return errno; - - if (buflen < strlen (_PATH_TTY) + 3) - { - __set_errno (ERANGE); - return ERANGE; - } - - if (__ttyname_r (fd, buf, buflen) != 0) - return errno; - - buf[sizeof (_PATH_DEV) - 1] = 't'; - - if (__stat (buf, &st) < 0) - return errno; - - __set_errno (save_errno); - return 0; + return ptsname_r (fd, buffer, sizeof (buffer)) != 0 ? NULL : buffer; }