[Overview][Constants][Types][Procedures and functions][Index] | Reference for unit 'BaseUnix' (#rtl)

# FpRead

Read data from file descriptor

## Declaration

Source position: bunxh.inc line 85

`function FpRead(`
`fd: cint;`
`buf: pChar;`
`nbytes: TSize`
`):TsSize; function FpRead(`
`fd: cint;`
`var buf;`
`nbytes: TSize`
`):TsSize;`

## Description

FpdRead reads at most nbytes bytes from the file descriptor fd, and stores them in buf.

The function returns the number of bytes actually read, or -1 if an error occurred. No checking on the length of buf is done.

## Errors

Extended error information can be retrieved using fpGetErrno.

## See also

FpOpen |  | Open file and return file descriptor
FpClose |  | Close file descriptor
FpWrite |  | Write data to file descriptor
FpFTruncate |  | Truncate file on certain size.
FpLSeek |  | Set file pointer position.

## Example

    Program Example20;

    { Program to demonstrate the fdRead and fdTruncate functions. }

    Uses BaseUnix;

    Const Data : string[10] = '1234567890';

    Var FD : cint;
        l : longint;

    begin
      FD:=fpOpen('test.dat',o_wronly or o_creat,&666);
      if fd>0 then
        begin
        { Fill file with data }
        for l:=1 to 10 do
          if fpWrite (FD,Data[1],10)<>10 then
            begin
            writeln ('Error when writing !');
            halt(1);
            end;
        fpClose(FD);
        FD:=fpOpen('test.dat',o_rdonly);
        { Read data again }
        If FD>0 then
          begin
          For l:=1 to 5 do
            if fpRead (FD,Data[1],10)<>10 then
              begin
              Writeln ('Error when Reading !');
              Halt(2);
              end;
          fpClose(FD);
          { Truncating file at 60 bytes }
          { For truncating, file must be open or write }
          FD:=fpOpen('test.dat',o_wronly,&666);
          if FD>0 then
            begin
            if fpfTruncate(FD,60)<>0 then
               Writeln('Error when truncating !');
            fpClose (FD);
            end;
          end;
        end;
    end.