GnomeVFSFileInfo
3
GNOME-VFS-2.0 Library

# GnomeVFSFileInfo

stores information about files, GnomeVFS equivalent of stat

## Synopsis

    enum                GnomeVFSFileFlags;
    enum                GnomeVFSFileType;
    enum                GnomeVFSFileInfoFields;
    enum                GnomeVFSFilePermissions;
    enum                GnomeVFSFileInfoOptions;
    enum                GnomeVFSSetFileInfoMask;
                        GnomeVFSGetFileInfoResult;
    typedef             GnomeVFSInodeNumber;
                        GnomeVFSFileInfo;
    #define             GNOME_VFS_FILE_INFO_SYMLINK         (info)
    #define             GNOME_VFS_FILE_INFO_SET_SYMLINK     (info, value)
    #define             GNOME_VFS_FILE_INFO_LOCAL           (info)
    #define             GNOME_VFS_FILE_INFO_SET_LOCAL       (info, value)
    #define             GNOME_VFS_FILE_INFO_SUID            (info)
    #define             GNOME_VFS_FILE_INFO_SGID            (info)
    #define             GNOME_VFS_FILE_INFO_STICKY          (info)
    #define             GNOME_VFS_FILE_INFO_SET_SUID        (info, value)
    #define             GNOME_VFS_FILE_INFO_SET_SGID        (info, value)
    #define             GNOME_VFS_FILE_INFO_SET_STICKY      (info, value)
    GnomeVFSFileInfo*   gnome_vfs_file_info_new             (void);
    void                gnome_vfs_file_info_unref           (GnomeVFSFileInfo *info);
    void                gnome_vfs_file_info_ref             (GnomeVFSFileInfo *info);
    void                gnome_vfs_file_info_clear           (GnomeVFSFileInfo *info);
    const char*         gnome_vfs_file_info_get_mime_type   (GnomeVFSFileInfo *info);
    void                gnome_vfs_file_info_copy            (GnomeVFSFileInfo *dest,
                                                             const GnomeVFSFileInfo *src);
    GnomeVFSFileInfo*   gnome_vfs_file_info_dup             (const GnomeVFSFileInfo *orig);
    gboolean            gnome_vfs_file_info_matches         (const GnomeVFSFileInfo *a,
                                                             const GnomeVFSFileInfo *b);
    GList*              gnome_vfs_file_info_list_ref        (GList *list);
    GList*              gnome_vfs_file_info_list_unref      (GList *list);
    GList*              gnome_vfs_file_info_list_copy       (GList *list);
    void                gnome_vfs_file_info_list_free       (GList *list);
    GnomeVFSGetFileInfoResult* gnome_vfs_get_file_info_result_dup
                                                            (GnomeVFSGetFileInfoResult *result);
    void                gnome_vfs_get_file_info_result_free (GnomeVFSGetFileInfoResult *result);

## Description

## Details

### enum GnomeVFSFileFlags

    typedef enum {
    	GNOME_VFS_FILE_FLAGS_NONE = 0,
    	GNOME_VFS_FILE_FLAGS_SYMLINK = 1 << 0,
    	GNOME_VFS_FILE_FLAGS_LOCAL = 1 << 1
    } GnomeVFSFileFlags;

Packed boolean bitfield representing special flags a GnomeVFSFileInfo struct can have.

`GNOME_VFS_FILE_FLAGS_NONE`

  no flags

`GNOME_VFS_FILE_FLAGS_SYMLINK`

  whether the file is a symlink.

`GNOME_VFS_FILE_FLAGS_LOCAL`

  whether the file is on a local filesystem

### enum GnomeVFSFileType

    typedef enum {
    	GNOME_VFS_FILE_TYPE_UNKNOWN,
    	GNOME_VFS_FILE_TYPE_REGULAR,
    	GNOME_VFS_FILE_TYPE_DIRECTORY,
    	GNOME_VFS_FILE_TYPE_FIFO,
    	GNOME_VFS_FILE_TYPE_SOCKET,
    	GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE,
    	GNOME_VFS_FILE_TYPE_BLOCK_DEVICE,
    	GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK
    } GnomeVFSFileType;

