mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	* io/Makefile (routines): Add euidaccess.
* sysdeps/mach/hurd/euidaccess.c: New file. * sysdeps/stub/euidaccess.c: New file. * posix/unistd.h [__USE_GNU] (euidaccess): Declare it. * dirent/Makefile (routines): Add dirfd. * sysdeps/stub/dirfd.c: New file. * sysdeps/unix/dirfd.c: New file. * sysdeps/unix/dirstream.h (_DIR_dirfd): New macro. * dirent/dirent.h (dirfd): Declare new function. Define as macro _DIR_dirfd if that is defined. * sysdeps/mach/hurd/dirstream.h (DIR): Replace `__port' member with `void *__fd'. * sysdeps/mach/hurd/opendir.c: Use DIRP->__fd instead of DIRP->__port. Open the file with `open'; set FD_CLOEXEC on the fd. * sysdeps/mach/hurd/closedir.c: Likewise. * sysdeps/mach/hurd/readdir.c: Likewise. * sysdeps/mach/hurd/dirfd.c: New file. * posix/Makefile (glob/configure): Do cvs commit if there is a CVS directory. (glob/ChangeLog): Likewise. * locale/locale.h (LC_*): Use small integers instead of bit masks.
This commit is contained in:
		
							
								
								
									
										25
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -1,5 +1,30 @@
 | 
				
			|||||||
