xref: /onnv-gate/usr/src/lib/libast/common/features/fs (revision 12068:08a39a083754)
14887Schinset	prototyped
24887Schinlib	_fxstat,__fxstat,_lxstat,__lxstat,_xmknod,__xmknod,_xstat,__xstat,lstat,mknod,sync sys/types.h sys/stat.h
34887Schinlib	_fxstat64,__fxstat64,_lxstat64,__lxstat64,_xstat64,__xstat64 -D_LARGEFILE64_SOURCE sys/types.h sys/stat.h
44887Schinmac	fstat,lstat,stat,mknod sys/types.h sys/stat.h
54887Schin
64887Schinlcl	xstat -D_LARGEFILE64_SOURCE link{
74887Schin	#include <sys/types.h>
84887Schin	#include <sys/stat.h>
94887Schin	struct stat64 { int xxx; }; /* disable if stat64 available */
104887Schin	#if _STD_
114887Schin	extern int stat(const char* path, struct stat* st)
124887Schin	#else
134887Schin	int stat(path, st)
144887Schin	char*		path;
154887Schin	struct stat*	st;
164887Schin	#endif
174887Schin	{
184887Schin	#if _lib___xstat
194887Schin		return __xstat(_STAT_VER, path, st);
204887Schin	#else
214887Schin		return _xstat(_STAT_VER, path, st);
224887Schin	#endif
234887Schin	}
244887Schin	int
254887Schin	main()
264887Schin	{
274887Schin		struct stat	st;
284887Schin		return stat(".",&st) < 0;
294887Schin	}
304887Schin}end
314887Schin
324887Schinlcl	xstat64 -D_LARGEFILE64_SOURCE link{
334887Schin	#include <sys/types.h>
344887Schin	#include <sys/stat.h>
354887Schin	#if _STD_
364887Schin	extern int stat64(const char* path, struct stat64* st)
374887Schin	#else
384887Schin	int stat64(path, st)
394887Schin	char*		path;
404887Schin	#endif
414887Schin	{
424887Schin	#if _lib___xstat64
434887Schin		return __xstat64(_STAT_VER, path, st);
444887Schin	#else
454887Schin		return _xstat64(_STAT_VER, path, st);
464887Schin	#endif
474887Schin	}
484887Schin	int
494887Schin	main()
504887Schin	{
514887Schin		struct stat64	st;
524887Schin		return stat64(".",&st) < 0;
534887Schin	}
544887Schin}end
554887Schin
564887Schinheader	sys/stat.h
578462SApril.Chin@Sun.COMheader	sys/mkdev.h
584887Schin
594887Schinextern	chmod		int	(const char*, mode_t)
604887Schinextern	fstat		int	(int, struct stat*)
614887Schinextern	lstat		int	(const char*, struct stat*)
624887Schinextern	mkdir		int	(const char*, mode_t)
634887Schinextern	mkfifo		int	(const char*, mode_t)
644887Schinextern	mknod		int	(const char*, mode_t, dev_t)
654887Schinextern	stat		int	(const char*, struct stat*)
664887Schinextern	mkfifo		mode_t	(mode_t)
674887Schin
684887Schindefine	FS_default	"ufs"
694887Schin
704887Schinmacro{
714887Schin	#include <sys/types.h>
724887Schin	#include <sys/stat.h>
734887Schin	#ifndef major
744887Schin	#include <sys/param.h>
754887Schin	#ifndef major
764887Schin	#include <sys/sysmacros.h>
774887Schin	#endif
784887Schin	<<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
794887Schin	<<"__STDPP__directive pragma pp:initial">>
804887Schin	<<"#endif">>
814887Schin	<<"#ifndef major">>
824887Schin	#ifdef major
834887Schin	<<"#define major(x)">> major((x))
844887Schin	#else
854887Schin	#ifndef L_BITSMAJOR
864887Schin	#define L_BITSMAJOR 8
874887Schin	#endif
884887Schin	#ifndef L_BITSMINOR
894887Schin	#define L_BITSMINOR 8
904887Schin	#endif
914887Schin	#ifndef L_MAXMAJ
924887Schin	#define L_MAXMAJ ((1<<L_BITSMAJOR)-1)
934887Schin	#endif
944887Schin	#ifndef L_MAXMIN
954887Schin	#define L_MAXMIN ((1<<L_BITSMINOR)-1)
964887Schin	#endif
974887Schin	<<"#define major(x)">> ((int)(((unsigned)(x)>>L_BITSMINOR)&L_MAXMAJ))
984887Schin	#endif
994887Schin	<<"#endif">>
1004887Schin	<<"#ifndef minor">>
1014887Schin	#ifdef minor
1024887Schin	<<"#define minor(x)">> minor((x))
1034887Schin	#else
1044887Schin	<<"#define minor(x)">> ((int)((x)&L_MAXMIN))
1054887Schin	#endif
1064887Schin	<<"#endif">>
1074887Schin	<<"#ifndef makedev">>
1084887Schin	#ifdef makedev
1094887Schin	<<"#define makedev(x,y)">> makedev((x),(y))
1104887Schin	#else
1114887Schin	<<"#define makedev(x,y)">> ((dev_t)((((x)&0377)<<8)|((y)&0377)))
1124887Schin	#endif
1134887Schin	<<"#endif">>
1144887Schin	#endif
1154887Schin	<<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
1164887Schin	<<"__STDPP__directive pragma pp:noinitial">>
1174887Schin	<<"#endif">>
1184887Schin}end fail{
1194887Schin	cat <<!
1204887Schin	#ifndef major
1214887Schin	#define major(x)	((int)(((unsigned)(x)>>8)&0377))
1224887Schin	#endif
1234887Schin	#ifndef minor
1244887Schin	#define minor(x)	((int)((x)&0377))
1254887Schin	#endif
1264887Schin	#ifndef makedev
1274887Schin	#define makedev(x,y)	((dev_t)((((x)&0377)<<8)|((y)&0377)))
1284887Schin	#endif
1294887Schin	!
1304887Schin}end
1314887Schin
132*12068SRoger.Faulkner@Oracle.COMhdr	mntent,mnttab stdio.h
133*12068SRoger.Faulkner@Oracle.COMsys	mntent,mnttab stdio.h
134*12068SRoger.Faulkner@Oracle.COMsys	fs_types,mount,statfs,statvfs,vfs,vmount
135*12068SRoger.Faulkner@Oracle.COM
1364887Schinmem	mnttab.mt_dev,mnttab.mt_filsys,mnttab.mt_fstyp sys/types.h mnttab.h
1374887Schinmem	mntent.mnt_opts,w_mntent.mnt_opts,mnttab.mnt_opts sys/types.h stdio.h mntent.h sys/mntent.h
138*12068SRoger.Faulkner@Oracle.COMmem	mntent.mnt_opts,mnttab.mnt_opts stdio.h sys/types.h mnttab.h sys/mnttab.h
1394887Schinmem	stat.st_blocks,stat.st_blksize,stat.st_rdev sys/types.h sys/stat.h
1404887Schinmem	statfs.f_files,statfs.f_bavail sys/types.h - sys/statfs.h - sys/vfs.h - sys/param.h sys/mount.h
1414887Schinmem	statvfs.f_basetype,statvfs.f_frsize sys/types.h sys/statvfs.h
1424887Schin
1434887Schinary	f_reserved7 sys/types.h sys/statvfs.h note{ statvfs.f_reserved7 can double for statvfs.f_basetype }end compile{
1444887Schin	int f(vp)struct statvfs* vp;{return vp->f_reserved7[0] = 1;}
1454887Schin}end
1464887Schin
1474887Schinlib	getmntent,getmntinfo,mntctl,mntopen,mntread,mntclose,setmntent
1484887Schinlib	w_getmntent
1494887Schinlib	statfs,statvfs
1504887Schin
1514887Schinlib	statfs4 sys/types.h - sys/statfs.h - sys/vfs.h - sys/mount.h compile{
1524887Schin	int f()
1534887Schin	{
1544887Schin		struct statfs fs;
1554887Schin		return statfs("/",&fs,sizeof(fs),0);
1564887Schin	}
1574887Schin}end
1584887Schin
1594887Schinlib	getmntinfo_statvfs note{ getmntinfo uses statvfs -- since when? }end compile{
1604887Schin	#include <sys/types.h>
1614887Schin	#include <sys/mount.h>
1624887Schin	int
1634887Schin	gmi(struct statvfs* fs)
1644887Schin	{
1654887Schin		fs->f_flag = 0;
1664887Schin		return getmntinfo(fs, 0);
1674887Schin	}
1684887Schin}end
1694887Schin
1704887Schincat{
1714887Schin	#if _sys_statvfs
1724887Schin	#include <sys/statvfs.h>
1734887Schin	#if !_mem_statvfs_f_basetype
1744887Schin	#if _ary_f_reserved7
1754887Schin	#define f_basetype	f_reserved7
1764887Schin	#endif
1774887Schin	#endif
1784887Schin	#else
1794887Schin	#define _mem_f_basetype_statvfs	1
1804887Schin	#define _mem_f_frsize_statvfs	1
1814887Schin	struct statvfs
1824887Schin	{
1834887Schin	unsigned long	f_bsize;	/* fundamental file system block size */
1844887Schin	unsigned long	f_frsize;	/* fragment size */
1854887Schin	unsigned long	f_blocks;	/* total # of blocks of f_frsize on fs */
1864887Schin	unsigned long	f_bfree;	/* total # of free blocks of f_frsize */
1874887Schin	unsigned long	f_bavail;	/* # of free blocks avail to non-superuser */
1884887Schin	unsigned long	f_files;	/* total # of file nodes (inodes) */
1894887Schin	unsigned long	f_ffree;	/* total # of free file nodes */
1904887Schin	unsigned long	f_favail;	/* # of free nodes avail to non-superuser */
1914887Schin	unsigned long	f_fsid;		/* file system id (dev for now) */
1924887Schin	char		f_basetype[16]; /* target fs type name, null-terminated */
1934887Schin	unsigned long	f_flag;		/* bit-mask of flags */
1944887Schin	unsigned long	f_namemax;	/* maximum file name length */
1954887Schin	char		f_fstr[32];	/* filesystem-specific string */
1964887Schin	unsigned long	f_filler[16];	/* reserved for future expansion */
1974887Schin	};
1984887Schin	extern int	fstatvfs(int, struct statvfs*);
1994887Schin	extern int	statvfs(const char*, struct statvfs*);
2004887Schin	#endif
2014887Schin	#if _typ_off64_t
2024887Schin	#undef	off_t
2034887Schin	#define off_t	off64_t
2044887Schin	#endif
2054887Schin	#if _lib_statvfs64 && !defined(statvfs)
2064887Schin	#define statvfs		statvfs64
2074887Schin	#if !defined(__USE_LARGEFILE64)
2084887Schin	extern int		statvfs64(const char*, struct statvfs64*);
2094887Schin	#endif
2104887Schin	#endif
2114887Schin	#if _lib_fstatvfs64 && !defined(fstatvfs)
2124887Schin	#define fstatvfs	fstatvfs64
2134887Schin	#if !defined(__USE_LARGEFILE64)
2144887Schin	extern int		fstatvfs64(int, struct statvfs64*);
2154887Schin	#endif
2164887Schin	#endif
2174887Schin}end
2184887Schin
2194887Schinstr	st_fstype sys/types.h sys/stat.h note{ stat.st_fstype is a string }end compile{
2204887Schin	int f(st)struct stat* st;{return st->st_fstype[0];}
2214887Schin}end
2224887Schin
2234887Schinint	st_fstype sys/types.h sys/stat.h note{ stat.st_fstype is an int }end compile{
2244887Schin	int f(st)struct stat* st;{return st->st_fstype = 1;}
2254887Schin}end
2264887Schin
2274887Schinint	st_spare1 sys/types.h sys/stat.h note{ stat.st_spare1 is an int }end compile{
2284887Schin	int f(st)struct stat* st;{return st->st_spare1 = 1;}
2294887Schin}end
2304887Schin
2314887Schinary	st_spare4 sys/types.h sys/stat.h note{ stat.st_spare4 is an array }end compile{
2324887Schin	int f(st)struct stat* st;{return st->st_spare4[0] = 1;}
2334887Schin}end
2344887Schin
2354887Schinary	st_pad4 sys/types.h sys/stat.h note{ stat.st_pad4 is an array }end compile{
2364887Schin	int f(st)struct stat* st;{return st->st_pad4[0] = 1;}
2374887Schin}end
238