Maps to a `stat` mode, and identifies the kind of file represented by a GnomeVFSFileInfo struct, stored in the `type` field.

`GNOME_VFS_FILE_TYPE_UNKNOWN`

  The file type is unknown (none of the types below matches).

`GNOME_VFS_FILE_TYPE_REGULAR`

  The file is a regular file (stat: `S_ISREG`).

`GNOME_VFS_FILE_TYPE_DIRECTORY`

  The file is a directory (stat: `S_ISDIR`).

`GNOME_VFS_FILE_TYPE_FIFO`

  The file is a FIFO (stat: `S_ISFIFO`).

`GNOME_VFS_FILE_TYPE_SOCKET`

  The file is a socket (stat: `S_ISSOCK`).

`GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE`

  The file is a character device (stat: `S_ISCHR`).

`GNOME_VFS_FILE_TYPE_BLOCK_DEVICE`

  The file is a block device (stat: `S_ISBLK`).

`GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK`

  The file is a symbolic link (stat: `S_ISLNK`).

### enum GnomeVFSFileInfoFields

    typedef enum {
    	GNOME_VFS_FILE_INFO_FIELDS_NONE = 0,
    	GNOME_VFS_FILE_INFO_FIELDS_TYPE = 1 << 0,
    	GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS = 1 << 1,
    	GNOME_VFS_FILE_INFO_FIELDS_FLAGS = 1 << 2,
    	GNOME_VFS_FILE_INFO_FIELDS_DEVICE = 1 << 3,
    	GNOME_VFS_FILE_INFO_FIELDS_INODE = 1 << 4,
    	GNOME_VFS_FILE_INFO_FIELDS_LINK_COUNT = 1 << 5,
    	GNOME_VFS_FILE_INFO_FIELDS_SIZE = 1 << 6,
    	GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT = 1 << 7,
    	GNOME_VFS_FILE_INFO_FIELDS_IO_BLOCK_SIZE = 1 << 8,
    	GNOME_VFS_FILE_INFO_FIELDS_ATIME = 1 << 9,
    	GNOME_VFS_FILE_INFO_FIELDS_MTIME = 1 << 10,
    	GNOME_VFS_FILE_INFO_FIELDS_CTIME = 1 << 11,
    	GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME = 1 << 12,
    	GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE = 1 << 13,
    	GNOME_VFS_FILE_INFO_FIELDS_ACCESS = 1 << 14,
    	GNOME_VFS_FILE_INFO_FIELDS_IDS = 1 << 15,
    	GNOME_VFS_FILE_INFO_FIELDS_ACL = 1 << 16,
    	GNOME_VFS_FILE_INFO_FIELDS_SELINUX_CONTEXT = 1 << 17
    } GnomeVFSFileInfoFields;

Flags indicating what fields in a GnomeVFSFileInfo struct are valid. Name is always assumed valid (how else would you have gotten a FileInfo struct otherwise?)

`GNOME_VFS_FILE_INFO_FIELDS_NONE`

  No fields are valid

`GNOME_VFS_FILE_INFO_FIELDS_TYPE`

  Type field is valid

`GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS`

  Permissions field is valid

`GNOME_VFS_FILE_INFO_FIELDS_FLAGS`

  Flags field is valid

`GNOME_VFS_FILE_INFO_FIELDS_DEVICE`

  Device field is valid

`GNOME_VFS_FILE_INFO_FIELDS_INODE`

  Inode field is valid

`GNOME_VFS_FILE_INFO_FIELDS_LINK_COUNT`

  Link count field is valid

`GNOME_VFS_FILE_INFO_FIELDS_SIZE`

  Size field is valid

`GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT`

  Block count field is valid

`GNOME_VFS_FILE_INFO_FIELDS_IO_BLOCK_SIZE`

  I/O Block Size field is valid

