about summary refs log tree commit diff
path: root/resolv
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-10-31 02:57:12 +0000
committerUlrich Drepper <drepper@redhat.com>1996-10-31 02:57:12 +0000
commitba1ffaa1c6989873b57edc84491bfd1308b2190d (patch)
tree77274c1136f21a58e60397fdd62ad03846bc5888 /resolv
parentf0f4432f46882d22f61a89f4130a697313f53901 (diff)
downloadglibc-ba1ffaa1c6989873b57edc84491bfd1308b2190d.tar.gz
glibc-ba1ffaa1c6989873b57edc84491bfd1308b2190d.tar.xz
glibc-ba1ffaa1c6989873b57edc84491bfd1308b2190d.zip
update from main archive 961030 cvs/libc-961031
Thu Oct 31 00:01:39 1996  Ulrich Drepper  <drepper@cygnus.com>

	* signal/Makefile (routines): Add sigwait.
	* signal/signal.h: Add prototype for sigwait.
	* sysdeps/posix/sigwait.c: New file.  Implementation of sigwait
	function from POSIX.1c.
	* sysdeps/stub/sigwait.c: New file.  Stub version of sigwait.

Wed Oct 30 02:01:17 1996  Richard Henderson  <rth@tamu.edu>

	* sunrpc/xdr_float.c (xdr_float): Handle sizeof(float)!=sizeof(long),
	but don't bother going farther than sizeof(float)==sizeof(int).
	(xdr_double): Handle little-endian machines!  Handle sizeof(double)
	!= 2*sizeof(long), though again don't bother with more than int.

Thu Oct 29 16:09:42 1996  Craig Metz  <cmetz@inner.net>

	* sysdeps/posix/getaddrinfo.c: Use buffer limits for inet_ntop
	function.

