FpOpen

Open file and return file descriptor

Declaration

Source position: bunxh.inc line 75

  function FpOpen(path: pChar; flags: cint; Mode: TMode) : cint;
  function FpOpen(path: pChar; flags: cint) : cint;
  function FpOpen(const path: RawByteString; flags: cint) : cint;
  function FpOpen(const path: RawByteString; flags: cint; Mode: TMode)
                  : cint;
  function FpOpen(path: ShortString; flags: cint) : cint;
  function FpOpen(path: ShortString; flags: cint; Mode: TMode) : cint;

Description

FpOpen opens a file in Path with flags flags and mode Mode One of the following:

O_RdOnly
File is opened Read-only
O_WrOnly
File is opened Write-only
O_RdWr
File is opened Read-Write

The flags may beOR-ed with one of the following constants:

O_Creat
File is created if it doesn't exist.
O_Excl
If the file is opened with O_Creat and it already exists, the call will fail.
O_NoCtty
If the file is a terminal device, it will NOT become the process' controlling terminal.
O_Trunc
If the file exists, it will be truncated.
O_Append
the file is opened in append mode. Before each write, the file pointer is positioned at the end of the file.
O_NonBlock
The file is opened in non-blocking mode. No operation on the file descriptor will cause the calling process to wait till.
O_NDelay
Idem as O_NonBlock
O_Sync
The file is opened for synchronous IO. Any write operation on the file will not return until the data is physically written to disk.
O_NoFollow
if the file is a symbolic link, the open fails. (Linux 2.1.126 and higher only)
O_Directory
if the file is not a directory, the open fails. (Linux 2.1.126 and higher only)

Path can be of type PChar or String. The optional mode argument specifies the permissions to set when opening the file. This is modified by the umask setting. The real permissions are Mode and not umask. The return value of the function is the file descriptor, or a negative value if there was an error.

Errors

Extended error information can be retrieved using fpGetErrno .

See also

Name Description
FpClose Close file descriptor
FpFTruncate Truncate file on certain size.
FpLSeek Set file pointer position.
FpRead Read data from file descriptor
FpWrite Write data to file descriptor

Example

Program Example19;
{ Program to demonstrate the fpOpen, fpwrite and fpCLose functions. }
Uses BaseUnix;
Const Line : String[80] = 'This is easy writing !';
Var FD : Cint;
begin
  FD:=fpOpen ('Test.dat',O_WrOnly or O_Creat);
  if FD>0 then
    begin
    if length(Line)<>fpwrite (FD,Line[1],Length(Line)) then
      Writeln ('Error when writing to file !');
    fpClose(FD);
    end;
end.