`GNOME_VFS_FILE_INFO_FIELDS_ATIME`

  Access time field is valid

`GNOME_VFS_FILE_INFO_FIELDS_MTIME`

  Modification time field is valid

`GNOME_VFS_FILE_INFO_FIELDS_CTIME`

  Creating time field is valid

`GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME`

  Symlink name field is valid

`GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE`

  Mime type field is valid

`GNOME_VFS_FILE_INFO_FIELDS_ACCESS`

  Access bits of the permissions bitfield are valid

`GNOME_VFS_FILE_INFO_FIELDS_IDS`

  UID and GID information are valid

`GNOME_VFS_FILE_INFO_FIELDS_ACL`

  ACL field is valid

`GNOME_VFS_FILE_INFO_FIELDS_SELINUX_CONTEXT`

  SELinux Security context is valid

### enum GnomeVFSFilePermissions

    typedef enum {
    	GNOME_VFS_PERM_SUID = S_ISUID,
    	GNOME_VFS_PERM_SGID = S_ISGID,
    	GNOME_VFS_PERM_STICKY = 01000,	/* S_ISVTX not defined on all systems */
    	GNOME_VFS_PERM_USER_READ = S_IRUSR,
    	GNOME_VFS_PERM_USER_WRITE = S_IWUSR,
    	GNOME_VFS_PERM_USER_EXEC = S_IXUSR,
    	GNOME_VFS_PERM_USER_ALL = S_IRUSR | S_IWUSR | S_IXUSR,
    	GNOME_VFS_PERM_GROUP_READ = S_IRGRP,
    	GNOME_VFS_PERM_GROUP_WRITE = S_IWGRP,
    	GNOME_VFS_PERM_GROUP_EXEC = S_IXGRP,
    	GNOME_VFS_PERM_GROUP_ALL = S_IRGRP | S_IWGRP | S_IXGRP,
    	GNOME_VFS_PERM_OTHER_READ = S_IROTH,
    	GNOME_VFS_PERM_OTHER_WRITE = S_IWOTH,
    	GNOME_VFS_PERM_OTHER_EXEC = S_IXOTH,
    	GNOME_VFS_PERM_OTHER_ALL = S_IROTH | S_IWOTH | S_IXOTH,
    	GNOME_VFS_PERM_ACCESS_READABLE   = 1 << 16,
    	GNOME_VFS_PERM_ACCESS_WRITABLE   = 1 << 17,
    	GNOME_VFS_PERM_ACCESS_EXECUTABLE = 1 << 18
    } GnomeVFSFilePermissions;

File permissions. Some of these fields correspond to traditional UNIX semantics, others provide more abstract concepts.

Some network file systems don't support traditional UNIX semantics but still provide file access control. Thus, if you want to modify the permissions (i.e. do a chmod), you should rely on the traditional fields, but if you just want to determine whether a file or directory can be read from or written to, you should rely on the more abstract `GNOME_VFS_PERM_ACCESS_`* fields.

`GNOME_VFS_PERM_SUID`

  UID bit

`GNOME_VFS_PERM_SGID`

  GID bit

`GNOME_VFS_PERM_STICKY`

  Sticky bit.

`GNOME_VFS_PERM_USER_READ`

  Owner has read permission.

`GNOME_VFS_PERM_USER_WRITE`

  Owner has write permission.

`GNOME_VFS_PERM_USER_EXEC`

  Owner has execution permission.

`GNOME_VFS_PERM_USER_ALL`

  Owner has all permissions.

`GNOME_VFS_PERM_GROUP_READ`

  Group has read permission.

`GNOME_VFS_PERM_GROUP_WRITE`

  Group has write permission.

`GNOME_VFS_PERM_GROUP_EXEC`

  Group has execution permission.

`GNOME_VFS_PERM_GROUP_ALL`

  Group has all permissions.

`GNOME_VFS_PERM_OTHER_READ`

  Others have read permission.

`GNOME_VFS_PERM_OTHER_WRITE`

  Others have write permission.

