fs revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinset prototyped
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlib _fxstat,__fxstat,_lxstat,__lxstat,_xmknod,__xmknod,_xstat,__xstat,lstat,mknod,sync sys/types.h sys/stat.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlib _fxstat64,__fxstat64,_lxstat64,__lxstat64,_xstat64,__xstat64 -D_LARGEFILE64_SOURCE sys/types.h sys/stat.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlcl xstat -D_LARGEFILE64_SOURCE link{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct stat64 { int xxx; }; /* disable if stat64 available */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin extern int stat(const char* path, struct stat* st)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int stat(path, st)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* path;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct stat* st;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if _lib___xstat
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return __xstat(_STAT_VER, path, st);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return _xstat(_STAT_VER, path, st);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct stat st;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return stat(".",&st) < 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlcl xstat64 -D_LARGEFILE64_SOURCE link{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin extern int stat64(const char* path, struct stat64* st)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int stat64(path, st)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* path;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if _lib___xstat64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return __xstat64(_STAT_VER, path, st);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return _xstat64(_STAT_VER, path, st);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct stat64 st;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return stat64(".",&st) < 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern chmod int (const char*, mode_t)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern fstat int (int, struct stat*)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern lstat int (const char*, struct stat*)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern mkdir int (const char*, mode_t)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern mkfifo int (const char*, mode_t)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern mknod int (const char*, mode_t, dev_t)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern stat int (const char*, struct stat*)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern mkfifo mode_t (mode_t)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindefine FS_default "ufs"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef major
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef major
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"__STDPP__directive pragma pp:initial">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#endif">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#ifndef major">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifdef major
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#define major(x)">> major((x))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef L_BITSMAJOR
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define L_BITSMAJOR 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef L_BITSMINOR
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define L_BITSMINOR 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef L_MAXMAJ
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define L_MAXMAJ ((1<<L_BITSMAJOR)-1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef L_MAXMIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define L_MAXMIN ((1<<L_BITSMINOR)-1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#define major(x)">> ((int)(((unsigned)(x)>>L_BITSMINOR)&L_MAXMAJ))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#endif">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#ifndef minor">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifdef minor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#define minor(x)">> minor((x))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#define minor(x)">> ((int)((x)&L_MAXMIN))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#endif">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#ifndef makedev">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifdef makedev
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#define makedev(x,y)">> makedev((x),(y))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#define makedev(x,y)">> ((dev_t)((((x)&0377)<<8)|((y)&0377)))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#endif">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"__STDPP__directive pragma pp:noinitial">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin <<"#endif">>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef major
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define major(x) ((int)(((unsigned)(x)>>8)&0377))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef minor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define minor(x) ((int)((x)&0377))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #ifndef makedev
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define makedev(x,y) ((dev_t)((((x)&0377)<<8)|((y)&0377)))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmem mnttab.mt_dev,mnttab.mt_filsys,mnttab.mt_fstyp sys/types.h mnttab.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmem mntent.mnt_opts,w_mntent.mnt_opts,mnttab.mnt_opts sys/types.h stdio.h mntent.h sys/mntent.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmem mntent.mnt_opts,mnttab.mnt_opts sys/types.h mnttab.h sys/mnttab.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmem stat.st_blocks,stat.st_blksize,stat.st_rdev sys/types.h sys/stat.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmem statfs.f_files,statfs.f_bavail sys/types.h - sys/statfs.h - sys/vfs.h - sys/param.h sys/mount.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmem statvfs.f_basetype,statvfs.f_frsize sys/types.h sys/statvfs.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinary f_reserved7 sys/types.h sys/statvfs.h note{ statvfs.f_reserved7 can double for statvfs.f_basetype }end compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f(vp)struct statvfs* vp;{return vp->f_reserved7[0] = 1;}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinhdr mntent,mnttab
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlib getmntent,getmntinfo,mntctl,mntopen,mntread,mntclose,setmntent
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlib w_getmntent
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlib statfs,statvfs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsys fs_types,mntent,mnttab,mount,statfs,statvfs,vfs,vmount
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlib statfs4 sys/types.h - sys/statfs.h - sys/vfs.h - sys/mount.h compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct statfs fs;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return statfs("/",&fs,sizeof(fs),0);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlib getmntinfo_statvfs note{ getmntinfo uses statvfs -- since when? }end compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin gmi(struct statvfs* fs)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin fs->f_flag = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return getmntinfo(fs, 0);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if _sys_statvfs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if !_mem_statvfs_f_basetype
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if _ary_f_reserved7
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define f_basetype f_reserved7
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define _mem_f_basetype_statvfs 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define _mem_f_frsize_statvfs 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct statvfs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_bsize; /* fundamental file system block size */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_frsize; /* fragment size */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_blocks; /* total # of blocks of f_frsize on fs */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_bfree; /* total # of free blocks of f_frsize */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_bavail; /* # of free blocks avail to non-superuser */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_files; /* total # of file nodes (inodes) */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_ffree; /* total # of free file nodes */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_favail; /* # of free nodes avail to non-superuser */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_fsid; /* file system id (dev for now) */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char f_basetype[16]; /* target fs type name, null-terminated */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_flag; /* bit-mask of flags */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_namemax; /* maximum file name length */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char f_fstr[32]; /* filesystem-specific string */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long f_filler[16]; /* reserved for future expansion */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin extern int fstatvfs(int, struct statvfs*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin extern int statvfs(const char*, struct statvfs*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if _typ_off64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #undef off_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define off_t off64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if _lib_statvfs64 && !defined(statvfs)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define statvfs statvfs64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if !defined(__USE_LARGEFILE64)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin extern int statvfs64(const char*, struct statvfs64*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if _lib_fstatvfs64 && !defined(fstatvfs)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #define fstatvfs fstatvfs64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin #if !defined(__USE_LARGEFILE64)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin extern int fstatvfs64(int, struct statvfs64*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstr st_fstype sys/types.h sys/stat.h note{ stat.st_fstype is a string }end compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f(st)struct stat* st;{return st->st_fstype[0];}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint st_fstype sys/types.h sys/stat.h note{ stat.st_fstype is an int }end compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f(st)struct stat* st;{return st->st_fstype = 1;}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint st_spare1 sys/types.h sys/stat.h note{ stat.st_spare1 is an int }end compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f(st)struct stat* st;{return st->st_spare1 = 1;}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinary st_spare4 sys/types.h sys/stat.h note{ stat.st_spare4 is an array }end compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f(st)struct stat* st;{return st->st_spare4[0] = 1;}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinary st_pad4 sys/types.h sys/stat.h note{ stat.st_pad4 is an array }end compile{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f(st)struct stat* st;{return st->st_pad4[0] = 1;}