Tue Oct 29 12:37:22 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makerules: Create symbolic links for linking in $(libdir).
	(make-link): Use absolute path for destination if this is not in
	the same directory.

	* elf/rtld.c (dl_main): When verifying don't check the name of
	the dynamic linker.

	* shlib-versions: Change entries for Hurd specific libs from
	*-*-gnu* to *-*-gnu?* so that i586-pc-linux-gnu does not match
	these entries.

	* assert/assert.h: Reformat copyright.
	Change reference to ANSI into reference to ISO C.
	* ctype/ctype.h: Likewise.
	* errno.h: Likewise.
	* limits.h: Likewise.
	* math/math.h: Likewise.
	* setjmp/setjmp.h: Likewise.
	* stdio/stdio.h: Likewise.
	* libio/stdio.h: Likewise.
	* stdlib/stdlib.h: Likewise.
	* string/string.h: Likewise.
	* time/time.h: Likewise.

	* string/argz.h: Use __const is definitions.

	* elf/dlfcn.h: Use __const and __P.  Reformat copyright.
	* misc/err.h: Likewise.

	* wctype/wctype.h (wctrans_t): Use __const instead of const.

	* Makeconfig ($(common-objpfx)soversions.mk): Generate list of
	sonames for versioned libraries.
	* Makefile: Remove code to generate libc-version.h.
	Generate gnu/lib-names.h with info from soversions.mk.
	* features.h: Define __GLIBC__ and __GLIBC_MINOR__.

	* dirent/tst-seekdir.c: Initialize save3.
	* grp/testgrp.c: Initialize my_group.

	* grp/fgetgrent_r.c: Change interface to follow POSIX.1c.
	* grp/grp.h: Likewise.
	* nss/getXXbyYY.c: Likewise.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/getXXent.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* pwd/fgetpwent_r.c: Likewise.
	* pwd/pwd.h: Likewise.
	* shadow/fgetspent_r.c: Likewise.
	* shadow/sgetspent.c: Likewise.
	* shadow/sgetspent_r.c: Likewise.
	* grp/fgetgrent.c: Adapt for change in interface of fgetgrent_r.
	* pwd/fgetpwent.c: Likewise, for fgetpwent_r.c.
	* shadow/fgetspent.c: Likewise, for fgetpwent_r.c.
	* resolv/netdb.h: Adapt prototypes for reentrant functions to
	follow POSIX.1c.
	* sunrpc/rpc/netdb.h: Likewise,
	* shadow/shadow.h: Likewise.

	* inet/getnetgrent_r.c: Follow change in pwd/grp function interface.

	* sysdeps/unix/getlogin_r.c: Return ERANGE when buffer is too small.

	* inet/herrno.c: Don't define __h_errno.  Only h_errno otherwise the
	ELF aliasing creates strange situations.
	* sysdeps/unix/sysv/linux/errnos.H: Define __set_errno as inline
	function.
	* sysdeps/unix/sysv/linux/i386/sysdep.S: Don't define __errno.
	* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.

	* libio/libio.h: Don't declare _IO_flockfile and _IO_funlockfile
	weak.

	* locale/programs/charmap.c: Add casts to prevent warnings.
	* locale/programs/linereader.h: Likewise.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/stringtrans.c: Likewise.
	Change types for various variables to prevent warnings.
	* locale/programs/ld-ctype.c: Likewise.
	* locale/programs/linereader.h (lr_ungetc): Likewise.
	* locale/programs/charset.h (struct charset): Use `unsigned int'
	as type for width_default.
	* posix/regex.c: Change type of `this_reg' variables.
	* stdio-common/Makefile: Use -Wno-format for tstdiomisc.c.
	* stdio-common/bug5.c: De-ANSI-fy.  Use correct types for
	variables.
	* stdio-common/printf_fp.c: Initialize to_shift.
	* stdio-common/test_rdwr.c: Add cast.
	* stdio-common/vfprintf.c: Add casts and use correct types to
	prevent warnings.
	* stdio-common/vfscanf.c: Initialize str and strptr.
	* sysdeps/libm-ieee754/e_jnf.c: Use correct types to prevent warnings.
	* sysdeps/libm-ieee754/e_pow.c: Likewise.
	* sysdeps/libm-ieee754/e_powf.c: Likewise.
	* sysdeps/libm-ieee754/e_rem_pio2f.c: Likewise.
	* time/test-tz.c: Likewise.

	* manual/creature.texi: Document _REENTRANT and _THREAD_SAFE.
	* manual/libc.texinfo: Prevent makeinfo failure by avoiding
	libc.cp index.  This must be fixed.
	* manual/nss.texi: Adapt for correct POSIX.1c interface of
	reentrant functions.
	* manual/users.texi: Document netgroup functions.

	* po/es.po: Updated.
	* po/fr.po: Updated.

	* posix/fnmatch.c: Change to match libit version.

	* posix/unistd.h: Change prototype for ttyname_r to match POSIX.1c.
	* sysdep/posix/ttyname_r.c: Likewise.

	* stdlib/atexit.h (__new_exitfn): Add internal locking.
	* stdlib/exit.c: De-ANSI-fy.  Handle new ef_us value for flavor.
	* stdlib/exit.h: De-ANSI-fy.  Define new ef_us value for flavor.
	* stdlib/random.c (__srandom): Add internal locking.
	(__initstate): Likewise.
	(__setstate): Likewise.
	(__random): Likewise.

Mon Oct 28 22:28:37 1996  NIIBE Yutaka  <gniibe@mri.co.jp>

	* sysdeps/generic/crypt-entry.c (crypt_r): Use __set_errno.
	(crypt): Likewise.
	* resolv/gethnamaddr.c (gethostbyname2): Likewise.
	* sysdeps/generic/uname.c: Likewise.
	* sysdeps/posix/rename.c: Likewise.
	* sysdeps/stub/setrlimit.c: Likewise.

	* nss/nss_db/db-netgrp.c (_nss_db_setnetgrent): Fix typo.

