IsoFileSource_Iface Struct Reference

#include <libisofs.h>

Collaboration diagram for IsoFileSource_Iface:

Collaboration graph
[legend]

Detailed Description

Interface definition for an IsoFileSource.

Defines the POSIX-like function to access files and abstract underlying source.

Since:
0.6.2

Definition at line 445 of file libisofs.h.


Data Fields

int version
char *(* get_path )(IsoFileSource *src)
 Get the path, relative to the filesystem this file source belongs to.
char *(* get_name )(IsoFileSource *src)
 Get the name of the file, with the dir component of the path.
int(* lstat )(IsoFileSource *src, struct stat *info)
 Get information about the file.
int(* stat )(IsoFileSource *src, struct stat *info)
 Get information about the file.
int(* access )(IsoFileSource *src)
 Check if the process has access to read file contents.
int(* open )(IsoFileSource *src)
 Opens the source.
int(* close )(IsoFileSource *src)
 Close a previuously openned file.
int(* read )(IsoFileSource *src, void *buf, size_t count)
 Attempts to read up to count bytes from the given source into the buffer starting at buf.
int(* readdir )(IsoFileSource *src, IsoFileSource **child)
 Read a directory.
int(* readlink )(IsoFileSource *src, char *buf, size_t bufsiz)
 Read the destination of a symlink.
IsoFilesystem *(* get_filesystem )(IsoFileSource *src)
 Get the filesystem for this source.
void(* free )(IsoFileSource *src)
 Free implementation specific data.
off_t(* lseek )(IsoFileSource *src, off_t offset, int flag)
 Repositions the offset of the IsoFileSource (must be opened) to the given offset according to the value of flag.

Field Documentation

Definition at line 448 of file libisofs.h.

Get the path, relative to the filesystem this file source belongs to.

Returns:
the path of the FileSource inside the filesystem, it should be freed when no more needed.

Get the name of the file, with the dir component of the path.

Returns:
the name of the file, it should be freed when no more needed.

int(* IsoFileSource_Iface::lstat)(IsoFileSource *src, struct stat *info)

Get information about the file.

It is equivalent to lstat(2).

Returns:
1 success, < 0 error Error codes: ISO_FILE_ACCESS_DENIED ISO_FILE_BAD_PATH ISO_FILE_DOESNT_EXIST ISO_OUT_OF_MEM ISO_FILE_ERROR ISO_NULL_POINTER

int(* IsoFileSource_Iface::stat)(IsoFileSource *src, struct stat *info)

Get information about the file.

If the file is a symlink, the info returned refers to the destination. It is equivalent to stat(2).

Returns:
1 success, < 0 error Error codes: ISO_FILE_ACCESS_DENIED ISO_FILE_BAD_PATH ISO_FILE_DOESNT_EXIST ISO_OUT_OF_MEM ISO_FILE_ERROR ISO_NULL_POINTER

Check if the process has access to read file contents.

Note that this is not necessarily related with (l)stat functions. For example, in a filesystem implementation to deal with an ISO image, if the user has read access to the image it will be able to read all files inside it, despite of the particular permission of each file in the RR tree, that are what the above functions return.

Returns:
1 if process has read access, < 0 on error Error codes: ISO_FILE_ACCESS_DENIED ISO_FILE_BAD_PATH ISO_FILE_DOESNT_EXIST ISO_OUT_OF_MEM ISO_FILE_ERROR ISO_NULL_POINTER

Opens the source.

Returns:
1 on success, < 0 on error Error codes: ISO_FILE_ALREADY_OPENED ISO_FILE_ACCESS_DENIED ISO_FILE_BAD_PATH ISO_FILE_DOESNT_EXIST ISO_OUT_OF_MEM ISO_FILE_ERROR ISO_NULL_POINTER

Close a previuously openned file.

Returns:
1 on success, < 0 on error Error codes: ISO_FILE_ERROR ISO_NULL_POINTER ISO_FILE_NOT_OPENED

int(* IsoFileSource_Iface::read)(IsoFileSource *src, void *buf, size_t count)

Attempts to read up to count bytes from the given source into the buffer starting at buf.

The file src must be open() before calling this, and close() when no more needed. Not valid for dirs. On symlinks it reads the destination file.

Returns:
number of bytes read, 0 if EOF, < 0 on error Error codes: ISO_FILE_ERROR ISO_NULL_POINTER ISO_FILE_NOT_OPENED ISO_WRONG_ARG_VALUE -> if count == 0 ISO_FILE_IS_DIR ISO_OUT_OF_MEM ISO_INTERRUPTED

Read a directory.

Each call to this function will return a new children, until we reach the end of file (i.e, no more children), in that case it returns 0.

The dir must be open() before calling this, and close() when no more needed. Only valid for dirs.

Note that "." and ".." children MUST NOT BE returned.

Parameters:
child pointer to be filled with the given child. Undefined on error or OEF
Returns:
1 on success, 0 if EOF (no more children), < 0 on error Error codes: ISO_FILE_ERROR ISO_NULL_POINTER ISO_FILE_NOT_OPENED ISO_FILE_IS_NOT_DIR ISO_OUT_OF_MEM

int(* IsoFileSource_Iface::readlink)(IsoFileSource *src, char *buf, size_t bufsiz)

Read the destination of a symlink.

You don't need to open the file to call this.

Parameters:
buf allocated buffer of at least bufsiz bytes. The dest. will be copied there, and it will be NULL-terminated
bufsiz characters to be copied. Destination link will be truncated if it is larger than given size. This include the character.
Returns:
1 on success, < 0 on error Error codes: ISO_FILE_ERROR ISO_NULL_POINTER ISO_WRONG_ARG_VALUE -> if bufsiz <= 0 ISO_FILE_IS_NOT_SYMLINK ISO_OUT_OF_MEM ISO_FILE_BAD_PATH ISO_FILE_DOESNT_EXIST

Get the filesystem for this source.

No extra ref is added, so you musn't unref the IsoFilesystem.

Returns:
The filesystem, NULL on error

Free implementation specific data.

Should never be called by user. Use iso_file_source_unref() instead.

off_t(* IsoFileSource_Iface::lseek)(IsoFileSource *src, off_t offset, int flag)

Repositions the offset of the IsoFileSource (must be opened) to the given offset according to the value of flag.

Parameters:
offset in bytes
flag 0 The offset is set to offset bytes (SEEK_SET) 1 The offset is set to its current location plus offset bytes (SEEK_CUR) 2 The offset is set to the size of the file plus offset bytes (SEEK_END).
Returns:
Absolute offset posistion on the file, or < 0 on error. Cast the returning value to int to get a valid libisofs error.
Since:
0.6.4


The documentation for this struct was generated from the following file:

Generated on Wed Aug 6 12:55:38 2008 for libisofs by  doxygen 1.5.6