Home | History | Annotate | Download | only in gio
      1 /* GIO - GLib Input, Output and Streaming Library
      2  *
      3  * Copyright (C) 2006-2007 Red Hat, Inc.
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2 of the License, or (at your option) any later version.
      9  *
     10  * This library is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  * Lesser General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU Lesser General
     16  * Public License along with this library; if not, write to the
     17  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
     18  * Boston, MA 02111-1307, USA.
     19  *
     20  * Author: Alexander Larsson <alexl (at) redhat.com>
     21  */
     22 
     23 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
     24 #error "Only <gio/gio.h> can be included directly."
     25 #endif
     26 
     27 #ifndef __G_FILE_INFO_H__
     28 #define __G_FILE_INFO_H__
     29 
     30 #include <gio/giotypes.h>
     31 
     32 G_BEGIN_DECLS
     33 
     34 #define G_TYPE_FILE_INFO         (g_file_info_get_type ())
     35 #define G_FILE_INFO(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_INFO, GFileInfo))
     36 #define G_FILE_INFO_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_INFO, GFileInfoClass))
     37 #define G_IS_FILE_INFO(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_INFO))
     38 #define G_IS_FILE_INFO_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_INFO))
     39 #define G_FILE_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_INFO, GFileInfoClass))
     40 
     41 /**
     42  * GFileInfo:
     43  *
     44  * Stores information about a file system object referenced by a #GFile.
     45  **/
     46 typedef struct _GFileInfoClass   GFileInfoClass;
     47 
     48 
     49 /* Common Attributes:  */
     50 /**
     51  * G_FILE_ATTRIBUTE_STANDARD_TYPE:
     52  *
     53  * A key in the "standard" namespace for storing file types.
     54  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
     55  * The value for this key should contain a #GFileType.
     56  **/
     57 #define G_FILE_ATTRIBUTE_STANDARD_TYPE "standard::type"                     /* uint32 (GFileType) */
     58 
     59 /**
     60  * G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN:
     61  *
     62  * A key in the "standard" namespace for checking if a file is hidden.
     63  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
     64  **/
     65 #define G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN "standard::is-hidden"           /* boolean */
     66 
     67 /**
     68  * G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP:
     69  *
     70  * A key in the "standard" namespace for checking if a file is a backup file.
     71  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
     72  **/
     73 #define G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP "standard::is-backup"           /* boolean */
     74 
     75 /**
     76  * G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK:
     77  *
     78  * A key in the "standard" namespace for checking if the file is a symlink.
     79  * Typically the actual type is something else, if we followed the symlink
     80  * to get the type.
     81  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
     82  **/
     83 #define G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "standard::is-symlink"         /* boolean */
     84 
     85 /**
     86  * G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL:
     87  *
     88  * A key in the "standard" namespace for checking if a file is virtual.
     89  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
     90  **/
     91 #define G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL "standard::is-virtual"         /* boolean */
     92 
     93 /**
     94  * G_FILE_ATTRIBUTE_STANDARD_NAME:
     95  *
     96  * A key in the "standard" namespace for getting the name of the file.
     97  * The name is the on-disk filename which may not be in any known encoding,
     98  * and can thus not be generally displayed as is.
     99  * Use #G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME if you need to display the
    100  * name in a user interface.
    101  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
    102  **/
    103 #define G_FILE_ATTRIBUTE_STANDARD_NAME "standard::name"                     /* byte string */
    104 
    105 /**
    106  * G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME:
    107  *
    108  * A key in the "standard" namespace for getting the display name of the file.
    109  * A display name is guaranteed to be in UTF8 and can thus be displayed in
    110  * the UI.
    111  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    112  **/
    113 #define G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "standard::display-name"     /* string */
    114 
    115 /**
    116  * G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME:
    117  *
    118  * A key in the "standard" namespace for edit name of the file.
    119  * An edit name is similar to the display name, but it is meant to be
    120  * used when you want to rename the file in the UI. The display name
    121  * might contain information you don't want in the new filename (such as
    122  * "(invalid unicode)" if the filename was in an invalid encoding).
    123  *
    124  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    125  **/
    126 #define G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME "standard::edit-name"           /* string */
    127 
    128 /**
    129  * G_FILE_ATTRIBUTE_STANDARD_COPY_NAME:
    130  *
    131  * A key in the "standard" namespace for getting the copy name of the file.
    132  * The copy name is an optional version of the name. If available it's always
    133  * in UTF8, and corresponds directly to the original filename (only transcoded to
    134  * UTF8). This is useful if you want to copy the file to another filesystem that
    135  * might have a different encoding. If the filename is not a valid string in the
    136  * encoding selected for the filesystem it is in then the copy name will not be set.
    137  *
    138  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    139  **/
    140 #define G_FILE_ATTRIBUTE_STANDARD_COPY_NAME "standard::copy-name"           /* string */
    141 
    142 /**
    143  * G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION:
    144  *
    145  * A key in the "standard" namespace for getting the description of the file.
    146  * The description is a utf8 string that describes the file, generally containing
    147  * the filename, but can also contain furter information. Example descriptions
    148  * could be "filename (on hostname)" for a remote file or "filename (in trash)"
    149  * for a file in the trash. This is useful for instance as the window title
    150  * when displaying a directory or for a bookmarks menu.
    151  *
    152  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    153  **/
    154 #define G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION "standard::description"        /* string */
    155 
    156 /**
    157  * G_FILE_ATTRIBUTE_STANDARD_ICON:
    158  *
    159  * A key in the "standard" namespace for getting the icon for the file.
    160  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
    161  * The value for this key should contain a #GIcon.
    162  **/
    163 #define G_FILE_ATTRIBUTE_STANDARD_ICON "standard::icon"                     /* object (GIcon) */
    164 
    165 /**
    166  * G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE:
    167  *
    168  * A key in the "standard" namespace for getting the content type of the file.
    169  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    170  * The value for this key should contain a valid content type.
    171  **/
    172 #define G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "standard::content-type"     /* string */
    173 
    174 /**
    175  * G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE:
    176  *
    177  * A key in the "standard" namespace for getting the fast content type.
    178  * The fast content type isn't as reliable as the regular one, as it
    179  * only uses the filename to guess it, but it is faster to calculate than the
    180  * regular content type.
    181  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    182  *
    183  **/
    184 #define G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE "standard::fast-content-type" /* string */
    185 
    186 /**
    187  * G_FILE_ATTRIBUTE_STANDARD_SIZE:
    188  *
    189  * A key in the "standard" namespace for getting the file's size (in bytes).
    190  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
    191  **/
    192 #define G_FILE_ATTRIBUTE_STANDARD_SIZE "standard::size"                     /* uint64 */
    193 
    194 /**
    195  * G_FILE_ATTRIBUTE_ALLOCATED_SIZE:
    196  *
    197  * A key in the "standard" namespace for getting the amount of disk space
    198  * that is consumed by the file (in bytes).  This will generally be larger
    199  * than the file size (due to block size overhead) but can occasionally be
    200  * smaller (for example, for sparse files).
    201  *
    202  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
    203  **/
    204 #define G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE "standard::allocated-size" /* uint64 */
    205 
    206 /**
    207  * G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET:
    208  *
    209  * A key in the "standard" namespace for getting the symlink target, if the file
    210  * is a symlink. Corresponding #GFileAttributeType is
    211  * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
    212  **/
    213 #define G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET "standard::symlink-target" /* byte string */
    214 
    215 /**
    216  * G_FILE_ATTRIBUTE_STANDARD_TARGET_URI:
    217  *
    218  * A key in the "standard" namespace for getting the target URI for the file, in
    219  * the case of %G_FILE_TYPE_SHORTCUT or %G_FILE_TYPE_MOUNTABLE files.
    220  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    221  **/
    222 #define G_FILE_ATTRIBUTE_STANDARD_TARGET_URI "standard::target-uri"         /* string */
    223 
    224 /**
    225  * G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER:
    226  *
    227  * A key in the "standard" namespace for setting the sort order of a file.
    228  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_INT32.
    229  * An example use would be in file managers, which would use this key
    230  * to set the order files are displayed. Files with smaller sort order
    231  * should be sorted first, and files without sort order as if sort order
    232  * was zero.
    233  **/
    234 #define G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER "standard::sort-order"         /* int32  */
    235 
    236 /* Entity tags, used to avoid missing updates on save */
    237 
    238 /**
    239  * G_FILE_ATTRIBUTE_ETAG_VALUE:
    240  *
    241  * A key in the "etag" namespace for getting the value of the file's
    242  * entity tag. Corresponding #GFileAttributeType is
    243  * %G_FILE_ATTRIBUTE_TYPE_STRING.
    244  **/
    245 #define G_FILE_ATTRIBUTE_ETAG_VALUE "etag::value"                 /* string */
    246 
    247 /* File identifier, for e.g. avoiding loops when doing recursive
    248  * directory scanning
    249  */
    250 
    251 /**
    252  * G_FILE_ATTRIBUTE_ID_FILE:
    253  *
    254  * A key in the "id" namespace for getting a file identifier.
    255  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    256  * An example use would be during listing files, to avoid recursive
    257  * directory scanning.
    258  **/
    259 #define G_FILE_ATTRIBUTE_ID_FILE "id::file"                     /* string */
    260 
    261 /**
    262  * G_FILE_ATTRIBUTE_ID_FILESYSTEM:
    263  *
    264  * A key in the "id" namespace for getting the file system identifier.
    265  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    266  * An example use would be during drag and drop to see if the source
    267  * and target are on the same filesystem (default to move) or not (default
    268  * to copy).
    269  **/
    270 #define G_FILE_ATTRIBUTE_ID_FILESYSTEM "id::filesystem"         /* string */
    271 
    272 /* Calculated Access Rights for current user */
    273 
    274 /**
    275  * G_FILE_ATTRIBUTE_ACCESS_CAN_READ:
    276  *
    277  * A key in the "access" namespace for getting read privileges.
    278  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    279  * This attribute will be %TRUE if the user is able to read the file.
    280  **/
    281 #define G_FILE_ATTRIBUTE_ACCESS_CAN_READ "access::can-read"       /* boolean */
    282 
    283 /**
    284  * G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE:
    285  *
    286  * A key in the "access" namespace for getting write privileges.
    287  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    288  * This attribute will be %TRUE if the user is able to write to the file.
    289  **/
    290 #define G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE "access::can-write"     /* boolean */
    291 
    292 /**
    293  * G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE:
    294  *
    295  * A key in the "access" namespace for getting execution privileges.
    296  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    297  * This attribute will be %TRUE if the user is able to execute the file.
    298  **/
    299 #define G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE "access::can-execute" /* boolean */
    300 
    301 /**
    302  * G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE:
    303  *
    304  * A key in the "access" namespace for checking deletion privileges.
    305  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    306  * This attribute will be %TRUE if the user is able to delete the file.
    307  **/
    308 #define G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE "access::can-delete"   /* boolean */
    309 
    310 /**
    311  * G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH:
    312  *
    313  * A key in the "access" namespace for checking trashing privileges.
    314  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    315  * This attribute will be %TRUE if the user is able to move the file to
    316  * the trash.
    317  **/
    318 #define G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH "access::can-trash"     /* boolean */
    319 
    320 /**
    321  * G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME:
    322  *
    323  * A key in the "access" namespace for checking renaming privileges.
    324  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    325  * This attribute will be %TRUE if the user is able to rename the file.
    326  **/
    327 #define G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME "access::can-rename"   /* boolean */
    328 
    329 /* TODO: Should we have special version for directories? can_enumerate, etc */
    330 
    331 /* Mountable attributes */
    332 
    333 /**
    334  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT:
    335  *
    336  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) is mountable.
    337  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    338  **/
    339 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT "mountable::can-mount"     /* boolean */
    340 
    341 /**
    342  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT:
    343  *
    344  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE)  is unmountable.
    345  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    346  **/
    347 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT "mountable::can-unmount" /* boolean */
    348 
    349 /**
    350  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT:
    351  *
    352  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be ejected.
    353  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    354  **/
    355 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT "mountable::can-eject"     /* boolean */
    356 
    357 /**
    358  * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE:
    359  *
    360  * A key in the "mountable" namespace for getting the unix device.
    361  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
    362  **/
    363 #define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE "mountable::unix-device" /* uint32 */
    364 
    365 /**
    366  * G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI:
    367  *
    368  * A key in the "mountable" namespace for getting the HAL UDI for the mountable
    369  * file. Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    370  **/
    371 #define G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI "mountable::hal-udi"         /* string */
    372 
    373 /* Time attributes */
    374 
    375 /**
    376  * G_FILE_ATTRIBUTE_TIME_MODIFIED:
    377  *
    378  * A key in the "time" namespace for getting the time the file was last
    379  * modified. Corresponding #GFileAttributeType is
    380  * %G_FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the
    381  * file was modified.
    382  **/
    383 #define G_FILE_ATTRIBUTE_TIME_MODIFIED "time::modified"           /* uint64 */
    384 
    385 /**
    386  * G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC:
    387  *
    388  * A key in the "time" namespace for getting the miliseconds of the time
    389  * the file was last modified. This should be used in conjunction with
    390  * #G_FILE_ATTRIBUTE_TIME_MODIFIED. Corresponding #GFileAttributeType is
    391  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
    392  **/
    393 #define G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC "time::modified-usec" /* uint32 */
    394 
    395 /**
    396  * G_FILE_ATTRIBUTE_TIME_ACCESS:
    397  *
    398  * A key in the "time" namespace for getting the time the file was last
    399  * accessed. Corresponding #GFileAttributeType is
    400  * %G_FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the
    401  * file was last accessed.
    402  **/
    403 #define G_FILE_ATTRIBUTE_TIME_ACCESS "time::access"               /* uint64 */
    404 
    405 /**
    406  * G_FILE_ATTRIBUTE_TIME_ACCESS_USEC:
    407  *
    408  * A key in the "time" namespace for getting the microseconds of the time
    409  * the file was last accessed. This should be used in conjunction with
    410  * #G_FILE_ATTRIBUTE_TIME_ACCESS. Corresponding #GFileAttributeType is
    411  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
    412  **/
    413 #define G_FILE_ATTRIBUTE_TIME_ACCESS_USEC "time::access-usec"     /* uint32 */
    414 
    415 /**
    416  * G_FILE_ATTRIBUTE_TIME_CHANGED:
    417  *
    418  * A key in the "time" namespace for getting the time the file was last
    419  * changed. Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
    420  * and contains the UNIX time since the file was last changed.
    421  *
    422  * This corresponds to the traditional UNIX ctime.
    423  **/
    424 #define G_FILE_ATTRIBUTE_TIME_CHANGED "time::changed"             /* uint64 */
    425 
    426 /**
    427  * G_FILE_ATTRIBUTE_TIME_CHANGED_USEC:
    428  *
    429  * A key in the "time" namespace for getting the microseconds of the time
    430  * the file was last changed. This should be used in conjunction with
    431  * #G_FILE_ATTRIBUTE_TIME_CHANGED. Corresponding #GFileAttributeType is
    432  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
    433  **/
    434 #define G_FILE_ATTRIBUTE_TIME_CHANGED_USEC "time::changed-usec"   /* uint32 */
    435 
    436 /**
    437  * G_FILE_ATTRIBUTE_TIME_CREATED:
    438  *
    439  * A key in the "time" namespace for getting the time the file was created.
    440  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
    441  * and contains the UNIX time since the file was created.
    442  *
    443  * This corresponds to the NTFS ctime.
    444  **/
    445 #define G_FILE_ATTRIBUTE_TIME_CREATED "time::created"             /* uint64 */
    446 
    447 /**
    448  * G_FILE_ATTRIBUTE_TIME_CREATED_USEC:
    449  *
    450  * A key in the "time" namespace for getting the microseconds of the time
    451  * the file was created. This should be used in conjunction with
    452  * #G_FILE_ATTRIBUTE_TIME_CREATED. Corresponding #GFileAttributeType is
    453  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
    454  **/
    455 #define G_FILE_ATTRIBUTE_TIME_CREATED_USEC "time::created-usec"   /* uint32 */
    456 
    457 /* Unix specific attributes */
    458 
    459 /**
    460  * G_FILE_ATTRIBUTE_UNIX_DEVICE:
    461  *
    462  * A key in the "unix" namespace for getting the device id of the device the
    463  * file is located on (see stat() documentation). This attribute is only
    464  * available for UNIX file systems. Corresponding #GFileAttributeType is
    465  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
    466  **/
    467 #define G_FILE_ATTRIBUTE_UNIX_DEVICE "unix::device"               /* uint32 */
    468 
    469 /**
    470  * G_FILE_ATTRIBUTE_UNIX_INODE:
    471  *
    472  * A key in the "unix" namespace for getting the inode of the file.
    473  * This attribute is only available for UNIX file systems. Corresponding
    474  * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
    475  **/
    476 #define G_FILE_ATTRIBUTE_UNIX_INODE "unix::inode"                 /* uint64 */
    477 
    478 /**
    479  * G_FILE_ATTRIBUTE_UNIX_MODE:
    480  *
    481  * A key in the "unix" namespace for getting the mode of the file
    482  * (e.g. whether the file is a regular file, symlink, etc). See lstat()
    483  * documentation. This attribute is only available for UNIX file systems.
    484  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
    485  **/
    486 #define G_FILE_ATTRIBUTE_UNIX_MODE "unix::mode"                   /* uint32 */
    487 
    488 /**
    489  * G_FILE_ATTRIBUTE_UNIX_NLINK:
    490  *
    491  * A key in the "unix" namespace for getting the number of hard links
    492  * for a file. See lstat() documentation. This attribute is only available
    493  * for UNIX file systems. Corresponding #GFileAttributeType is
    494  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
    495  **/
    496 #define G_FILE_ATTRIBUTE_UNIX_NLINK "unix::nlink"                 /* uint32 */
    497 
    498 /**
    499  * G_FILE_ATTRIBUTE_UNIX_UID:
    500  *
    501  * A key in the "unix" namespace for getting the user ID for the file.
    502  * This attribute is only available for UNIX file systems.
    503  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
    504  **/
    505 #define G_FILE_ATTRIBUTE_UNIX_UID "unix::uid"                     /* uint32 */
    506 
    507 /**
    508  * G_FILE_ATTRIBUTE_UNIX_GID:
    509  *
    510  * A key in the "unix" namespace for getting the group ID for the file.
    511  * This attribute is only available for UNIX file systems.
    512  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
    513  **/
    514 #define G_FILE_ATTRIBUTE_UNIX_GID "unix::gid"                     /* uint32 */
    515 
    516 /**
    517  * G_FILE_ATTRIBUTE_UNIX_RDEV:
    518  *
    519  * A key in the "unix" namespace for getting the device ID for the file
    520  * (if it is a special file). See lstat() documentation. This attribute
    521  * is only available for UNIX file systems. Corresponding #GFileAttributeType
    522  * is %G_FILE_ATTRIBUTE_TYPE_UINT32.
    523  **/
    524 #define G_FILE_ATTRIBUTE_UNIX_RDEV "unix::rdev"                   /* uint32 */
    525 
    526 /**
    527  * G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE:
    528  *
    529  * A key in the "unix" namespace for getting the block size for the file
    530  * system. This attribute is only available for UNIX file systems.
    531  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
    532  **/
    533 #define G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE "unix::block-size"       /* uint32 */
    534 
    535 /**
    536  * G_FILE_ATTRIBUTE_UNIX_BLOCKS:
    537  *
    538  * A key in the "unix" namespace for getting the number of blocks allocated
    539  * for the file. This attribute is only available for UNIX file systems.
    540  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
    541  **/
    542 #define G_FILE_ATTRIBUTE_UNIX_BLOCKS "unix::blocks"               /* uint64 */
    543 
    544 /**
    545  * G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT:
    546  *
    547  * A key in the "unix" namespace for checking if the file represents a
    548  * UNIX mount point. This attribute is %TRUE if the file is a UNIX mount
    549  * point. This attribute is only available for UNIX file systems.
    550  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    551  **/
    552 #define G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT "unix::is-mountpoint" /* boolean */
    553 
    554 /* DOS specific attributes */
    555 
    556 /**
    557  * G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE:
    558  *
    559  * A key in the "dos" namespace for checking if the file's archive flag
    560  * is set. This attribute is %TRUE if the archive flag is set. This attribute
    561  * is only available for DOS file systems. Corresponding #GFileAttributeType
    562  * is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    563  **/
    564 #define G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE "dos::is-archive"         /* boolean */
    565 
    566 /**
    567  * G_FILE_ATTRIBUTE_DOS_IS_SYSTEM:
    568  *
    569  * A key in the "dos" namespace for checking if the file's backup flag
    570  * is set. This attribute is %TRUE if the backup flag is set. This attribute
    571  * is only available for DOS file systems. Corresponding #GFileAttributeType
    572  * is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    573  **/
    574 #define G_FILE_ATTRIBUTE_DOS_IS_SYSTEM "dos::is-system"           /* boolean */
    575 
    576 /* Owner attributes */
    577 
    578 /**
    579  * G_FILE_ATTRIBUTE_OWNER_USER:
    580  *
    581  * A key in the "owner" namespace for getting the user name of the
    582  * file's owner. Corresponding #GFileAttributeType is
    583  * %G_FILE_ATTRIBUTE_TYPE_STRING.
    584  **/
    585 #define G_FILE_ATTRIBUTE_OWNER_USER "owner::user"                 /* string */
    586 
    587 /**
    588  * G_FILE_ATTRIBUTE_OWNER_USER_REAL:
    589  *
    590  * A key in the "owner" namespace for getting the real name of the
    591  * user that owns the file. Corresponding #GFileAttributeType is
    592  * %G_FILE_ATTRIBUTE_TYPE_STRING.
    593  **/
    594 #define G_FILE_ATTRIBUTE_OWNER_USER_REAL "owner::user-real"       /* string */
    595 
    596 /**
    597  * G_FILE_ATTRIBUTE_OWNER_GROUP:
    598  *
    599  * A key in the "owner" namespace for getting the file owner's group.
    600  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    601  **/
    602 #define G_FILE_ATTRIBUTE_OWNER_GROUP "owner::group"               /* string */
    603 
    604 /* Thumbnails */
    605 
    606 /**
    607  * G_FILE_ATTRIBUTE_THUMBNAIL_PATH:
    608  *
    609  * A key in the "thumbnail" namespace for getting the path to the thumbnail
    610  * image. Corresponding #GFileAttributeType is
    611  * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
    612  **/
    613 #define G_FILE_ATTRIBUTE_THUMBNAIL_PATH "thumbnail::path"         /* bytestring */
    614 /**
    615  * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED:
    616  *
    617  * A key in the "thumbnail" namespace for checking if thumbnailing failed.
    618  * This attribute is %TRUE if thumbnailing failed. Corresponding
    619  * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    620  **/
    621 #define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED "thumbnail::failed"         /* boolean */
    622 
    623 /* Preview */
    624 
    625 /**
    626  * G_FILE_ATTRIBUTE_PREVIEW_ICON:
    627  *
    628  * A key in the "preview" namespace for getting a #GIcon that can be
    629  * used to get preview of the file. For example, it may be a low
    630  * resolution thumbnail without metadata. Corresponding
    631  * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.  The value
    632  * for this key should contain a #GIcon.
    633  *
    634  * Since: 2.20
    635  **/
    636 #define G_FILE_ATTRIBUTE_PREVIEW_ICON "preview::icon"         /* object (GIcon) */
    637 
    638 /* File system info (for g_file_get_filesystem_info) */
    639 
    640 /**
    641  * G_FILE_ATTRIBUTE_FILESYSTEM_SIZE:
    642  *
    643  * A key in the "filesystem" namespace for getting the total size (in bytes) of the file system,
    644  * used in g_file_query_filesystem_info(). Corresponding #GFileAttributeType
    645  * is %G_FILE_ATTRIBUTE_TYPE_UINT64.
    646  **/
    647 #define G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "filesystem::size"                       /* uint64 */
    648 
    649 /**
    650  * G_FILE_ATTRIBUTE_FILESYSTEM_FREE:
    651  *
    652  * A key in the "filesystem" namespace for getting the number of bytes of free space left on the
    653  * file system. Corresponding #GFileAttributeType is
    654  * %G_FILE_ATTRIBUTE_TYPE_UINT64.
    655  **/
    656 #define G_FILE_ATTRIBUTE_FILESYSTEM_FREE "filesystem::free"                       /* uint64 */
    657 
    658 /**
    659  * G_FILE_ATTRIBUTE_FILESYSTEM_TYPE:
    660  *
    661  * A key in the "filesystem" namespace for getting the file system's type.
    662  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
    663  **/
    664 #define G_FILE_ATTRIBUTE_FILESYSTEM_TYPE "filesystem::type"                       /* string */
    665 
    666 /**
    667  * G_FILE_ATTRIBUTE_FILESYSTEM_READONLY:
    668  *
    669  * A key in the "filesystem" namespace for checking if the file system
    670  * is read only. Is set to %TRUE if the file system is read only.
    671  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
    672  **/
    673 #define G_FILE_ATTRIBUTE_FILESYSTEM_READONLY "filesystem::readonly"               /* boolean */
    674 
    675 /**
    676  * G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW:
    677  *
    678  * A key in the "filesystem" namespace for hinting a file manager
    679  * application whether it should preview (e.g. thumbnail) files on the
    680  * file system. The value for this key contain a
    681  * #GFilesystemPreviewType.
    682  **/
    683 #define G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW "filesystem::use-preview"        /* uint32 (GFilesystemPreviewType) */
    684 
    685 /**
    686  * G_FILE_ATTRIBUTE_GVFS_BACKEND:
    687  *
    688  * A key in the "gvfs" namespace that gets the name of the current
    689  * GVFS backend in use. Corresponding #GFileAttributeType is
    690  * %G_FILE_ATTRIBUTE_TYPE_STRING.
    691  **/
    692 #define G_FILE_ATTRIBUTE_GVFS_BACKEND "gvfs::backend"             /* string */
    693 
    694 /**
    695  * G_FILE_ATTRIBUTE_SELINUX_CONTEXT:
    696  *
    697  * A key in the "selinux" namespace for getting the file's SELinux
    698  * context. Corresponding #GFileAttributeType is
    699  * %G_FILE_ATTRIBUTE_TYPE_STRING. Note that this attribute is only
    700  * available if GLib has been built with SELinux support.
    701  **/
    702 #define G_FILE_ATTRIBUTE_SELINUX_CONTEXT "selinux::context"       /* string */
    703 
    704 /**
    705  * G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT:
    706  *
    707  * A key in the "trash" namespace.  When requested against
    708  * "trash:///" returns the number of (toplevel) items in the trash folder.
    709  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
    710  **/
    711 #define G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT "trash::item-count"     /* uint32 */
    712 
    713 GType              g_file_info_get_type                  (void) G_GNUC_CONST;
    714 
    715 GFileInfo *        g_file_info_new                       (void);
    716 GFileInfo *        g_file_info_dup                       (GFileInfo  *other);
    717 void               g_file_info_copy_into                 (GFileInfo  *src_info,
    718 							  GFileInfo  *dest_info);
    719 gboolean           g_file_info_has_attribute             (GFileInfo  *info,
    720 							  const char *attribute);
    721 char **            g_file_info_list_attributes           (GFileInfo  *info,
    722 							  const char *name_space);
    723 gboolean           g_file_info_get_attribute_data        (GFileInfo  *info,
    724 							  const char *attribute,
    725 							  GFileAttributeType *type,
    726 							  gpointer   *value_pp,
    727 							  GFileAttributeStatus *status);
    728 GFileAttributeType g_file_info_get_attribute_type        (GFileInfo  *info,
    729 							  const char *attribute);
    730 void               g_file_info_remove_attribute          (GFileInfo  *info,
    731 							  const char *attribute);
    732 GFileAttributeStatus g_file_info_get_attribute_status    (GFileInfo  *info,
    733 							  const char *attribute);
    734 char *             g_file_info_get_attribute_as_string   (GFileInfo  *info,
    735 							  const char *attribute);
    736 const char *       g_file_info_get_attribute_string      (GFileInfo  *info,
    737 							  const char *attribute);
    738 const char *       g_file_info_get_attribute_byte_string (GFileInfo  *info,
    739 							  const char *attribute);
    740 gboolean           g_file_info_get_attribute_boolean     (GFileInfo  *info,
    741 							  const char *attribute);
    742 guint32            g_file_info_get_attribute_uint32      (GFileInfo  *info,
    743 							  const char *attribute);
    744 gint32             g_file_info_get_attribute_int32       (GFileInfo  *info,
    745 							  const char *attribute);
    746 guint64            g_file_info_get_attribute_uint64      (GFileInfo  *info,
    747 							  const char *attribute);
    748 gint64             g_file_info_get_attribute_int64       (GFileInfo  *info,
    749 							  const char *attribute);
    750 GObject *          g_file_info_get_attribute_object      (GFileInfo  *info,
    751 							  const char *attribute);
    752 
    753 void               g_file_info_set_attribute             (GFileInfo  *info,
    754 							  const char *attribute,
    755 							  GFileAttributeType type,
    756 							  gpointer    value_p);
    757 void               g_file_info_set_attribute_string      (GFileInfo  *info,
    758 							  const char *attribute,
    759 							  const char *attr_value);
    760 void               g_file_info_set_attribute_byte_string (GFileInfo  *info,
    761 							  const char *attribute,
    762 							  const char *attr_value);
    763 void               g_file_info_set_attribute_boolean     (GFileInfo  *info,
    764 							  const char *attribute,
    765 							  gboolean    attr_value);
    766 void               g_file_info_set_attribute_uint32      (GFileInfo  *info,
    767 							  const char *attribute,
    768 							  guint32     attr_value);
    769 void               g_file_info_set_attribute_int32       (GFileInfo  *info,
    770 							  const char *attribute,
    771 							  gint32      attr_value);
    772 void               g_file_info_set_attribute_uint64      (GFileInfo  *info,
    773 							  const char *attribute,
    774 							  guint64     attr_value);
    775 void               g_file_info_set_attribute_int64       (GFileInfo  *info,
    776 							  const char *attribute,
    777 							  gint64      attr_value);
    778 void               g_file_info_set_attribute_object      (GFileInfo  *info,
    779 							  const char *attribute,
    780 							  GObject    *attr_value);
    781 
    782 void               g_file_info_clear_status              (GFileInfo  *info);
    783 
    784 /* Helper getters: */
    785 GFileType         g_file_info_get_file_type          (GFileInfo         *info);
    786 gboolean          g_file_info_get_is_hidden          (GFileInfo         *info);
    787 gboolean          g_file_info_get_is_backup          (GFileInfo         *info);
    788 gboolean          g_file_info_get_is_symlink         (GFileInfo         *info);
    789 const char *      g_file_info_get_name               (GFileInfo         *info);
    790 const char *      g_file_info_get_display_name       (GFileInfo         *info);
    791 const char *      g_file_info_get_edit_name          (GFileInfo         *info);
    792 GIcon *           g_file_info_get_icon               (GFileInfo         *info);
    793 const char *      g_file_info_get_content_type       (GFileInfo         *info);
    794 goffset           g_file_info_get_size               (GFileInfo         *info);
    795 void              g_file_info_get_modification_time  (GFileInfo         *info,
    796 						      GTimeVal          *result);
    797 const char *      g_file_info_get_symlink_target     (GFileInfo         *info);
    798 const char *      g_file_info_get_etag               (GFileInfo         *info);
    799 gint32            g_file_info_get_sort_order         (GFileInfo         *info);
    800 
    801 void              g_file_info_set_attribute_mask     (GFileInfo         *info,
    802 						      GFileAttributeMatcher *mask);
    803 void              g_file_info_unset_attribute_mask   (GFileInfo         *info);
    804 
    805 /* Helper setters: */
    806 void              g_file_info_set_file_type          (GFileInfo         *info,
    807 						      GFileType          type);
    808 void              g_file_info_set_is_hidden          (GFileInfo         *info,
    809 						      gboolean           is_hidden);
    810 void              g_file_info_set_is_symlink         (GFileInfo         *info,
    811 						      gboolean           is_symlink);
    812 void              g_file_info_set_name               (GFileInfo         *info,
    813 						      const char        *name);
    814 void              g_file_info_set_display_name       (GFileInfo         *info,
    815 						      const char        *display_name);
    816 void              g_file_info_set_edit_name          (GFileInfo         *info,
    817 						      const char        *edit_name);
    818 void              g_file_info_set_icon               (GFileInfo         *info,
    819 						      GIcon             *icon);
    820 void              g_file_info_set_content_type       (GFileInfo         *info,
    821 						      const char        *content_type);
    822 void              g_file_info_set_size               (GFileInfo         *info,
    823 						      goffset            size);
    824 void              g_file_info_set_modification_time  (GFileInfo         *info,
    825 						      GTimeVal          *mtime);
    826 void              g_file_info_set_symlink_target     (GFileInfo         *info,
    827 						      const char        *symlink_target);
    828 void              g_file_info_set_sort_order         (GFileInfo         *info,
    829 						      gint32             sort_order);
    830 
    831 GFileAttributeMatcher *g_file_attribute_matcher_new            (const char            *attributes);
    832 GFileAttributeMatcher *g_file_attribute_matcher_ref            (GFileAttributeMatcher *matcher);
    833 void                   g_file_attribute_matcher_unref          (GFileAttributeMatcher *matcher);
    834 gboolean               g_file_attribute_matcher_matches        (GFileAttributeMatcher *matcher,
    835 								const char            *attribute);
    836 gboolean               g_file_attribute_matcher_matches_only   (GFileAttributeMatcher *matcher,
    837 								const char            *attribute);
    838 gboolean               g_file_attribute_matcher_enumerate_namespace (GFileAttributeMatcher *matcher,
    839 								     const char            *ns);
    840 const char *           g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher);
    841 
    842 G_END_DECLS
    843 
    844 #endif /* __G_FILE_INFO_H__ */
    845