Sun Oct 27 11:12:50 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* locale/programs/ld-collate.c (collate_order_elem): Fix format
	string.
	(collate_element_to): Cast field width argument to `int' for
	format string.
	(collate_symbol): Likewise.
	(collate_order_elem): Likewise.
	(collate_weight_bsymbol): Likewise.
	(collate_simple_weight): Likewise.

	* locale/programs/ld-time.c (STRARR_ELEM): Fix format string.

	* locale/programs/ld-ctype.c (ctype_class_newP): Add missing
	argument for format string.
	(ctype_map_newP): Likewise.
	(set_class_defaults): Fix format string.

	* locale/programs/localedef.c (construct_output_path): Putting an
	explicit \0 into the format string does not work, use %c.

Sat Oct 26 20:38:36 1996  Richard Henderson  <rth@tamu.edu>

	* Makerules: Install all shared libraries in $(slibdir).

	* login/Makefile: Build libutil.so in others pass after
	libc.so is created.

	* misc/mntent.h: Include <paths.h> for _PATH_MNTTAB & _PATH_MOUNTED.

	* string/stratcliff.c: Allocate 3 pages instead of one, then use
	mprotect so that we know that the adjacent pages are inaccessible.

	* resource/sys/resource.h: Move all structures and enums to ...
	* sysdeps/generic/resourcebits.h: ... here ...
	* sysdeps/unix/bsd/sun/sunos4/resourcebits.h: ... and here.
	* sysdeps/unix/sysv/linux/alpha/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/i386/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/m68k/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/mips/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/resourcebits.h: New file.  Use kernel
	header for RLIMIT_* definitions.  The members of struct rlimit
	are longs.


Thu Oct 24 17:43:34 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* MakeTAGS (sysdep-dirs): Fix typo.

Wed Oct 23 03:45:22 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile (headers): Don't mention libc-version.h.
	(install-others): ...but here.

	* time/strptime.c: Recognize %s, %u, %g, and %G format.
 	nothing is found.  This guarantees all subsequent calls behave
	* sysdeps/unix/sysv/linux/syscalls.list: Change function name for
	* io/getwd.c (getwd) [! PATH_MAX]: Don't assume that the user's
	buffer is any longer than the amount necessary to hold the
	filename; the Hurd getcwd uses the *entire* contents of the
	buffer, however long it is specified to be.
	* posix/getconf.c: De-ANSI-fy.  Recognize POSIX.2 constant names.
	since these do not depend on the platform.
Diffstat (limited to 'resolv')
-rw-r--r--resolv/gethnamaddr.c2
-rw-r--r--resolv/netdb.h232
2 files changed, 120 insertions, 114 deletions
diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c
index 7c3096c967..6962f59610 100644
--- a/resolv/gethnamaddr.c
+++ b/resolv/gethnamaddr.c
@@ -455,7 +455,7 @@ gethostbyname2(name, af)
 		break;
 	default:
 		__set_h_errno (NETDB_INTERNAL);
-		errno = EAFNOSUPPORT;
+		__set_errno (EAFNOSUPPORT);
 		return (NULL);
 	}
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 38622e87fe..f906edac0b 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -28,6 +28,8 @@
 /* This is necessary to make this include file properly replace the
    Sun version.  */
 #include <rpc/netdb.h>
+#define __need_size_t
+#include <stddef.h>
 
 /* Absolute file name for network data base files.  */
 #define	_PATH_HEQUIV		"/etc/hosts.equiv"
@@ -43,23 +45,30 @@ __BEGIN_DECLS
 /* Error status for non-reentrant lookup functions.  */
 extern int h_errno;
 
-#if defined __USE_REENTRANT && (!defined _LIBC || defined _LIBC_REENTRANT)
-/* Function to access thread specific `h_errno' variable.  */
+/* Function to get address of global `h_errno' variable.  */
 extern int *__h_errno_location __P ((void)) __attribute__ ((__const__));
 
