This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH,HURD] ttyname_r returning EINVAL


From: Simon Josefsson <simon@josefsson.org>
> As explained as 4) in this e-mail:
> 
> https://lists.gnu.org/archive/html/bug-gnulib/2011-08/msg00027.html
> 
> it seems like the ttyname_r function returns EINVAL when the provided
> buffer is too small.
> 
> This doesn't seem consistent with the specifcation at:
> 
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/ttyname.html
> 
> Instead, it seems this should be ERANGE?
> 
> [ERANGE]
>     The value of namesize is smaller than the length of the string to be
>     returned including the terminating null character.

I agree, here is a patch.


2011-08-05  Simon Josefsson  <simon@josefsson.org>

        * sysdeps/mach/hurd/ttyname_r.c (__ttyname_r): Return ERANGE instead of
        EINVAL when BUFLEN is too smal.

diff --git a/sysdeps/mach/hurd/ttyname_r.c b/sysdeps/mach/hurd/ttyname_r.c
index 5f6c9c3..5718fca 100644
--- a/sysdeps/mach/hurd/ttyname_r.c
+++ b/sysdeps/mach/hurd/ttyname_r.c
@@ -43,7 +43,7 @@ __ttyname_r (int fd, char *buf, size_t buflen)
   len = strlen (nodename) + 1;
   if (len > buflen)
     {
-      errno = EINVAL;
+      errno = ERANGE;
       return errno;
     }
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]