`GNOME_VFS_PERM_OTHER_EXEC`

  Others have execution permission.

`GNOME_VFS_PERM_OTHER_ALL`

  Others have all permissions.

`GNOME_VFS_PERM_ACCESS_READABLE`

  This file is readable for the current client.

`GNOME_VFS_PERM_ACCESS_WRITABLE`

  This file is writable for the current client.

`GNOME_VFS_PERM_ACCESS_EXECUTABLE`

  This file is executable for the current client.

### enum GnomeVFSFileInfoOptions

    typedef enum {
    	GNOME_VFS_FILE_INFO_DEFAULT = 0,
    	GNOME_VFS_FILE_INFO_GET_MIME_TYPE = 1 << 0,
    	GNOME_VFS_FILE_INFO_FORCE_FAST_MIME_TYPE = 1 << 1,
    	GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE = 1 << 2,
    	GNOME_VFS_FILE_INFO_FOLLOW_LINKS = 1 << 3,
    	GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS = 1 << 4,
    	GNOME_VFS_FILE_INFO_NAME_ONLY = 1 << 5,
    	GNOME_VFS_FILE_INFO_GET_ACL = 1 << 6,
    	GNOME_VFS_FILE_INFO_GET_SELINUX_CONTEXT = 1 << 7
    } GnomeVFSFileInfoOptions;

Packed boolean bitfield representing options that can be passed into a `gnome_vfs_get_file_info()` call (or other related calls that return file info) and affect the operation of get_file_info.

`GNOME_VFS_FILE_INFO_DEFAULT`

  default flags

`GNOME_VFS_FILE_INFO_GET_MIME_TYPE`

  detect the MIME type

`GNOME_VFS_FILE_INFO_FORCE_FAST_MIME_TYPE`

  only use fast MIME type detection (extensions)

`GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE`

  force slow MIME type detection where available (sniffing, algorithmic detection, etc)

`GNOME_VFS_FILE_INFO_FOLLOW_LINKS`

  automatically follow symbolic links and retrieve the properties of their target (recommended)

`GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS`

  tries to get data similar to what would return access(2) on a local file system (ie is the file readable, writable and/or executable). Can be really slow on remote file systems

`GNOME_VFS_FILE_INFO_NAME_ONLY`

  When reading a directory, only get the filename (if doing so is faster). Useful to e.g. count the number of files.

`GNOME_VFS_FILE_INFO_GET_ACL`

  get ACLs for the file

`GNOME_VFS_FILE_INFO_GET_SELINUX_CONTEXT`

### enum GnomeVFSSetFileInfoMask

    typedef enum {
    	GNOME_VFS_SET_FILE_INFO_NONE = 0,
    	GNOME_VFS_SET_FILE_INFO_NAME = 1 << 0,
    	GNOME_VFS_SET_FILE_INFO_PERMISSIONS = 1 << 1,
    	GNOME_VFS_SET_FILE_INFO_OWNER = 1 << 2,
    	GNOME_VFS_SET_FILE_INFO_TIME = 1 << 3,
    	GNOME_VFS_SET_FILE_INFO_ACL = 1 << 4,
    	GNOME_VFS_SET_FILE_INFO_SELINUX_CONTEXT = 1 << 5,
    	GNOME_VFS_SET_FILE_INFO_SYMLINK_NAME = 1 << 6
    } GnomeVFSSetFileInfoMask;

Packed boolean bitfield representing the aspects of the file to be changed in a `gnome_vfs_set_file_info()` call.

`GNOME_VFS_SET_FILE_INFO_NONE`

  don't set any file info fields

`GNOME_VFS_SET_FILE_INFO_NAME`

  change the name

`GNOME_VFS_SET_FILE_INFO_PERMISSIONS`

  change the permissions

`GNOME_VFS_SET_FILE_INFO_OWNER`

  change the file's owner

`GNOME_VFS_SET_FILE_INFO_TIME`

  change the file's time stamp(s)

`GNOME_VFS_SET_FILE_INFO_ACL`

  change the file's ACLs