Fri Feb 24 14:40:48 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 | 
					Fri Feb 24 14:40:48 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* io/Makefile (routines): Add euidaccess.
 | 
				
			||||||
 | 
						* sysdeps/mach/hurd/euidaccess.c: New file.
 | 
				
			||||||
 | 
						* sysdeps/stub/euidaccess.c: New file.
 | 
				
			||||||
 | 
						* posix/unistd.h [__USE_GNU] (euidaccess): Declare it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* dirent/Makefile (routines): Add dirfd.
 | 
				
			||||||
 | 
						* sysdeps/stub/dirfd.c: New file.
 | 
				
			||||||
 | 
						* sysdeps/unix/dirfd.c: New file.
 | 
				
			||||||
 | 
						* sysdeps/unix/dirstream.h (_DIR_dirfd): New macro.
 | 
				
			||||||
 | 
						* dirent/dirent.h (dirfd): Declare new function.  Define as macro
 | 
				
			||||||
 | 
					 	_DIR_dirfd if that is defined.
 | 
				
			||||||
 | 
						* sysdeps/mach/hurd/dirstream.h (DIR): Replace `__port' member
 | 
				
			||||||
 | 
					 	with `void *__fd'.
 | 
				
			||||||
 | 
						* sysdeps/mach/hurd/opendir.c: Use DIRP->__fd instead of DIRP->__port.
 | 
				
			||||||
 | 
						Open the file with `open'; set FD_CLOEXEC on the fd.
 | 
				
			||||||
 | 
						* sysdeps/mach/hurd/closedir.c: Likewise.
 | 
				
			||||||
 | 
						* sysdeps/mach/hurd/readdir.c: Likewise.
 | 
				
			||||||
 | 
						* sysdeps/mach/hurd/dirfd.c: New file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* posix/Makefile (glob/configure): Do cvs commit if there is a CVS
 | 
				
			||||||
 | 
					 	directory.
 | 
				
			||||||
 | 
						(glob/ChangeLog): Likewise.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* locale/locale.h (LC_*): Use small integers instead of bit masks.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	* stdio/bug4.c: Put temporary files in /tmp.
 | 
						* stdio/bug4.c: Put temporary files in /tmp.
 | 
				
			||||||
	* stdio/bug3.c: Likewise.
 | 
						* stdio/bug3.c: Likewise.
 | 
				
			||||||
	* stdio/bug5.c: Likewise.
 | 
						* stdio/bug5.c: Likewise.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
GNU C Library NEWS -- history of user-visible changes.  17 February 1995
 | 
					GNU C Library NEWS -- history of user-visible changes.  24 February 1995
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
 | 
					Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
See the end for copying conditions.
 | 
					See the end for copying conditions.
 | 
				
			||||||
@@ -63,6 +63,9 @@ Version 1.10
 | 
				
			|||||||
  numbers as indicated by the locale.  In the default "C" locale, numbers
 | 
					  numbers as indicated by the locale.  In the default "C" locale, numbers
 | 
				
			||||||
  are not grouped; but locales for specific countries will define the
 | 
					  are not grouped; but locales for specific countries will define the
 | 
				
			||||||
  usual conventions (i.e. separate thousands with `,' in the US locale).
 | 
					  usual conventions (i.e. separate thousands with `,' in the US locale).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* New function `euidaccess' checks allowed access to a file like `access',
 | 
				
			||||||
 | 
					  but using the effective IDs instead of the real IDs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Version 1.09
 | 
					Version 1.09
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ subdir		:= dirent
 | 
				
			|||||||
headers		:= dirent.h dirstream.h
 | 
					headers		:= dirent.h dirstream.h
 | 
				
			||||||
routines	:= opendir closedir readdir rewinddir \
 | 
					routines	:= opendir closedir readdir rewinddir \
 | 
				
			||||||
		   seekdir telldir scandir alphasort \
 | 
							   seekdir telldir scandir alphasort \
 | 
				
			||||||
		   getdents
 | 
							   getdents dirfd
 | 
				
			||||||
distribute := direct.h
 | 
					distribute := direct.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tests	   := list tst-seekdir
 | 
					tests	   := list tst-seekdir
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
 | 
					/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
This file is part of the GNU C Library.
 | 
					This file is part of the GNU C Library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The GNU C Library is free software; you can redistribute it and/or
 | 
					The GNU C Library is free software; you can redistribute it and/or
 | 
				
			||||||
@@ -96,6 +96,13 @@ extern void rewinddir __P ((DIR * __dirp));
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(__USE_BSD) || defined(__USE_MISC)
 | 
					#if defined(__USE_BSD) || defined(__USE_MISC)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Return the file descriptor used by DIRP.  */
 | 
				
			||||||
 | 
					extern int dirfd __P ((DIR *__dirp));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined (__OPTIMIZE__) && defined (_DIR_dirfd)
 | 
				
			||||||
 | 
					#define dirfd(dirp)	_DIR_dirfd (dirp)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef	MAXNAMLEN
 | 
					#ifndef	MAXNAMLEN
 | 
				
			||||||
/* Get the definitions of the POSIX.1 limits.  */
 | 
					/* Get the definitions of the POSIX.1 limits.  */
 | 
				
			||||||
#include <posix1_lim.h>
 | 
					#include <posix1_lim.h>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ routines :=							      \
 | 
				
			|||||||
	mkfifo							      \
 | 
						mkfifo							      \
 | 
				
			||||||
	stat fstat lstat					      \
 | 
						stat fstat lstat					      \
 | 
				
			||||||
	umask chmod fchmod mkdir				      \
 | 
						umask chmod fchmod mkdir				      \
 | 
				
			||||||
	open close read write lseek access			      \
 | 
						open close read write lseek access euidaccess		      \
 | 
				
			||||||
	fcntl flock lockf					      \
 | 
						fcntl flock lockf					      \
 | 
				
			||||||
	dup dup2 pipe						      \
 | 
						dup dup2 pipe						      \
 | 
				
			||||||
	creat							      \
 | 
						creat							      \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
 | 
					/* Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
This file is part of the GNU C Library.
 | 
					This file is part of the GNU C Library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The GNU C Library is free software; you can redistribute it and/or
 | 
					The GNU C Library is free software; you can redistribute it and/or
 | 
				
			||||||
@@ -28,16 +28,14 @@ Cambridge, MA 02139, USA.  */
 | 
				
			|||||||
__BEGIN_DECLS
 | 
					__BEGIN_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* These are the possibilities for the first argument to setlocale.
 | 
					/* These are the possibilities for the first argument to setlocale.
 | 
				
			||||||
   Note that although they are bit masks, they cannot be OR'd together
 | 
					   The code assumes that LC_ALL is the highest value, and zero the lowest.  */
 | 
				
			||||||
   to form a new argument to pass.  They must be used one at a time.  */
 | 
					#define	LC_COLLATE	0
 | 
				
			||||||
#define	LC_COLLATE	(1 << 0)
 | 
					#define	LC_CTYPE	1
 | 
				
			||||||
#define	LC_CTYPE	(1 << 1)
 | 
					#define	LC_MONETARY	2
 | 
				
			||||||
#define	LC_MONETARY	(1 << 2)
 | 
					#define	LC_NUMERIC	3
 | 
				
			||||||
#define	LC_NUMERIC	(1 << 3)
 | 
					#define	LC_TIME		4
 | 
				
			||||||
#define	LC_TIME		(1 << 4)
 | 
					#define	LC_MESSAGES	5
 | 
				
			||||||
#define	LC_RESPONSE	(1 << 5)
 | 
					#define	LC_ALL		6
 | 
				
			||||||
#define	LC_ALL		(LC_COLLATE|LC_CTYPE|LC_MONETARY|LC_NUMERIC|LC_TIME|\
 | 
					 | 
				
			||||||
			 LC_RESPONSE)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Structure giving information about numeric and monetary notation.  */
 | 
					/* Structure giving information about numeric and monetary notation.  */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -451,7 +451,7 @@ however---BSD does not provide any way to free such blocks.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@comment malloc.h stdlib.h
 | 
					@comment malloc.h stdlib.h
 | 
				
			||||||
