update from main archive 960107

Tue Jan  7 09:48:15 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* signal/sigempty.c (sigemptyset): Correct typo: Empty set should
	have all bits zero.

Tue Jan  7 23:44:39 1997  Ulrich Drepper  <drepper@cygnus.com>

	* inet/gethstbynm.c: Include additional headers for additional
	code in nss/digits_dots.c.
	* inet/gethstbynm_r.c: Likewise.
	* inet/gethstbynm2.c: Likewise.
	* inet/gethstbynm2_r.c: Likewise.
	* nss/digits_dots.c: New file.  Handle dotted pair notation for
	gethstbynm functions.
	* nss/getXXbyYY.c: Include digits_dots.c to get extra code for
	handling dotted pair notation.
	* nss/getXXbyYY_r.c: Likewise.
	Patches by HJ Lu.

	* resolv/nss_dns/dns-host.c: Don't handle dotted pair notation.

	* io/getwd.c: Optimized a bit.

	* signal/signal.h: Always declare __sysv_signal.

	* sysdeps/generic/setenv.c: Add some portability code.

	* sysdeps/unix/sysv/fcntlbits.h: Update copyright.

	* sysdeps/unix/sysv/linux/fcntlbits.h: Add definitions from kernel
	to avoid using kernel headers.
	* sysdeps/unix/sysv/linux/alpha/fcntlbits.h: New file.  Alpha
	specific version.

	* sysdeps/unix/sysv/linux/syscalls.list: Add sys_mknod.  Don't
	mark sigreturn as EXTRA.

	* sysdeps/unix/sysv/linux/ustat.c: Declare __syscall_ustat.
	* sysdeps/unix/sysv/linux/alpha/ustat.c: New file.  Alpha version.

Tue Jan  7 09:48:15 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* io/fts.c (fts_alloc): Add const to second parameter of function.

	* io/Makefile: Change CFLAGS-fts.c and define CFLAGS-ftw.c to
	prevent warnings.

	* signal/sigfillset.c: Include <string.h> for memset declaration.

Tue Jan  7 11:14:32 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* sysdeps/generic/setenv.c: Fix portability problems.

Tue Jan  7 02:10:17 1997  Ulrich Drepper  <drepper@cygnus.com>

	* posix/getopt.c (_getopt_internal): Don't reset __getopt_initialized
	after the last option was seen.

Mon Jan  6 15:30:21 1997  Ulrich Drepper  <drepper@cygnus.com>

	* elf/elf.h (DT_EXTRANUM): Set to 3 since 0x7ffffffd is used.
This commit is contained in:
Ulrich Drepper 1997-01-07 23:29:44 +00:00
parent 2ca1375a22
commit 61c162b5bc
24 changed files with 645 additions and 181 deletions

View File