-/* An alias name for above variable.  */
-extern int __h_errno;
-
-/* Use a macro to access always the thread specific `h_errno' variable.  */
-#define h_errno (*__h_errno_location ())
-
+#ifdef _LIBC
 /* Retain some binary compatibility with old libraries by having both the
    global variable and the per-thread variable set on error.  */
-#define __set_h_errno(x) (h_errno = __h_errno = (x))
-#else
-#define __set_h_errno(x) (h_errno = (x))
+# ifdef _LIBC_REENTRANT
+static inline int
+__set_h_errno (int __err)
+{
+  return *__h_errno_location () = h_errno = __err;
+}
+# else
+#  define __set_h_errno(x) (h_errno = (x))
+# endif	/* _LIBC_REENTRANT */
+#endif /* _LIBC */
+
+
+#if defined __USE_REENTRANT && (!defined _LIBC || defined _LIBC_REENTRANT)
+/* Use a macro to access always the thread specific `h_errno' variable.  */
+# define h_errno (*__h_errno_location ())
 #endif
 
+
 /* Possible values left in `h_errno'.  */
 #define	NETDB_INTERNAL	-1	/* See errno.  */
 #define	NETDB_SUCCESS	0	/* No problem.  */
@@ -122,41 +131,39 @@ extern struct hostent *gethostbyname2 __P ((__const char *__name, int __af));
    argument is a pointer to a variable which gets the value which
    would be stored in the global variable `herrno' by the
    non-reentrant functions.  */
-extern struct hostent *__gethostent_r __P ((struct hostent *__result_buf,
-					    char *__buf, int __buf_len,
-					    int *__h_errnop));
-extern struct hostent *gethostent_r __P ((struct hostent *__result_buf,
-					  char *__buf, int __buf_len,
-					  int *__h_errnop));
-
-extern struct hostent *__gethostbyaddr_r __P ((__const char *__addr, int __len,
-					       int __type,
-					       struct hostent *__result_buf,
-					       char *__buf, int __buflen,
-					       int *__h_errnop));
-extern struct hostent *gethostbyaddr_r __P ((__const char *__addr, int __len,
-					     int __type,
-					     struct hostent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-
-extern struct hostent *__gethostbyname_r __P ((__const char *__name,
-					       struct hostent *__result_buf,
-					       char *__buf, int __buflen,
-					       int *__h_errnop));
-extern struct hostent *gethostbyname_r __P ((__const char *__name,
-					     struct hostent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-
-extern struct hostent *__gethostbyname2_r __P ((__const char *__name, int __af,
-						struct hostent *__result_buf,
-						char *__buf, int __buflen,
-						int *__h_errnop));
-extern struct hostent *gethostbyname2_r __P ((__const char *__name, int __af,
-					      struct hostent *__result_buf,
-					      char *__buf, int __buflen,
-					      int *__h_errnop));
+extern int __gethostent_r __P ((struct hostent *__result_buf, char *__buf,
+				size_t __buflen, struct hostent **__result,
+				int *__h_errnop));
+extern int gethostent_r __P ((struct hostent *__result_buf, char *__buf,
+			      size_t __buflen, struct hostent **__result,
+			      int *__h_errnop));
+
+extern int __gethostbyaddr_r __P ((__const char *__addr, int __len, int __type,
+				   struct hostent *__result_buf, char *__buf,
+				   size_t __buflen, struct hostent **__result,
+				   int *__h_errnop));
+extern int gethostbyaddr_r __P ((__const char *__addr, int __len, int __type,
+				 struct hostent *__result_buf, char *__buf,
+				 size_t __buflen, struct hostent **__result,
+				 int *__h_errnop));
+
+extern int __gethostbyname_r __P ((__const char *__name,
+				   struct hostent *__result_buf, char *__buf,
+				   size_t __buflen, struct hostent **__result,
+				   int *__h_errnop));
+extern int gethostbyname_r __P ((__const char *__name,
+				 struct hostent *__result_buf, char *__buf,
+				 size_t __buflen, struct hostent **__result,
+				 int *__h_errnop));
+
+extern int __gethostbyname2_r __P ((__const char *__name, int __af,
+				    struct hostent *__result_buf, char *__buf,
+				    size_t __buflen, struct hostent **__result,
+				    int *__h_errnop));
+extern int gethostbyname2_r __P ((__const char *__name, int __af,
+				  struct hostent *__result_buf, char *__buf,
+				  size_t __buflen, struct hostent **__result,
+				  int *__h_errnop));
 #endif	/* reentrant */
 
 
@@ -196,32 +203,30 @@ extern struct netent *getnetbyname __P ((__const char *__name));
    argument is a pointer to a variable which gets the value which
    would be stored in the global variable `herrno' by the
    non-reentrant functions.  */
