Guardian Native C Library Calls Reference Manual (G06.29+, H06.08+, J06.03+)

fopen_guardian(3) Guardian Native C Library Calls Reference Manual
rb Opens a C binary file for reading.
wb Creates a new C binary file for writing, or opens and truncates a C binary file to
zero length.
ab Appends (opens a C binary file for writing at the end of the file, or creates a C
binary file for writing).
rb+ Opens a C binary file for update (reading and writing).
wb+ Truncates or creates a C binary file for update.
ab+ Appends (opens a C binary file for update, writing at the end of the file, or
creates a C binary file for writing).
When you open a file for update, you can perform both input and output operations on the result-
ing stream. However, an input operation cannot directly follow an output operation without an
intervening fflush( ) function call or a file-positioning operation (fseek(), fsetpos(),orrewind()
function). Also, an output operation cannot directly follow an input operation without an inter-
vening flush or file-positioning operation, unless the input operation encounters the end of the
file.
When you open a file for append (that is, when the mode parameter is a, ab, a+,orab+), it is
impossible to overwrite information already in the file. You can use the fseek() function to repo-
sition the file pointer to any position in the file, but when output is written to the file, the current
file pointer is ignored. All output is written at the end of the file and the file pointer is reposi-
tioned to the end of the output.
If two separate processes open the same terminal or process for append (or, if the same process
has more than one concurrent open of a terminal or process for an append operation), each open
can be used to write freely to the file without destroying the output being written using the other
open. The output from the two opens is intermixed in the order in which it is written to the file.
If the data is buffered, it is not actually written until it is flushed.
Note that Guardian disk files cannot have more than one open at a time using fopen_guardian()
unless all of the opens are only for reading (r or rb). To have more than one concurrent open of a
Guardian disk file for modification (any mode value except r or rb), the Guardian FILE_OPEN_
procedure must be used to open the file with an exclusion mode of 0 (zero) for shared access.
When opened, a stream is fully buffered if and only if it does not refer to an interactive device.
The error and End-of-File indicators for the stream are cleared.
The ANSISTREAMS pragma determines whether a text file is type 180 (C binary file) or type 101
(edit file). The Guardian version of fopen() distinguishes between text and binary files. If the
mode parameter does not contain a b, the file is created or opened as a text file. The OSS version
of fopen( ) does not distinguish between text and binary files. Text and binary files in the OSS
environment are type 180. Refer to the C/C++ Programmers Guide for information on the
ANSISTREAMS pragma.
The default number of secondary extents for files created by fopen( ) is 16. The default number of
maxextents for files created by fopen( ) is 500.
Interoperability Variants
The C run-time library supports two variants of the fopen( ) function: fopen_oss() and
fopen_guardian(). The variants support the unique file naming conventions and structures of the
OSS and Guardian file systems, respectively.
For the TNS C runtime library only, the header file maps calls to fopen( ) to the variant that
matches the target compilation environment. The target environment is set with the systype
pragma.
276
Hewlett-Packard Company 527192-018