@ -1,3 +1,65 @@
Tue Jan 7 09:48:15 1997 Andreas Jaeger <aj@arthur.pfalz.de>
* signal/sigempty.c (sigemptyset): Correct typo: Empty set should
have all bits zero.
Tue Jan 7 23:44:39 1997 Ulrich Drepper <drepper@cygnus.com>
* inet/gethstbynm.c: Include additional headers for additional
code in nss/digits_dots.c.
* inet/gethstbynm_r.c: Likewise.
* inet/gethstbynm2.c: Likewise.
* inet/gethstbynm2_r.c: Likewise.
* nss/digits_dots.c: New file. Handle dotted pair notation for
gethstbynm functions.
* nss/getXXbyYY.c: Include digits_dots.c to get extra code for
handling dotted pair notation.
* nss/getXXbyYY_r.c: Likewise.
Patches by HJ Lu.
* resolv/nss_dns/dns-host.c: Don't handle dotted pair notation.
* io/getwd.c: Optimized a bit.
* signal/signal.h: Always declare __sysv_signal.
* sysdeps/generic/setenv.c: Add some portability code.
* sysdeps/unix/sysv/fcntlbits.h: Update copyright.
* sysdeps/unix/sysv/linux/fcntlbits.h: Add definitions from kernel
to avoid using kernel headers.
* sysdeps/unix/sysv/linux/alpha/fcntlbits.h: New file. Alpha
specific version.
* sysdeps/unix/sysv/linux/syscalls.list: Add sys_mknod. Don't
mark sigreturn as EXTRA.
* sysdeps/unix/sysv/linux/ustat.c: Declare __syscall_ustat.
* sysdeps/unix/sysv/linux/alpha/ustat.c: New file. Alpha version.
Tue Jan 7 09:48:15 1997 Andreas Jaeger <aj@arthur.pfalz.de>
* io/fts.c (fts_alloc): Add const to second parameter of function.
* io/Makefile: Change CFLAGS-fts.c and define CFLAGS-ftw.c to
prevent warnings.
* signal/sigfillset.c: Include <string.h> for memset declaration.
Tue Jan 7 11:14:32 1997 Miles Bader <miles@gnu.ai.mit.edu>
* sysdeps/generic/setenv.c: Fix portability problems.
Tue Jan 7 02:10:17 1997 Ulrich Drepper <drepper@cygnus.com>
* posix/getopt.c (_getopt_internal): Don't reset __getopt_initialized
after the last option was seen.
Mon Jan 6 15:30:21 1997 Ulrich Drepper <drepper@cygnus.com>
* elf/elf.h (DT_EXTRANUM): Set to 3 since 0x7ffffffd is used.
Mon Jan 6 13:57:05 1997 Ulrich Drepper <drepper@cygnus.com>
* io/ftw.c: Add `const' to second parameter of function given as

View File

@ -1,23 +1,28 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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 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.
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. */
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 <ctype.h>
#include <errno.h>
#include <netdb.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define LOOKUP_TYPE struct hostent
@ -28,4 +33,6 @@ Boston, MA 02111-1307, USA. */
#define BUFLEN 1024
#define NEED_H_ERRNO 1
#define HANDLE_DIGITS_DOTS 1
#include "../nss/getXXbyYY.c"

View File

@ -1,23 +1,28 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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 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.
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. */
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 <ctype.h>
#include <errno.h>
#include <netdb.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define LOOKUP_TYPE struct hostent
@ -28,4 +33,7 @@ Boston, MA 02111-1307, USA. */
#define BUFLEN 1024
#define NEED_H_ERRNO 1
#define HANDLE_DIGITS_DOTS 1
#define HAVE_AF 1
#include "../nss/getXXbyYY.c"

View File

@ -1,23 +1,28 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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 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.
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. */
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 <ctype.h>
#include <errno.h>
#include <netdb.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define LOOKUP_TYPE struct hostent
@ -27,4 +32,8 @@ Boston, MA 02111-1307, USA. */
#define ADD_VARIABLES name, af
#define NEED_H_ERRNO 1
#define HANDLE_DIGITS_DOTS 1
#define HAVE_LOOKUP_BUFFER 1
#define HAVE_AF 1
#include "../nss/getXXbyYY_r.c"

View File

@ -1,23 +1,28 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
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 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.
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. */
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 <ctype.h>
#include <errno.h>
#include <netdb.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define LOOKUP_TYPE struct hostent
@ -28,4 +33,7 @@ Boston, MA 02111-1307, USA. */
#define NEED_H_ERRNO 1
#define NEED__RES 1
#define HANDLE_DIGITS_DOTS 1
#define HAVE_LOOKUP_BUFFER 1
#include "../nss/getXXbyYY_r.c"

View File

@ -1,4 +1,4 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
# Copyright (C) 1992, 93, 94, 95, 96, 97 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
@ -55,4 +55,5 @@ tests := test-utime
include ../Rules
CFLAGS-fts.c = -Wno-write-strings
CFLAGS-fts.c = -Wno-uninitialized
CFLAGS-ftw.c = -Wno-uninitialized

View File

@ -57,7 +57,7 @@ static char sccsid[] = "@(#)fts.c 8.2 (Berkeley) 1/2/94";
#endif
static FTSENT *fts_alloc __P((FTS *, char *, int));
static FTSENT *fts_alloc __P((FTS *, const char *, int));
static FTSENT *fts_build __P((FTS *, int));
static void fts_lfree __P((FTSENT *));
static void fts_load __P((FTS *, FTSENT *));
@ -886,7 +886,7 @@ fts_sort(sp, head, nitems)
static FTSENT *
fts_alloc(sp, name, namelen)
FTS *sp;
char *name;
const char *name;
register int namelen;
{
register FTSENT *p;

View File

@ -1,5 +1,5 @@
/* Obsolete function to get current working directory.
Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1996, 1997 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
@ -49,9 +49,7 @@ getwd (buf)
/* This is completely unsafe. Nobody can say how big the user
provided buffer is. Perhaps the application and the libc
disagree about the value of PATH_MAX. */
strcpy (buf, tmpbuf);
return buf;
return strcpy (buf, tmpbuf);
}
link_warning (getwd,

1
misc/syscall.h Normal file
View File

@ -0,0 +1 @@
#include <sys/syscall.h>

273
nss/digits_dots.c Normal file
View File

@ -0,0 +1,273 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by H.J. Lu <hjl@gnu.ai.mit.edu>, 1997.
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. */
/*
* disallow names consisting only of digits/dots, unless
* they end in a dot.
*/
if (isdigit (name[0]) || (isxdigit (name[0]) || name[0] == ':'))
{
const char *cp;
char *hostname;
struct hostent *host;
typedef unsigned char host_addr_t [16];
host_addr_t *host_addr;
typedef char *host_addr_list_t [2];
host_addr_list_t *host_aliases;
host_addr_list_t *h_addr_ptrs;
size_t size_needed;
int addr_size;
#ifndef HAVE_AF
int af = -1;
#endif
switch (af)
{
case AF_INET:
addr_size = INADDRSZ;
break;
case AF_INET6:
addr_size = IN6ADDRSZ;
break;
default:
af = (_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET;
addr_size = (af == AF_INET6 ) ? IN6ADDRSZ : INADDRSZ;
break;
}
size_needed = (sizeof (*host) + sizeof (*host_addr)
+ sizeof (*host_aliases) + sizeof (*h_addr_ptrs)
+ strlen (name) + 1);
#ifdef HAVE_LOOKUP_BUFFER
if (buflen < size_needed)
{
__set_errno (ERANGE);
goto done;
}
#else
if (buffer_size < size_needed)
{
char *new_buf;
buffer_size = size_needed;
new_buf = realloc (buffer, buffer_size);
if (new_buf == NULL)
{
save = errno;
free (buffer);
buffer = NULL;
buffer_size = 0;
__set_errno (save);
result = (struct hostent *) NULL;
goto done;
}
buffer = new_buf;
}
#endif /* HAVE_LOOKUP_BUFFER */
memset (buffer, 0, size_needed);
host = (struct hostent *) buffer;
host_addr = (host_addr_t *) ((char *) host + sizeof (*host));
host_aliases = (host_addr_list_t *)
((char *) host_addr + sizeof (*host_addr));
h_addr_ptrs = (host_addr_list_t *)
((char *) host_aliases + sizeof (*host_aliases));
hostname = (char *) h_addr_ptrs + sizeof (*h_addr_ptrs);
if (isdigit (name[0]))
{
for (cp = name;; ++cp)
{
if (!*cp)
{
if (*--cp == '.') break;
/* All-numeric, no dot at the end. Fake up a hostent as if
we'd actually done a lookup. What if someone types
255.255.255.255? The test below will succeed
spuriously... ??? */
if (inet_pton (af, name, host_addr) <= 0)
{
__set_h_errno (HOST_NOT_FOUND);
#ifndef HAVE_LOOKUP_BUFFER
result = (struct hostent *) NULL;
#endif
goto done;
}
strcpy (hostname, name);
host->h_name = hostname;
host->h_aliases = *host_aliases;
(*host_aliases)[0] = NULL;
(*h_addr_ptrs)[0] = (char *)host_addr;
(*h_addr_ptrs)[1] = (char *)0;
host->h_addr_list = *h_addr_ptrs;
if (_res.options & RES_USE_INET6 && af == AF_INET)
{
/* We need to change the IP v4 address into the
IP v6 address. */
char tmp[INADDRSZ], *p = (char *) host_addr;
int i;
/* Save a copy of the IP v4 address. */
memcpy (tmp, host_addr, INADDRSZ);
/* Mark this ipv6 addr as a mapped ipv4. */
for (i = 0; i < 10; i++)
*p++ = 0x00;
*p++ = 0xff;
*p++ = 0xff;
/* Copy the IP v4 address. */
memcpy (p, tmp, INADDRSZ);
host->h_addrtype = AF_INET6;
host->h_length = IN6ADDRSZ;
}
else
{
host->h_addrtype = af;
host->h_length = addr_size;
}
__set_h_errno (NETDB_SUCCESS);
#ifdef HAVE_LOOKUP_BUFFER
status = NSS_STATUS_SUCCESS;
#else
result = host;
#endif
goto done;
}
if (!isdigit (*cp) && *cp != '.') break;
}
}
if (isxdigit (name[0]) || name[0] == ':')
{
const char *cp;
char *hostname;
struct hostent *host;
typedef unsigned char host_addr_t [16];
host_addr_t *host_addr;
typedef char *host_addr_list_t [2];
host_addr_list_t *host_aliases;
host_addr_list_t *h_addr_ptrs;
size_t size_needed;
int addr_size;
#ifndef HAVE_AF
int af = -1;
#endif
switch (af)
{
case AF_INET:
addr_size = INADDRSZ;
break;
case AF_INET6:
addr_size = IN6ADDRSZ;
break;
default:
af = (_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET;
addr_size = (af == AF_INET6 ) ? IN6ADDRSZ : INADDRSZ;
break;
}
size_needed = (sizeof (*host) + sizeof (*host_addr)
+ sizeof (*host_aliases) + sizeof (*h_addr_ptrs)
+ strlen (name) + 1);
#ifdef HAVE_LOOKUP_BUFFER
if (buflen < size_needed)
{
__set_errno (ERANGE);
goto done;
}
#else
if (buffer_size < size_needed)
{
char *new_buf;
buffer_size = size_needed;
new_buf = realloc (buffer, buffer_size);
if (new_buf == NULL)
{
save = errno;
free (buffer);
__set_errno (save);
buffer = NULL;
buffer_size = 0;
result = (struct hostent *) NULL;
goto done;
}
buffer = new_buf;
}
#endif /* HAVE_LOOKUP_BUFFER */
memset (buffer, 0, size_needed);
host = (struct hostent *) buffer;
host_addr = (host_addr_t *) ((char *) host + sizeof (*host));
host_aliases = (host_addr_list_t *)
((char *) host_addr + sizeof (*host_addr));
h_addr_ptrs = (host_addr_list_t *)
((char *) host_aliases + sizeof (*host_aliases));
hostname = (char *) h_addr_ptrs + sizeof (*h_addr_ptrs);
for (cp = name;; ++cp)
{
if (!*cp)
{
if (*--cp == '.') break;
/* All-IPv6-legal, no dot at the end. Fake up a
hostent as if we'd actually done a lookup. */
if (inet_pton (af, name, host_addr) <= 0)
{
__set_h_errno (HOST_NOT_FOUND);
#ifndef HAVE_LOOKUP_BUFFER
result = (struct hostent *) NULL;
#endif
goto done;
}
strcpy (hostname, name);
host->h_name = hostname;
host->h_aliases = *host_aliases;
(*host_aliases)[0] = NULL;
(*h_addr_ptrs)[0] = (char *) host_addr;
(*h_addr_ptrs)[1] = (char *) 0;
host->h_addr_list = *h_addr_ptrs;
host->h_addrtype = af;
host->h_length = addr_size;
__set_h_errno (NETDB_SUCCESS);
#ifdef HAVE_LOOKUP_BUFFER
status = NSS_STATUS_SUCCESS;
#else
result = host;
#endif
goto done;
}
if (!isxdigit (*cp) && *cp != ':' && *cp != '.') break;
}
}
}

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997 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
@ -93,6 +93,13 @@ FUNCTION_NAME (ADD_PARAMS)
buffer = malloc (buffer_size);
}
if (buffer != NULL)
{
#ifdef HANDLE_DIGITS_DOTS
# include "digits_dots.c"
#endif
}
while (buffer != NULL
&& INTERNAL (REENTRANT_NAME) (ADD_VARIABLES, &resbuf, buffer,
buffer_size, &result H_ERRNO_VAR) != 0
@ -115,6 +122,9 @@ FUNCTION_NAME (ADD_PARAMS)
buffer = new_buf;
}
#ifdef HANDLE_DIGITS_DOTS
done:
#endif
/* Release lock. Preserve error value. */
save = errno;
__libc_lock_unlock (lock);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -93,6 +93,10 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
int no_more;
enum nss_status status = NSS_STATUS_UNAVAIL;
#ifdef HANDLE_DIGITS_DOTS
# include "digits_dots.c"
#endif
if (startp == NULL)
{
no_more = DB_LOOKUP_FCT (&nip, REENTRANT_NAME_STRING, (void **) &fct);
@ -129,6 +133,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
(void **) &fct, status, 0);
}
#ifdef HANDLE_DIGITS_DOTS
done:
#endif
*result = status == NSS_STATUS_SUCCESS ? resbuf : NULL;
return status == NSS_STATUS_SUCCESS ? 0 : -1;
}

View File

@ -546,11 +546,6 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
that we previously skipped, so the caller will digest them. */
if (first_nonopt != last_nonopt)
optind = first_nonopt;
/* Before we can be provide the next result we must be
reinitialized. */
__getopt_initialized = 0;
return EOF;
}
@ -560,12 +555,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (NONOPTION_P)
{
if (ordering == REQUIRE_ORDER)
{
/* Before we can be provide the next result we must be
reinitialized. */
__getopt_initialized = 0;
return EOF;
}
return EOF;
optarg = argv[optind++];
return 1;
}

View File

@ -164,84 +164,6 @@ _nss_dns_gethostbyname2_r (const char *name, int af, struct hostent *result,
if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL)
name = cp;
/*
* disallow names consisting only of digits/dots, unless
* they end in a dot.
*/
if (isdigit (name[0]))
for (cp = name;; ++cp)
{
if (*cp == '\0')
{
char *bp;
if (*--cp == '.')
break;
/*
* All-numeric, no dot at the end. Fake up a hostent
* as if we'd actually done a lookup.
*/
if (inet_pton (af, name, host_data->host_addr) <= 0)
{
*h_errnop = HOST_NOT_FOUND;
return NSS_STATUS_NOTFOUND;
}
bp = __stpncpy (host_data->linebuffer, name, linebuflen);
host_data->linebuffer[linebuflen - 1] = '\0';
linebuflen -= bp - host_data->linebuffer;
result->h_name = host_data->linebuffer;
result->h_aliases = host_data->aliases;
host_data->aliases[0] = NULL;
host_data->h_addr_ptrs[0] = (char *) host_data->host_addr;
host_data->h_addr_ptrs[1] = NULL;
result->h_addr_list = host_data->h_addr_ptrs;
if (_res.options & RES_USE_INET6)
map_v4v6_hostent (result, &bp, &linebuflen);
*h_errnop = NETDB_SUCCESS;
return NSS_STATUS_SUCCESS;
}
if (!isdigit (*cp) && *cp != '.')
break;
}
if (isxdigit (name[0]) || name[0] == ':')
for (cp = name;; ++cp)
{
if (*cp == '\0')
{
char *bp;
if (*--cp == '.')
break;
/*
* All-IPv6-legal, no dot at the end. Fake up a hostent
* as if we'd actually done a lookup.
*/
if (inet_pton (af, name, host_data->host_addr) <= 0)
{
*h_errnop = HOST_NOT_FOUND;
return NSS_STATUS_NOTFOUND;
}
bp = __stpncpy (host_data->linebuffer, name, linebuflen);
host_data->linebuffer[linebuflen - 1] = '\0';
linebuflen -= bp - host_data->linebuffer;
result->h_name = host_data->linebuffer;
result->h_aliases = host_data->aliases;
host_data->aliases[0] = NULL;
host_data->h_addr_ptrs[0] = (char *) host_data->host_addr;
host_data->h_addr_ptrs[1] = NULL;
result->h_addr_list = host_data->h_addr_ptrs;
*h_errnop = NETDB_SUCCESS;
return NSS_STATUS_SUCCESS;
}
if (!isxdigit (*cp) && *cp != ':' && *cp != '.')
break;
}
n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer));
if (n < 0)
return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;

View File

@ -31,7 +31,7 @@ sigemptyset (set)
return -1;
}
memset (set, 0xff, sizeof (sigset_t));
memset (set, 0, sizeof (sigset_t));
return 0;
}

View File

@ -18,6 +18,7 @@
#include <errno.h>
#include <signal.h>
#include <string.h>
/* Set all signals in SET. */
int

View File

@ -52,12 +52,13 @@ typedef void (*__sighandler_t) __P ((int));
By default `signal' has the BSD semantic. */
extern __sighandler_t signal __P ((int __sig, __sighandler_t __handler));
#if defined __USE_XOPEN && !defined __USE_GNU
/* The X/Open definition of `signal' specifies the SVID semantic. Use
the additional function `sysv_signal' when X/Open compatibility is
requested. */
extern __sighandler_t __sysv_signal __P ((int __sig,
__sighandler_t __handler));
#if defined __USE_XOPEN && !defined __USE_GNU
extern __sighandler_t sysv_signal __P ((int __sig, __sighandler_t __handler));
/* Make sure the used `signal' implementation is the SVID version. */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc.
/* Copyright (C) 1992, 1995, 1996, 1997 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
@ -21,6 +21,12 @@
#endif
#include <errno.h>
#if !_LIBC
# if !defined(errno) && !defined(HAVE_ERRNO_DECL)
extern int errno;
# endif
# define __set_errno(ev) ((errno) = (ev))
#endif
#if _LIBC || HAVE_STDLIB_H
# include <stdlib.h>
@ -32,11 +38,14 @@
# include <unistd.h>
#endif
#if _LIBC - 0 == 0
#if !_LIBC
# define __environ environ
# ifndef HAVE_ENVIRON_DECL
extern char **environ;
# endif
#endif
#if _LIBC - 0
#if _LIBC
/* This lock protects against simultaneous modifications of `environ'. */
# include <libc-lock.h>
__libc_lock_define_initialized (static, envlock)