@comment BSD
 | 
					@comment BSD
 | 
				
			||||||
@deftypefun {void *} memalign (size_t @var{size}, size_t @var{boundary})
 | 
					@deftypefun {void *} memalign (size_t @var{boundary}, size_t @var{size})
 | 
				
			||||||
The @code{memalign} function allocates a block of @var{size} bytes whose
 | 
					The @code{memalign} function allocates a block of @var{size} bytes whose
 | 
				
			||||||
address is a multiple of @var{boundary}.  The @var{boundary} must be a
 | 
					address is a multiple of @var{boundary}.  The @var{boundary} must be a
 | 
				
			||||||
power of two!  The function @code{memalign} works by calling
 | 
					power of two!  The function @code{memalign} works by calling
 | 
				
			||||||
@@ -469,7 +469,7 @@ as the value of the second argument.  It is implemented like this:
 | 
				
			|||||||
void *
 | 
					void *
 | 
				
			||||||
valloc (size_t size)
 | 
					valloc (size_t size)
 | 
				
			||||||
@{
 | 
					@{
 | 
				
			||||||
  return memalign (size, getpagesize ());
 | 
					  return memalign (getpagesize (), size);
 | 
				
			||||||
@}
 | 
					@}
 | 
				
			||||||
@end smallexample
 | 
					@end smallexample
 | 
				
			||||||
@c !!! xref getpagesize
 | 
					@c !!! xref getpagesize
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,11 +70,13 @@ glob/%.h: %.h
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
glob/configure: glob/configure.in
 | 
					glob/configure: glob/configure.in
 | 
				
			||||||
	cd glob; autoconf $(ACFLAGS)
 | 
						cd glob; autoconf $(ACFLAGS)
 | 
				
			||||||
 | 
						test -d CVS && cvs commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
glob/ChangeLog: ../ChangeLog
 | 
					glob/ChangeLog: ../ChangeLog
 | 
				
			||||||
	changelog-extract --regexp 'posix/(glob|fnmatch).*' < $< > $@.new
 | 
						changelog-extract --regexp 'posix/(glob|fnmatch).*' < $< > $@.new
 | 
				
			||||||
	chmod a-w $@.new
 | 
						chmod a-w $@.new
 | 
				
			||||||
	mv -f $@.new $@
 | 
						mv -f $@.new $@
 | 
				
			||||||
 | 
						test -d CVS && cvs commit -mRegenerated $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%.Z: %
 | 
					%.Z: %
 | 
				
			||||||
	compress -c $< > $@-tmp
 | 
						compress -c $< > $@-tmp
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1708
									
								
								posix/glob/configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1708
									
								
								posix/glob/configure
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -107,10 +107,16 @@ __BEGIN_DECLS
 | 
				
			|||||||
#define	X_OK	1		/* Test for execute permission.  */
 | 
					#define	X_OK	1		/* Test for execute permission.  */
 | 
				
			||||||
