From: Ulrich Drepper Date: Sun, 2 Apr 2000 08:05:36 +0000 (+0000) Subject: Update. X-Git-Tag: upstream/2.30~25939 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=750f9af6199e4a76e04c819b25dfcb58cf779b60;p=external%2Fglibc.git Update. * posix/unistd.h (socklen_t): Define if it has not yet happened. (gethostname): Change type of second parameter to socklen_t. * include/unistd.h (__gethostname): Change type of second parameter to socklen_t. * sysdeps/generic/gethostname.c (__gethostname): Likewise. * sysdeps/mach/hurd/gethostname.c (__gethostname): Likewise. * sysdeps/unix/sysv/gethostname.c (__gethostname): Likewise. * sysdeps/unix/sysv/sysv4/solaris2/gethostname.c (__gethostname): Likewise. * sysdeps/unix/sysv/linux/gethostname.c: Removed. * sysdeps/generic/bits/socket.h: Use __socklen_t to define socklen_t. Allow definition elsewhere. * sysdeps/unix/sysv/aix/bits/socket.h: Likewise. * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise. * sysdeps/generic/bits/types.h: Define __socklen_t. * sysdeps/unix/sysv/aix/bits/types.h: Likewise. * sysdeps/unix/sysv/hpux/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise. --- diff --git a/ChangeLog b/ChangeLog index 9273002..592d70d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,29 @@ 2000-04-01 Ulrich Drepper + * posix/unistd.h (socklen_t): Define if it has not yet happened. + (gethostname): Change type of second parameter to socklen_t. + * include/unistd.h (__gethostname): Change type of second + parameter to socklen_t. + * sysdeps/generic/gethostname.c (__gethostname): Likewise. + * sysdeps/mach/hurd/gethostname.c (__gethostname): Likewise. + * sysdeps/unix/sysv/gethostname.c (__gethostname): Likewise. + * sysdeps/unix/sysv/sysv4/solaris2/gethostname.c (__gethostname): + Likewise. + * sysdeps/unix/sysv/linux/gethostname.c: Removed. + * sysdeps/generic/bits/socket.h: Use __socklen_t to define socklen_t. + Allow definition elsewhere. + * sysdeps/unix/sysv/aix/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise. + * sysdeps/generic/bits/types.h: Define __socklen_t. + * sysdeps/unix/sysv/aix/bits/types.h: Likewise. + * sysdeps/unix/sysv/hpux/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise. + * sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise. + * inet/arpa/inet.h (inet_addr): Change return type to in_addr_t. (inet_lnaof): Likewise. (inet_netof): Likewise. diff --git a/bits/socket.h b/bits/socket.h index 7828d01..4f29d83 100644 --- a/bits/socket.h +++ b/bits/socket.h @@ -31,7 +31,10 @@ #include /* Type for length arguments in socket calls. */ -typedef unsigned int socklen_t; +#ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +#endif /* Types of sockets. */ diff --git a/bits/types.h b/bits/types.h index fd9818e..a7b736d 100644 --- a/bits/types.h +++ b/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -139,4 +139,7 @@ typedef unsigned int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef long int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + #endif /* bits/types.h */ diff --git a/include/unistd.h b/include/unistd.h index 68dd225..f9f55cf 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -70,7 +70,7 @@ extern int __link (__const char *__from, __const char *__to); extern int __symlink (__const char *__from, __const char *__to); extern int __readlink (__const char *__path, char *__buf, size_t __len); extern int __unlink (__const char *__name); -extern int __gethostname (char *__name, size_t __len); +extern int __gethostname (char *__name, socklen_t __len); extern int __profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale); extern int __getdtablesize (void); diff --git a/posix/unistd.h b/posix/unistd.h index e482d1b..1bae274 100644 --- a/posix/unistd.h +++ b/posix/unistd.h @@ -242,6 +242,13 @@ typedef __intptr_t intptr_t; # endif #endif +#if defined __USE_BSD || defined __USE_XOPEN +# ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +# endif +#endif + /* Values for the second argument to access. These may be OR'd together. */ #define R_OK 4 /* Test for read permission. */ @@ -735,7 +742,7 @@ extern int setlogin (__const char *__name) __THROW; /* Put the name of the current host in no more than LEN bytes of NAME. The result is null-terminated if LEN is large enough for the full name and the terminator. */ -extern int gethostname (char *__name, size_t __len) __THROW; +extern int gethostname (char *__name, socklen_t __len) __THROW; /* Set the name of the current host to NAME, which is LEN bytes long. This call is restricted to the super-user. */ diff --git a/sysdeps/generic/bits/socket.h b/sysdeps/generic/bits/socket.h index 7828d01..4f29d83 100644 --- a/sysdeps/generic/bits/socket.h +++ b/sysdeps/generic/bits/socket.h @@ -31,7 +31,10 @@ #include /* Type for length arguments in socket calls. */ -typedef unsigned int socklen_t; +#ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +#endif /* Types of sockets. */ diff --git a/sysdeps/generic/bits/types.h b/sysdeps/generic/bits/types.h index fd9818e..a7b736d 100644 --- a/sysdeps/generic/bits/types.h +++ b/sysdeps/generic/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -139,4 +139,7 @@ typedef unsigned int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef long int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + #endif /* bits/types.h */ diff --git a/sysdeps/generic/gethostname.c b/sysdeps/generic/gethostname.c index ad09b00..6c3e116 100644 --- a/sysdeps/generic/gethostname.c +++ b/sysdeps/generic/gethostname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 2000 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 @@ -25,7 +25,7 @@ int __gethostname (name, len) char *name; - size_t len; + socklen_t len; { __set_errno (ENOSYS); return -1; diff --git a/sysdeps/mach/hurd/gethostname.c b/sysdeps/mach/hurd/gethostname.c index 2f63bef..b74945b 100644 --- a/sysdeps/mach/hurd/gethostname.c +++ b/sysdeps/mach/hurd/gethostname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. +/* Copyright (C) 1991-1997, 2000 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 @@ -25,7 +25,7 @@ int __gethostname (name, len) char *name; - size_t len; + socklen_t len; { /* The host name is just the contents of the file /etc/hostname. */ ssize_t n = _hurd_get_host_config ("/etc/hostname", name, len); diff --git a/sysdeps/unix/sysv/aix/bits/socket.h b/sysdeps/unix/sysv/aix/bits/socket.h index e897354..eb5b766 100644 --- a/sysdeps/unix/sysv/aix/bits/socket.h +++ b/sysdeps/unix/sysv/aix/bits/socket.h @@ -32,7 +32,10 @@ #include /* Type for length arguments in socket calls. */ -typedef unsigned int socklen_t; +#ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +#endif /* Types of sockets. */ enum __socket_type diff --git a/sysdeps/unix/sysv/aix/bits/types.h b/sysdeps/unix/sysv/aix/bits/types.h index c41b34c..830dcea 100644 --- a/sysdeps/unix/sysv/aix/bits/types.h +++ b/sysdeps/unix/sysv/aix/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -145,4 +145,7 @@ typedef unsigned int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + #endif /* bits/types.h */ diff --git a/sysdeps/unix/sysv/gethostname.c b/sysdeps/unix/sysv/gethostname.c index 95a9641..7065649 100644 --- a/sysdeps/unix/sysv/gethostname.c +++ b/sysdeps/unix/sysv/gethostname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1995, 1997, 2000 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 @@ -17,6 +17,7 @@ Boston, MA 02111-1307, USA. */ #include +#include #include #include @@ -26,12 +27,22 @@ int __gethostname (name, len) char *name; - size_t len; + socklen_t len; { struct utsname buf; + size_t node_len; + if (uname (&buf)) return -1; - strncpy (name, buf.nodename, len); + + node_len = strlen (buf.nodename) + 1; + if (node_len > len) + { + __set_errno (ENAMETOOLONG); + return -1; + } + + memcpy (name, buf.nodename, node_len); return 0; } diff --git a/sysdeps/unix/sysv/hpux/bits/types.h b/sysdeps/unix/sysv/hpux/bits/types.h index 86595e8..e95892e 100644 --- a/sysdeps/unix/sysv/hpux/bits/types.h +++ b/sysdeps/unix/sysv/hpux/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1994-1998, 2000 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 @@ -103,7 +103,7 @@ typedef struct from the global namespace. */ #ifdef __USE_XOPEN __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; -# define __FDS_BITS(set) ((set)->fds_bits) +# define __FDS_BITS(set) ((set)->fds_bits) #else __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS]; # define __FDS_BITS(set) ((set)->__fds_bits) @@ -144,4 +144,7 @@ typedef unsigned int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + #endif /* bits/types.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/bits/types.h b/sysdeps/unix/sysv/linux/alpha/bits/types.h index 8a79621..722db9e 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/types.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -123,6 +123,9 @@ typedef unsigned long int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef long int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + /* Now add the thread types. */ #ifdef __USE_UNIX98 diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h index c861387..9dd8a80 100644 --- a/sysdeps/unix/sysv/linux/bits/socket.h +++ b/sysdeps/unix/sysv/linux/bits/socket.h @@ -1,5 +1,5 @@ /* System-specific socket constants and types. Linux version. - Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. + Copyright (C) 1991, 1992, 1994-1999, 2000 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 @@ -32,7 +32,10 @@ #include /* Type for length arguments in socket calls. */ -typedef unsigned int socklen_t; +#ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +#endif /* Types of sockets. */ enum __socket_type diff --git a/sysdeps/unix/sysv/linux/bits/types.h b/sysdeps/unix/sysv/linux/bits/types.h index 45286ea..f9bf839 100644 --- a/sysdeps/unix/sysv/linux/bits/types.h +++ b/sysdeps/unix/sysv/linux/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -149,6 +149,9 @@ typedef unsigned long int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + /* Now add the thread types. */ #ifdef __USE_UNIX98 diff --git a/sysdeps/unix/sysv/linux/gethostname.c b/sysdeps/unix/sysv/linux/gethostname.c deleted file mode 100644 index 94a4601..0000000 --- a/sysdeps/unix/sysv/linux/gethostname.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (C) 1992, 1995, 1996, 1997, 1998 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include -#include -#include - -/* Put the name of the current host in no more than LEN bytes of NAME. - The result is null-terminated if LEN is large enough for the full - name and the terminator. */ -int -__gethostname (name, len) - char *name; - size_t len; -{ - struct utsname buf; - size_t node_len; - - if (name == NULL) - { - __set_errno (EINVAL); - return -1; - } - - if (uname (&buf)) - return -1; - - node_len = strlen (buf.nodename) + 1; - if (node_len > len) - { - __set_errno (ENAMETOOLONG); - return -1; - } - - memcpy (name, buf.nodename, node_len); - return 0; -} - -weak_alias (__gethostname, gethostname) diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket.h b/sysdeps/unix/sysv/linux/mips/bits/socket.h index 747b119..1462331 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/socket.h +++ b/sysdeps/unix/sysv/linux/mips/bits/socket.h @@ -32,7 +32,10 @@ #include /* Type for length arguments in socket calls. */ -typedef unsigned int socklen_t; +#ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +#endif /* Types of sockets. */ enum __socket_type diff --git a/sysdeps/unix/sysv/linux/mips/bits/types.h b/sysdeps/unix/sysv/linux/mips/bits/types.h index 48a9bf0..6bb07e7 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/types.h +++ b/sysdeps/unix/sysv/linux/mips/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -149,6 +149,9 @@ typedef unsigned long int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + /* Now add the thread types. */ #ifdef __USE_UNIX98 diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types.h b/sysdeps/unix/sysv/linux/sparc/bits/types.h index de08560..8d76cd7 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/types.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -173,6 +173,9 @@ typedef long int __intptr_t; typedef int __intptr_t; #endif +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + /* Now add the thread types. */ #ifdef __USE_UNIX98 diff --git a/sysdeps/unix/sysv/sysv4/gethostname.c b/sysdeps/unix/sysv/sysv4/gethostname.c index 558d16e..3f967e1 100644 --- a/sysdeps/unix/sysv/sysv4/gethostname.c +++ b/sysdeps/unix/sysv/sysv4/gethostname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1995, 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Brendan Kehoe (brendan@zen.org). @@ -22,12 +22,12 @@ #include #include -extern int __sysinfo __P ((int command, char *buf, long count)); +extern int __sysinfo (int command, char *buf, long int count); int __gethostname (name, namelen) char *name; - size_t namelen; + socklen_t namelen; { return __sysinfo (SI_HOSTNAME, name, namelen); } diff --git a/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h b/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h index 1e7b50e..65ad002 100644 --- a/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h +++ b/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 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 @@ -134,4 +134,7 @@ typedef unsigned int __t_uscalar_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ typedef long int __intptr_t; +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + #endif /* bits/types.h */