diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-06-17 23:06:41 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-06-17 23:06:41 +0000 |
commit | c7be5c15e2fbccdc00b970c3b5b9c27e95dee5be (patch) | |
tree | d67fbbaa2fdad7f99e8a7ed5ed4ddb5407d8d4a6 | |
parent | 5b2892d54ed237f232cb3219df4ebcadf7146471 (diff) | |
download | glibc-c7be5c15e2fbccdc00b970c3b5b9c27e95dee5be.zip glibc-c7be5c15e2fbccdc00b970c3b5b9c27e95dee5be.tar.gz glibc-c7be5c15e2fbccdc00b970c3b5b9c27e95dee5be.tar.bz2 |
(if_indextoname): Correct error value for unknown interface.
-rw-r--r-- | sysdeps/unix/sysv/linux/if_index.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/if_index.c b/sysdeps/unix/sysv/linux/if_index.c index 9922ced..76349bd 100644 --- a/sysdeps/unix/sysv/linux/if_index.c +++ b/sysdeps/unix/sysv/linux/if_index.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997,98,99,2000,2002,2003 Free Software Foundation, Inc. +/* Copyright (C) 1997,98,99,2000,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -211,18 +211,26 @@ if_indextoname (unsigned int ifindex, char *ifname) close_not_cancel_no_status (fd); -# if __ASSUME_SIOCGIFNAME == 0 if (status < 0) { +# if __ASSUME_SIOCGIFNAME == 0 if (errno == EINVAL) siocgifname_works_not = 1; /* Don't make the same mistake twice. */ + else +# endif + { + if (errno == ENODEV) + /* POSIX requires ENXIO. */ + __set_errno (ENXIO); + + return NULL; + } } else return strncpy (ifname, ifr.ifr_name, IFNAMSIZ); +# if __ASSUME_SIOCGIFNAME == 0 __set_errno (serrno); -# else - return status < 0 ? NULL : strncpy (ifname, ifr.ifr_name, IFNAMSIZ); # endif } # endif @@ -240,6 +248,9 @@ if_indextoname (unsigned int ifindex, char *ifname) } if_freenameindex (idx); + + if (result == NULL) + __set_errno (ENXIO); } return result; # endif |