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