diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-10-31 22:55:02 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-10-31 22:55:02 +0000 |
commit | 1cab5444231a4a1fab9c3abb107d22af4eb09327 (patch) | |
tree | c58e953fe78f8094b3774b65eb2acf024cc10ded /sysdeps/unix/sysv/linux/xstatconv.c | |
parent | fe4635fcae7a29fe688b048a2b1235bb89e05ec0 (diff) | |
download | glibc-1cab5444231a4a1fab9c3abb107d22af4eb09327.tar.gz |
Update.cvs/libc-ud-971031
1997-10-31 23:16 Ulrich Drepper <drepper@cygnus.com>
* posix/glob.c (glob): If calling glob_in_dir for a list which was
generated by a glob call disable GLOB_ERR since there might be
non-directories in the list (PR203).
* posix/glob.h (GLOB_ONLYDIR): New flag.
(__GLOB_FLAGS): Add GLOB_ONLYDIR.
* posix/glob.c: Define HAVE_D_TYPE if _DIRENT_HAVE_D_TYPE is defined.
(glob): Add GLOB_ONLYDIR to recursive call to match dirname.
(glob_in_dir) [HAVE_D_TYPE]: While reading directory entries test
whether they are directories if GLOB_ONLYDIR flag is given.
* manual/pattern.texi: Document GLOB_ONLYDIR.
* misc/Makefile (tests): Add tst-fdset.
* sysdeps/i386/bits/select.h: Rewrite asm macros to be cleaner.
* sysdeps/unix/sysv/linux/Dist: Add xstatconv.c.
* sysdeps/unix/sysv/linux/alpha/Dist: Likewise.
* time/strptime.c (strptime_internal): In %y format, regard years
>= 69 as of twentieth century, all other as of twenty-first.
* time/tzset.c: Correct typo and little optimization.
1997-10-31 16:01 Ulrich Drepper <drepper@cygnus.com>
* inet/getnetgrent.c: Allocate buffer dynamically if needed.
Suggested by Joe Keane <jgk@jgk.org>.
1997-10-31 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* io/ftw.h: Declare __ftw64_func_t and __nftw64_func_t only when
__USE_FILE_OFFSET64 || __USE_LARGEFILE64 is true.
1997-10-30 05:47 Ulrich Drepper <drepper@cygnus.com>
* misc/mntent.c: Don't use statically allocated buffer. Allocate
it dynamically if necessary.
* misc/efgcvt.c: Likewise.
Patch by Joe Keane <jgk@jgk.org>.
* misc/mntent.c: Allow freeing of allocated buffer in
__libc_subfreeres.
* misc/efgcvt.c: Likewise.
* misc/efgcvt.c: Call correct reentrant functions.
Use better values for MAXDIG.
* misc/qefgcvt.c: Use better values for MAXDIG.
1997-10-29 18:48 Richard Henderson <rth@cygnus.com>
* sysdeps/unix/sysv/linux/Makefile [io]: Add xstatconv.
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: New file. Convert
between kernel_stat and the userland version indicated.
* sysdeps/unix/sysv/linux/xstatconv.c: Likewise.
* sysdeps/unix/sysv/linux/bits/stat.h: Define _STAT_VER_KERNEL.
* sysdeps/unix/sysv/linux/fxstat.c: Defer to __xstat_conv. Alias
to __*xstat64 if requested.
* sysdeps/unix/sysv/linux/lxstat.c: Likewise.
* sysdeps/unix/sysv/linux/xstat.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Add struct stat64.
Increment _STAT_VER, and make struct stat the same.
* sysdeps/unix/sysv/linux/alpha/bits/types.h: Add __ino64_t, and
__off64_t. Reorganize.
* sysdeps/unix/sysv/linux/alpha/kernel_stat.h: Add struct glibc2_stat
for backward compatibility. Define XSTAT_IS_XSTAT64.
* sysdeps/unix/sysv/linux/alpha/fxstat64.c: Empty file.
* sysdeps/unix/sysv/linux/alpha/lxstat64.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/xstat64.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/dirent.h (struct dirent): For
consistency, force d_ino to use ino_t and supply padding.
1997-10-29 18:47 Richard Henderson <rth@cygnus.com>
* libio/iofopen.c: Correct weak_alias.
Diffstat (limited to 'sysdeps/unix/sysv/linux/xstatconv.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/xstatconv.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/xstatconv.c b/sysdeps/unix/sysv/linux/xstatconv.c new file mode 100644 index 0000000000..06a28cce30 --- /dev/null +++ b/sysdeps/unix/sysv/linux/xstatconv.c @@ -0,0 +1,83 @@ +/* Convert between the kernel's `struct stat' format, and libc's. + Copyright (C) 1991, 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. */ + +#include <string.h> + + +static inline int +xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) +{ + switch (vers) + { + case _STAT_VER_KERNEL: + /* Nothing to do. The struct is in the form the kernel expects. + We should have short-circuted before we got here, but for + completeness... */ + memcpy ((struct kernel_stat *) ubuf, kbuf, sizeof (*kbuf)); + break; + + case _STAT_VER_LINUX: + { + struct stat *buf = ubuf; + + /* Convert to current kernel version of `struct stat'. */ + buf->st_dev = kbuf->st_dev; +#ifdef _HAVE___PAD1 + buf->__pad1 = 0; +#endif + buf->st_ino = kbuf->st_ino; + buf->st_mode = kbuf->st_mode; + buf->st_nlink = kbuf->st_nlink; + buf->st_uid = kbuf->st_uid; + buf->st_gid = kbuf->st_gid; + buf->st_rdev = kbuf->st_rdev; +#ifdef _HAVE___PAD2 + buf->__pad2 = 0; +#endif + buf->st_size = kbuf->st_size; + buf->st_blksize = kbuf->st_blksize; + buf->st_blocks = kbuf->st_blocks; + buf->st_atime = kbuf->st_atime; +#ifdef _HAVE___UNUSED1 + buf->__unused1 = 0; +#endif + buf->st_mtime = kbuf->st_mtime; +#ifdef _HAVE___UNUSED2 + buf->__unused2 = 0; +#endif + buf->st_ctime = kbuf->st_ctime; +#ifdef _HAVE___UNUSED3 + buf->__unused3 = 0; +#endif +#ifdef _HAVE___UNUSED4 + buf->__unused4 = 0; +#endif +#ifdef _HAVE___UNUSED5 + buf->__unused5 = 0; +#endif + } + break; + + default: + __set_errno (EINVAL); + return -1; + } + + return 0; +} |