xref: /illumos-gate/usr/src/lib/libc/port/sys/stat.c (revision 8fd04b83)
1*8fd04b83SRoger A. Faulkner /*
2*8fd04b83SRoger A. Faulkner  * CDDL HEADER START
3*8fd04b83SRoger A. Faulkner  *
4*8fd04b83SRoger A. Faulkner  * The contents of this file are subject to the terms of the
5*8fd04b83SRoger A. Faulkner  * Common Development and Distribution License (the "License").
6*8fd04b83SRoger A. Faulkner  * You may not use this file except in compliance with the License.
7*8fd04b83SRoger A. Faulkner  *
8*8fd04b83SRoger A. Faulkner  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*8fd04b83SRoger A. Faulkner  * or http://www.opensolaris.org/os/licensing.
10*8fd04b83SRoger A. Faulkner  * See the License for the specific language governing permissions
11*8fd04b83SRoger A. Faulkner  * and limitations under the License.
12*8fd04b83SRoger A. Faulkner  *
13*8fd04b83SRoger A. Faulkner  * When distributing Covered Code, include this CDDL HEADER in each
14*8fd04b83SRoger A. Faulkner  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*8fd04b83SRoger A. Faulkner  * If applicable, add the following below this CDDL HEADER, with the
16*8fd04b83SRoger A. Faulkner  * fields enclosed by brackets "[]" replaced with your own identifying
17*8fd04b83SRoger A. Faulkner  * information: Portions Copyright [yyyy] [name of copyright owner]
18*8fd04b83SRoger A. Faulkner  *
19*8fd04b83SRoger A. Faulkner  * CDDL HEADER END
20*8fd04b83SRoger A. Faulkner  */
21*8fd04b83SRoger A. Faulkner 
22*8fd04b83SRoger A. Faulkner /*
23*8fd04b83SRoger A. Faulkner  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
24*8fd04b83SRoger A. Faulkner  * Use is subject to license terms.
25*8fd04b83SRoger A. Faulkner  */
26*8fd04b83SRoger A. Faulkner 
27*8fd04b83SRoger A. Faulkner #include "lint.h"
28*8fd04b83SRoger A. Faulkner #include <sys/types.h>
29*8fd04b83SRoger A. Faulkner #include <sys/syscall.h>
30*8fd04b83SRoger A. Faulkner #include <sys/stat.h>
31*8fd04b83SRoger A. Faulkner #include <sys/fcntl.h>
32*8fd04b83SRoger A. Faulkner 
33*8fd04b83SRoger A. Faulkner #if !defined(_LP64) && _FILE_OFFSET_BITS == 64
34*8fd04b83SRoger A. Faulkner 
35*8fd04b83SRoger A. Faulkner #pragma weak _fstatat64 = fstatat64
36*8fd04b83SRoger A. Faulkner int
fstatat64(int fd,const char * name,struct stat64 * sb,int flags)37*8fd04b83SRoger A. Faulkner fstatat64(int fd, const char *name, struct stat64 *sb, int flags)
38*8fd04b83SRoger A. Faulkner {
39*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_fstatat64, fd, name, sb, flags));
40*8fd04b83SRoger A. Faulkner }
41*8fd04b83SRoger A. Faulkner 
42*8fd04b83SRoger A. Faulkner #pragma weak _stat64 = stat64
43*8fd04b83SRoger A. Faulkner int
stat64(const char * name,struct stat64 * sb)44*8fd04b83SRoger A. Faulkner stat64(const char *name, struct stat64 *sb)
45*8fd04b83SRoger A. Faulkner {
46*8fd04b83SRoger A. Faulkner #if defined(_RETAIN_OLD_SYSCALLS)
47*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_stat64, name, sb));
48*8fd04b83SRoger A. Faulkner #else
49*8fd04b83SRoger A. Faulkner 	return (fstatat64(AT_FDCWD, name, sb, 0));
50*8fd04b83SRoger A. Faulkner #endif
51*8fd04b83SRoger A. Faulkner }
52*8fd04b83SRoger A. Faulkner 
53*8fd04b83SRoger A. Faulkner #pragma weak _lstat64 = lstat64
54*8fd04b83SRoger A. Faulkner int
lstat64(const char * name,struct stat64 * sb)55*8fd04b83SRoger A. Faulkner lstat64(const char *name, struct stat64 *sb)
56*8fd04b83SRoger A. Faulkner {
57*8fd04b83SRoger A. Faulkner #if defined(_RETAIN_OLD_SYSCALLS)
58*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_lstat64, name, sb));
59*8fd04b83SRoger A. Faulkner #else
60*8fd04b83SRoger A. Faulkner 	return (fstatat64(AT_FDCWD, name, sb, AT_SYMLINK_NOFOLLOW));
61*8fd04b83SRoger A. Faulkner #endif
62*8fd04b83SRoger A. Faulkner }
63*8fd04b83SRoger A. Faulkner 
64*8fd04b83SRoger A. Faulkner #pragma weak _fstat64 = fstat64
65*8fd04b83SRoger A. Faulkner int
fstat64(int fd,struct stat64 * sb)66*8fd04b83SRoger A. Faulkner fstat64(int fd, struct stat64 *sb)
67*8fd04b83SRoger A. Faulkner {
68*8fd04b83SRoger A. Faulkner #if defined(_RETAIN_OLD_SYSCALLS)
69*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_fstat64, fd, sb));
70*8fd04b83SRoger A. Faulkner #else
71*8fd04b83SRoger A. Faulkner 	return (fstatat64(fd, NULL, sb, 0));
72*8fd04b83SRoger A. Faulkner #endif
73*8fd04b83SRoger A. Faulkner }
74*8fd04b83SRoger A. Faulkner 
75*8fd04b83SRoger A. Faulkner #else	/* !defined(_LP64) && _FILE_OFFSET_BITS == 64 */
76*8fd04b83SRoger A. Faulkner 
77*8fd04b83SRoger A. Faulkner #pragma weak _fstatat = fstatat
78*8fd04b83SRoger A. Faulkner int
fstatat(int fd,const char * name,struct stat * sb,int flags)79*8fd04b83SRoger A. Faulkner fstatat(int fd, const char *name, struct stat *sb, int flags)
80*8fd04b83SRoger A. Faulkner {
81*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_fstatat, fd, name, sb, flags));
82*8fd04b83SRoger A. Faulkner }
83*8fd04b83SRoger A. Faulkner 
84*8fd04b83SRoger A. Faulkner #pragma weak _stat = stat
85*8fd04b83SRoger A. Faulkner int
stat(const char * name,struct stat * sb)86*8fd04b83SRoger A. Faulkner stat(const char *name, struct stat *sb)
87*8fd04b83SRoger A. Faulkner {
88*8fd04b83SRoger A. Faulkner #if defined(_RETAIN_OLD_SYSCALLS)
89*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_stat, name, sb));
90*8fd04b83SRoger A. Faulkner #else
91*8fd04b83SRoger A. Faulkner 	return (fstatat(AT_FDCWD, name, sb, 0));
92*8fd04b83SRoger A. Faulkner #endif
93*8fd04b83SRoger A. Faulkner }
94*8fd04b83SRoger A. Faulkner 
95*8fd04b83SRoger A. Faulkner #pragma weak _lstat = lstat
96*8fd04b83SRoger A. Faulkner int
lstat(const char * name,struct stat * sb)97*8fd04b83SRoger A. Faulkner lstat(const char *name, struct stat *sb)
98*8fd04b83SRoger A. Faulkner {
99*8fd04b83SRoger A. Faulkner #if defined(_RETAIN_OLD_SYSCALLS)
100*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_lstat, name, sb));
101*8fd04b83SRoger A. Faulkner #else
102*8fd04b83SRoger A. Faulkner 	return (fstatat(AT_FDCWD, name, sb, AT_SYMLINK_NOFOLLOW));
103*8fd04b83SRoger A. Faulkner #endif
104*8fd04b83SRoger A. Faulkner }
105*8fd04b83SRoger A. Faulkner 
106*8fd04b83SRoger A. Faulkner #pragma weak _fstat = fstat
107*8fd04b83SRoger A. Faulkner int
fstat(int fd,struct stat * sb)108*8fd04b83SRoger A. Faulkner fstat(int fd, struct stat *sb)
109*8fd04b83SRoger A. Faulkner {
110*8fd04b83SRoger A. Faulkner #if defined(_RETAIN_OLD_SYSCALLS)
111*8fd04b83SRoger A. Faulkner 	return (syscall(SYS_fstat, fd, sb));
112*8fd04b83SRoger A. Faulkner #else
113*8fd04b83SRoger A. Faulkner 	return (fstatat(fd, NULL, sb, 0));
114*8fd04b83SRoger A. Faulkner #endif
115*8fd04b83SRoger A. Faulkner }
116*8fd04b83SRoger A. Faulkner 
117*8fd04b83SRoger A. Faulkner #endif	/* !defined(_LP64) && _FILE_OFFSET_BITS == 64 */
118