Sign in Join
FPDoc Onlineexperiment

tstatfs type

In unit Unix

Record describing a file system in the fpstatfs call.

Declaration

pascal
tstatfs = UnixType.TStatFs

Description

StatFS returns in Info information about the file system on which the file Path resides. Info is of type TStatFS.

The function returns zero if the call was successful, a nonzero value is returned if the call failed.

Errors

Extended error information is returned by the FpGetErrno function:

sys_enotdir
A component of Path is not a directory.
sys_einval
Invalid character in Path.
sys_enoent
Path does not exist.
sys_eaccess
Search permission is denied for component inPath.
sys_eloop
A circular symbolic link was encountered in Path.
sys_eio
An error occurred while reading from the file system.

See also

Example: ex91

pascal
program Example30;

{ Program to demonstrate the FSStat function. }

uses BaseUnix,Unix,UnixType;

var s : string;
    fd : cint;
    info : tstatfs;

begin
  writeln ('Info about current partition : ');
  s:='.';
  while s<>'q' do
    begin
    Fd:=fpOpen(S,O_RDOnly);
    if (fd>=0) then
      begin
      if fpfstatfs (fd,@info)<>0 then
        begin
        writeln('Fstat failed. Errno : ',fpgeterrno);
        halt (1);
        end;
      FpClose(fd);
      writeln;
      writeln ('Result of fsstat on file ''',s,'''.');
{$if defined(Linux) or defined(sunos)} 
      // SysV like.
      writeln ('fstype  : ',info.fstype);
{$else}
      // BSD like, incl Mac OS X.
      writeln ('fstype  : ',info.ftype);
{$endif}

      writeln ('bsize   : ',info.bsize);
      writeln ('bfree   : ',info.bfree);
      writeln ('bavail  : ',info.bavail);
      writeln ('files   : ',info.files);
      writeln ('ffree   : ',info.ffree);
{$ifdef FreeBSD}
      writeln ('fsid : ',info.fsid[0]);
{$else}
{$ifndef Darwin}
      writeln ('fsid : ',info.fsid[0]);
      writeln ('Namelen : ',info.namelen);
{$endif}
{$endif}
      write ('Type name of file to do fsstat. (q quits) :');
      readln (s)

      end;
    end;
end.

An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.