View File

@ -1,21 +1,21 @@
/* O_*, F_*, FD_* bit values for System V.
Copyright (C) 1991, 1992 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1991, 1992, 1997 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 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.
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., 675 Mass Ave,
Cambridge, MA 02139, USA. */
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. */
#ifndef _FCNTLBITS_H

View File

@ -0,0 +1,93 @@
/* O_*, F_*, FD_* bit values for Linux.
Copyright (C) 1995, 1996, 1997 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. */
#ifndef _FCNTLBITS_H
#define _FCNTLBITS_H 1
#include <sys/types.h>
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
located on an ext2 file system */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
#define O_CREAT 01000 /* not fcntl */
#define O_TRUNC 02000 /* not fcntl */
#define O_EXCL 04000 /* not fcntl */
#define O_NOCTTY 010000 /* not fcntl */
#define O_NONBLOCK 00004
#define O_APPEND 00010
#define O_NDELAY O_NONBLOCK
#define O_SYNC 040000
#define FASYNC 020000 /* fcntl, for BSD compatibility */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
#define F_SETFD 2 /* set f_flags */
#define F_GETFL 3 /* more flags (cloexec) */
#define F_SETFL 4
#define F_GETLK 7
#define F_SETLK 8
#define F_SETLKW 9
#define F_SETOWN 5 /* for sockets. */
#define F_GETOWN 6 /* for sockets. */
/* for F_[GET|SET]FL */
#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
/* for posix fcntl() and lockf() */
#define F_RDLCK 1
#define F_WRLCK 2
#define F_UNLCK 8
/* for old implementation of bsd flock () */
#define F_EXLCK 16 /* or 3 */
#define F_SHLCK 32 /* or 4 */
/* operations for bsd flock(), also used by the kernel implementation */
#define LOCK_SH 1 /* shared lock */
#define LOCK_EX 2 /* exclusive lock */
#define LOCK_NB 4 /* or'd with one of the above to prevent
blocking */
#define LOCK_UN 8 /* remove lock */
struct flock
{
short int l_type;
short int l_whence;
__off_t l_start;
__off_t l_len;
__pid_t l_pid;
};
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
#ifdef __USE_BSD
#define FAPPEND O_APPEND
#define FFSYNC O_FSYNC
#define FNONBLOCK O_NONBLOCK
#define FNDELAY O_NDELAY
#endif /* Use BSD. */
#endif /* fcntlbits.h */

