xref: /onnv-gate/usr/src/lib/libast/common/features/fs (revision 4887:feebf9260c2e)
1*4887Schinset	prototyped
2*4887Schinlib	_fxstat,__fxstat,_lxstat,__lxstat,_xmknod,__xmknod,_xstat,__xstat,lstat,mknod,sync sys/types.h sys/stat.h
3*4887Schinlib	_fxstat64,__fxstat64,_lxstat64,__lxstat64,_xstat64,__xstat64 -D_LARGEFILE64_SOURCE sys/types.h sys/stat.h
4*4887Schinmac	fstat,lstat,stat,mknod sys/types.h sys/stat.h
5*4887Schin
6*4887Schinlcl	xstat -D_LARGEFILE64_SOURCE link{
7*4887Schin	#include <sys/types.h>
8*4887Schin	#include <sys/stat.h>
9*4887Schin	struct stat64 { int xxx; }; /* disable if stat64 available */
10*4887Schin	#if _STD_
11*4887Schin	extern int stat(const char* path, struct stat* st)
12*4887Schin	#else
13*4887Schin	int stat(path, st)
14*4887Schin	char*		path;
15*4887Schin	struct stat*	st;
16*4887Schin	#endif
17*4887Schin	{
18*4887Schin	#if _lib___xstat
19*4887Schin		return __xstat(_STAT_VER, path, st);
20*4887Schin	#else
21*4887Schin		return _xstat(_STAT_VER, path, st);
22*4887Schin	#endif
23*4887Schin	}
24*4887Schin	int
25*4887Schin	main()
26*4887Schin	{
27*4887Schin		struct stat	st;
28*4887Schin		return stat(".",&st) < 0;
29*4887Schin	}
30*4887Schin}end
31*4887Schin
32*4887Schinlcl	xstat64 -D_LARGEFILE64_SOURCE link{
33*4887Schin	#include <sys/types.h>
34*4887Schin	#include <sys/stat.h>
35*4887Schin	#if _STD_
36*4887Schin	extern int stat64(const char* path, struct stat64* st)
37*4887Schin	#else
38*4887Schin	int stat64(path, st)
39*4887Schin	char*		path;
40*4887Schin	#endif
41*4887Schin	{
42*4887Schin	#if _lib___xstat64
43*4887Schin		return __xstat64(_STAT_VER, path, st);
44*4887Schin	#else
45*4887Schin		return _xstat64(_STAT_VER, path, st);
46*4887Schin	#endif
47*4887Schin	}
48*4887Schin	int
49*4887Schin	main()
50*4887Schin	{
51*4887Schin		struct stat64	st;
52*4887Schin		return stat64(".",&st) < 0;
53*4887Schin	}
54*4887Schin}end
55*4887Schin
56*4887Schinheader	sys/stat.h
57*4887Schin
58*4887Schinextern	chmod		int	(const char*, mode_t)
59*4887Schinextern	fstat		int	(int, struct stat*)
60*4887Schinextern	lstat		int	(const char*, struct stat*)
61*4887Schinextern	mkdir		int	(const char*, mode_t)
62*4887Schinextern	mkfifo		int	(const char*, mode_t)
63*4887Schinextern	mknod		int	(const char*, mode_t, dev_t)
64*4887Schinextern	stat		int	(const char*, struct stat*)
65*4887Schinextern	mkfifo		mode_t	(mode_t)
66*4887Schin
67*4887Schindefine	FS_default	"ufs"
68*4887Schin
69*4887Schinmacro{
70*4887Schin	#include <sys/types.h>
71*4887Schin	#include <sys/stat.h>
72*4887Schin	#ifndef major
73*4887Schin	#include <sys/param.h>
74*4887Schin	#ifndef major
75*4887Schin	#include <sys/sysmacros.h>
76*4887Schin	#endif
77*4887Schin	<<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
78*4887Schin	<<"__STDPP__directive pragma pp:initial">>
79*4887Schin	<<"#endif">>
80*4887Schin	<<"#ifndef major">>
81*4887Schin	#ifdef major
82*4887Schin	<<"#define major(x)">> major((x))
83*4887Schin	#else
84*4887Schin	#ifndef L_BITSMAJOR
85*4887Schin	#define L_BITSMAJOR 8
86*4887Schin	#endif
87*4887Schin	#ifndef L_BITSMINOR
88*4887Schin	#define L_BITSMINOR 8
89*4887Schin	#endif
90*4887Schin	#ifndef L_MAXMAJ
91*4887Schin	#define L_MAXMAJ ((1<<L_BITSMAJOR)-1)
92*4887Schin	#endif
93*4887Schin	#ifndef L_MAXMIN
94*4887Schin	#define L_MAXMIN ((1<<L_BITSMINOR)-1)
95*4887Schin	#endif
96*4887Schin	<<"#define major(x)">> ((int)(((unsigned)(x)>>L_BITSMINOR)&L_MAXMAJ))
97*4887Schin	#endif
98*4887Schin	<<"#endif">>
99*4887Schin	<<"#ifndef minor">>
100*4887Schin	#ifdef minor
101*4887Schin	<<"#define minor(x)">> minor((x))
102*4887Schin	#else
103*4887Schin	<<"#define minor(x)">> ((int)((x)&L_MAXMIN))
104*4887Schin	#endif
105*4887Schin	<<"#endif">>
106*4887Schin	<<"#ifndef makedev">>
107*4887Schin	#ifdef makedev
108*4887Schin	<<"#define makedev(x,y)">> makedev((x),(y))
109*4887Schin	#else
110*4887Schin	<<"#define makedev(x,y)">> ((dev_t)((((x)&0377)<<8)|((y)&0377)))
111*4887Schin	#endif
112*4887Schin	<<"#endif">>
113*4887Schin	#endif
114*4887Schin	<<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
115*4887Schin	<<"__STDPP__directive pragma pp:noinitial">>
116*4887Schin	<<"#endif">>
117*4887Schin}end fail{
118*4887Schin	cat <<!
119*4887Schin	#ifndef major
120*4887Schin	#define major(x)	((int)(((unsigned)(x)>>8)&0377))
121*4887Schin	#endif
122*4887Schin	#ifndef minor
123*4887Schin	#define minor(x)	((int)((x)&0377))
124*4887Schin	#endif
125*4887Schin	#ifndef makedev
126*4887Schin	#define makedev(x,y)	((dev_t)((((x)&0377)<<8)|((y)&0377)))
127*4887Schin	#endif
128*4887Schin	!
129*4887Schin}end
130*4887Schin
131*4887Schinmem	mnttab.mt_dev,mnttab.mt_filsys,mnttab.mt_fstyp sys/types.h mnttab.h
132*4887Schinmem	mntent.mnt_opts,w_mntent.mnt_opts,mnttab.mnt_opts sys/types.h stdio.h mntent.h sys/mntent.h
133*4887Schinmem	mntent.mnt_opts,mnttab.mnt_opts sys/types.h mnttab.h sys/mnttab.h
134*4887Schinmem	stat.st_blocks,stat.st_blksize,stat.st_rdev sys/types.h sys/stat.h
135*4887Schinmem	statfs.f_files,statfs.f_bavail sys/types.h - sys/statfs.h - sys/vfs.h - sys/param.h sys/mount.h
136*4887Schinmem	statvfs.f_basetype,statvfs.f_frsize sys/types.h sys/statvfs.h
137*4887Schin
138*4887Schinary	f_reserved7 sys/types.h sys/statvfs.h note{ statvfs.f_reserved7 can double for statvfs.f_basetype }end compile{
139*4887Schin	int f(vp)struct statvfs* vp;{return vp->f_reserved7[0] = 1;}
140*4887Schin}end
141*4887Schin
142*4887Schinhdr	mntent,mnttab
143*4887Schinlib	getmntent,getmntinfo,mntctl,mntopen,mntread,mntclose,setmntent
144*4887Schinlib	w_getmntent
145*4887Schinlib	statfs,statvfs
146*4887Schinsys	fs_types,mntent,mnttab,mount,statfs,statvfs,vfs,vmount
147*4887Schin
148*4887Schinlib	statfs4 sys/types.h - sys/statfs.h - sys/vfs.h - sys/mount.h compile{
149*4887Schin	int f()
150*4887Schin	{
151*4887Schin		struct statfs fs;
152*4887Schin		return statfs("/",&fs,sizeof(fs),0);
153*4887Schin	}
154*4887Schin}end
155*4887Schin
156*4887Schinlib	getmntinfo_statvfs note{ getmntinfo uses statvfs -- since when? }end compile{
157*4887Schin	#include <sys/types.h>
158*4887Schin	#include <sys/mount.h>
159*4887Schin	int
160*4887Schin	gmi(struct statvfs* fs)
161*4887Schin	{
162*4887Schin		fs->f_flag = 0;
163*4887Schin		return getmntinfo(fs, 0);
164*4887Schin	}
165*4887Schin}end
166*4887Schin
167*4887Schincat{
168*4887Schin	#if _sys_statvfs
169*4887Schin	#include <sys/statvfs.h>
170*4887Schin	#if !_mem_statvfs_f_basetype
171*4887Schin	#if _ary_f_reserved7
172*4887Schin	#define f_basetype	f_reserved7
173*4887Schin	#endif
174*4887Schin	#endif
175*4887Schin	#else
176*4887Schin	#define _mem_f_basetype_statvfs	1
177*4887Schin	#define _mem_f_frsize_statvfs	1
178*4887Schin	struct statvfs
179*4887Schin	{
180*4887Schin	unsigned long	f_bsize;	/* fundamental file system block size */
181*4887Schin	unsigned long	f_frsize;	/* fragment size */
182*4887Schin	unsigned long	f_blocks;	/* total # of blocks of f_frsize on fs */
183*4887Schin	unsigned long	f_bfree;	/* total # of free blocks of f_frsize */
184*4887Schin	unsigned long	f_bavail;	/* # of free blocks avail to non-superuser */
185*4887Schin	unsigned long	f_files;	/* total # of file nodes (inodes) */
186*4887Schin	unsigned long	f_ffree;	/* total # of free file nodes */
187*4887Schin	unsigned long	f_favail;	/* # of free nodes avail to non-superuser */
188*4887Schin	unsigned long	f_fsid;		/* file system id (dev for now) */
189*4887Schin	char		f_basetype[16]; /* target fs type name, null-terminated */
190*4887Schin	unsigned long	f_flag;		/* bit-mask of flags */
191*4887Schin	unsigned long	f_namemax;	/* maximum file name length */
192*4887Schin	char		f_fstr[32];	/* filesystem-specific string */
193*4887Schin	unsigned long	f_filler[16];	/* reserved for future expansion */
194*4887Schin	};
195*4887Schin	extern int	fstatvfs(int, struct statvfs*);
196*4887Schin	extern int	statvfs(const char*, struct statvfs*);
197*4887Schin	#endif
198*4887Schin	#if _typ_off64_t
199*4887Schin	#undef	off_t
200*4887Schin	#define off_t	off64_t
201*4887Schin	#endif
202*4887Schin	#if _lib_statvfs64 && !defined(statvfs)
203*4887Schin	#define statvfs		statvfs64
204*4887Schin	#if !defined(__USE_LARGEFILE64)
205*4887Schin	extern int		statvfs64(const char*, struct statvfs64*);
206*4887Schin	#endif
207*4887Schin	#endif
208*4887Schin	#if _lib_fstatvfs64 && !defined(fstatvfs)
209*4887Schin	#define fstatvfs	fstatvfs64
210*4887Schin	#if !defined(__USE_LARGEFILE64)
211*4887Schin	extern int		fstatvfs64(int, struct statvfs64*);
212*4887Schin	#endif
213*4887Schin	#endif
214*4887Schin}end
215*4887Schin
216*4887Schinstr	st_fstype sys/types.h sys/stat.h note{ stat.st_fstype is a string }end compile{
217*4887Schin	int f(st)struct stat* st;{return st->st_fstype[0];}
218*4887Schin}end
219*4887Schin
220*4887Schinint	st_fstype sys/types.h sys/stat.h note{ stat.st_fstype is an int }end compile{
221*4887Schin	int f(st)struct stat* st;{return st->st_fstype = 1;}
222*4887Schin}end
223*4887Schin
224*4887Schinint	st_spare1 sys/types.h sys/stat.h note{ stat.st_spare1 is an int }end compile{
225*4887Schin	int f(st)struct stat* st;{return st->st_spare1 = 1;}
226*4887Schin}end
227*4887Schin
228*4887Schinary	st_spare4 sys/types.h sys/stat.h note{ stat.st_spare4 is an array }end compile{
229*4887Schin	int f(st)struct stat* st;{return st->st_spare4[0] = 1;}
230*4887Schin}end
231*4887Schin
232*4887Schinary	st_pad4 sys/types.h sys/stat.h note{ stat.st_pad4 is an array }end compile{
233*4887Schin	int f(st)struct stat* st;{return st->st_pad4[0] = 1;}
234*4887Schin}end
235