Change LGPL-2.1+ to LGPL-2.1-or-later
[platform/upstream/glib.git] / gio / gfileinfo.h
1 /* GIO - GLib Input, Output and Streaming Library
2  *
3  * Copyright (C) 2006-2007 Red Hat, Inc.
4  *
5  * SPDX-License-Identifier: LGPL-2.1-or-later
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General
18  * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
19  *
20  * Author: Alexander Larsson <alexl@redhat.com>
21  */
22
23 #ifndef __G_FILE_INFO_H__
24 #define __G_FILE_INFO_H__
25
26 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
27 #error "Only <gio/gio.h> can be included directly."
28 #endif
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  *
55  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
56  *
57  * The value for this key should contain a #GFileType.
58  **/
59 #define G_FILE_ATTRIBUTE_STANDARD_TYPE "standard::type"                     /* uint32 (GFileType) */
60
61 /**
62  * G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN:
63  *
64  * A key in the "standard" namespace for checking if a file is hidden.
65  *
66  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
67  **/
68 #define G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN "standard::is-hidden"           /* boolean */
69
70 /**
71  * G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP:
72  *
73  * A key in the "standard" namespace for checking if a file is a backup file.
74  *
75  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
76  **/
77 #define G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP "standard::is-backup"           /* boolean */
78
79 /**
80  * G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK:
81  *
82  * A key in the "standard" namespace for checking if the file is a symlink.
83  * Typically the actual type is something else, if we followed the symlink
84  * to get the type.
85  *
86  * On Windows NTFS mountpoints are considered to be symlinks as well.
87  *
88  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
89  **/
90 #define G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "standard::is-symlink"         /* boolean */
91
92 /**
93  * G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL:
94  *
95  * A key in the "standard" namespace for checking if a file is virtual.
96  *
97  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
98  **/
99 #define G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL "standard::is-virtual"         /* boolean */
100
101 /**
102  * G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE:
103  *
104  * A key in the "standard" namespace for checking if a file is
105  * volatile. This is meant for opaque, non-POSIX-like backends to
106  * indicate that the URI is not persistent. Applications should look
107  * at %G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET for the persistent URI.
108  *
109  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
110  *
111  * Since: 2.46
112  **/
113 #define G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE "standard::is-volatile"      /* boolean */
114
115 /**
116  * G_FILE_ATTRIBUTE_STANDARD_NAME:
117  *
118  * A key in the "standard" namespace for getting the name of the file.
119  *
120  * The name is the on-disk filename which may not be in any known encoding,
121  * and can thus not be generally displayed as is. It is guaranteed to be set on
122  * every file.
123  *
124  * Use %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME if you need to display the
125  * name in a user interface.
126  *
127  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
128  **/
129 #define G_FILE_ATTRIBUTE_STANDARD_NAME "standard::name"                     /* byte string */
130
131 /**
132  * G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME:
133  *
134  * A key in the "standard" namespace for getting the display name of the file.
135  *
136  * A display name is guaranteed to be in UTF-8 and can thus be displayed in
137  * the UI. It is guaranteed to be set on every file.
138  *
139  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
140  **/
141 #define G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "standard::display-name"     /* string */
142
143 /**
144  * G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME:
145  *
146  * A key in the "standard" namespace for edit name of the file.
147  *
148  * An edit name is similar to the display name, but it is meant to be
149  * used when you want to rename the file in the UI. The display name
150  * might contain information you don't want in the new filename (such as
151  * "(invalid unicode)" if the filename was in an invalid encoding).
152  *
153  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
154  **/
155 #define G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME "standard::edit-name"           /* string */
156
157 /**
158  * G_FILE_ATTRIBUTE_STANDARD_COPY_NAME:
159  *
160  * A key in the "standard" namespace for getting the copy name of the file.
161  *
162  * The copy name is an optional version of the name. If available it's always
163  * in UTF8, and corresponds directly to the original filename (only transcoded to
164  * UTF8). This is useful if you want to copy the file to another filesystem that
165  * might have a different encoding. If the filename is not a valid string in the
166  * encoding selected for the filesystem it is in then the copy name will not be set.
167  *
168  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
169  **/
170 #define G_FILE_ATTRIBUTE_STANDARD_COPY_NAME "standard::copy-name"           /* string */
171
172 /**
173  * G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION:
174  *
175  * A key in the "standard" namespace for getting the description of the file.
176  *
177  * The description is a utf8 string that describes the file, generally containing
178  * the filename, but can also contain further information. Example descriptions
179  * could be "filename (on hostname)" for a remote file or "filename (in trash)"
180  * for a file in the trash. This is useful for instance as the window title
181  * when displaying a directory or for a bookmarks menu.
182  *
183  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
184  **/
185 #define G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION "standard::description"        /* string */
186
187 /**
188  * G_FILE_ATTRIBUTE_STANDARD_ICON:
189  *
190  * A key in the "standard" namespace for getting the icon for the file.
191  *
192  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
193  *
194  * The value for this key should contain a #GIcon.
195  **/
196 #define G_FILE_ATTRIBUTE_STANDARD_ICON "standard::icon"                     /* object (GIcon) */
197
198 /**
199  * G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON:
200  *
201  * A key in the "standard" namespace for getting the symbolic icon for the file.
202  *
203  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
204  *
205  * The value for this key should contain a #GIcon.
206  *
207  * Since: 2.34
208  **/
209 #define G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON "standard::symbolic-icon"   /* object (GIcon) */
210
211 /**
212  * G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE:
213  *
214  * A key in the "standard" namespace for getting the content type of the file.
215  *
216  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
217  *
218  * The value for this key should contain a valid content type.
219  **/
220 #define G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "standard::content-type"     /* string */
221
222 /**
223  * G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE:
224  *
225  * A key in the "standard" namespace for getting the fast content type.
226  *
227  * The fast content type isn't as reliable as the regular one, as it
228  * only uses the filename to guess it, but it is faster to calculate than the
229  * regular content type.
230  *
231  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
232  *
233  **/
234 #define G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE "standard::fast-content-type" /* string */
235
236 /**
237  * G_FILE_ATTRIBUTE_STANDARD_SIZE:
238  *
239  * A key in the "standard" namespace for getting the file's size (in bytes).
240  *
241  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
242  **/
243 #define G_FILE_ATTRIBUTE_STANDARD_SIZE "standard::size"                     /* uint64 */
244
245 /**
246  * G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE:
247  *
248  * A key in the "standard" namespace for getting the amount of disk space
249  * that is consumed by the file (in bytes).
250  *
251  * This will generally be larger than the file size (due to block size
252  * overhead) but can occasionally be smaller (for example, for sparse files).
253  *
254  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
255  *
256  * Since: 2.20
257  **/
258 #define G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE "standard::allocated-size" /* uint64 */
259
260 /**
261  * G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET:
262  *
263  * A key in the "standard" namespace for getting the symlink target, if the file
264  * is a symlink.
265  *
266  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
267  **/
268 #define G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET "standard::symlink-target" /* byte string */
269
270 /**
271  * G_FILE_ATTRIBUTE_STANDARD_TARGET_URI:
272  *
273  * A key in the "standard" namespace for getting the target URI for the file, in
274  * the case of %G_FILE_TYPE_SHORTCUT or %G_FILE_TYPE_MOUNTABLE files.
275  *
276  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
277  **/
278 #define G_FILE_ATTRIBUTE_STANDARD_TARGET_URI "standard::target-uri"         /* string */
279
280 /**
281  * G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER:
282  *
283  * A key in the "standard" namespace for setting the sort order of a file.
284  *
285  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_INT32.
286  *
287  * An example use would be in file managers, which would use this key
288  * to set the order files are displayed. Files with smaller sort order
289  * should be sorted first, and files without sort order as if sort order
290  * was zero.
291  **/
292 #define G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER "standard::sort-order"         /* int32  */
293
294 /* Entity tags, used to avoid missing updates on save */
295
296 /**
297  * G_FILE_ATTRIBUTE_ETAG_VALUE:
298  *
299  * A key in the "etag" namespace for getting the value of the file's
300  * entity tag.
301  *
302  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
303  **/
304 #define G_FILE_ATTRIBUTE_ETAG_VALUE "etag::value"                 /* string */
305
306 /* File identifier, for e.g. avoiding loops when doing recursive
307  * directory scanning
308  */
309
310 /**
311  * G_FILE_ATTRIBUTE_ID_FILE:
312  *
313  * A key in the "id" namespace for getting a file identifier.
314  *
315  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
316  *
317  * An example use would be during listing files, to avoid recursive
318  * directory scanning.
319  **/
320 #define G_FILE_ATTRIBUTE_ID_FILE "id::file"                     /* string */
321
322 /**
323  * G_FILE_ATTRIBUTE_ID_FILESYSTEM:
324  *
325  * A key in the "id" namespace for getting the file system identifier.
326  *
327  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
328  *
329  * An example use would be during drag and drop to see if the source
330  * and target are on the same filesystem (default to move) or not (default
331  * to copy).
332  **/
333 #define G_FILE_ATTRIBUTE_ID_FILESYSTEM "id::filesystem"         /* string */
334
335 /* Calculated Access Rights for current user */
336
337 /**
338  * G_FILE_ATTRIBUTE_ACCESS_CAN_READ:
339  *
340  * A key in the "access" namespace for getting read privileges.
341  *
342  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
343  *
344  * This attribute will be %TRUE if the user is able to read the file.
345  **/
346 #define G_FILE_ATTRIBUTE_ACCESS_CAN_READ "access::can-read"       /* boolean */
347
348 /**
349  * G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE:
350  *
351  * A key in the "access" namespace for getting write privileges.
352  *
353  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
354  *
355  * This attribute will be %TRUE if the user is able to write to the file.
356  **/
357 #define G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE "access::can-write"     /* boolean */
358
359 /**
360  * G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE:
361  *
362  * A key in the "access" namespace for getting execution privileges.
363  *
364  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
365  *
366  * This attribute will be %TRUE if the user is able to execute the file.
367  **/
368 #define G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE "access::can-execute" /* boolean */
369
370 /**
371  * G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE:
372  *
373  * A key in the "access" namespace for checking deletion privileges.
374  *
375  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
376  *
377  * This attribute will be %TRUE if the user is able to delete the file.
378  **/
379 #define G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE "access::can-delete"   /* boolean */
380
381 /**
382  * G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH:
383  *
384  * A key in the "access" namespace for checking trashing privileges.
385  *
386  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
387  *
388  * This attribute will be %TRUE if the user is able to move the file to
389  * the trash.
390  **/
391 #define G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH "access::can-trash"     /* boolean */
392
393 /**
394  * G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME:
395  *
396  * A key in the "access" namespace for checking renaming privileges.
397  *
398  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
399  *
400  * This attribute will be %TRUE if the user is able to rename the file.
401  **/
402 #define G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME "access::can-rename"   /* boolean */
403
404 /* TODO: Should we have special version for directories? can_enumerate, etc */
405
406 /* Mountable attributes */
407
408 /**
409  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT:
410  *
411  * A key in the "mountable" namespace for checking if a file (of
412  * type G_FILE_TYPE_MOUNTABLE) is mountable.
413  *
414  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
415  **/
416 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT "mountable::can-mount"     /* boolean */
417
418 /**
419  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT:
420  *
421  * A key in the "mountable" namespace for checking if a file (of
422  * type G_FILE_TYPE_MOUNTABLE)  is unmountable.
423  *
424  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
425  **/
426 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT "mountable::can-unmount" /* boolean */
427
428 /**
429  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT:
430  *
431  * A key in the "mountable" namespace for checking if a file (of
432  * type G_FILE_TYPE_MOUNTABLE) can be ejected.
433  *
434  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
435  **/
436 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT "mountable::can-eject"     /* boolean */
437
438 /**
439  * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE:
440  *
441  * A key in the "mountable" namespace for getting the unix device.
442  *
443  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
444  **/
445 #define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE "mountable::unix-device" /* uint32 */
446
447 /**
448  * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE:
449  *
450  * A key in the "mountable" namespace for getting the unix device file.
451  *
452  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
453  *
454  * Since: 2.22
455  **/
456 #define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE "mountable::unix-device-file" /* string */
457
458 /**
459  * G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI:
460  *
461  * A key in the "mountable" namespace for getting the HAL UDI for the mountable
462  * file.
463  *
464  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
465  **/
466 #define G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI "mountable::hal-udi"         /* string */
467
468 /**
469  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START:
470  *
471  * A key in the "mountable" namespace for checking if a file (of
472  * type G_FILE_TYPE_MOUNTABLE) can be started.
473  *
474  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
475  *
476  * Since: 2.22
477  */
478 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START "mountable::can-start"     /* boolean */
479
480 /**
481  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED:
482  *
483  * A key in the "mountable" namespace for checking if a file (of
484  * type G_FILE_TYPE_MOUNTABLE) can be started degraded.
485  *
486  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
487  *
488  * Since: 2.22
489  */
490 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED "mountable::can-start-degraded"     /* boolean */
491
492 /**
493  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP:
494  *
495  * A key in the "mountable" namespace for checking if a file (of
496  * type G_FILE_TYPE_MOUNTABLE) can be stopped.
497  *
498  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
499  *
500  * Since: 2.22
501  */
502 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP "mountable::can-stop"      /* boolean */
503
504 /**
505  * G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE:
506  *
507  * A key in the "mountable" namespace for getting the #GDriveStartStopType.
508  *
509  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
510  *
511  * Since: 2.22
512  */
513 #define G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE "mountable::start-stop-type" /* uint32 (GDriveStartStopType) */
514
515 /**
516  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL:
517  *
518  * A key in the "mountable" namespace for checking if a file (of
519  * type G_FILE_TYPE_MOUNTABLE) can be polled.
520  *
521  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
522  *
523  * Since: 2.22
524  */
525 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL "mountable::can-poll"      /* boolean */
526
527 /**
528  * G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC:
529  *
530  * A key in the "mountable" namespace for checking if a file (of
531  * type G_FILE_TYPE_MOUNTABLE) is automatically polled for media.
532  *
533  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
534  *
535  * Since: 2.22
536  */
537 #define G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC "mountable::is-media-check-automatic"      /* boolean */
538
539 /* Time attributes */
540
541 /**
542  * G_FILE_ATTRIBUTE_TIME_MODIFIED:
543  *
544  * A key in the "time" namespace for getting the time the file was last
545  * modified.
546  *
547  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64, and
548  * contains the time since the file was modified, in seconds since the UNIX
549  * epoch.
550  **/
551 #define G_FILE_ATTRIBUTE_TIME_MODIFIED "time::modified"           /* uint64 */
552
553 /**
554  * G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC:
555  *
556  * A key in the "time" namespace for getting the microseconds of the time
557  * the file was last modified.
558  *
559  * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_MODIFIED.
560  *
561  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
562  **/
563 #define G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC "time::modified-usec" /* uint32 */
564
565 /**
566  * G_FILE_ATTRIBUTE_TIME_MODIFIED_NSEC:
567  *
568  * A key in the "time" namespace for getting the nanoseconds of the time
569  * the file was last modified. This should be used in conjunction with
570  * #G_FILE_ATTRIBUTE_TIME_MODIFIED. Corresponding #GFileAttributeType is
571  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
572  *
573  * Since: 2.74
574  **/
575 #define G_FILE_ATTRIBUTE_TIME_MODIFIED_NSEC "time::modified-nsec" /* uint32 */
576
577 /**
578  * G_FILE_ATTRIBUTE_TIME_ACCESS:
579  *
580  * A key in the "time" namespace for getting the time the file was last
581  * accessed.
582  *
583  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64, and
584  * contains the time since the file was last accessed, in seconds since the
585  * UNIX epoch.
586  **/
587 #define G_FILE_ATTRIBUTE_TIME_ACCESS "time::access"               /* uint64 */
588
589 /**
590  * G_FILE_ATTRIBUTE_TIME_ACCESS_USEC:
591  *
592  * A key in the "time" namespace for getting the microseconds of the time
593  * the file was last accessed.
594  *
595  * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_ACCESS.
596  *
597  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
598  **/
599 #define G_FILE_ATTRIBUTE_TIME_ACCESS_USEC "time::access-usec"     /* uint32 */
600
601 /**
602  * G_FILE_ATTRIBUTE_TIME_ACCESS_NSEC:
603  *
604  * A key in the "time" namespace for getting the nanoseconds of the time
605  * the file was last accessed. This should be used in conjunction with
606  * #G_FILE_ATTRIBUTE_TIME_ACCESS. Corresponding #GFileAttributeType is
607  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
608  *
609  * Since: 2.74
610  **/
611 #define G_FILE_ATTRIBUTE_TIME_ACCESS_NSEC "time::access-nsec"     /* uint32 */
612
613 /**
614  * G_FILE_ATTRIBUTE_TIME_CHANGED:
615  *
616  * A key in the "time" namespace for getting the time the file was last
617  * changed.
618  *
619  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
620  * and contains the time since the file was last changed, in seconds since
621  * the UNIX epoch.
622  *
623  * This corresponds to the traditional UNIX ctime.
624  **/
625 #define G_FILE_ATTRIBUTE_TIME_CHANGED "time::changed"             /* uint64 */
626
627 /**
628  * G_FILE_ATTRIBUTE_TIME_CHANGED_USEC:
629  *
630  * A key in the "time" namespace for getting the microseconds of the time
631  * the file was last changed.
632  *
633  * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_CHANGED.
634  *
635  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
636  **/
637 #define G_FILE_ATTRIBUTE_TIME_CHANGED_USEC "time::changed-usec"   /* uint32 */
638
639 /**
640  * G_FILE_ATTRIBUTE_TIME_CHANGED_NSEC:
641  *
642  * A key in the "time" namespace for getting the nanoseconds of the time
643  * the file was last changed. This should be used in conjunction with
644  * #G_FILE_ATTRIBUTE_TIME_CHANGED. Corresponding #GFileAttributeType is
645  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
646  *
647  * Since: 2.74
648  **/
649 #define G_FILE_ATTRIBUTE_TIME_CHANGED_NSEC "time::changed-nsec"   /* uint32 */
650
651 /**
652  * G_FILE_ATTRIBUTE_TIME_CREATED:
653  *
654  * A key in the "time" namespace for getting the time the file was created.
655  *
656  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
657  * and contains the time since the file was created, in seconds since the UNIX
658  * epoch.
659  *
660  * This may correspond to Linux `stx_btime`, FreeBSD `st_birthtim`, NetBSD
661  * `st_birthtime` or NTFS `ctime`.
662  **/
663 #define G_FILE_ATTRIBUTE_TIME_CREATED "time::created"             /* uint64 */
664
665 /**
666  * G_FILE_ATTRIBUTE_TIME_CREATED_USEC:
667  *
668  * A key in the "time" namespace for getting the microseconds of the time
669  * the file was created.
670  *
671  * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_CREATED.
672  *
673  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
674  **/
675 #define G_FILE_ATTRIBUTE_TIME_CREATED_USEC "time::created-usec"   /* uint32 */
676
677 /**
678  * G_FILE_ATTRIBUTE_TIME_CREATED_NSEC:
679  *
680  * A key in the "time" namespace for getting the nanoseconds of the time
681  * the file was created. This should be used in conjunction with
682  * #G_FILE_ATTRIBUTE_TIME_CREATED. Corresponding #GFileAttributeType is
683  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
684  *
685  * Since: 2.74
686  **/
687 #define G_FILE_ATTRIBUTE_TIME_CREATED_NSEC "time::created-nsec"   /* uint32 */
688
689 /* Unix specific attributes */
690
691 /**
692  * G_FILE_ATTRIBUTE_UNIX_DEVICE:
693  *
694  * A key in the "unix" namespace for getting the device id of the device the
695  * file is located on (see stat() documentation).
696  *
697  * This attribute is only available for UNIX file systems.
698  *
699  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
700  **/
701 #define G_FILE_ATTRIBUTE_UNIX_DEVICE "unix::device"               /* uint32 */
702
703 /**
704  * G_FILE_ATTRIBUTE_UNIX_INODE:
705  *
706  * A key in the "unix" namespace for getting the inode of the file.
707  *
708  * This attribute is only available for UNIX file systems.
709  *
710  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
711  **/
712 #define G_FILE_ATTRIBUTE_UNIX_INODE "unix::inode"                 /* uint64 */
713
714 /**
715  * G_FILE_ATTRIBUTE_UNIX_MODE:
716  *
717  * A key in the "unix" namespace for getting the mode of the file
718  * (e.g. whether the file is a regular file, symlink, etc).
719  *
720  * See the documentation for `lstat()`: this attribute is equivalent to
721  * the `st_mode` member of `struct stat`, and includes both the file type
722  * and permissions.
723  *
724  * This attribute is only available for UNIX file systems.
725  *
726  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
727  **/
728 #define G_FILE_ATTRIBUTE_UNIX_MODE "unix::mode"                   /* uint32 */
729
730 /**
731  * G_FILE_ATTRIBUTE_UNIX_NLINK:
732  *
733  * A key in the "unix" namespace for getting the number of hard links
734  * for a file.
735  *
736  * See the documentation for `lstat()`.
737  *
738  * This attribute is only available for UNIX file systems.
739  *
740  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
741  **/
742 #define G_FILE_ATTRIBUTE_UNIX_NLINK "unix::nlink"                 /* uint32 */
743
744 /**
745  * G_FILE_ATTRIBUTE_UNIX_UID:
746  *
747  * A key in the "unix" namespace for getting the user ID for the file.
748  *
749  * This attribute is only available for UNIX file systems.
750  *
751  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
752  **/
753 #define G_FILE_ATTRIBUTE_UNIX_UID "unix::uid"                     /* uint32 */
754
755 /**
756  * G_FILE_ATTRIBUTE_UNIX_GID:
757  *
758  * A key in the "unix" namespace for getting the group ID for the file.
759  *
760  * This attribute is only available for UNIX file systems.
761  *
762  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
763  **/
764 #define G_FILE_ATTRIBUTE_UNIX_GID "unix::gid"                     /* uint32 */
765
766 /**
767  * G_FILE_ATTRIBUTE_UNIX_RDEV:
768  *
769  * A key in the "unix" namespace for getting the device ID for the file
770  * (if it is a special file).
771  *
772  * See the documentation for `lstat()`.
773  *
774  * This attribute is only available for UNIX file systems.
775  *
776  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
777  **/
778 #define G_FILE_ATTRIBUTE_UNIX_RDEV "unix::rdev"                   /* uint32 */
779
780 /**
781  * G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE:
782  *
783  * A key in the "unix" namespace for getting the block size for the file
784  * system.
785  *
786  * This attribute is only available for UNIX file systems.
787  *
788  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
789  **/
790 #define G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE "unix::block-size"       /* uint32 */
791
792 /**
793  * G_FILE_ATTRIBUTE_UNIX_BLOCKS:
794  *
795  * A key in the "unix" namespace for getting the number of blocks allocated
796  * for the file.
797  *
798  * This attribute is only available for UNIX file systems.
799  *
800  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
801  **/
802 #define G_FILE_ATTRIBUTE_UNIX_BLOCKS "unix::blocks"               /* uint64 */
803
804 /**
805  * G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT:
806  *
807  * A key in the "unix" namespace for checking if the file represents a
808  * UNIX mount point.
809  *
810  * This attribute is %TRUE if the file is a UNIX mount point.
811  *
812  * Since 2.58, `/` is considered to be a mount point.
813  *
814  * This attribute is only available for UNIX file systems.
815  *
816  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
817  **/
818 #define G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT "unix::is-mountpoint" /* boolean */
819
820 /* DOS specific attributes */
821
822 /**
823  * G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE:
824  *
825  * A key in the "dos" namespace for checking if the file's archive flag
826  * is set.
827  *
828  * This attribute is %TRUE if the archive flag is set.
829  *
830  * This attribute is only available for DOS file systems.
831  *
832  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
833  **/
834 #define G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE "dos::is-archive"         /* boolean */
835
836 /**
837  * G_FILE_ATTRIBUTE_DOS_IS_SYSTEM:
838  *
839  * A key in the "dos" namespace for checking if the file's backup flag
840  * is set.
841  *
842  * This attribute is %TRUE if the backup flag is set.
843  *
844  * This attribute is only available for DOS file systems.
845  *
846  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
847  **/
848 #define G_FILE_ATTRIBUTE_DOS_IS_SYSTEM "dos::is-system"           /* boolean */
849
850 /**
851  * G_FILE_ATTRIBUTE_DOS_IS_MOUNTPOINT:
852  *
853  * A key in the "dos" namespace for checking if the file is a NTFS mount point
854  * (a volume mount or a junction point).
855  *
856  * This attribute is %TRUE if file is a reparse point of type
857  * [IO_REPARSE_TAG_MOUNT_POINT](https://msdn.microsoft.com/en-us/library/dd541667.aspx).
858  *
859  * This attribute is only available for DOS file systems.
860  *
861  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
862  *
863  * Since: 2.60
864  **/
865 #define G_FILE_ATTRIBUTE_DOS_IS_MOUNTPOINT "dos::is-mountpoint"   /* boolean */
866
867 /**
868  * G_FILE_ATTRIBUTE_DOS_REPARSE_POINT_TAG:
869  *
870  * A key in the "dos" namespace for getting the file NTFS reparse tag.
871  *
872  * This value is 0 for files that are not reparse points.
873  *
874  * See the [Reparse Tags](https://msdn.microsoft.com/en-us/library/dd541667.aspx)
875  * page for possible reparse tag values.
876  *
877  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
878  *
879  * Since: 2.60
880  **/
881 #define G_FILE_ATTRIBUTE_DOS_REPARSE_POINT_TAG "dos::reparse-point-tag"   /* uint32 */
882
883 /* Owner attributes */
884
885 /**
886  * G_FILE_ATTRIBUTE_OWNER_USER:
887  *
888  * A key in the "owner" namespace for getting the user name of the
889  * file's owner.
890  *
891  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
892  **/
893 #define G_FILE_ATTRIBUTE_OWNER_USER "owner::user"                 /* string */
894
895 /**
896  * G_FILE_ATTRIBUTE_OWNER_USER_REAL:
897  *
898  * A key in the "owner" namespace for getting the real name of the
899  * user that owns the file.
900  *
901  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
902  **/
903 #define G_FILE_ATTRIBUTE_OWNER_USER_REAL "owner::user-real"       /* string */
904
905 /**
906  * G_FILE_ATTRIBUTE_OWNER_GROUP:
907  *
908  * A key in the "owner" namespace for getting the file owner's group.
909  *
910  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
911  **/
912 #define G_FILE_ATTRIBUTE_OWNER_GROUP "owner::group"               /* string */
913
914 /* Thumbnails */
915
916 /**
917  * G_FILE_ATTRIBUTE_THUMBNAIL_PATH:
918  *
919  * A key in the "thumbnail" namespace for getting the path to the thumbnail
920  * image with the biggest size available.
921  *
922  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
923  **/
924 #define G_FILE_ATTRIBUTE_THUMBNAIL_PATH "thumbnail::path"         /* bytestring */
925 /**
926  * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED:
927  *
928  * A key in the "thumbnail" namespace for checking if thumbnailing failed.
929  *
930  * This attribute is %TRUE if thumbnailing failed.
931  *
932  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
933  **/
934 #define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED "thumbnail::failed"         /* boolean */
935 /**
936  * G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID:
937  *
938  * A key in the "thumbnail" namespace for checking whether the thumbnail is outdated.
939  *
940  * This attribute is %TRUE if the thumbnail is up-to-date with the file it represents,
941  * and %FALSE if the file has been modified since the thumbnail was generated.
942  *
943  * If %G_FILE_ATTRIBUTE_THUMBNAILING_FAILED is %TRUE and this attribute is %FALSE,
944  * it indicates that thumbnailing may be attempted again and may succeed.
945  *
946  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
947  *
948  * Since: 2.40
949  */
950 #define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID "thumbnail::is-valid"        /* boolean */
951
952 /**
953  * G_FILE_ATTRIBUTE_THUMBNAIL_PATH_NORMAL:
954  *
955  * A key in the "thumbnail" namespace for getting the path to the normal
956  * thumbnail image.
957  *
958  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
959  *
960  * Since: 2.76
961  */
962 #define G_FILE_ATTRIBUTE_THUMBNAIL_PATH_NORMAL "thumbnail::path-normal"  /* bytestring */
963 /**
964  * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_NORMAL:
965  *
966  * A key in the "thumbnail" namespace for checking if thumbnailing failed
967  * for the normal image.
968  *
969  * This attribute is %TRUE if thumbnailing failed.
970  *
971  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
972  *
973  * Since: 2.76
974  */
975 #define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_NORMAL "thumbnail::failed-normal"  /* boolean */
976 /**
977  * G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_NORMAL:
978  *
979  * A key in the "thumbnail" namespace for checking whether the normal
980  * thumbnail is outdated.
981  *
982  * This attribute is %TRUE if the normal thumbnail is up-to-date with the file
983  * it represents, and %FALSE if the file has been modified since the thumbnail
984  * was generated.
985  *
986  * If %G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_NORMAL is %TRUE and this attribute
987  * is %FALSE, it indicates that thumbnailing may be attempted again and may
988  * succeed.
989  *
990  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
991  *
992  * Since: 2.76
993  */
994 #define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_NORMAL "thumbnail::is-valid-normal"  /* boolean */
995
996 /**
997  * G_FILE_ATTRIBUTE_THUMBNAIL_PATH_LARGE:
998  *
999  * A key in the "thumbnail" namespace for getting the path to the large
1000  * thumbnail image.
1001  *
1002  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
1003  *
1004  * Since: 2.76
1005  */
1006 #define G_FILE_ATTRIBUTE_THUMBNAIL_PATH_LARGE "thumbnail::path-large"  /* bytestring */
1007 /**
1008  * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_LARGE:
1009  *
1010  * A key in the "thumbnail" namespace for checking if thumbnailing failed
1011  * for the large image.
1012  *
1013  * This attribute is %TRUE if thumbnailing failed.
1014  *
1015  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1016  *
1017  * Since: 2.76
1018  */
1019 #define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_LARGE "thumbnail::failed-large"  /* boolean */
1020 /**
1021  * G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_LARGE:
1022  *
1023  * A key in the "thumbnail" namespace for checking whether the large
1024  * thumbnail is outdated.
1025  *
1026  * This attribute is %TRUE if the large thumbnail is up-to-date with the file
1027  * it represents, and %FALSE if the file has been modified since the thumbnail
1028  * was generated.
1029  *
1030  * If %G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_LARGE is %TRUE and this attribute
1031  * is %FALSE, it indicates that thumbnailing may be attempted again and may
1032  * succeed.
1033  *
1034  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1035  *
1036  * Since: 2.76
1037  */
1038 #define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_LARGE "thumbnail::is-valid-large" /* boolean */
1039
1040 /**
1041  * G_FILE_ATTRIBUTE_THUMBNAIL_PATH_XLARGE:
1042  *
1043  * A key in the "thumbnail" namespace for getting the path to the x-large
1044  * thumbnail image.
1045  *
1046  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
1047  *
1048  * Since: 2.76
1049  */
1050 #define G_FILE_ATTRIBUTE_THUMBNAIL_PATH_XLARGE "thumbnail::path-xlarge"  /* bytestring */
1051 /**
1052  * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_XLARGE:
1053  *
1054  * A key in the "thumbnail" namespace for checking if thumbnailing failed
1055  * for the x-large image.
1056  *
1057  * This attribute is %TRUE if thumbnailing failed.
1058  *
1059  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1060  *
1061  * Since: 2.76
1062  */
1063 #define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_XLARGE "thumbnail::failed-xlarge"  /* boolean */
1064 /**
1065  * G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_XLARGE:
1066  *
1067  * A key in the "thumbnail" namespace for checking whether the x-large
1068  * thumbnail is outdated.
1069  *
1070  * This attribute is %TRUE if the x-large thumbnail is up-to-date with the file
1071  * it represents, and %FALSE if the file has been modified since the thumbnail
1072  * was generated.
1073  *
1074  * If %G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_XLARGE is %TRUE and this attribute
1075  * is %FALSE, it indicates that thumbnailing may be attempted again and may
1076  * succeed.
1077  *
1078  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1079  *
1080  * Since: 2.76
1081  */
1082 #define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_XLARGE "thumbnail::is-valid-xlarge"  /* boolean */
1083
1084 /**
1085  * G_FILE_ATTRIBUTE_THUMBNAIL_PATH_XXLARGE:
1086  *
1087  * A key in the "thumbnail" namespace for getting the path to the xx-large
1088  * thumbnail image.
1089  *
1090  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
1091  *
1092  * Since: 2.76
1093  */
1094 #define G_FILE_ATTRIBUTE_THUMBNAIL_PATH_XXLARGE "thumbnail::path-xxlarge"  /* bytestring */
1095 /**
1096  * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_XXLARGE:
1097  *
1098  * A key in the "thumbnail" namespace for checking if thumbnailing failed
1099  * for the xx-large image.
1100  *
1101  * This attribute is %TRUE if thumbnailing failed.
1102  *
1103  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1104  *
1105  * Since: 2.76
1106  */
1107 #define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_XXLARGE "thumbnail::failed-xxlarge"  /* boolean */
1108 /**
1109  * G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_XXLARGE:
1110  *
1111  * A key in the "thumbnail" namespace for checking whether the xx-large
1112  * thumbnail is outdated.
1113  *
1114  * This attribute is %TRUE if the x-large thumbnail is up-to-date with the file
1115  * it represents, and %FALSE if the file has been modified since the thumbnail
1116  * was generated.
1117  *
1118  * If %G_FILE_ATTRIBUTE_THUMBNAILING_FAILED_XXLARGE is %TRUE and this attribute
1119  * is %FALSE, it indicates that thumbnailing may be attempted again and may
1120  * succeed.
1121  *
1122  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1123  *
1124  * Since: 2.76
1125  */
1126 #define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_XXLARGE "thumbnail::is-valid-xxlarge"  /* boolean */
1127
1128 /* Preview */
1129
1130 /**
1131  * G_FILE_ATTRIBUTE_PREVIEW_ICON:
1132  *
1133  * A key in the "preview" namespace for getting a #GIcon that can be
1134  * used to get preview of the file.
1135  *
1136  * For example, it may be a low resolution thumbnail without metadata.
1137  *
1138  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
1139  *
1140  * The value for this key should contain a #GIcon.
1141  *
1142  * Since: 2.20
1143  **/
1144 #define G_FILE_ATTRIBUTE_PREVIEW_ICON "preview::icon"         /* object (GIcon) */
1145
1146 /* File system info (for g_file_get_filesystem_info) */
1147
1148 /**
1149  * G_FILE_ATTRIBUTE_FILESYSTEM_SIZE:
1150  *
1151  * A key in the "filesystem" namespace for getting the total size (in
1152  * bytes) of the file system, used in g_file_query_filesystem_info().
1153  *
1154  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
1155  **/
1156 #define G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "filesystem::size"                       /* uint64 */
1157
1158 /**
1159  * G_FILE_ATTRIBUTE_FILESYSTEM_FREE:
1160  *
1161  * A key in the "filesystem" namespace for getting the number of bytes
1162  * of free space left on the file system.
1163  *
1164  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
1165  **/
1166 #define G_FILE_ATTRIBUTE_FILESYSTEM_FREE "filesystem::free"                       /* uint64 */
1167
1168 /**
1169  * G_FILE_ATTRIBUTE_FILESYSTEM_USED:
1170  *
1171  * A key in the "filesystem" namespace for getting the number of bytes
1172  * used by data on the file system.
1173  *
1174  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
1175  *
1176  * Since: 2.32
1177  */
1178 #define G_FILE_ATTRIBUTE_FILESYSTEM_USED "filesystem::used"                       /* uint64 */
1179
1180 /**
1181  * G_FILE_ATTRIBUTE_FILESYSTEM_TYPE:
1182  *
1183  * A key in the "filesystem" namespace for getting the file system's type.
1184  *
1185  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
1186  **/
1187 #define G_FILE_ATTRIBUTE_FILESYSTEM_TYPE "filesystem::type"                       /* string */
1188
1189 /**
1190  * G_FILE_ATTRIBUTE_FILESYSTEM_READONLY:
1191  *
1192  * A key in the "filesystem" namespace for checking if the file system
1193  * is read only.
1194  *
1195  * Is set to %TRUE if the file system is read only.
1196  *
1197  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1198  **/
1199 #define G_FILE_ATTRIBUTE_FILESYSTEM_READONLY "filesystem::readonly"               /* boolean */
1200
1201 /**
1202  * G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW:
1203  *
1204  * A key in the "filesystem" namespace for hinting a file manager
1205  * application whether it should preview (e.g. thumbnail) files on the
1206  * file system.
1207  *
1208  * The value for this key contain a #GFilesystemPreviewType.
1209  **/
1210 #define G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW "filesystem::use-preview"        /* uint32 (GFilesystemPreviewType) */
1211
1212 /**
1213  * G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE:
1214  *
1215  * A key in the "filesystem" namespace for checking if the file system
1216  * is remote.
1217  *
1218  * Is set to %TRUE if the file system is remote.
1219  *
1220  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
1221  **/
1222 #define G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE "filesystem::remote"                   /* boolean */
1223
1224 /**
1225  * G_FILE_ATTRIBUTE_GVFS_BACKEND:
1226  *
1227  * A key in the "gvfs" namespace that gets the name of the current
1228  * GVFS backend in use.
1229  *
1230  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
1231  **/
1232 #define G_FILE_ATTRIBUTE_GVFS_BACKEND "gvfs::backend"             /* string */
1233
1234 /**
1235  * G_FILE_ATTRIBUTE_SELINUX_CONTEXT:
1236  *
1237  * A key in the "selinux" namespace for getting the file's SELinux
1238  * context.
1239  *
1240  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
1241  *
1242  * Note that this attribute is only available if GLib has been built
1243  * with SELinux support.
1244  **/
1245 #define G_FILE_ATTRIBUTE_SELINUX_CONTEXT "selinux::context"       /* string */
1246
1247 /**
1248  * G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT:
1249  *
1250  * A key in the "trash" namespace for getting the number of (toplevel) items
1251  * that are present in the `trash:///` folder.
1252  *
1253  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
1254  **/
1255 #define G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT "trash::item-count"     /* uint32 */
1256
1257 /**
1258  * G_FILE_ATTRIBUTE_TRASH_ORIG_PATH:
1259  *
1260  * A key in the "trash" namespace for getting the original path of a file
1261  * inside the `trash:///` folder before it was trashed.
1262  *
1263  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
1264  *
1265  * Since: 2.24
1266  **/
1267 #define G_FILE_ATTRIBUTE_TRASH_ORIG_PATH "trash::orig-path"     /* byte string */
1268
1269 /**
1270  * G_FILE_ATTRIBUTE_TRASH_DELETION_DATE:
1271  *
1272  * A key in the "trash" namespace for getting the deletion date and time
1273  * of a file inside the `trash:///` folder.
1274  *
1275  * The format of the returned string is `YYYY-MM-DDThh:mm:ss`.
1276  *
1277  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
1278  *
1279  * Since: 2.24
1280  **/
1281 #define G_FILE_ATTRIBUTE_TRASH_DELETION_DATE "trash::deletion-date"  /* string */
1282
1283 /**
1284  * G_FILE_ATTRIBUTE_RECENT_MODIFIED:
1285  *
1286  * A key in the "recent" namespace for getting time, when the metadata for the
1287  * file in `recent:///` was last changed.
1288  *
1289  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_INT64.
1290  *
1291  * Since: 2.52
1292  **/
1293 #define G_FILE_ATTRIBUTE_RECENT_MODIFIED "recent::modified"          /* int64 (time_t) */
1294
1295 GIO_AVAILABLE_IN_ALL
1296 GType              g_file_info_get_type                  (void) G_GNUC_CONST;
1297
1298 GIO_AVAILABLE_IN_ALL
1299 GFileInfo *        g_file_info_new                       (void);
1300 GIO_AVAILABLE_IN_ALL
1301 GFileInfo *        g_file_info_dup                       (GFileInfo  *other);
1302 GIO_AVAILABLE_IN_ALL
1303 void               g_file_info_copy_into                 (GFileInfo  *src_info,
1304                                                           GFileInfo  *dest_info);
1305 GIO_AVAILABLE_IN_ALL
1306 gboolean           g_file_info_has_attribute             (GFileInfo  *info,
1307                                                           const char *attribute);
1308 GIO_AVAILABLE_IN_ALL
1309 gboolean           g_file_info_has_namespace             (GFileInfo  *info,
1310                                                           const char *name_space);
1311 GIO_AVAILABLE_IN_ALL
1312 char **            g_file_info_list_attributes           (GFileInfo  *info,
1313                                                           const char *name_space);
1314 GIO_AVAILABLE_IN_ALL
1315 gboolean           g_file_info_get_attribute_data        (GFileInfo  *info,
1316                                                           const char *attribute,
1317                                                           GFileAttributeType *type,
1318                                                           gpointer   *value_pp,
1319                                                           GFileAttributeStatus *status);
1320 GIO_AVAILABLE_IN_ALL
1321 GFileAttributeType g_file_info_get_attribute_type        (GFileInfo  *info,
1322                                                           const char *attribute);
1323 GIO_AVAILABLE_IN_ALL
1324 void               g_file_info_remove_attribute          (GFileInfo  *info,
1325                                                           const char *attribute);
1326 GIO_AVAILABLE_IN_ALL
1327 GFileAttributeStatus g_file_info_get_attribute_status    (GFileInfo  *info,
1328                                                           const char *attribute);
1329 GIO_AVAILABLE_IN_ALL
1330 gboolean           g_file_info_set_attribute_status      (GFileInfo  *info,
1331                                                           const char *attribute,
1332                                                           GFileAttributeStatus status);
1333 GIO_AVAILABLE_IN_ALL
1334 char *             g_file_info_get_attribute_as_string   (GFileInfo  *info,
1335                                                           const char *attribute);
1336 GIO_AVAILABLE_IN_ALL
1337 const char *       g_file_info_get_attribute_string      (GFileInfo  *info,
1338                                                           const char *attribute);
1339 GIO_AVAILABLE_IN_ALL
1340 const char *       g_file_info_get_attribute_byte_string (GFileInfo  *info,
1341                                                           const char *attribute);
1342 GIO_AVAILABLE_IN_ALL
1343 gboolean           g_file_info_get_attribute_boolean     (GFileInfo  *info,
1344                                                           const char *attribute);
1345 GIO_AVAILABLE_IN_ALL
1346 guint32            g_file_info_get_attribute_uint32      (GFileInfo  *info,
1347                                                           const char *attribute);
1348 GIO_AVAILABLE_IN_ALL
1349 gint32             g_file_info_get_attribute_int32       (GFileInfo  *info,
1350                                                           const char *attribute);
1351 GIO_AVAILABLE_IN_ALL
1352 guint64            g_file_info_get_attribute_uint64      (GFileInfo  *info,
1353                                                           const char *attribute);
1354 GIO_AVAILABLE_IN_ALL
1355 gint64             g_file_info_get_attribute_int64       (GFileInfo  *info,
1356                                                           const char *attribute);
1357 GIO_AVAILABLE_IN_ALL
1358 GObject *          g_file_info_get_attribute_object      (GFileInfo  *info,
1359                                                           const char *attribute);
1360 GIO_AVAILABLE_IN_ALL
1361 char **            g_file_info_get_attribute_stringv     (GFileInfo  *info,
1362                                                           const char *attribute);
1363 GIO_AVAILABLE_IN_2_78
1364 const char *       g_file_info_get_attribute_file_path   (GFileInfo  *info,
1365                                                           const char *attribute);
1366
1367 GIO_AVAILABLE_IN_ALL
1368 void               g_file_info_set_attribute             (GFileInfo  *info,
1369                                                           const char *attribute,
1370                                                           GFileAttributeType type,
1371                                                           gpointer    value_p);
1372 GIO_AVAILABLE_IN_ALL
1373 void               g_file_info_set_attribute_string      (GFileInfo  *info,
1374                                                           const char *attribute,
1375                                                           const char *attr_value);
1376 GIO_AVAILABLE_IN_ALL
1377 void               g_file_info_set_attribute_byte_string (GFileInfo  *info,
1378                                                           const char *attribute,
1379                                                           const char *attr_value);
1380 GIO_AVAILABLE_IN_ALL
1381 void               g_file_info_set_attribute_boolean     (GFileInfo  *info,
1382                                                           const char *attribute,
1383                                                           gboolean    attr_value);
1384 GIO_AVAILABLE_IN_ALL
1385 void               g_file_info_set_attribute_uint32      (GFileInfo  *info,
1386                                                           const char *attribute,
1387                                                           guint32     attr_value);
1388 GIO_AVAILABLE_IN_ALL
1389 void               g_file_info_set_attribute_int32       (GFileInfo  *info,
1390                                                           const char *attribute,
1391                                                           gint32      attr_value);
1392 GIO_AVAILABLE_IN_ALL
1393 void               g_file_info_set_attribute_uint64      (GFileInfo  *info,
1394                                                           const char *attribute,
1395                                                           guint64     attr_value);
1396 GIO_AVAILABLE_IN_ALL
1397 void               g_file_info_set_attribute_int64       (GFileInfo  *info,
1398                                                           const char *attribute,
1399                                                           gint64      attr_value);
1400 GIO_AVAILABLE_IN_ALL
1401 void               g_file_info_set_attribute_object      (GFileInfo  *info,
1402                                                           const char *attribute,
1403                                                           GObject    *attr_value);
1404 GIO_AVAILABLE_IN_ALL
1405 void               g_file_info_set_attribute_stringv     (GFileInfo  *info,
1406                                                           const char *attribute,
1407                                                           char      **attr_value);
1408 GIO_AVAILABLE_IN_2_78
1409 void               g_file_info_set_attribute_file_path   (GFileInfo  *info,
1410                                                           const char *attribute,
1411                                                           const char *attr_value);
1412
1413 GIO_AVAILABLE_IN_ALL
1414 void               g_file_info_clear_status              (GFileInfo  *info);
1415
1416 /* Helper getters: */
1417 GIO_AVAILABLE_IN_2_36
1418 GDateTime *       g_file_info_get_deletion_date      (GFileInfo         *info);
1419 GIO_AVAILABLE_IN_ALL
1420 GFileType         g_file_info_get_file_type          (GFileInfo         *info);
1421 GIO_AVAILABLE_IN_ALL
1422 gboolean          g_file_info_get_is_hidden          (GFileInfo         *info);
1423 GIO_AVAILABLE_IN_ALL
1424 gboolean          g_file_info_get_is_backup          (GFileInfo         *info);
1425 GIO_AVAILABLE_IN_ALL
1426 gboolean          g_file_info_get_is_symlink         (GFileInfo         *info);
1427 GIO_AVAILABLE_IN_ALL
1428 const char *      g_file_info_get_name               (GFileInfo         *info);
1429 GIO_AVAILABLE_IN_ALL
1430 const char *      g_file_info_get_display_name       (GFileInfo         *info);
1431 GIO_AVAILABLE_IN_ALL
1432 const char *      g_file_info_get_edit_name          (GFileInfo         *info);
1433 GIO_AVAILABLE_IN_ALL
1434 GIcon *           g_file_info_get_icon               (GFileInfo         *info);
1435 GIO_AVAILABLE_IN_ALL
1436 GIcon *           g_file_info_get_symbolic_icon      (GFileInfo         *info);
1437 GIO_AVAILABLE_IN_ALL
1438 const char *      g_file_info_get_content_type       (GFileInfo         *info);
1439 GIO_AVAILABLE_IN_ALL
1440 goffset           g_file_info_get_size               (GFileInfo         *info);
1441 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1442 GIO_DEPRECATED_IN_2_62_FOR(g_file_info_get_modification_date_time)
1443 void              g_file_info_get_modification_time  (GFileInfo         *info,
1444                                                       GTimeVal          *result);
1445 G_GNUC_END_IGNORE_DEPRECATIONS
1446 GIO_AVAILABLE_IN_2_62
1447 GDateTime *       g_file_info_get_modification_date_time (GFileInfo     *info);
1448 GIO_AVAILABLE_IN_2_70
1449 GDateTime *       g_file_info_get_access_date_time (GFileInfo     *info);
1450 GIO_AVAILABLE_IN_2_70
1451 GDateTime *       g_file_info_get_creation_date_time (GFileInfo     *info);
1452 GIO_AVAILABLE_IN_ALL
1453 const char *      g_file_info_get_symlink_target     (GFileInfo         *info);
1454 GIO_AVAILABLE_IN_ALL
1455 const char *      g_file_info_get_etag               (GFileInfo         *info);
1456 GIO_AVAILABLE_IN_ALL
1457 gint32            g_file_info_get_sort_order         (GFileInfo         *info);
1458
1459 GIO_AVAILABLE_IN_ALL
1460 void              g_file_info_set_attribute_mask     (GFileInfo         *info,
1461                                                       GFileAttributeMatcher *mask);
1462 GIO_AVAILABLE_IN_ALL
1463 void              g_file_info_unset_attribute_mask   (GFileInfo         *info);
1464
1465 /* Helper setters: */
1466 GIO_AVAILABLE_IN_ALL
1467 void              g_file_info_set_file_type          (GFileInfo         *info,
1468                                                       GFileType          type);
1469 GIO_AVAILABLE_IN_ALL
1470 void              g_file_info_set_is_hidden          (GFileInfo         *info,
1471                                                       gboolean           is_hidden);
1472 GIO_AVAILABLE_IN_ALL
1473 void              g_file_info_set_is_symlink         (GFileInfo         *info,
1474                                                       gboolean           is_symlink);
1475 GIO_AVAILABLE_IN_ALL
1476 void              g_file_info_set_name               (GFileInfo         *info,
1477                                                       const char        *name);
1478 GIO_AVAILABLE_IN_ALL
1479 void              g_file_info_set_display_name       (GFileInfo         *info,
1480                                                       const char        *display_name);
1481 GIO_AVAILABLE_IN_ALL
1482 void              g_file_info_set_edit_name          (GFileInfo         *info,
1483                                                       const char        *edit_name);
1484 GIO_AVAILABLE_IN_ALL
1485 void              g_file_info_set_icon               (GFileInfo         *info,
1486                                                       GIcon             *icon);
1487 GIO_AVAILABLE_IN_ALL
1488 void              g_file_info_set_symbolic_icon      (GFileInfo         *info,
1489                                                       GIcon             *icon);
1490 GIO_AVAILABLE_IN_ALL
1491 void              g_file_info_set_content_type       (GFileInfo         *info,
1492                                                       const char        *content_type);
1493 GIO_AVAILABLE_IN_ALL
1494 void              g_file_info_set_size               (GFileInfo         *info,
1495                                                       goffset            size);
1496 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1497 GIO_DEPRECATED_IN_2_62_FOR(g_file_info_set_modification_date_time)
1498 void              g_file_info_set_modification_time  (GFileInfo         *info,
1499                                                       GTimeVal          *mtime);
1500 G_GNUC_END_IGNORE_DEPRECATIONS
1501 GIO_AVAILABLE_IN_2_62
1502 void              g_file_info_set_modification_date_time (GFileInfo     *info,
1503                                                           GDateTime     *mtime);
1504 GIO_AVAILABLE_IN_2_70
1505 void              g_file_info_set_access_date_time (GFileInfo *info,
1506                                                     GDateTime *atime);
1507 GIO_AVAILABLE_IN_2_70
1508 void              g_file_info_set_creation_date_time (GFileInfo *info,
1509                                                       GDateTime *creation_time);
1510 GIO_AVAILABLE_IN_ALL
1511 void              g_file_info_set_symlink_target     (GFileInfo         *info,
1512                                                       const char        *symlink_target);
1513 GIO_AVAILABLE_IN_ALL
1514 void              g_file_info_set_sort_order         (GFileInfo         *info,
1515                                                       gint32             sort_order);
1516
1517 #define G_TYPE_FILE_ATTRIBUTE_MATCHER (g_file_attribute_matcher_get_type ())
1518 GIO_AVAILABLE_IN_ALL
1519 GType g_file_attribute_matcher_get_type (void) G_GNUC_CONST;
1520
1521 GIO_AVAILABLE_IN_ALL
1522 GFileAttributeMatcher *g_file_attribute_matcher_new            (const char            *attributes);
1523 GIO_AVAILABLE_IN_ALL
1524 GFileAttributeMatcher *g_file_attribute_matcher_ref            (GFileAttributeMatcher *matcher);
1525 GIO_AVAILABLE_IN_ALL
1526 void                   g_file_attribute_matcher_unref          (GFileAttributeMatcher *matcher);
1527 GIO_AVAILABLE_IN_ALL
1528 GFileAttributeMatcher *g_file_attribute_matcher_subtract       (GFileAttributeMatcher *matcher,
1529                                                                 GFileAttributeMatcher *subtract);
1530 GIO_AVAILABLE_IN_ALL
1531 gboolean               g_file_attribute_matcher_matches        (GFileAttributeMatcher *matcher,
1532                                                                 const char            *attribute);
1533 GIO_AVAILABLE_IN_ALL
1534 gboolean               g_file_attribute_matcher_matches_only   (GFileAttributeMatcher *matcher,
1535                                                                 const char            *attribute);
1536 GIO_AVAILABLE_IN_ALL
1537 gboolean               g_file_attribute_matcher_enumerate_namespace (GFileAttributeMatcher *matcher,
1538                                                                      const char            *ns);
1539 GIO_AVAILABLE_IN_ALL
1540 const char *           g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher);
1541 GIO_AVAILABLE_IN_2_32
1542 char *                 g_file_attribute_matcher_to_string      (GFileAttributeMatcher *matcher);
1543
1544 G_END_DECLS
1545
1546 #endif /* __G_FILE_INFO_H__ */