INFORMIX
DataBlade API Programmer's Manual
Chapter 12: DataBlade API Function Descriptions
Home Contents Index Master Index New Book

mi_lo_from_file()

The mi_lo_from_file() function copies the contents of an operating-system file on the server or client computer to a new smart large object.

Syntax

Usage

The mi_lo_from_file() function performs the following steps to create a new smart large object that LOhdl_dptr references and copy data from an operating-system file to a new smart large object:

    1. It obtains an LO handle for the new smart large object and assigns a pointer to the handle to the argument that LOhdl_dptr references.

    If the *LOhdl_dptr argument is NULL, mi_lo_from_file() allocates a new LO handle for the new smart large object and assigns a pointer to this handle to *LOhdl_dptr. If *LOhdl_dptr is not NULL, mi_lo_from_file() assumes that you have already allocated an LO handle and uses the LOhdl_dptr argument to locate the LO handle for the new smart large object.

    2. It assigns the storage characteristics from the LO-specification structure, LO_spec, to the new smart large object.

    If the LO-specification structure has not been updated with storage characteristics (the associated fields are null), the mi_lo_from_file() function uses the system-specified storage characteristics.

    3. It opens the new smart large object in read/write access mode (MI_LO_RDWR).

    The mi_lo_from_file() function does not accept an open-mode flag for the smart large object as an argument. The flags argument specifies the open mode for the operating-system file.

    4. It copies the contents of the operating-system file whose name is in the fname_spec buffer into the new smart large object that *LOhdl_dptr references.

    The mi_lo_from_file() function opens the operating-system file in the mode that the flags argument indicates. In the fname_spec operating-system file, the mi_lo_from_file() function begins the read operation at the file offset that offset indicates and reads the number of bytes that amount specifies. The function writes the file data to the sbspace of the new smart large object.

    5. It returns an LO file descriptor that identifies the new smart large object and is positioned at the start of this smart large object.

    When the mi_lo_from_file() function is successful, it returns a valid LO file descriptor. You can then use this file descriptor to identify which smart large object to access in subsequent function calls, such as mi_lo_read() and mi_lo_write().

The mi_lo_from_file() function can access the operating-system files on either the server or the client computer. The flag values for the flags argument indicate the location of the file to copy and the access mode of the source file. Valid values include the following file-mode constants.

File-Mode Constant Purpose

MI_O_EXCL

Open the file only if fname_spec does not exist.

MI_O_TRUNC

Zero out the input file before reading it.

MI_O_APPEND

Allow appending to the end of the file. (This function does not write to the source file.)

MI_O_RDWR

Open the file in read/write mode. (This function does not write to the source file.)

MI_O_RDONLY

Open the file in read-only mode.

MI_O_TEXT

Process the file as text (not binary).

MI_O_SERVER_FILE

The fname_spec file is on the server computer.

MI_O_CLIENT_FILE

The fname_spec file is on the client computer.

Important: The MI_O_TRUNC flag is valid but is not often useful in a DataBlade routine.

The default flags value is:

The mi_lo_from_file() function allows you to copy part of a file with the offset and amount parameters.

Return Values

An MI_LO_FD

The LO file descriptor of the open smart large object that LOhdl_dptr references. The function also initializes the LO handle that LOhdl_dptr references.

MI_ERROR

The function was not successful.

Related Topics

See the descriptions of the following functions: mi_lo_copy(), mi_lo_create(), mi_lo_expand(), mi_lo_spec_init(), mi_lo_from_file_by_lofd(), and mi_lo_to_file().

In Chapter 3, "Handling Smart Large Objects," see "Initializing an LO Handle and LO File Descriptor" and "Using Operating-System Files".




DataBlade API Programmer's Manual, version 9.1
Copyright © 1998, Informix Software, Inc. All rights reserved.