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