#define	F_OK	0		/* Test for existence.  */
 | 
					#define	F_OK	0		/* Test for existence.  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Test for access to NAME.  */
 | 
					/* Test for access to NAME using the real UID and real GID.  */
 | 
				
			||||||
extern int __access __P ((__const char *__name, int __type));
 | 
					extern int __access __P ((__const char *__name, int __type));
 | 
				
			||||||
extern int access __P ((__const char *__name, int __type));
 | 
					extern int access __P ((__const char *__name, int __type));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __USE_GNU
 | 
				
			||||||
 | 
					/* Test for access to NAME using the effective UID and GID
 | 
				
			||||||
 | 
					   (as normal file operations use).  */
 | 
				
			||||||
 | 
					extern int euidaccess __P ((__const char *__name, int __type));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Values for the WHENCE argument to lseek.  */
 | 
					/* Values for the WHENCE argument to lseek.  */
 | 
				
			||||||
#ifndef	_STDIO_H		/* <stdio.h> has the same definitions.  */
 | 
					#ifndef	_STDIO_H		/* <stdio.h> has the same definitions.  */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
 | 
					/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
This file is part of the GNU C Library.
 | 
					This file is part of the GNU C Library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The GNU C Library is free software; you can redistribute it and/or
 | 
					The GNU C Library is free software; you can redistribute it and/or
 | 
				
			||||||