`GNOME_VFS_SET_FILE_INFO_SELINUX_CONTEXT`

`GNOME_VFS_SET_FILE_INFO_SYMLINK_NAME`

  change the file's symlink name

### GnomeVFSGetFileInfoResult

    typedef struct {
    	GnomeVFSURI *uri;
    	GnomeVFSResult result;
    	GnomeVFSFileInfo *file_info;
    } GnomeVFSGetFileInfoResult;

This data structure encapsulates the details of an individual file info request that was part of a mass file info request launched through `gnome_vfs_async_get_file_info()`, and is passed to a GnomeVFSAsyncGetFileInfoCallback.

GnomeVFSURI *uri;

  The GnomeVFSURI the file info was requested for.

GnomeVFSResult result;

  The GnomeVFSResult of the file info request.

GnomeVFSFileInfo *file_info;

  The GnomeVFSFileInfo that was retrieved.

### GnomeVFSInodeNumber

    typedef GnomeVFSFileSize GnomeVFSInodeNumber;

Represents the i-node of a file, this is a low level data structure that the operating system uses to hold information about a file.

### GnomeVFSFileInfo

    typedef struct {
    	char *name;

    	GnomeVFSFileInfoFields valid_fields;
    	GnomeVFSFileType type;
    	GnomeVFSFilePermissions permissions;

    	GnomeVFSFileFlags flags;

    	dev_t device;
    	GnomeVFSInodeNumber inode;

    	guint link_count;

    	guint uid;
    	guint gid;

    	GnomeVFSFileSize size;

    	GnomeVFSFileSize block_count;

    	guint io_block_size;

    	time_t atime;
    	time_t mtime;
    	time_t ctime;

    	char *symlink_name;

    	char *mime_type;

    	guint refcount;

    	/* File ACLs */
    	GnomeVFSACL *acl;

    	/* SELinux security context. -- ascii string, raw format. */
    	char* selinux_context;
    } GnomeVFSFileInfo;

When doing massive I/O, it is suggested to adhere `io_block_size` if applicable. For network file systems, this may be set to very big values allowing parallelization.

The GnomeVFSFileInfo structure contains information about a file.

char *name;

  A char * specifying the base name of the file (without any path string).

GnomeVFSFileInfoFields valid_fields;

  GnomeVFSFileInfoFields specifying which fields of GnomeVFSFileInfo are valid. Note that `name` is always assumed to be valid, i.e. clients may assume that it is not NULL.

GnomeVFSFileType type;

  The GnomeVFSFileType of the file (i.e. regular, directory, block device, ...) if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_TYPE.

GnomeVFSFilePermissions permissions;

  The GnomeVFSFilePermissions corresponding to the UNIX-like permissions of the file, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS, and the GnomeVFSFilePermissions corresponding to abstract access concepts (GNOME_VFS_PERM_ACCESS_READABLE, GNOME_VFS_PERM_ACCESS_WRITABLE, and GNOME_VFS_PERM_ACCESS_EXECUTABLE) if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS.

GnomeVFSFileFlags flags;

  GnomeVFSFileFlags providing additional information about the file, for instance whether it is local or a symbolic link, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_FLAGS.

dev_t device;

  Identifies the device the file is located on, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_DEVICE.

GnomeVFSInodeNumber inode;

  Identifies the inode corresponding to the file, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_INODE.

guint link_count;

  Counts the number of hard links to the file, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_LINK_COUNT.

guint uid;

  The user owning the file, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_IDS.

guint gid;

  The user owning the file, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_IDS.

GnomeVFSFileSize size;

  The size of the file in bytes (a GnomeVFSFileSize), if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_SIZE.

GnomeVFSFileSize block_count;

  The size of the file in file system blocks (a GnomeVFSFileSize), if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT.

guint io_block_size;

  The optimal buffer size for reading/writing the file, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_IO_BLOCK_SIZE.

time_t atime;

  The time of the last file access, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_ATIME.

time_t mtime;

  The time of the last file contents modification, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_MTIME.

