Loading...
--- Libc/Libc-1725.40.4/sys/statx_np.c
+++ Libc/Libc-391/sys/statx_np.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
@@ -25,21 +25,22 @@
#include <sys/stat.h>
#include <errno.h>
#include <stdlib.h>
+#include <sys/syscall.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
-#define ACL_MIN_SIZE_HEURISTIC (KAUTH_FILESEC_SIZE(16))
+#define ACL_MIN_SIZE_HEURISTIC (sizeof(struct kauth_filesec) + 16 * sizeof(struct kauth_ace))
-static int statx_syscall(void *obj, void *sbptr, void *fsacl, size_t *fsacl_size);
-static int fstatx_syscall(void *obj, void *sbptr, void *fsacl, size_t *fsacl_size);
-static int lstatx_syscall(void *obj, void *sbptr, void *fsacl, size_t *fsacl_size);
+static int statx_syscall(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size);
+static int fstatx_syscall(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size);
+static int lstatx_syscall(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size);
static int statx1(void *obj,
- int (* stat_syscall)(void *obj, void *sbptr, void *fsacl, size_t *fsacl_size),
- void *sbptr, filesec_t fsec);
+ int (* stat_syscall)(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size),
+ struct stat *sb, filesec_t fsec);
/*
* Stat interfaces.
@@ -49,7 +50,7 @@
{
if (fsec == NULL)
return(stat(path, sb));
- return(statx1((void *)&path, statx_syscall, (void *)sb, fsec));
+ return(statx1((void *)&path, statx_syscall, sb, fsec));
}
int
@@ -57,7 +58,7 @@
{
if (fsec == NULL)
return(fstat(fd, sb));
- return(statx1((void *)&fd, fstatx_syscall, (void *)sb, fsec));
+ return(statx1((void *)&fd, fstatx_syscall, sb, fsec));
}
int
@@ -65,74 +66,32 @@
{
if (fsec == NULL)
return(lstat(path, sb));
- return(statx1((void *)&path, lstatx_syscall, (void *)sb, fsec));
+ return(statx1((void *)&path, lstatx_syscall, sb, fsec));
}
-
-
-#if __DARWIN_64_BIT_INO_T && !__DARWIN_ONLY_64_BIT_INO_T
-int
-statx64_np(const char *path, struct stat64 *sb, filesec_t fsec)
-{
- return(statx_np(path, (struct stat *)sb, fsec));
-}
-
-int
-fstatx64_np(int fd, struct stat64 *sb, filesec_t fsec)
-{
- return(fstatx_np(fd, (struct stat *)sb, fsec));
-}
-
-int
-lstatx64_np(const char *path, struct stat64 *sb, filesec_t fsec)
-{
- return(lstatx_np(path, (struct stat *)sb, fsec));
-}
-#endif /* __DARWIN_64_BIT_INO_T && !__DARWIN_ONLY_64_BIT_INO_T */
/*
* Stat syscalls
*/
-#if __DARWIN_64_BIT_INO_T
-extern int __fstat64_extended(int, struct stat *, void *, size_t *);
-extern int __lstat64_extended(const char *, struct stat *, void *, size_t *);
-extern int __stat64_extended(const char *, struct stat *, void *, size_t *);
-#else /* !__DARWIN_64_BIT_INO_T */
-extern int __fstat_extended(int, struct stat *, void *, size_t *);
-extern int __lstat_extended(const char *, struct stat *, void *, size_t *);
-extern int __stat_extended(const char *, struct stat *, void *, size_t *);
-#endif /* __DARWIN_64_BIT_INO_T */
-
static int
-statx_syscall(void *obj, void *sb, void *fsacl, size_t *fsacl_size)
+statx_syscall(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size)
{
const char *path = *(const char **)obj;
-#if __DARWIN_64_BIT_INO_T
- return(__stat64_extended(path, (struct stat *)sb, fsacl, fsacl_size));
-#else /* !__DARWIN_64_BIT_INO_T */
- return(__stat_extended(path, (struct stat *)sb, fsacl, fsacl_size));
-#endif /* __DARWIN_64_BIT_INO_T */
+
+ return(syscall(SYS_stat_extended, path, sb, fsacl, fsacl_size));
}
static int
-fstatx_syscall(void *obj, void *sb, void *fsacl, size_t *fsacl_size)
+fstatx_syscall(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size)
{
int fd = *(int *)obj;
-#if __DARWIN_64_BIT_INO_T
- return(__fstat64_extended(fd, (struct stat *)sb, fsacl, fsacl_size));
-#else /* !__DARWIN_64_BIT_INO_T */
- return(__fstat_extended(fd, (struct stat *)sb, fsacl, fsacl_size));
-#endif /* __DARWIN_64_BIT_INO_T */
+ return(syscall(SYS_fstat_extended, fd, sb, fsacl, fsacl_size));
}
static int
-lstatx_syscall(void *obj, void *sb, void *fsacl, size_t *fsacl_size)
+lstatx_syscall(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size)
{
const char *path = *(const char **)obj;
-#if __DARWIN_64_BIT_INO_T
- return(__lstat64_extended(path, (struct stat *)sb, fsacl, fsacl_size));
-#else /* !__DARWIN_64_BIT_INO_T */
- return(__lstat_extended(path, (struct stat *)sb, fsacl, fsacl_size));
-#endif /* __DARWIN_64_BIT_INO_T */
+ return(syscall(SYS_lstat_extended, path, sb, fsacl, fsacl_size));
}
/*
@@ -140,19 +99,16 @@
*/
static int
statx1(void *obj,
- int (* stat_syscall)(void *obj, void *sbptr, void *fsacl, size_t *fsacl_size),
- void *sbptr, filesec_t fsec)
+ int (* stat_syscall)(void *obj, struct stat *sb, void *fsacl, size_t *fsacl_size),
+ struct stat *sb, filesec_t fsec)
{
- kauth_filesec_t fsacl, ofsacl;
+ struct kauth_filesec *fsacl, *ofsacl;
size_t fsacl_size, buffer_size;
int error;
- struct stat * sb = (struct stat *)0;
fsacl = NULL;
error = 0;
- sb = (struct stat *)sbptr;
-
/*
* Allocate an initial buffer.
*/
@@ -167,8 +123,7 @@
*/
for (;;) {
fsacl_size = buffer_size;
-
- if ((error = stat_syscall(obj, sbptr, fsacl, &fsacl_size)) != 0)
+ if ((error = stat_syscall(obj, sb, fsacl, &fsacl_size)) != 0)
goto out;
/*