-extern struct netent *__getnetent_r __P ((struct netent *__result_buf,
-					  char *__buf, int __buf_len,
-					  int *__h_errnop));
-extern struct netent *getnetent_r __P ((struct netent *__result_buf,
-					char *__buf, int __buf_len,
-					int *__h_errnop));
-
-extern struct netent *__getnetbyaddr_r __P ((unsigned long int __net,
-					     int __type,
-					     struct netent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-extern struct netent *getnetbyaddr_r __P ((unsigned long int __net,
-					   int __type,
-					   struct netent *__result_buf,
-					   char *__buf, int __buflen,
-					   int *__h_errnop));
-
-extern struct netent *__getnetbyname_r __P ((__const char *__name,
-					     struct netent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-extern struct netent *getnetbyname_r __P ((__const char *__name,
-					   struct netent *__result_buf,
-					   char *__buf, int __buflen,
-					   int *__h_errnop));
+extern int __getnetent_r __P ((struct netent *__result_buf, char *__buf,
+			       size_t __buflen, struct netent **__result,
+			       int *__h_errnop));
+extern int getnetent_r __P ((struct netent *__result_buf, char *__buf,
+			     size_t __buflen, struct netent **__result,
+			     int *__h_errnop));
+
+extern int __getnetbyaddr_r __P ((unsigned long int __net, int __type,
+				  struct netent *__result_buf, char *__buf,
+				  size_t __buflen, struct netent **__result,
+				  int *__h_errnop));
+extern int getnetbyaddr_r __P ((unsigned long int __net, int __type,
+				struct netent *__result_buf, char *__buf,
+				size_t __buflen, struct netent **__result,
+				int *__h_errnop));
+
+extern int __getnetbyname_r __P ((__const char *__name,
+				  struct netent *__result_buf, char *__buf,
+				  size_t __buflen, struct netent **__result,
+				  int *__h_errnop));
+extern int getnetbyname_r __P ((__const char *__name,
+				struct netent *__result_buf, char *__buf,
+				size_t __buflen, struct netent **__result,
+				int *__h_errnop));
 #endif	/* reentrant */
 
 
@@ -258,27 +263,26 @@ extern struct servent *getservbyport __P ((int __port, __const char *__proto));
 #ifdef	__USE_REENTRANT
 /* Reentrant versions of the functions above.  The additional
    arguments specify a buffer of BUFLEN starting at BUF.  */
-extern struct servent *__getservent_r __P ((struct servent *__result_buf,
-					    char *__buf, int __buf_len));
-extern struct servent *getservent_r __P ((struct servent *__result_buf,
-					  char *__buf, int __buf_len));
-
-extern struct servent *__getservbyname_r __P ((__const char *__name,
-					       __const char *__proto,
-					       struct servent *__result_buf,
-					       char *__buf, int __buflen));
-extern struct servent *getservbyname_r __P ((__const char *__name,
-					     __const char *__proto,
-					     struct servent *__result_buf,
-					     char *__buf, int __buflen));
-
-extern struct servent *__getservbyport_r __P ((int __port,
-					       __const char *__proto,
-					       struct servent *__result_buf,
-					       char *__buf, int __buflen));
-extern struct servent *getservbyport_r __P ((int __port, __const char *__proto,
-					     struct servent *__result_buf,
-					     char *__buf, int __buflen));
+extern int __getservent_r __P ((struct servent *__result_buf, char *__buf,
+				size_t __buflen, struct servent **__result));
+extern int getservent_r __P ((struct servent *__result_buf, char *__buf,
+			      size_t __buflen, struct servent **__result));
+
+extern int __getservbyname_r __P ((__const char *__name, __const char *__proto,
+				   struct servent *__result_buf, char *__buf,
+				   size_t __buflen,
+				   struct servent **__result));
+extern int getservbyname_r __P ((__const char *__name, __const char *__proto,
+				 struct servent *__result_buf, char *__buf,
+				 size_t __buflen, struct servent **__result));
+
+extern int __getservbyport_r __P ((int __port, __const char *__proto,
+				   struct servent *__result_buf, char *__buf,
+				   size_t __buflen,
+				   struct servent **__result));
+extern int getservbyport_r __P ((int __port, __const char *__proto,
+				 struct servent *__result_buf, char *__buf,
+				 size_t __buflen, struct servent **__result));
 #endif	/* reentrant */
 
 
@@ -311,24 +315,26 @@ extern struct protoent *getprotobynumber __P ((int __proto));
 #ifdef	__USE_REENTRANT
 /* Reentrant versions of the functions above.  The additional
    arguments specify a buffer of BUFLEN starting at BUF.  */
-extern struct protoent *__getprotoent_r __P ((struct protoent *__result_buf,
-					      char *__buf, int __buf_len));
-extern struct protoent *getprotoent_r __P ((struct protoent *__result_buf,
-					    char *__buf, int __buf_len));
-
-extern struct protoent *__getprotobyname_r __P ((__const char *__name,
-						 struct protoent *__result_buf,
-						 char *__buf, int __buflen));
-extern struct protoent *getprotobyname_r __P ((__const char *__name,
-					       struct protoent *__result_buf,
-					       char *__buf, int __buflen));
-
-extern struct protoent *__getprotobynumber_r __P ((int __proto,
-						   struct protoent *__res_buf,
-						   char *__buf, int __buflen));
-extern struct protoent *getprotobynumber_r __P ((int __proto,
-						 struct protoent *__result_buf,
-						 char *__buf, int __buflen));
+extern int __getprotoent_r __P ((struct protoent *__result_buf, char *__buf,
+				 size_t __buflen, struct protoent **__result));
+extern int getprotoent_r __P ((struct protoent *__result_buf, char *__buf,
+			       size_t __buflen, struct protoent **__result));
+
+extern int __getprotobyname_r __P ((__const char *__name,
+				    struct protoent *__result_buf, char *__buf,
+				    size_t __buflen,
+				    struct protoent **__result));
+extern int getprotobyname_r __P ((__const char *__name,
+				  struct protoent *__result_buf, char *__buf,
+				  size_t __buflen,
+				  struct protoent **__result));
+
+extern int __getprotobynumber_r __P ((int __proto, struct protoent *__res_buf,
+				      char *__buf, size_t __buflen,
+				      struct protoent **__result));
+extern int getprotobynumber_r __P ((int __proto, struct protoent *__result_buf,
+				    char *__buf, size_t __buflen,
+				    struct protoent **__result));
 #endif	/* reentrant */
 
 
@@ -351,10 +357,10 @@ extern int innetgr __P ((__const char *__netgroup, __const char *__host,
 /* Reentrant version of `getnetgrent' where result is placed in BUFFER.  */
 extern int __getnetgrent_r __P ((char **__hostp, char **__userp,
 				 char **__domainp,
-				 char *__buffer, int __buflen));
+				 char *__buffer, size_t __buflen));
 extern int getnetgrent_r __P ((char **__hostp, char **__userp,
 			       char **__domainp,
-			       char *__buffer, int __buflen));
+			       char *__buffer, size_t __buflen));
 #endif