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