diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-08-19 18:04:25 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-08-19 18:04:25 +0000 |
commit | 3fec316902712c8a7546405852fa50a0aa39d4f6 (patch) | |
tree | 250fe9428f45f686c401f22ff96b9e9a0d2a7436 /libc/sysdeps/linux/common | |
parent | bfefdc65657e145a0e05886ec571e0ee6af1a290 (diff) |
Eliminate wrapping of struct stat and use the kernel version
directly. Eliminate all the attendant baggage. Fix internal
types to match kernel types more closely.
-Erik
Diffstat (limited to 'libc/sysdeps/linux/common')
-rw-r--r-- | libc/sysdeps/linux/common/Makefile | 6 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/bits/stat.h | 81 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/bits/types.h | 15 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/mknod.c | 62 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/statfix.c | 47 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/statfix.h | 28 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/statfix64.c | 52 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/statfix64.h | 82 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/syscalls.c | 153 |
9 files changed, 49 insertions, 477 deletions
diff --git a/libc/sysdeps/linux/common/Makefile b/libc/sysdeps/linux/common/Makefile index 84de78aca..383956f19 100644 --- a/libc/sysdeps/linux/common/Makefile +++ b/libc/sysdeps/linux/common/Makefile @@ -29,12 +29,12 @@ ifeq ($(strip $(DOPIC)),true) SAFECFLAGS+=-fPIC endif -CSRC= waitpid.c statfix.c getdnnm.c gethstnm.c getcwd.c \ +CSRC= waitpid.c getdnnm.c gethstnm.c getcwd.c \ mkfifo.c setegid.c wait.c getpagesize.c seteuid.c \ wait3.c setpgrp.c getdtablesize.c create_module.c ptrace.c \ - cmsg_nxthdr.c statfix64.c longjmp.c open64.c ftruncate64.c \ + cmsg_nxthdr.c longjmp.c open64.c ftruncate64.c \ truncate64.c getrlimit64.c setrlimit64.c creat64.c mmap64.c \ - llseek.c pread_write.c _exit.c mknod.c setuid.c sync.c + llseek.c pread_write.c _exit.c setuid.c sync.c ifneq ($(strip $(EXCLUDE_BRK)),true) CSRC+=sbrk.c endif diff --git a/libc/sysdeps/linux/common/bits/stat.h b/libc/sysdeps/linux/common/bits/stat.h index f446a91db..82cb04094 100644 --- a/libc/sysdeps/linux/common/bits/stat.h +++ b/libc/sysdeps/linux/common/bits/stat.h @@ -20,6 +20,9 @@ # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead." #endif +#ifndef _BITS_STAT_H +#define _BITS_STAT_H + /* Versions of the `struct stat' data structure. */ #define _STAT_VER_LINUX_OLD 1 #define _STAT_VER_KERNEL 1 @@ -32,75 +35,18 @@ #define _MKNOD_VER_SVR4 2 #define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ - -struct stat - { - __dev_t st_dev; /* Device. */ - unsigned short int __pad1; -#ifndef __USE_FILE_OFFSET64 - __ino_t st_ino; /* File serial number. */ -#else - __ino_t __st_ino; /* 32bit file serial number. */ -#endif - __mode_t st_mode; /* File mode. */ - __nlink_t st_nlink; /* Link count. */ - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - __dev_t st_rdev; /* Device number, if device. */ - unsigned short int __pad2; -#ifndef __USE_FILE_OFFSET64 - __off_t st_size; /* Size of file, in bytes. */ -#else - __off64_t st_size; /* Size of file, in bytes. */ -#endif - __blksize_t st_blksize; /* Optimal block size for I/O. */ - -#ifndef __USE_FILE_OFFSET64 - __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ -#else - __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ -#endif - __time_t st_atime; /* Time of last access. */ - unsigned long int __unused1; - __time_t st_mtime; /* Time of last modification. */ - unsigned long int __unused2; - __time_t st_ctime; /* Time of last status change. */ - unsigned long int __unused3; -#ifndef __USE_FILE_OFFSET64 - unsigned long int __unused4; - unsigned long int __unused5; -#else - __ino64_t st_ino; /* File serial number. */ -#endif - }; - +/* Pull in whatever this particular arch's kernel thinks that struct stat + * should look like. It turns out that each arch has a different opinion + * on the subject, and different kernel revs use different names... */ +#define new_stat stat +#include <asm/stat.h> #ifdef __USE_LARGEFILE64 -struct stat64 - { - __dev_t st_dev; /* Device. */ - unsigned int __pad1; - - __ino_t __st_ino; /* 32bit file serial number. */ - __mode_t st_mode; /* File mode. */ - __nlink_t st_nlink; /* Link count. */ - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - __dev_t st_rdev; /* Device number, if device. */ - unsigned int __pad2; - __off64_t st_size; /* Size of file, in bytes. */ - __blksize_t st_blksize; /* Optimal block size for I/O. */ - - __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ - __time_t st_atime; /* Time of last access. */ - unsigned long int __unused1; - __time_t st_mtime; /* Time of last modification. */ - unsigned long int __unused2; - __time_t st_ctime; /* Time of last status change. */ - unsigned long int __unused3; - __ino64_t st_ino; /* File serial number. */ - }; +# ifdef __USE_FILE_OFFSET64 +# define stat stat64 +# endif #endif + /* Tell code we have these members. */ #define _STATBUF_ST_BLKSIZE #define _STATBUF_ST_RDEV @@ -132,3 +78,6 @@ struct stat64 #define __S_IREAD 0400 /* Read by owner. */ #define __S_IWRITE 0200 /* Write by owner. */ #define __S_IEXEC 0100 /* Execute by owner. */ + +#endif /* _BITS_STAT_H */ + diff --git a/libc/sysdeps/linux/common/bits/types.h b/libc/sysdeps/linux/common/bits/types.h index 88126cca3..6aef44901 100644 --- a/libc/sysdeps/linux/common/bits/types.h +++ b/libc/sysdeps/linux/common/bits/types.h @@ -67,16 +67,17 @@ __extension__ typedef unsigned long long int __uint64_t; #endif typedef __quad_t *__qaddr_t; +/* changed to be more compatible with kernel */ typedef __kernel_dev_t __dev_t; /* Type of device numbers. */ typedef __kernel_uid_t __uid_t; /* Type of user identifications. */ typedef __kernel_gid_t __gid_t; /* Type of group identifications. */ -typedef __u_long __ino_t; /* Type of file serial numbers. */ -typedef __u_int __mode_t; /* Type of file attribute bitmasks. */ -typedef __u_int __nlink_t; /* Type of file link counts. */ -typedef long int __off_t; /* Type of file sizes and offsets. */ -typedef __quad_t __loff_t; /* Type of file sizes and offsets. */ -typedef int __pid_t; /* Type of process identifications. */ -typedef int __ssize_t; /* Type of a byte count, or error. */ +typedef __kernel_ino_t __ino_t; /* Type of file serial numbers. */ +typedef __kernel_mode_t __mode_t; /* Type of file attribute bitmasks. */ +typedef __kernel_nlink_t __nlink_t; /* Type of file link counts. */ +typedef __kernel_off_t __off_t; /* Type of file sizes and offsets. */ +typedef __kernel_loff_t __loff_t; /* Type of file sizes and offsets. */ +typedef __kernel_pid_t __pid_t; /* Type of process identifications. */ +typedef __kernel_ssize_t __ssize_t; /* Type of a byte count, or error. */ typedef __u_long __rlim_t; /* Type of resource counts. */ typedef __u_quad_t __rlim64_t; /* Type of resource counts (LFS). */ typedef __u_int __id_t; /* General type for ID. */ diff --git a/libc/sysdeps/linux/common/mknod.c b/libc/sysdeps/linux/common/mknod.c deleted file mode 100644 index 8629c2070..000000000 --- a/libc/sysdeps/linux/common/mknod.c +++ /dev/null @@ -1,62 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * mknod syscall for uClibc - * - * Copyright (C) 2002 by Erik Andersen <andersen@codpoet.org> - * - * This program 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. - * - * This program 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 this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#define _GNU_SOURCE -#define __FORCE_GLIBC -#include <features.h> -#include <errno.h> -#include <sys/types.h> -#include <sys/syscall.h> -#include <asm/posix_types.h> - -#ifndef _MKNOD_VER -# define _MKNOD_VER 0 -#endif - -#ifndef INLINE_SYSCALL -#define INLINE_SYSCALL(name, nr, args...) __syscall_mknod (args) -#define __NR___syscall_mknod __NR_mknod -static inline _syscall3(int, __syscall_mknod, const char *, path, - unsigned short int, mode, unsigned short int, dev); -#endif - -int __xmknod (int version, const char * path, __mode_t mode, __dev_t *dev) -{ - unsigned short int k_dev; - /* We must convert the value to dev_t type used by the kernel. */ - k_dev = ((major (*dev) & 0xff) << 8) | (minor (*dev) & 0xff); - - switch(version) - { - case 1: - return INLINE_SYSCALL (mknod, 3, path, mode, k_dev); - default: - __set_errno(EINVAL); - return -1; - } -} - -int mknod(const char *path, __mode_t mode, __dev_t dev) -{ - return __xmknod(_MKNOD_VER, path, mode, &dev); -} - diff --git a/libc/sysdeps/linux/common/statfix.c b/libc/sysdeps/linux/common/statfix.c deleted file mode 100644 index 507018dc3..000000000 --- a/libc/sysdeps/linux/common/statfix.c +++ /dev/null @@ -1,47 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* Convert from the kernel's version of struct stat to libc's version - * - * Copyright (C) 2000 by Lineo, inc. and Erik Andersen - * Copyright (C) 2000,2001 by Erik Andersen <andersen@uclibc.org> - * Written by Erik Andersen <andersen@uclibc.org> - * - * This program 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. - * - * This program 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 this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* Pull in whatever this particular arch's kernel thinks the kernel version of - * struct stat should look like. It turns out that each arch has a different - * opinion on the subject. Then pull in libc's version of struct stat... */ -#include "statfix.h" -#include <string.h> - -/* Convert from the kernel's version of struct stat to libc's version */ -void __statfix(struct libc_stat *libcstat, struct kernel_stat *kstat) -{ - memset(libcstat, 0, sizeof(struct libc_stat)); - libcstat->st_dev = kstat->st_dev; - libcstat->st_ino = kstat->st_ino; - libcstat->st_mode = kstat->st_mode; - libcstat->st_nlink = kstat->st_nlink; - libcstat->st_uid = kstat->st_uid; - libcstat->st_gid = kstat->st_gid; - libcstat->st_rdev = kstat->st_rdev; - libcstat->st_size = kstat->st_size; - libcstat->st_blksize = kstat->st_blksize; - libcstat->st_blocks = kstat->st_blocks; - libcstat->st_atime = kstat->st_atime; - libcstat->st_mtime = kstat->st_mtime; - libcstat->st_ctime = kstat->st_ctime; -} - diff --git a/libc/sysdeps/linux/common/statfix.h b/libc/sysdeps/linux/common/statfix.h deleted file mode 100644 index af4e67dad..000000000 --- a/libc/sysdeps/linux/common/statfix.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef STATFIX_H -#define STATFIX_H - -#include <features.h> -#undef __OPTIMIZE__ -#include <sys/types.h> - -/* Pull in whatever this particular arch's kernel thinks the kernel version of - * * struct stat should look like. It turns out that each arch has a different - * * opinion on the subject, and different kernel revs use different names... */ -#define stat kernel_stat -#define new_stat kernel_stat -#include <asm/stat.h> -#undef new_stat -#undef stat - -/* Now pull in libc's version of stat */ -#define stat libc_stat -#define stat64 libc_stat64 -#define _SYS_STAT_H -#include <bits/stat.h> -#undef stat64 -#undef stat - -extern void __statfix(struct libc_stat *libcstat, struct kernel_stat *kstat); -extern int __fxstat(int version, int fd, struct libc_stat * statbuf); - -#endif diff --git a/libc/sysdeps/linux/common/statfix64.c b/libc/sysdeps/linux/common/statfix64.c deleted file mode 100644 index 1fd017487..000000000 --- a/libc/sysdeps/linux/common/statfix64.c +++ /dev/null @@ -1,52 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* Convert from the kernel's version of struct stat to libc's version - * - * Copyright (C) 2000 by Lineo, inc. and Erik Andersen - * Copyright (C) 2000,2001 by Erik Andersen <andersen@uclibc.org> - * Written by Erik Andersen <andersen@uclibc.org> - * - * This program 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. - * - * This program 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 this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - - -/* Pull in whatever this particular arch's kernel thinks the kernel version of - * struct stat should look like. It turns out that each arch has a different - * opinion on the subject. Then pull in libc's version of struct stat... */ -#include "statfix64.h" - -#ifdef __UCLIBC_HAVE_LFS__ -#include <string.h> - -/* Convert from the kernel's version of struct stat to libc's version */ -void __statfix64(struct libc_stat64 *libcstat, struct kernel_stat64 *kstat) -{ - memset(libcstat, 0, sizeof(struct libc_stat64)); - libcstat->st_dev = kstat->st_dev; - libcstat->st_ino = kstat->st_ino; - libcstat->st_mode = kstat->st_mode; - libcstat->st_nlink = kstat->st_nlink; - libcstat->st_uid = kstat->st_uid; - libcstat->st_gid = kstat->st_gid; - libcstat->st_rdev = kstat->st_rdev; - libcstat->st_size = kstat->st_size; - libcstat->st_blksize = kstat->st_blksize; - libcstat->st_blocks = kstat->st_blocks; - libcstat->st_atime = kstat->st_atime; - libcstat->st_mtime = kstat->st_mtime; - libcstat->st_ctime = kstat->st_ctime; -} - -#endif /* __UCLIBC_HAVE_LFS__ */ - diff --git a/libc/sysdeps/linux/common/statfix64.h b/libc/sysdeps/linux/common/statfix64.h deleted file mode 100644 index 415829f67..000000000 --- a/libc/sysdeps/linux/common/statfix64.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef STATFIX_H -#define STATFIX_H - -#include <features.h> -#undef __OPTIMIZE__ -#include <sys/types.h> -#include <bits/wordsize.h> - -#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS != 64 -#undef _FILE_OFFSET_BITS -#define _FILE_OFFSET_BITS 64 -#endif -#ifndef __USE_LARGEFILE64 -# define __USE_LARGEFILE64 1 -#endif -/* We absolutely do _NOT_ want interfaces silently - * * * renamed under us or very bad things will happen... */ -#ifdef __USE_FILE_OFFSET64 -# undef __USE_FILE_OFFSET64 -#endif - -#if defined __UCLIBC_HAVE_LFS__ -#if defined __WORDSIZE && (__WORDSIZE >= 64) - -/* 64 bit arch stuff... */ - -/* Pull in whatever this particular arch's kernel thinks the kernel version of - * * struct stat should look like. It turns out that each arch has a different - * * opinion on the subject, and different kernel revs use different names... */ -#define stat kernel_stat64 -#define new_stat kernel_stat64 -#define stat64 kernel_stat64 -#define kernel_stat kernel_stat64 -#include <asm/stat.h> -#undef stat64 -#undef new_stat -#undef stat - - -/* Now pull in libc's version of stat */ -#define stat libc_stat -#define stat64 libc_stat64 -#define _SYS_STAT_H -#include <bits/stat.h> -#undef stat64 -#undef stat - -extern void __statfix64(struct libc_stat64 *libcstat, struct kernel_stat64 *kstat); -extern int __fxstat64(int version, int fd, struct libc_stat64 * statbuf); - -#else - -/* 32 bit arch stuff */ - - -/* Pull in whatever this particular arch's kernel thinks the kernel version of - * * struct stat should look like. It turns out that each arch has a different - * * opinion on the subject, and different kernel revs use different names... */ -#define stat kernel_stat -#define new_stat kernel_stat -#define stat64 kernel_stat64 -#include <asm/stat.h> -#undef stat64 -#undef new_stat -#undef stat - -/* Now pull in libc's version of stat */ -#define stat libc_stat -#define stat64 libc_stat64 -#define _SYS_STAT_H -#include <bits/stat.h> -#undef stat64 -#undef stat - -extern void __statfix64(struct libc_stat64 *libcstat, struct kernel_stat64 *kstat); -extern int __fxstat64(int version, int fd, struct libc_stat64 * statbuf); - - -#endif /* __WORDSIZE */ -#endif /* __UCLIBC_HAVE_LFS__ */ - -#endif diff --git a/libc/sysdeps/linux/common/syscalls.c b/libc/sysdeps/linux/common/syscalls.c index ff7c38478..99684d069 100644 --- a/libc/sysdeps/linux/common/syscalls.c +++ b/libc/sysdeps/linux/common/syscalls.c @@ -156,7 +156,11 @@ time_t time (time_t *t) #endif //#define __NR_mknod 14 -//See mknod.c +#ifdef L_mknod +#include <sys/stat.h> +_syscall3(int, mknod, const char *, path, + unsigned short int, mode, unsigned short int, dev); +#endif //#define __NR_chmod 15 #ifdef L_chmod @@ -942,89 +946,32 @@ _syscall2(int, getitimer, __itimer_which_t, which, struct itimerval *, value); #endif //#define __NR_stat 106 -#ifdef L___stat +#ifdef L_stat #include <unistd.h> -#include "statfix.h" -#define __NR___stat __NR_stat -extern int __stat(const char *file_name, struct kernel_stat *buf); -_syscall2(int, __stat, const char *, file_name, struct kernel_stat *, buf); - -int __xstat(int version, const char * file_name, struct libc_stat * cstat) -{ - struct kernel_stat kstat; - int result = __stat(file_name, &kstat); - - if (result == 0) { - __statfix(cstat, &kstat); - } - return result; -} - -int stat(const char *file_name, struct libc_stat *buf) -{ - return(__xstat(0, file_name, buf)); -} +#include <sys/stat.h> +_syscall2(int, stat, const char *, file_name, struct stat *, buf); #if ! defined __NR_stat64 && defined __UCLIBC_HAVE_LFS__ weak_alias(stat, stat64); -weak_alias(__xstat, __xstat64); #endif #endif //#define __NR_lstat 107 -#ifdef L___lstat +#ifdef L_lstat #include <unistd.h> -#include "statfix.h" -#define __NR___lstat __NR_lstat -extern int __lstat(const char *file_name, struct kernel_stat *buf); -_syscall2(int, __lstat, const char *, file_name, struct kernel_stat *, buf); - -int __lxstat(int version, const char * file_name, struct libc_stat * cstat) -{ - struct kernel_stat kstat; - int result = __lstat(file_name, &kstat); - - if (result == 0) { - __statfix(cstat, &kstat); - } - return result; -} - -int lstat(const char *file_name, struct libc_stat *buf) -{ - return(__lxstat(0, file_name, buf)); -} +#include <sys/stat.h> +_syscall2(int, lstat, const char *, file_name, struct stat *, buf); #if ! defined __NR_lstat64 && defined __UCLIBC_HAVE_LFS__ weak_alias(lstat, lstat64); -weak_alias(__lxstat, __lxstat64); #endif #endif //#define __NR_fstat 108 -#ifdef L___fstat +#ifdef L_fstat #include <unistd.h> -#include "statfix.h" -#define __NR___fstat __NR_fstat -extern int __fstat(int filedes, struct kernel_stat *buf); -_syscall2(int, __fstat, int, filedes, struct kernel_stat *, buf); - -int __fxstat(int version, int fd, struct libc_stat * cstat) -{ - struct kernel_stat kstat; - int result = __fstat(fd, &kstat); - - if (result == 0) { - __statfix(cstat, &kstat); - } - return result; -} - -int fstat(int filedes, struct libc_stat *buf) -{ - return(__fxstat(0, filedes, buf)); -} +#include <sys/stat.h> +_syscall2(int, fstat, int, filedes, struct stat *, buf); #if ! defined __NR_fstat64 && defined __UCLIBC_HAVE_LFS__ weak_alias(fstat, fstat64); -weak_alias(__fxstat, __fxstat64); #endif #endif @@ -1611,83 +1558,29 @@ int getrlimit (__rlimit_resource_t resource, struct rlimit *rlimits) //#define __NR_stat64 195 -#ifdef L___stat64 +#ifdef L_stat64 #if defined __NR_stat64 && defined __UCLIBC_HAVE_LFS__ #include <unistd.h> -#include "statfix64.h" -#define __NR___stat64 __NR_stat64 -extern int __stat64(const char *file_name, struct kernel_stat64 *buf); -_syscall2(int, __stat64, const char *, file_name, struct kernel_stat64 *, buf); - -int __xstat64(int version, const char * file_name, struct libc_stat64 * cstat) -{ - struct kernel_stat64 kstat; - int result = __stat64(file_name, &kstat); - - if (result == 0) { - __statfix64(cstat, &kstat); - } - return result; -} - -int stat64(const char *file_name, struct libc_stat64 *buf) -{ - return(__xstat64(0, file_name, buf)); -} +#include <sys/stat.h> +_syscall2(int, stat64, const char *, file_name, struct stat64 *, buf); #endif /* __UCLIBC_HAVE_LFS__ */ #endif //#define __NR_lstat64 196 -#ifdef L___lstat64 +#ifdef L_lstat64 #if defined __NR_lstat64 && defined __UCLIBC_HAVE_LFS__ #include <unistd.h> -#include "statfix64.h" -#define __NR___lstat64 __NR_lstat64 -extern int __lstat64(const char *file_name, struct kernel_stat64 *buf); -_syscall2(int, __lstat64, const char *, file_name, struct kernel_stat64 *, buf); - -int __lxstat64(int version, const char * file_name, struct libc_stat64 * cstat) -{ - struct kernel_stat64 kstat; - int result = __lstat64(file_name, &kstat); - - if (result == 0) { - __statfix64(cstat, &kstat); - } - return result; -} - -int lstat64(const char *file_name, struct libc_stat64 *buf) -{ - return(__lxstat64(0, file_name, buf)); -} +#include <sys/stat.h> +_syscall2(int, lstat64, const char *, file_name, struct stat64 *, buf); #endif /* __UCLIBC_HAVE_LFS__ */ #endif //#define __NR_fstat64 197 -#ifdef L___fstat64 +#ifdef L_fstat64 #if defined __NR_fstat64 && defined __UCLIBC_HAVE_LFS__ #include <unistd.h> -#include "statfix64.h" -#define __NR___fstat64 __NR_fstat64 -extern int __fstat64(int filedes, struct kernel_stat64 *buf); -_syscall2(int, __fstat64, int, filedes, struct kernel_stat64 *, buf); - -int __fxstat64(int version, int fd, struct libc_stat64 * cstat) -{ - struct kernel_stat64 kstat; - int result = __fstat64(fd, &kstat); - - if (result == 0) { - __statfix64(cstat, &kstat); - } - return result; -} - -int fstat64(int filedes, struct libc_stat64 *buf) -{ - return(__fxstat64(0, filedes, buf)); -} +#include <sys/stat.h> +_syscall2(int, fstat64, int, filedes, struct stat64 *, buf); #endif /* __UCLIBC_HAVE_LFS__ */ #endif |