mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-11 07:40:05 +00:00
2303f5fdd9
Sun Nov 10 02:37:15 1996 Ulrich Drepper <drepper@cygnus.com> * inet/gethstent_r.c: Update copyright. * nss/getXXbyYY_r.c: Likewise. * nss/nsswitch.c: Likewise. * nss/getXXent_r.c: Likewise. * nss/nss_files/files-XXX.c: Likewise. * nss/nss_files/files-netgroup.c: Likewise. * nss/nss_files/files-parse.c: Likewise. * nss/getXXent_r.c: Change implementation. It's not necessary to call all setXXent functions. Just find first available and when necessary let getXXent_r call the others. * nss/nss_files/files-XXX.c: Make really reentrant. Now calls of getXXent and getXXbyYY can be mixed. The cursor for traversing the database with getXXent will be remembered. * stdlib/test-canon.c (cwd): Change size to PATH_MAX. Sat Nov 9 15:34:48 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/Dist: Add sys/mtio.h. * sysdeps/unix/sysv/linux/sys/mtio.h: New file. * signal/signal.h [__USE_BSD]: Add prototype for siggetmask. Fri Nov 8 13:29:30 1996 Ulrich Drepper <drepper@cygnus.com> * ctype/ctype.h (__isascii): Don't test for seventh bit not to be set. Instead for none beside the first seven bits to be set. X/Open allows the argument to be an `int' value. Reported by Alain Williams <addw@phcomp.co.uk>. (toascii, isascii): Define macro also when __USE_XOPEN. * sysdeps/posix/fpathconf.c: Use fstatfs to compute NAME_MAX, not PATH_MAX. Thu Nov 7 03:04:29 1996 Ulrich Drepper <drepper@cygnus.com> * nss/getXXXent_r.c (SETFUNC_NAME): Reset `nip' after loop to NULL so that GETFUNC will see first entry. (ENDFUNC_NAME): Likewise. Rewrite Netgroups implementation to avoid global data. * inet/netgroup.h: Add definition of name_list and struct __netgrent. Add prototypes for internal netgroup functions. * nss/nss_files/files-netgroup.c (_nss_files_setnetgrent): Take extra argument and use the included data instead of global vars. (_nss_files_endnetgrent): Likewise. (_nss_netgroup_parseline): Change to be static and use data included in the RESULT structure. * inet/getnetgrent_r.c (startp): Move into setup function. (known_groups, needed_groups): new part of the __netgrent sruct. (freememory): Take extra argument and use included data. (__internal_endnetgrent): Likewise. (internal_setnetgrent): Renamed to __internal_setnetgrent_reuse and take extra argument. (__internal_setnetgrent): New function. Call __internal_setnetgrent_reuse after calling free_memory. (setnetgrent): Only call __internal_setnetgrent. (__getnetgrent_r): Split into two functions. __getnetgrent_r calls __internal_getnetgrent after locking. (innetgr): Use dynamic data only. I.e., innetgr now is fully reentrant. Thu Nov 7 00:15:14 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/stub/setenv.c: Correct typo: unseenv -> unsetenv. Reported by Joshua Cowan <jcowan@jcowan.reslife.okstate.edu>. Wed Nov 6 13:13:37 1996 Ulrich Drepper <drepper@cygnus.com> * manual/creature.texi: Document that _GNU_SOURCE is no longer the default when no *_SOURCE macro is given. Reported by Karsten Weiss <karsten@addx.au.s.shuttle.de>. * NOTES: remade from manual/creature.texi. * manual/libc.texinfo: Add back line about GPL translation which somehow got lost. * Make-dist (dist.tar): Depend on README being updated. * rellns-sh: Correct thinko in removing leading /. Reported by Andreas Jaeger <aj@arthur.pfalz.de>. * pwd/fgetpwent_r.c: Recognize lines containing only names starting with `+' or `-' in parser. * grp/fgetgrent_r.c: Likewise. * shadow/sgetspent_r.c: Likewise. * nss/nss_files/files-spwd.c: Don't accept entries starting with `+' or `-'. * sysdeps/stub/lchown.c: New file.
155 lines
2.9 KiB
C
155 lines
2.9 KiB
C
/* Copyright (C) 1991, 1995, 1996 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., 675 Mass Ave,
|
|
Cambridge, MA 02139, USA. */
|
|
|
|
#include <errno.h>
|
|
#include <stddef.h>
|
|
#include <unistd.h>
|
|
#include <limits.h>
|
|
#include <sys/statfs.h>
|
|
|
|
|
|
/* Get file-specific information about descriptor FD. */
|
|
long int
|
|
__fpathconf (fd, name)
|
|
int fd;
|
|
int name;
|
|
{
|
|
if (fd < 0)
|
|
{
|
|
__set_errno (EBADF);
|
|
return -1;
|
|
}
|
|
|
|
switch (name)
|
|
{
|
|
default:
|
|
__set_errno (EINVAL);
|
|
return -1;
|
|
|
|
case _PC_LINK_MAX:
|
|
#ifdef LINK_MAX
|
|
return LINK_MAX;
|
|
#else
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_MAX_CANON:
|
|
#ifdef MAX_CANON
|
|
return MAX_CANON;
|
|
#else
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_MAX_INPUT:
|
|
#ifdef MAX_INPUT
|
|
return MAX_INPUT;
|
|
#else
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_NAME_MAX:
|
|
#ifdef NAME_MAX
|
|
{
|
|
struct statfs buf;
|
|
|
|
if (__fstatfs (fd, &buf) < 0)
|
|
return errno == ENOSYS ? NAME_MAX : -1;
|
|
else
|
|
return buf.f_namelen;
|
|
}
|
|
#else
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_PATH_MAX:
|
|
#ifdef PATH_MAX
|
|
return PATH_MAX;
|
|
#else
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_PIPE_BUF:
|
|
#ifdef PIPE_BUF
|
|
return PIPE_BUF;
|
|
#else
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_CHOWN_RESTRICTED:
|
|
#ifdef _POSIX_CHOWN_RESTRICTED
|
|
return _POSIX_CHOWN_RESTRICTED;
|
|
#else
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_NO_TRUNC:
|
|
#ifdef _POSIX_NO_TRUNC
|
|
return _POSIX_NO_TRUNC;
|
|
#else
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_VDISABLE:
|
|
#ifdef _POSIX_VDISABLE
|
|
return _POSIX_VDISABLE;
|
|
#else
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_SYNC_IO:
|
|
#ifdef _POSIX_SYNC_IO
|
|
return _POSIX_SYNC_IO;
|
|
#else
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_ASYNC_IO:
|
|
#ifdef _POSIX_ASYNC_IO
|
|
return _POSIX_ASYNC_IO;
|
|
#else
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_PRIO_IO:
|
|
#ifdef _POSIX_PRIO_IO
|
|
return _POSIX_PRIO_IO;
|
|
#else
|
|
return -1;
|
|
#endif
|
|
|
|
case _PC_SOCK_MAXBUF:
|
|
#ifdef SOCK_MAXBUF
|
|
return SOCK_MAXBUF;
|
|
#else
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
#endif
|
|
}
|
|
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
}
|
|
|
|
weak_alias (__fpathconf, fpathconf)
|