time_t ctime;

  The time of the last inode change, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_CTIME.

char *symlink_name;

  This is the name of the file this link points to, `type` is GNOME_VFS_FILE_FLAGS_SYMLINK, and `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME.

char *mime_type;

  This is a char * identifying the type of the file, if `valid_fields` provides GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE.

guint refcount;

  The reference count of this file info, which is one by default, and that can be increased using `gnome_vfs_file_info_ref()` and decreased using `gnome_vfs_file_info_unref()`. When it drops to zero, the file info is freed and its memory is invalid. Make sure to keep your own reference to a file info if you received it from GnomeVFS, i.e. if you didn't call `gnome_vfs_file_info_new()` yourself.

GnomeVFSACL *acl;

char *selinux_context;

### GNOME_VFS_FILE_INFO_SYMLINK()

    #define             GNOME_VFS_FILE_INFO_SYMLINK(info)

Determines whether a file is a symbolic link given `info`.

`info` :

  GnomeVFSFileInfo struct

### GNOME_VFS_FILE_INFO_SET_SYMLINK()

    #define             GNOME_VFS_FILE_INFO_SET_SYMLINK(info, value)

Set the symbolic link field in `info` to `value`.

`info` :

  GnomeVFSFileInfo struct

`value` :

  if `TRUE`, `info` is set to indicate the file is a symbolic link

### GNOME_VFS_FILE_INFO_LOCAL()

    #define             GNOME_VFS_FILE_INFO_LOCAL(info)

Determines whether a file is local given `info`.

`info` :

  GnomeVFSFileInfo struct

### GNOME_VFS_FILE_INFO_SET_LOCAL()

    #define             GNOME_VFS_FILE_INFO_SET_LOCAL(info, value)

Set the "local file" field in `info` to `value`.

`info` :

  GnomeVFSFileInfo struct

`value` :

  if `TRUE`, `info` is set to indicate the file is local

### GNOME_VFS_FILE_INFO_SUID()

    #define             GNOME_VFS_FILE_INFO_SUID(info)

Determines whether a file belongs to the super user.

`info` :

  GnomeVFSFileInfo struct

### GNOME_VFS_FILE_INFO_SGID()

    #define             GNOME_VFS_FILE_INFO_SGID(info)

Determines whether a file belongs to the super user's group.

`info` :

  GnomeVFSFileInfo struct

### GNOME_VFS_FILE_INFO_STICKY()

    #define             GNOME_VFS_FILE_INFO_STICKY(info)

Determines whether a file has the sticky bit set, given `info`

`info` :

  GnomeVFSFileInfo struct

### GNOME_VFS_FILE_INFO_SET_SUID()

    #define             GNOME_VFS_FILE_INFO_SET_SUID(info, value)

Set the SUID field in `info` to `value`.

`info` :

  GnomeVFSFileInfo struct

`value` :

  if `TRUE`, `info` is set to indicate the file belongs to the super user

### GNOME_VFS_FILE_INFO_SET_SGID()

    #define             GNOME_VFS_FILE_INFO_SET_SGID(info, value)

Set the SGID field in `info` to `value`.

`info` :

  GnomeVFSFileInfo struct

`value` :

  if `TRUE`, `info` is set to indicate the file belongs to the super user's group

### GNOME_VFS_FILE_INFO_SET_STICKY()

    #define             GNOME_VFS_FILE_INFO_SET_STICKY(info, value)

Set the sticky bit in `info` to `value`.

`info` :

  GnomeVFSFileInfo struct

`value` :

  if `TRUE`, `info` is set to indicate the file has the sticky bit set

### gnome_vfs_file_info_new ()

    GnomeVFSFileInfo*   gnome_vfs_file_info_new             (void);

Allocate and initialize a new GnomeVFSFileInfo struct.

Returns :

  a pointer to the newly allocated file information struct.

### gnome_vfs_file_info_unref ()

    void                gnome_vfs_file_info_unref           (GnomeVFSFileInfo *info);

Decreases the refcount of `info` by 1. Frees the struct `info` if refcount becomes 0.

`info` :

  pointer to a file information struct.

### gnome_vfs_file_info_ref ()

    void                gnome_vfs_file_info_ref             (GnomeVFSFileInfo *info);

Increment refcount of `info` by 1.

`info` :

  pointer to a file information struct.

### gnome_vfs_file_info_clear ()

    void                gnome_vfs_file_info_clear           (GnomeVFSFileInfo *info);

Clear `info` so that it's ready to accept new data. This is supposed to be used when `info` already contains meaningful information which we want to replace.

`info` :

  pointer to a file information struct.

### gnome_vfs_file_info_get_mime_type ()

    const char*         gnome_vfs_file_info_get_mime_type   (GnomeVFSFileInfo *info);

Retrieve MIME type from `info`. There is no need to free the return value.

`info` :

  a pointer to a file information struct.

Returns :

  a pointer to a string representing the MIME type.

### gnome_vfs_file_info_copy ()

    void                gnome_vfs_file_info_copy            (GnomeVFSFileInfo *dest,
                                                             const GnomeVFSFileInfo *src);

Copy information from `src` into `dest`.

`dest` :

  pointer to a struct to copy `src`'s information into.

`src` :

  pointer to the information to be copied into `dest`.

### gnome_vfs_file_info_dup ()

    GnomeVFSFileInfo*   gnome_vfs_file_info_dup             (const GnomeVFSFileInfo *orig);

Duplicates `orig` and returns it.

`orig` :

  pointer to a file information structure to duplicate.

Returns :

  a new file information struct that duplicates the information in `orig`.

### gnome_vfs_file_info_matches ()

    gboolean            gnome_vfs_file_info_matches         (const GnomeVFSFileInfo *a,
                                                             const GnomeVFSFileInfo *b);

Compare the two file info structs, return `TRUE` if they match exactly the same file data.

`a` :

  first GnomeVFSFileInfo struct to compare.

`b` :

  second GnomeVFSFileInfo struct to compare.

Returns :

  `TRUE` if the two GnomeVFSFileInfos match, otherwise return `FALSE`.

### gnome_vfs_file_info_list_ref ()

    GList*              gnome_vfs_file_info_list_ref        (GList *list);

Increments the refcount of the items in `list` by one.

`list` :

  list of GnomeVFSFileInfo elements.

Returns :

  `list`.

### gnome_vfs_file_info_list_unref ()

    GList*              gnome_vfs_file_info_list_unref      (GList *list);

Decrements the refcount of the items in `list` by one. Note that the list is *not freed* even if each member of the list is freed.

`list` :

  list of GnomeVFSFileInfo elements.

Returns :

  `list`.

### gnome_vfs_file_info_list_copy ()

    GList*              gnome_vfs_file_info_list_copy       (GList *list);

Creates a duplicate of `list`, and references each member of that list.

`list` :

  list of GnomeVFSFileInfo elements.

Returns :

  a newly referenced duplicate of `list`.

### gnome_vfs_file_info_list_free ()

    void                gnome_vfs_file_info_list_free       (GList *list);

Decrements the refcount of each member of `list` by one, and frees the list itself.

`list` :

  list of GnomeVFSFileInfo elements.

### gnome_vfs_get_file_info_result_dup ()

    GnomeVFSGetFileInfoResult* gnome_vfs_get_file_info_result_dup
                                                            (GnomeVFSGetFileInfoResult *result);

Duplicate `result`.

Note: The internal uri and fileinfo objects are not duplicated but their refcount is incremented by 1.

`result` :

  a GnomeVFSGetFileInfoResult.

Returns :

  a duplicated version of `result`.

Since 2.12

### gnome_vfs_get_file_info_result_free ()

    void                gnome_vfs_get_file_info_result_free (GnomeVFSGetFileInfoResult *result);

Unrefs the internal uri and fileinfo objects and frees the memory allocated for `result`.

`result` :

  a GnomeVFSGetFileInfoResult.

Since 2.12