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