View File

@ -20,6 +20,9 @@
#include <sys/ustat.h>
#include <sys/sysmacros.h>
extern int __syscall_ustat (unsigned int dev, struct ustat *ubuf);
int
ustat (dev_t dev, struct ustat *ubuf)
{

View File

@ -1,5 +1,5 @@
/* O_*, F_*, FD_* bit values for Linux.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997 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
@ -21,7 +21,64 @@
#define _FCNTLBITS_H 1
#include <sys/types.h>
#include <linux/fcntl.h>
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
located on an ext2 file system */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
#define O_CREAT 0100 /* not fcntl */
#define O_EXCL 0200 /* not fcntl */
#define O_NOCTTY 0400 /* not fcntl */
#define O_TRUNC 01000 /* not fcntl */
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
#define O_SYNC 010000
#define FASYNC 020000 /* fcntl, for BSD compatibility */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
#define F_SETFD 2 /* set f_flags */
#define F_GETFL 3 /* more flags (cloexec) */
#define F_SETFL 4
#define F_GETLK 5
#define F_SETLK 6
#define F_SETLKW 7
#define F_SETOWN 8 /* for sockets. */
#define F_GETOWN 9 /* for sockets. */
/* for F_[GET|SET]FL */
#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
/* for posix fcntl() and lockf() */
#define F_RDLCK 0
#define F_WRLCK 1
#define F_UNLCK 2
/* for old implementation of bsd flock () */
#define F_EXLCK 4 /* or 3 */
#define F_SHLCK 8 /* or 4 */
/* operations for bsd flock(), also used by the kernel implementation */
#define LOCK_SH 1 /* shared lock */
#define LOCK_EX 2 /* exclusive lock */
#define LOCK_NB 4 /* or'd with one of the above to prevent
blocking */
#define LOCK_UN 8 /* remove lock */
struct flock
{
short int l_type;
short int l_whence;
__off_t l_start;
__off_t l_len;
__pid_t l_pid;
};
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */

View File

@ -53,7 +53,8 @@ setpgid - setpgid 2 __setpgid setpgid
setresuid EXTRA setresuid 3 setresuid
sigpending - sigpending 1 sigpending
sigprocmask - sigprocmask 3 __sigprocmask sigprocmask
sigreturn EXTRA sigreturn 1 __sigreturn sigreturn
sigreturn - sigreturn 1 __sigreturn sigreturn
sys_mknod xmknod mknod 3 __syscall_mknod
sysinfo EXTRA sysinfo 1 sysinfo
swapon - swapon 2 swapon
umount EXTRA umount 1 __umount umount

View File

@ -20,6 +20,9 @@
#include <sys/ustat.h>
#include <sys/sysmacros.h>
extern int __syscall_ustat (unsigned short int dev, struct ustat *ubuf);
int
ustat (dev_t dev, struct ustat *ubuf)
{