@@ -37,13 +37,13 @@ DEFUN(closedir, (dirp), DIR *dirp)
 | 
				
			|||||||
      return -1;
 | 
					      return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((err = __vm_deallocate (__mach_task_self (),
 | 
					  if (err = __vm_deallocate (__mach_task_self (),
 | 
				
			||||||
			     (vm_address_t) dirp->__data, dirp->__allocation))
 | 
								     (vm_address_t) dirp->__data, dirp->__allocation))
 | 
				
			||||||
      || (err = __mach_port_deallocate (__mach_task_self (), dirp->__port)))
 | 
					    return __hurd_fail (err);
 | 
				
			||||||
    {
 | 
					  dirp->__data = NULL;
 | 
				
			||||||
      errno = err;
 | 
					
 | 
				
			||||||
      return -1;
 | 
					  if (err = _hurd_fd_close (dirp->__fd))
 | 
				
			||||||
    }
 | 
					    return __hurd_fail (err);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  free (dirp);
 | 
					  free (dirp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										39
									
								
								sysdeps/mach/hurd/dirfd.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								sysdeps/mach/hurd/dirfd.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					/* dirfd -- Return the file desciptor used by a DIR stream.  Hurd version.
 | 
				
			||||||
 | 
					Copyright (C) 1995 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 <dirent.h>
 | 
				
			||||||
 | 
					#include <dirstream.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					dirfd (DIR *dirp)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int fd;
 | 
				
			||||||
 | 
					  __mutex_lock (&_hurd_dtable_lock);
 | 
				
			||||||
 | 
					  for (fd = 0; fd < _hurd_dtablesize; ++fd)
 | 
				
			||||||
 | 
					    if (_hurd_dtable[fd] == dirp->__fd)
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					  if (fd == _hurd_dtablesize)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      errno = EINVAL
 | 
				
			||||||
 | 
					      fd = -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  __mutex_unlock (&_hurd_dtable_lock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return fd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright (C) 1993, 1994 Free Software Foundation, Inc.
 | 
					/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
This file is part of the GNU C Library.
 | 
					This file is part of the GNU C Library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The GNU C Library is free software; you can redistribute it and/or
 | 
					The GNU C Library is free software; you can redistribute it and/or
 | 
				
			||||||
@@ -27,8 +27,7 @@ Cambridge, MA 02139, USA.  */
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    /* XXX we need a namespace-clean name for mach_port_t! */
 | 
					    void *__fd;			/* `struct hurd_fd' pointer for descriptor.  */
 | 
				
			||||||
    unsigned int __port;	/* Port to the directory.  */
 | 
					 | 
				
			||||||
    char *__data;		/* Directory block.  */
 | 
					    char *__data;		/* Directory block.  */
 | 
				
			||||||
    int __entry_data;		/* Entry number `__data' corresponds to.  */
 | 
					    int __entry_data;		/* Entry number `__data' corresponds to.  */
 | 
				
			||||||
    char *__ptr;		/* Current pointer into the block.  */
 | 
					    char *__ptr;		/* Current pointer into the block.  */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										58
									
								
								sysdeps/mach/hurd/euidaccess.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								sysdeps/mach/hurd/euidaccess.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					/* Test for access to FILE using effective UID and GID.  Hurd version.
 | 
				
			||||||
 | 
					Copyright (C) 1991, 1995 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 <hurd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					euidaccess (file, type)
 | 
				
			||||||
 | 
					     const char *file;
 | 
				
			||||||
 | 
					     int type;
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  file_t port;
 | 
				
			||||||
 | 
					  int allowed, flags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  port = __file_name_lookup (file, 0, 0);
 | 
				
			||||||
 | 
					  if (port == MACH_PORT_NULL)
 | 
				
			||||||
 | 
					    return -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Find out what types of access we are allowed to this file.  */
 | 
				
			||||||
 | 
					  err = __file_check_access (file, &allowed);
 | 
				
			||||||
 | 
					  __mach_port_deallocate (__mach_task_self (), file);
 | 
				
			||||||
 | 
					  if (err)
 | 
				
			||||||
 | 
					    return __hurd_fail (err);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  flags = 0;
 | 
				
			||||||
 | 
					  if (type & R_OK)
 | 
				
			||||||
 | 
					    flags |= O_READ;
 | 
				
			||||||
 | 
					  if (type & W_OK)
 | 
				
			||||||
 | 
					    flags |= O_WRITE;
 | 
				
			||||||
 | 
					  if (type & X_OK)
 | 
				
			||||||
 | 
					    flags |= O_EXEC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (flags & ~allowed)
 | 
				
			||||||
 | 
					    /* We are not allowed all the requested types of access.  */
 | 
				
			||||||
 | 
					    return __hurd_fail (EACCES);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					weak_alias (__access, access)
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright (C) 1993, 1994 Free Software Foundation, Inc.
 | 
					/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
This file is part of the GNU C Library.
 | 
					This file is part of the GNU C Library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The GNU C Library is free software; you can redistribute it and/or
 | 
					The GNU C Library is free software; you can redistribute it and/or
 | 
				
			||||||
@@ -36,21 +36,29 @@ DEFUN(opendir, (name), CONST char *name)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  DIR *dirp;
 | 
					  DIR *dirp;
 | 
				
			||||||
  file_t port;
 | 
					  file_t port;
 | 
				
			||||||
 | 
					  int fd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  port = __file_name_lookup (name, O_RDONLY, 0);
 | 
					  fd = __open (name, O_RDONLY);
 | 
				
			||||||
  if (port == MACH_PORT_NULL)
 | 
					  if (fd < 0)
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* XXX this port should be deallocated on exec */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  dirp = (DIR *) malloc (sizeof (DIR));
 | 
					  dirp = (DIR *) malloc (sizeof (DIR));
 | 
				
			||||||
  if (dirp == NULL)
 | 
					  if (dirp == NULL)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      __mach_port_deallocate (__mach_task_self (), port);
 | 
					      __close (fd);
 | 
				
			||||||
      return NULL;
 | 
					      return NULL;
 | 
				
			||||||
    }    
 | 
					    }    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  dirp->__port = port;
 | 
					  /* Extract the pointer to the descriptor structure.  */
 | 
				
			||||||
 | 
					  __mutex_lock (&_hurd_dtable_lock);
 | 
				
			||||||
 | 
					  dirp->__fd = _hurd_dtable[fd];
 | 
				
			||||||
 | 
					  __mutex_unlock (&_hurd_dtable_lock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Set the descriptor to close on exec. */
 | 
				
			||||||
 | 
					  __spin_lock (&dirp->__fd->port.lock);
 | 
				
			||||||
 | 
					  dirp->__fd->flags |= FD_CLOEXEC;
 | 
				
			||||||
 | 
					  __spin_unlock (&dirp->__fd->port.lock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  dirp->__data = dirp->__ptr = NULL;
 | 
					  dirp->__data = dirp->__ptr = NULL;
 | 
				
			||||||
  dirp->__entry_data = dirp->__entry_ptr = 0;
 | 
					  dirp->__entry_data = dirp->__entry_ptr = 0;
 | 
				
			||||||
  dirp->__allocation = 0;
 | 
					  dirp->__allocation = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright (C) 1993, 1994 Free Software Foundation, Inc.
 | 
					/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
This file is part of the GNU C Library.
 | 
					This file is part of the GNU C Library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The GNU C Library is free software; you can redistribute it and/or
 | 
					The GNU C Library is free software; you can redistribute it and/or
 | 
				
			||||||
@@ -49,8 +49,11 @@ DEFUN(readdir, (dirp), DIR *dirp)
 | 
				
			|||||||
	  int nentries;
 | 
						  int nentries;
 | 
				
			||||||
	  error_t err;
 | 
						  error_t err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  if (err = __dir_readdir (dirp->__port, &data, &dirp->__size,
 | 
						  if (err = HURD_FD_PORT_USE (dirp->__fd,
 | 
				
			||||||
				   dirp->__entry_ptr, -1, 0, &nentries))
 | 
									      __dir_readdir (dirp->__port,
 | 
				
			||||||
 | 
											     &data, &dirp->__size,
 | 
				
			||||||
 | 
											     dirp->__entry_ptr,
 | 
				
			||||||
 | 
											     -1, 0, &nentries)))
 | 
				
			||||||
	    return __hurd_fail (err), NULL;
 | 
						    return __hurd_fail (err), NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  /* DATA now corresponds to entry index DIRP->__entry_ptr.  */
 | 
						  /* DATA now corresponds to entry index DIRP->__entry_ptr.  */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								sysdeps/stub/dirfd.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								sysdeps/stub/dirfd.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					/* dirfd -- Return the file desciptor used by a DIR stream.  Stub version.
 | 
				
			||||||
 | 
					Copyright (C) 1995 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 <dirent.h>
 | 
				
			||||||
 | 
					#include <dirstream.h>
 | 
				
			||||||
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					dirfd (dirp)
 | 
				
			||||||
 | 
					     FILE *dirp;
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  errno = ENOSYS;
 | 
				
			||||||
 | 
					  return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								sysdeps/stub/euidaccess.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								sysdeps/stub/euidaccess.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					/* Test for access to FILE using effective UID and GID.  Stub version.
 | 
				
			||||||
 | 
					Copyright (C) 1991, 1995 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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					euidaccess (file, type)
 | 
				
			||||||
 | 
					     const char *file;
 | 
				
			||||||
 | 
					     int type;
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (file == NULL || (type & ~(R_OK|W_OK|X_OK|F_OK)) != 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      errno = EINVAL;
 | 
				
			||||||
 | 
					      return -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  errno = ENOSYS;
 | 
				
			||||||
 | 
					  return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					stub_warning (euidaccess)
 | 
				
			||||||
							
								
								
									
										28
									
								
								sysdeps/unix/dirfd.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								sysdeps/unix/dirfd.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					/* dirfd -- Return the file desciptor used by a DIR stream.  Unix version.
 | 
				
			||||||
 | 
					Copyright (C) 1995 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 <dirent.h>
 | 
				
			||||||
 | 
					#include <dirstream.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					dirfd (dirp)
 | 
				
			||||||
 | 
					     FILE *dirp;
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return dirp->__fd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
 | 
					/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
 | 
				
			||||||
This file is part of the GNU C Library.
 | 
					This file is part of the GNU C Library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The GNU C Library is free software; you can redistribute it and/or
 | 
					The GNU C Library is free software; you can redistribute it and/or
 | 
				
			||||||
@@ -40,4 +40,6 @@ typedef struct
 | 
				
			|||||||
    struct dirent __entry;	/* Returned by `readdir'.  */
 | 
					    struct dirent __entry;	/* Returned by `readdir'.  */
 | 
				
			||||||
  } DIR;
 | 
					  } DIR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define _DIR_dirfd(dirp)	((dirp)->__fd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif	/* dirstream.h */
 | 
					#endif	/* dirstream.h */
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user