• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* GIO - GLib Input, Output and Streaming Library
2  *
3  * Copyright (C) 2006-2007 Red Hat, Inc.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General
16  * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
17  *
18  * Author: Alexander Larsson <alexl@redhat.com>
19  */
20 
21 #ifndef __G_FILE_INFO_H__
22 #define __G_FILE_INFO_H__
23 
24 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
25 #error "Only <gio/gio.h> can be included directly."
26 #endif
27 
28 #include <gio/giotypes.h>
29 
30 G_BEGIN_DECLS
31 
32 #define G_TYPE_FILE_INFO         (g_file_info_get_type ())
33 #define G_FILE_INFO(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_INFO, GFileInfo))
34 #define G_FILE_INFO_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_INFO, GFileInfoClass))
35 #define G_IS_FILE_INFO(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_INFO))
36 #define G_IS_FILE_INFO_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_INFO))
37 #define G_FILE_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_INFO, GFileInfoClass))
38 
39 /**
40  * GFileInfo:
41  *
42  * Stores information about a file system object referenced by a #GFile.
43  **/
44 typedef struct _GFileInfoClass   GFileInfoClass;
45 
46 
47 /* Common Attributes:  */
48 /**
49  * G_FILE_ATTRIBUTE_STANDARD_TYPE:
50  *
51  * A key in the "standard" namespace for storing file types.
52  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
53  * The value for this key should contain a #GFileType.
54  **/
55 #define G_FILE_ATTRIBUTE_STANDARD_TYPE "standard::type"                     /* uint32 (GFileType) */
56 
57 /**
58  * G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN:
59  *
60  * A key in the "standard" namespace for checking if a file is hidden.
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  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
70  **/
71 #define G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP "standard::is-backup"           /* boolean */
72 
73 /**
74  * G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK:
75  *
76  * A key in the "standard" namespace for checking if the file is a symlink.
77  * Typically the actual type is something else, if we followed the symlink
78  * to get the type.
79  * On Windows NTFS mountpoints are considered to be symlinks as well.
80  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
81  **/
82 #define G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "standard::is-symlink"         /* boolean */
83 
84 /**
85  * G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL:
86  *
87  * A key in the "standard" namespace for checking if a file is virtual.
88  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
89  **/
90 #define G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL "standard::is-virtual"         /* boolean */
91 
92 /**
93  * G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE:
94  *
95  * A key in the "standard" namespace for checking if a file is
96  * volatile. This is meant for opaque, non-POSIX-like backends to
97  * indicate that the URI is not persistent. Applications should look
98  * at #G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET for the persistent URI.
99  *
100  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
101  *
102  * Since: 2.46
103  **/
104 #define G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE "standard::is-volatile"      /* boolean */
105 
106 /**
107  * G_FILE_ATTRIBUTE_STANDARD_NAME:
108  *
109  * A key in the "standard" namespace for getting the name of the file.
110  * The name is the on-disk filename which may not be in any known encoding,
111  * and can thus not be generally displayed as is. It is guaranteed to be set on
112  * every file.
113  * Use #G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME if you need to display the
114  * name in a user interface.
115  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
116  **/
117 #define G_FILE_ATTRIBUTE_STANDARD_NAME "standard::name"                     /* byte string */
118 
119 /**
120  * G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME:
121  *
122  * A key in the "standard" namespace for getting the display name of the file.
123  * A display name is guaranteed to be in UTF-8 and can thus be displayed in
124  * the UI. It is guaranteed to be set on every file.
125  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
126  **/
127 #define G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "standard::display-name"     /* string */
128 
129 /**
130  * G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME:
131  *
132  * A key in the "standard" namespace for edit name of the file.
133  * An edit name is similar to the display name, but it is meant to be
134  * used when you want to rename the file in the UI. The display name
135  * might contain information you don't want in the new filename (such as
136  * "(invalid unicode)" if the filename was in an invalid encoding).
137  *
138  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
139  **/
140 #define G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME "standard::edit-name"           /* string */
141 
142 /**
143  * G_FILE_ATTRIBUTE_STANDARD_COPY_NAME:
144  *
145  * A key in the "standard" namespace for getting the copy name of the file.
146  * The copy name is an optional version of the name. If available it's always
147  * in UTF8, and corresponds directly to the original filename (only transcoded to
148  * UTF8). This is useful if you want to copy the file to another filesystem that
149  * might have a different encoding. If the filename is not a valid string in the
150  * encoding selected for the filesystem it is in then the copy name will not be set.
151  *
152  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
153  **/
154 #define G_FILE_ATTRIBUTE_STANDARD_COPY_NAME "standard::copy-name"           /* string */
155 
156 /**
157  * G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION:
158  *
159  * A key in the "standard" namespace for getting the description of the file.
160  * The description is a utf8 string that describes the file, generally containing
161  * the filename, but can also contain further information. Example descriptions
162  * could be "filename (on hostname)" for a remote file or "filename (in trash)"
163  * for a file in the trash. This is useful for instance as the window title
164  * when displaying a directory or for a bookmarks menu.
165  *
166  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
167  **/
168 #define G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION "standard::description"        /* string */
169 
170 /**
171  * G_FILE_ATTRIBUTE_STANDARD_ICON:
172  *
173  * A key in the "standard" namespace for getting the icon for the file.
174  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
175  * The value for this key should contain a #GIcon.
176  **/
177 #define G_FILE_ATTRIBUTE_STANDARD_ICON "standard::icon"                     /* object (GIcon) */
178 
179 /**
180  * G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON:
181  *
182  * A key in the "standard" namespace for getting the symbolic icon for the file.
183  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
184  * The value for this key should contain a #GIcon.
185  *
186  * Since: 2.34
187  **/
188 #define G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON "standard::symbolic-icon"   /* object (GIcon) */
189 
190 /**
191  * G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE:
192  *
193  * A key in the "standard" namespace for getting the content type of the file.
194  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
195  * The value for this key should contain a valid content type.
196  **/
197 #define G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "standard::content-type"     /* string */
198 
199 /**
200  * G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE:
201  *
202  * A key in the "standard" namespace for getting the fast content type.
203  * The fast content type isn't as reliable as the regular one, as it
204  * only uses the filename to guess it, but it is faster to calculate than the
205  * regular content type.
206  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
207  *
208  **/
209 #define G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE "standard::fast-content-type" /* string */
210 
211 /**
212  * G_FILE_ATTRIBUTE_STANDARD_SIZE:
213  *
214  * A key in the "standard" namespace for getting the file's size (in bytes).
215  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
216  **/
217 #define G_FILE_ATTRIBUTE_STANDARD_SIZE "standard::size"                     /* uint64 */
218 
219 /**
220  * G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE:
221  *
222  * A key in the "standard" namespace for getting the amount of disk space
223  * that is consumed by the file (in bytes).  This will generally be larger
224  * than the file size (due to block size overhead) but can occasionally be
225  * smaller (for example, for sparse files).
226  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
227  *
228  * Since: 2.20
229  **/
230 #define G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE "standard::allocated-size" /* uint64 */
231 
232 /**
233  * G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET:
234  *
235  * A key in the "standard" namespace for getting the symlink target, if the file
236  * is a symlink. Corresponding #GFileAttributeType is
237  * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
238  **/
239 #define G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET "standard::symlink-target" /* byte string */
240 
241 /**
242  * G_FILE_ATTRIBUTE_STANDARD_TARGET_URI:
243  *
244  * A key in the "standard" namespace for getting the target URI for the file, in
245  * the case of %G_FILE_TYPE_SHORTCUT or %G_FILE_TYPE_MOUNTABLE files.
246  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
247  **/
248 #define G_FILE_ATTRIBUTE_STANDARD_TARGET_URI "standard::target-uri"         /* string */
249 
250 /**
251  * G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER:
252  *
253  * A key in the "standard" namespace for setting the sort order of a file.
254  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_INT32.
255  * An example use would be in file managers, which would use this key
256  * to set the order files are displayed. Files with smaller sort order
257  * should be sorted first, and files without sort order as if sort order
258  * was zero.
259  **/
260 #define G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER "standard::sort-order"         /* int32  */
261 
262 /* Entity tags, used to avoid missing updates on save */
263 
264 /**
265  * G_FILE_ATTRIBUTE_ETAG_VALUE:
266  *
267  * A key in the "etag" namespace for getting the value of the file's
268  * entity tag. Corresponding #GFileAttributeType is
269  * %G_FILE_ATTRIBUTE_TYPE_STRING.
270  **/
271 #define G_FILE_ATTRIBUTE_ETAG_VALUE "etag::value"                 /* string */
272 
273 /* File identifier, for e.g. avoiding loops when doing recursive
274  * directory scanning
275  */
276 
277 /**
278  * G_FILE_ATTRIBUTE_ID_FILE:
279  *
280  * A key in the "id" namespace for getting a file identifier.
281  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
282  * An example use would be during listing files, to avoid recursive
283  * directory scanning.
284  **/
285 #define G_FILE_ATTRIBUTE_ID_FILE "id::file"                     /* string */
286 
287 /**
288  * G_FILE_ATTRIBUTE_ID_FILESYSTEM:
289  *
290  * A key in the "id" namespace for getting the file system identifier.
291  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
292  * An example use would be during drag and drop to see if the source
293  * and target are on the same filesystem (default to move) or not (default
294  * to copy).
295  **/
296 #define G_FILE_ATTRIBUTE_ID_FILESYSTEM "id::filesystem"         /* string */
297 
298 /* Calculated Access Rights for current user */
299 
300 /**
301  * G_FILE_ATTRIBUTE_ACCESS_CAN_READ:
302  *
303  * A key in the "access" namespace for getting read privileges.
304  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
305  * This attribute will be %TRUE if the user is able to read the file.
306  **/
307 #define G_FILE_ATTRIBUTE_ACCESS_CAN_READ "access::can-read"       /* boolean */
308 
309 /**
310  * G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE:
311  *
312  * A key in the "access" namespace for getting write privileges.
313  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
314  * This attribute will be %TRUE if the user is able to write to the file.
315  **/
316 #define G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE "access::can-write"     /* boolean */
317 
318 /**
319  * G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE:
320  *
321  * A key in the "access" namespace for getting execution privileges.
322  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
323  * This attribute will be %TRUE if the user is able to execute the file.
324  **/
325 #define G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE "access::can-execute" /* boolean */
326 
327 /**
328  * G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE:
329  *
330  * A key in the "access" namespace for checking deletion privileges.
331  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
332  * This attribute will be %TRUE if the user is able to delete the file.
333  **/
334 #define G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE "access::can-delete"   /* boolean */
335 
336 /**
337  * G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH:
338  *
339  * A key in the "access" namespace for checking trashing privileges.
340  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
341  * This attribute will be %TRUE if the user is able to move the file to
342  * the trash.
343  **/
344 #define G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH "access::can-trash"     /* boolean */
345 
346 /**
347  * G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME:
348  *
349  * A key in the "access" namespace for checking renaming privileges.
350  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
351  * This attribute will be %TRUE if the user is able to rename the file.
352  **/
353 #define G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME "access::can-rename"   /* boolean */
354 
355 /* TODO: Should we have special version for directories? can_enumerate, etc */
356 
357 /* Mountable attributes */
358 
359 /**
360  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT:
361  *
362  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) is mountable.
363  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
364  **/
365 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT "mountable::can-mount"     /* boolean */
366 
367 /**
368  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT:
369  *
370  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE)  is unmountable.
371  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
372  **/
373 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT "mountable::can-unmount" /* boolean */
374 
375 /**
376  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT:
377  *
378  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be ejected.
379  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
380  **/
381 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT "mountable::can-eject"     /* boolean */
382 
383 /**
384  * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE:
385  *
386  * A key in the "mountable" namespace for getting the unix device.
387  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
388  **/
389 #define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE "mountable::unix-device" /* uint32 */
390 
391 /**
392  * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE:
393  *
394  * A key in the "mountable" namespace for getting the unix device file.
395  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
396  *
397  * Since: 2.22
398  **/
399 #define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE "mountable::unix-device-file" /* string */
400 
401 /**
402  * G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI:
403  *
404  * A key in the "mountable" namespace for getting the HAL UDI for the mountable
405  * file. Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
406  **/
407 #define G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI "mountable::hal-udi"         /* string */
408 
409 /**
410  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START:
411  *
412  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be started.
413  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
414  *
415  * Since: 2.22
416  */
417 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START "mountable::can-start"     /* boolean */
418 
419 /**
420  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED:
421  *
422  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be started
423  * degraded.
424  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
425  *
426  * Since: 2.22
427  */
428 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED "mountable::can-start-degraded"     /* boolean */
429 
430 /**
431  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP:
432  *
433  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be stopped.
434  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
435  *
436  * Since: 2.22
437  */
438 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP "mountable::can-stop"      /* boolean */
439 
440 /**
441  * G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE:
442  *
443  * A key in the "mountable" namespace for getting the #GDriveStartStopType.
444  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
445  *
446  * Since: 2.22
447  */
448 #define G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE "mountable::start-stop-type" /* uint32 (GDriveStartStopType) */
449 
450 /**
451  * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL:
452  *
453  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be polled.
454  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
455  *
456  * Since: 2.22
457  */
458 #define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL "mountable::can-poll"      /* boolean */
459 
460 /**
461  * G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC:
462  *
463  * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE)
464  * is automatically polled for media.
465  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
466  *
467  * Since: 2.22
468  */
469 #define G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC "mountable::is-media-check-automatic"      /* boolean */
470 
471 /* Time attributes */
472 
473 /**
474  * G_FILE_ATTRIBUTE_TIME_MODIFIED:
475  *
476  * A key in the "time" namespace for getting the time the file was last
477  * modified. Corresponding #GFileAttributeType is
478  * %G_FILE_ATTRIBUTE_TYPE_UINT64, and contains the time since the
479  * file was modified, in seconds since the UNIX epoch.
480  **/
481 #define G_FILE_ATTRIBUTE_TIME_MODIFIED "time::modified"           /* uint64 */
482 
483 /**
484  * G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC:
485  *
486  * A key in the "time" namespace for getting the microseconds of the time
487  * the file was last modified. This should be used in conjunction with
488  * #G_FILE_ATTRIBUTE_TIME_MODIFIED. Corresponding #GFileAttributeType is
489  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
490  **/
491 #define G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC "time::modified-usec" /* uint32 */
492 
493 /**
494  * G_FILE_ATTRIBUTE_TIME_ACCESS:
495  *
496  * A key in the "time" namespace for getting the time the file was last
497  * accessed. Corresponding #GFileAttributeType is
498  * %G_FILE_ATTRIBUTE_TYPE_UINT64, and contains the time since the
499  * file was last accessed, in seconds since the UNIX epoch.
500  **/
501 #define G_FILE_ATTRIBUTE_TIME_ACCESS "time::access"               /* uint64 */
502 
503 /**
504  * G_FILE_ATTRIBUTE_TIME_ACCESS_USEC:
505  *
506  * A key in the "time" namespace for getting the microseconds of the time
507  * the file was last accessed. This should be used in conjunction with
508  * #G_FILE_ATTRIBUTE_TIME_ACCESS. Corresponding #GFileAttributeType is
509  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
510  **/
511 #define G_FILE_ATTRIBUTE_TIME_ACCESS_USEC "time::access-usec"     /* uint32 */
512 
513 /**
514  * G_FILE_ATTRIBUTE_TIME_CHANGED:
515  *
516  * A key in the "time" namespace for getting the time the file was last
517  * changed. Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
518  * and contains the time since the file was last changed, in seconds since the
519  * UNIX epoch.
520  *
521  * This corresponds to the traditional UNIX ctime.
522  **/
523 #define G_FILE_ATTRIBUTE_TIME_CHANGED "time::changed"             /* uint64 */
524 
525 /**
526  * G_FILE_ATTRIBUTE_TIME_CHANGED_USEC:
527  *
528  * A key in the "time" namespace for getting the microseconds of the time
529  * the file was last changed. This should be used in conjunction with
530  * #G_FILE_ATTRIBUTE_TIME_CHANGED. Corresponding #GFileAttributeType is
531  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
532  **/
533 #define G_FILE_ATTRIBUTE_TIME_CHANGED_USEC "time::changed-usec"   /* uint32 */
534 
535 /**
536  * G_FILE_ATTRIBUTE_TIME_CREATED:
537  *
538  * A key in the "time" namespace for getting the time the file was created.
539  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
540  * and contains the time since the file was created, in seconds since the UNIX
541  * epoch.
542  *
543  * This may correspond to Linux stx_btime, FreeBSD st_birthtim, NetBSD
544  * st_birthtime or NTFS ctime.
545  **/
546 #define G_FILE_ATTRIBUTE_TIME_CREATED "time::created"             /* uint64 */
547 
548 /**
549  * G_FILE_ATTRIBUTE_TIME_CREATED_USEC:
550  *
551  * A key in the "time" namespace for getting the microseconds of the time
552  * the file was created. This should be used in conjunction with
553  * #G_FILE_ATTRIBUTE_TIME_CREATED. Corresponding #GFileAttributeType is
554  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
555  **/
556 #define G_FILE_ATTRIBUTE_TIME_CREATED_USEC "time::created-usec"   /* uint32 */
557 
558 /* Unix specific attributes */
559 
560 /**
561  * G_FILE_ATTRIBUTE_UNIX_DEVICE:
562  *
563  * A key in the "unix" namespace for getting the device id of the device the
564  * file is located on (see stat() documentation). This attribute is only
565  * available for UNIX file systems. Corresponding #GFileAttributeType is
566  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
567  **/
568 #define G_FILE_ATTRIBUTE_UNIX_DEVICE "unix::device"               /* uint32 */
569 
570 /**
571  * G_FILE_ATTRIBUTE_UNIX_INODE:
572  *
573  * A key in the "unix" namespace for getting the inode of the file.
574  * This attribute is only available for UNIX file systems. Corresponding
575  * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
576  **/
577 #define G_FILE_ATTRIBUTE_UNIX_INODE "unix::inode"                 /* uint64 */
578 
579 /**
580  * G_FILE_ATTRIBUTE_UNIX_MODE:
581  *
582  * A key in the "unix" namespace for getting the mode of the file
583  * (e.g. whether the file is a regular file, symlink, etc). See the
584  * documentation for `lstat()`: this attribute is equivalent to the `st_mode`
585  * member of `struct stat`, and includes both the file type and permissions.
586  * This attribute is only available for UNIX file systems.
587  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
588  **/
589 #define G_FILE_ATTRIBUTE_UNIX_MODE "unix::mode"                   /* uint32 */
590 
591 /**
592  * G_FILE_ATTRIBUTE_UNIX_NLINK:
593  *
594  * A key in the "unix" namespace for getting the number of hard links
595  * for a file. See lstat() documentation. This attribute is only available
596  * for UNIX file systems. Corresponding #GFileAttributeType is
597  * %G_FILE_ATTRIBUTE_TYPE_UINT32.
598  **/
599 #define G_FILE_ATTRIBUTE_UNIX_NLINK "unix::nlink"                 /* uint32 */
600 
601 /**
602  * G_FILE_ATTRIBUTE_UNIX_UID:
603  *
604  * A key in the "unix" namespace for getting the user ID for the file.
605  * This attribute is only available for UNIX file systems.
606  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
607  **/
608 #define G_FILE_ATTRIBUTE_UNIX_UID "unix::uid"                     /* uint32 */
609 
610 /**
611  * G_FILE_ATTRIBUTE_UNIX_GID:
612  *
613  * A key in the "unix" namespace for getting the group ID for the file.
614  * This attribute is only available for UNIX file systems.
615  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
616  **/
617 #define G_FILE_ATTRIBUTE_UNIX_GID "unix::gid"                     /* uint32 */
618 
619 /**
620  * G_FILE_ATTRIBUTE_UNIX_RDEV:
621  *
622  * A key in the "unix" namespace for getting the device ID for the file
623  * (if it is a special file). See lstat() documentation. This attribute
624  * is only available for UNIX file systems. Corresponding #GFileAttributeType
625  * is %G_FILE_ATTRIBUTE_TYPE_UINT32.
626  **/
627 #define G_FILE_ATTRIBUTE_UNIX_RDEV "unix::rdev"                   /* uint32 */
628 
629 /**
630  * G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE:
631  *
632  * A key in the "unix" namespace for getting the block size for the file
633  * system. This attribute is only available for UNIX file systems.
634  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
635  **/
636 #define G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE "unix::block-size"       /* uint32 */
637 
638 /**
639  * G_FILE_ATTRIBUTE_UNIX_BLOCKS:
640  *
641  * A key in the "unix" namespace for getting the number of blocks allocated
642  * for the file. This attribute is only available for UNIX file systems.
643  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
644  **/
645 #define G_FILE_ATTRIBUTE_UNIX_BLOCKS "unix::blocks"               /* uint64 */
646 
647 /**
648  * G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT:
649  *
650  * A key in the "unix" namespace for checking if the file represents a
651  * UNIX mount point. This attribute is %TRUE if the file is a UNIX mount
652  * point. Since 2.58, `/` is considered to be a mount point.
653  * This attribute is only available for UNIX file systems.
654  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
655  **/
656 #define G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT "unix::is-mountpoint" /* boolean */
657 
658 /* DOS specific attributes */
659 
660 /**
661  * G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE:
662  *
663  * A key in the "dos" namespace for checking if the file's archive flag
664  * is set. This attribute is %TRUE if the archive flag is set. This attribute
665  * is only available for DOS file systems. Corresponding #GFileAttributeType
666  * is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
667  **/
668 #define G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE "dos::is-archive"         /* boolean */
669 
670 /**
671  * G_FILE_ATTRIBUTE_DOS_IS_SYSTEM:
672  *
673  * A key in the "dos" namespace for checking if the file's backup flag
674  * is set. This attribute is %TRUE if the backup flag is set. This attribute
675  * is only available for DOS file systems. Corresponding #GFileAttributeType
676  * is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
677  **/
678 #define G_FILE_ATTRIBUTE_DOS_IS_SYSTEM "dos::is-system"           /* boolean */
679 
680 /**
681  * G_FILE_ATTRIBUTE_DOS_IS_MOUNTPOINT:
682  *
683  * A key in the "dos" namespace for checking if the file is a NTFS mount point
684  * (a volume mount or a junction point).
685  * This attribute is %TRUE if file is a reparse point of type
686  * [IO_REPARSE_TAG_MOUNT_POINT](https://msdn.microsoft.com/en-us/library/dd541667.aspx).
687  * This attribute is only available for DOS file systems.
688  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
689  *
690  * Since: 2.60
691  **/
692 #define G_FILE_ATTRIBUTE_DOS_IS_MOUNTPOINT "dos::is-mountpoint"   /* boolean */
693 
694 /**
695  * G_FILE_ATTRIBUTE_DOS_REPARSE_POINT_TAG:
696  *
697  * A key in the "dos" namespace for getting the file NTFS reparse tag.
698  * This value is 0 for files that are not reparse points.
699  * See the [Reparse Tags](https://msdn.microsoft.com/en-us/library/dd541667.aspx)
700  * page for possible reparse tag values. Corresponding #GFileAttributeType
701  * is %G_FILE_ATTRIBUTE_TYPE_UINT32.
702  *
703  * Since: 2.60
704  **/
705 #define G_FILE_ATTRIBUTE_DOS_REPARSE_POINT_TAG "dos::reparse-point-tag"   /* uint32 */
706 
707 /* Owner attributes */
708 
709 /**
710  * G_FILE_ATTRIBUTE_OWNER_USER:
711  *
712  * A key in the "owner" namespace for getting the user name of the
713  * file's owner. Corresponding #GFileAttributeType is
714  * %G_FILE_ATTRIBUTE_TYPE_STRING.
715  **/
716 #define G_FILE_ATTRIBUTE_OWNER_USER "owner::user"                 /* string */
717 
718 /**
719  * G_FILE_ATTRIBUTE_OWNER_USER_REAL:
720  *
721  * A key in the "owner" namespace for getting the real name of the
722  * user that owns the file. Corresponding #GFileAttributeType is
723  * %G_FILE_ATTRIBUTE_TYPE_STRING.
724  **/
725 #define G_FILE_ATTRIBUTE_OWNER_USER_REAL "owner::user-real"       /* string */
726 
727 /**
728  * G_FILE_ATTRIBUTE_OWNER_GROUP:
729  *
730  * A key in the "owner" namespace for getting the file owner's group.
731  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
732  **/
733 #define G_FILE_ATTRIBUTE_OWNER_GROUP "owner::group"               /* string */
734 
735 /* Thumbnails */
736 
737 /**
738  * G_FILE_ATTRIBUTE_THUMBNAIL_PATH:
739  *
740  * A key in the "thumbnail" namespace for getting the path to the thumbnail
741  * image. Corresponding #GFileAttributeType is
742  * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
743  **/
744 #define G_FILE_ATTRIBUTE_THUMBNAIL_PATH "thumbnail::path"         /* bytestring */
745 /**
746  * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED:
747  *
748  * A key in the "thumbnail" namespace for checking if thumbnailing failed.
749  * This attribute is %TRUE if thumbnailing failed. Corresponding
750  * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
751  **/
752 #define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED "thumbnail::failed"         /* boolean */
753 /**
754  * G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID:
755  *
756  * A key in the "thumbnail" namespace for checking whether the thumbnail is outdated.
757  * This attribute is %TRUE if the thumbnail is up-to-date with the file it represents,
758  * and %FALSE if the file has been modified since the thumbnail was generated.
759  *
760  * If %G_FILE_ATTRIBUTE_THUMBNAILING_FAILED is %TRUE and this attribute is %FALSE,
761  * it indicates that thumbnailing may be attempted again and may succeed.
762  *
763  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
764  *
765  * Since: 2.40
766  */
767 #define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID "thumbnail::is-valid"        /* boolean */
768 
769 /* Preview */
770 
771 /**
772  * G_FILE_ATTRIBUTE_PREVIEW_ICON:
773  *
774  * A key in the "preview" namespace for getting a #GIcon that can be
775  * used to get preview of the file. For example, it may be a low
776  * resolution thumbnail without metadata. Corresponding
777  * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.  The value
778  * for this key should contain a #GIcon.
779  *
780  * Since: 2.20
781  **/
782 #define G_FILE_ATTRIBUTE_PREVIEW_ICON "preview::icon"         /* object (GIcon) */
783 
784 /* File system info (for g_file_get_filesystem_info) */
785 
786 /**
787  * G_FILE_ATTRIBUTE_FILESYSTEM_SIZE:
788  *
789  * A key in the "filesystem" namespace for getting the total size (in bytes) of the file system,
790  * used in g_file_query_filesystem_info(). Corresponding #GFileAttributeType
791  * is %G_FILE_ATTRIBUTE_TYPE_UINT64.
792  **/
793 #define G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "filesystem::size"                       /* uint64 */
794 
795 /**
796  * G_FILE_ATTRIBUTE_FILESYSTEM_FREE:
797  *
798  * A key in the "filesystem" namespace for getting the number of bytes of free space left on the
799  * file system. Corresponding #GFileAttributeType is
800  * %G_FILE_ATTRIBUTE_TYPE_UINT64.
801  **/
802 #define G_FILE_ATTRIBUTE_FILESYSTEM_FREE "filesystem::free"                       /* uint64 */
803 
804 /**
805  * G_FILE_ATTRIBUTE_FILESYSTEM_USED:
806  *
807  * A key in the "filesystem" namespace for getting the number of bytes of used on the
808  * file system. Corresponding #GFileAttributeType is
809  * %G_FILE_ATTRIBUTE_TYPE_UINT64.
810  *
811  * Since: 2.32
812  */
813 #define G_FILE_ATTRIBUTE_FILESYSTEM_USED "filesystem::used"                       /* uint64 */
814 
815 /**
816  * G_FILE_ATTRIBUTE_FILESYSTEM_TYPE:
817  *
818  * A key in the "filesystem" namespace for getting the file system's type.
819  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
820  **/
821 #define G_FILE_ATTRIBUTE_FILESYSTEM_TYPE "filesystem::type"                       /* string */
822 
823 /**
824  * G_FILE_ATTRIBUTE_FILESYSTEM_READONLY:
825  *
826  * A key in the "filesystem" namespace for checking if the file system
827  * is read only. Is set to %TRUE if the file system is read only.
828  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
829  **/
830 #define G_FILE_ATTRIBUTE_FILESYSTEM_READONLY "filesystem::readonly"               /* boolean */
831 
832 /**
833  * G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW:
834  *
835  * A key in the "filesystem" namespace for hinting a file manager
836  * application whether it should preview (e.g. thumbnail) files on the
837  * file system. The value for this key contain a
838  * #GFilesystemPreviewType.
839  **/
840 #define G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW "filesystem::use-preview"        /* uint32 (GFilesystemPreviewType) */
841 
842 /**
843  * G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE:
844  *
845  * A key in the "filesystem" namespace for checking if the file system
846  * is remote. Is set to %TRUE if the file system is remote.
847  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
848  **/
849 #define G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE "filesystem::remote"                   /* boolean */
850 
851 /**
852  * G_FILE_ATTRIBUTE_GVFS_BACKEND:
853  *
854  * A key in the "gvfs" namespace that gets the name of the current
855  * GVFS backend in use. Corresponding #GFileAttributeType is
856  * %G_FILE_ATTRIBUTE_TYPE_STRING.
857  **/
858 #define G_FILE_ATTRIBUTE_GVFS_BACKEND "gvfs::backend"             /* string */
859 
860 /**
861  * G_FILE_ATTRIBUTE_SELINUX_CONTEXT:
862  *
863  * A key in the "selinux" namespace for getting the file's SELinux
864  * context. Corresponding #GFileAttributeType is
865  * %G_FILE_ATTRIBUTE_TYPE_STRING. Note that this attribute is only
866  * available if GLib has been built with SELinux support.
867  **/
868 #define G_FILE_ATTRIBUTE_SELINUX_CONTEXT "selinux::context"       /* string */
869 
870 /**
871  * G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT:
872  *
873  * A key in the "trash" namespace.  When requested against
874  * `trash:///` returns the number of (toplevel) items in the trash folder.
875  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
876  **/
877 #define G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT "trash::item-count"     /* uint32 */
878 
879 /**
880  * G_FILE_ATTRIBUTE_TRASH_ORIG_PATH:
881  *
882  * A key in the "trash" namespace.  When requested against
883  * items in `trash:///`, will return the original path to the file before it
884  * was trashed. Corresponding #GFileAttributeType is
885  * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
886  *
887  * Since: 2.24
888  **/
889 #define G_FILE_ATTRIBUTE_TRASH_ORIG_PATH "trash::orig-path"     /* byte string */
890 
891 /**
892  * G_FILE_ATTRIBUTE_TRASH_DELETION_DATE:
893  *
894  * A key in the "trash" namespace.  When requested against
895  * items in `trash:///`, will return the date and time when the file
896  * was trashed. The format of the returned string is YYYY-MM-DDThh:mm:ss.
897  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
898  *
899  * Since: 2.24
900  **/
901 #define G_FILE_ATTRIBUTE_TRASH_DELETION_DATE "trash::deletion-date"  /* string */
902 
903 /**
904  * G_FILE_ATTRIBUTE_RECENT_MODIFIED:
905  *
906  * A key in the "recent" namespace for getting time, when the metadata for the
907  * file in `recent:///` was last changed. Corresponding #GFileAttributeType is
908  * %G_FILE_ATTRIBUTE_TYPE_INT64.
909  *
910  * Since: 2.52
911  **/
912 #define G_FILE_ATTRIBUTE_RECENT_MODIFIED "recent::modified"          /* int64 (time_t) */
913 
914 GLIB_AVAILABLE_IN_ALL
915 GType              g_file_info_get_type                  (void) G_GNUC_CONST;
916 
917 GLIB_AVAILABLE_IN_ALL
918 GFileInfo *        g_file_info_new                       (void);
919 GLIB_AVAILABLE_IN_ALL
920 GFileInfo *        g_file_info_dup                       (GFileInfo  *other);
921 GLIB_AVAILABLE_IN_ALL
922 void               g_file_info_copy_into                 (GFileInfo  *src_info,
923 							  GFileInfo  *dest_info);
924 GLIB_AVAILABLE_IN_ALL
925 gboolean           g_file_info_has_attribute             (GFileInfo  *info,
926 							  const char *attribute);
927 GLIB_AVAILABLE_IN_ALL
928 gboolean           g_file_info_has_namespace             (GFileInfo  *info,
929 							  const char *name_space);
930 GLIB_AVAILABLE_IN_ALL
931 char **            g_file_info_list_attributes           (GFileInfo  *info,
932 							  const char *name_space);
933 GLIB_AVAILABLE_IN_ALL
934 gboolean           g_file_info_get_attribute_data        (GFileInfo  *info,
935 							  const char *attribute,
936 							  GFileAttributeType *type,
937 							  gpointer   *value_pp,
938 							  GFileAttributeStatus *status);
939 GLIB_AVAILABLE_IN_ALL
940 GFileAttributeType g_file_info_get_attribute_type        (GFileInfo  *info,
941 							  const char *attribute);
942 GLIB_AVAILABLE_IN_ALL
943 void               g_file_info_remove_attribute          (GFileInfo  *info,
944 							  const char *attribute);
945 GLIB_AVAILABLE_IN_ALL
946 GFileAttributeStatus g_file_info_get_attribute_status    (GFileInfo  *info,
947 							  const char *attribute);
948 GLIB_AVAILABLE_IN_ALL
949 gboolean           g_file_info_set_attribute_status      (GFileInfo  *info,
950 							  const char *attribute,
951 							  GFileAttributeStatus status);
952 GLIB_AVAILABLE_IN_ALL
953 char *             g_file_info_get_attribute_as_string   (GFileInfo  *info,
954 							  const char *attribute);
955 GLIB_AVAILABLE_IN_ALL
956 const char *       g_file_info_get_attribute_string      (GFileInfo  *info,
957 							  const char *attribute);
958 GLIB_AVAILABLE_IN_ALL
959 const char *       g_file_info_get_attribute_byte_string (GFileInfo  *info,
960 							  const char *attribute);
961 GLIB_AVAILABLE_IN_ALL
962 gboolean           g_file_info_get_attribute_boolean     (GFileInfo  *info,
963 							  const char *attribute);
964 GLIB_AVAILABLE_IN_ALL
965 guint32            g_file_info_get_attribute_uint32      (GFileInfo  *info,
966 							  const char *attribute);
967 GLIB_AVAILABLE_IN_ALL
968 gint32             g_file_info_get_attribute_int32       (GFileInfo  *info,
969 							  const char *attribute);
970 GLIB_AVAILABLE_IN_ALL
971 guint64            g_file_info_get_attribute_uint64      (GFileInfo  *info,
972 							  const char *attribute);
973 GLIB_AVAILABLE_IN_ALL
974 gint64             g_file_info_get_attribute_int64       (GFileInfo  *info,
975 							  const char *attribute);
976 GLIB_AVAILABLE_IN_ALL
977 GObject *          g_file_info_get_attribute_object      (GFileInfo  *info,
978 							  const char *attribute);
979 GLIB_AVAILABLE_IN_ALL
980 char **            g_file_info_get_attribute_stringv     (GFileInfo  *info,
981 							  const char *attribute);
982 
983 GLIB_AVAILABLE_IN_ALL
984 void               g_file_info_set_attribute             (GFileInfo  *info,
985 							  const char *attribute,
986 							  GFileAttributeType type,
987 							  gpointer    value_p);
988 GLIB_AVAILABLE_IN_ALL
989 void               g_file_info_set_attribute_string      (GFileInfo  *info,
990 							  const char *attribute,
991 							  const char *attr_value);
992 GLIB_AVAILABLE_IN_ALL
993 void               g_file_info_set_attribute_byte_string (GFileInfo  *info,
994 							  const char *attribute,
995 							  const char *attr_value);
996 GLIB_AVAILABLE_IN_ALL
997 void               g_file_info_set_attribute_boolean     (GFileInfo  *info,
998 							  const char *attribute,
999 							  gboolean    attr_value);
1000 GLIB_AVAILABLE_IN_ALL
1001 void               g_file_info_set_attribute_uint32      (GFileInfo  *info,
1002 							  const char *attribute,
1003 							  guint32     attr_value);
1004 GLIB_AVAILABLE_IN_ALL
1005 void               g_file_info_set_attribute_int32       (GFileInfo  *info,
1006 							  const char *attribute,
1007 							  gint32      attr_value);
1008 GLIB_AVAILABLE_IN_ALL
1009 void               g_file_info_set_attribute_uint64      (GFileInfo  *info,
1010 							  const char *attribute,
1011 							  guint64     attr_value);
1012 GLIB_AVAILABLE_IN_ALL
1013 void               g_file_info_set_attribute_int64       (GFileInfo  *info,
1014 							  const char *attribute,
1015 							  gint64      attr_value);
1016 GLIB_AVAILABLE_IN_ALL
1017 void               g_file_info_set_attribute_object      (GFileInfo  *info,
1018 							  const char *attribute,
1019 							  GObject    *attr_value);
1020 GLIB_AVAILABLE_IN_ALL
1021 void               g_file_info_set_attribute_stringv     (GFileInfo  *info,
1022 							  const char *attribute,
1023 							  char      **attr_value);
1024 
1025 GLIB_AVAILABLE_IN_ALL
1026 void               g_file_info_clear_status              (GFileInfo  *info);
1027 
1028 /* Helper getters: */
1029 GLIB_AVAILABLE_IN_2_36
1030 GDateTime *       g_file_info_get_deletion_date      (GFileInfo         *info);
1031 GLIB_AVAILABLE_IN_ALL
1032 GFileType         g_file_info_get_file_type          (GFileInfo         *info);
1033 GLIB_AVAILABLE_IN_ALL
1034 gboolean          g_file_info_get_is_hidden          (GFileInfo         *info);
1035 GLIB_AVAILABLE_IN_ALL
1036 gboolean          g_file_info_get_is_backup          (GFileInfo         *info);
1037 GLIB_AVAILABLE_IN_ALL
1038 gboolean          g_file_info_get_is_symlink         (GFileInfo         *info);
1039 GLIB_AVAILABLE_IN_ALL
1040 const char *      g_file_info_get_name               (GFileInfo         *info);
1041 GLIB_AVAILABLE_IN_ALL
1042 const char *      g_file_info_get_display_name       (GFileInfo         *info);
1043 GLIB_AVAILABLE_IN_ALL
1044 const char *      g_file_info_get_edit_name          (GFileInfo         *info);
1045 GLIB_AVAILABLE_IN_ALL
1046 GIcon *           g_file_info_get_icon               (GFileInfo         *info);
1047 GLIB_AVAILABLE_IN_ALL
1048 GIcon *           g_file_info_get_symbolic_icon      (GFileInfo         *info);
1049 GLIB_AVAILABLE_IN_ALL
1050 const char *      g_file_info_get_content_type       (GFileInfo         *info);
1051 GLIB_AVAILABLE_IN_ALL
1052 goffset           g_file_info_get_size               (GFileInfo         *info);
1053 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1054 GLIB_DEPRECATED_IN_2_62_FOR(g_file_info_get_modification_date_time)
1055 void              g_file_info_get_modification_time  (GFileInfo         *info,
1056                                                       GTimeVal          *result);
1057 G_GNUC_END_IGNORE_DEPRECATIONS
1058 GLIB_AVAILABLE_IN_2_62
1059 GDateTime *       g_file_info_get_modification_date_time (GFileInfo     *info);
1060 GLIB_AVAILABLE_IN_ALL
1061 const char *      g_file_info_get_symlink_target     (GFileInfo         *info);
1062 GLIB_AVAILABLE_IN_ALL
1063 const char *      g_file_info_get_etag               (GFileInfo         *info);
1064 GLIB_AVAILABLE_IN_ALL
1065 gint32            g_file_info_get_sort_order         (GFileInfo         *info);
1066 
1067 GLIB_AVAILABLE_IN_ALL
1068 void              g_file_info_set_attribute_mask     (GFileInfo         *info,
1069 						      GFileAttributeMatcher *mask);
1070 GLIB_AVAILABLE_IN_ALL
1071 void              g_file_info_unset_attribute_mask   (GFileInfo         *info);
1072 
1073 /* Helper setters: */
1074 GLIB_AVAILABLE_IN_ALL
1075 void              g_file_info_set_file_type          (GFileInfo         *info,
1076 						      GFileType          type);
1077 GLIB_AVAILABLE_IN_ALL
1078 void              g_file_info_set_is_hidden          (GFileInfo         *info,
1079 						      gboolean           is_hidden);
1080 GLIB_AVAILABLE_IN_ALL
1081 void              g_file_info_set_is_symlink         (GFileInfo         *info,
1082 						      gboolean           is_symlink);
1083 GLIB_AVAILABLE_IN_ALL
1084 void              g_file_info_set_name               (GFileInfo         *info,
1085 						      const char        *name);
1086 GLIB_AVAILABLE_IN_ALL
1087 void              g_file_info_set_display_name       (GFileInfo         *info,
1088 						      const char        *display_name);
1089 GLIB_AVAILABLE_IN_ALL
1090 void              g_file_info_set_edit_name          (GFileInfo         *info,
1091 						      const char        *edit_name);
1092 GLIB_AVAILABLE_IN_ALL
1093 void              g_file_info_set_icon               (GFileInfo         *info,
1094 						      GIcon             *icon);
1095 GLIB_AVAILABLE_IN_ALL
1096 void              g_file_info_set_symbolic_icon      (GFileInfo         *info,
1097 						      GIcon             *icon);
1098 GLIB_AVAILABLE_IN_ALL
1099 void              g_file_info_set_content_type       (GFileInfo         *info,
1100 						      const char        *content_type);
1101 GLIB_AVAILABLE_IN_ALL
1102 void              g_file_info_set_size               (GFileInfo         *info,
1103 						      goffset            size);
1104 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1105 GLIB_DEPRECATED_IN_2_62_FOR(g_file_info_set_modification_date_time)
1106 void              g_file_info_set_modification_time  (GFileInfo         *info,
1107                                                       GTimeVal          *mtime);
1108 G_GNUC_END_IGNORE_DEPRECATIONS
1109 GLIB_AVAILABLE_IN_2_62
1110 void              g_file_info_set_modification_date_time (GFileInfo     *info,
1111                                                           GDateTime     *mtime);
1112 GLIB_AVAILABLE_IN_ALL
1113 void              g_file_info_set_symlink_target     (GFileInfo         *info,
1114 						      const char        *symlink_target);
1115 GLIB_AVAILABLE_IN_ALL
1116 void              g_file_info_set_sort_order         (GFileInfo         *info,
1117 						      gint32             sort_order);
1118 
1119 #define G_TYPE_FILE_ATTRIBUTE_MATCHER (g_file_attribute_matcher_get_type ())
1120 GLIB_AVAILABLE_IN_ALL
1121 GType g_file_attribute_matcher_get_type (void) G_GNUC_CONST;
1122 
1123 GLIB_AVAILABLE_IN_ALL
1124 GFileAttributeMatcher *g_file_attribute_matcher_new            (const char            *attributes);
1125 GLIB_AVAILABLE_IN_ALL
1126 GFileAttributeMatcher *g_file_attribute_matcher_ref            (GFileAttributeMatcher *matcher);
1127 GLIB_AVAILABLE_IN_ALL
1128 void                   g_file_attribute_matcher_unref          (GFileAttributeMatcher *matcher);
1129 GLIB_AVAILABLE_IN_ALL
1130 GFileAttributeMatcher *g_file_attribute_matcher_subtract       (GFileAttributeMatcher *matcher,
1131                                                                 GFileAttributeMatcher *subtract);
1132 GLIB_AVAILABLE_IN_ALL
1133 gboolean               g_file_attribute_matcher_matches        (GFileAttributeMatcher *matcher,
1134 								const char            *attribute);
1135 GLIB_AVAILABLE_IN_ALL
1136 gboolean               g_file_attribute_matcher_matches_only   (GFileAttributeMatcher *matcher,
1137 								const char            *attribute);
1138 GLIB_AVAILABLE_IN_ALL
1139 gboolean               g_file_attribute_matcher_enumerate_namespace (GFileAttributeMatcher *matcher,
1140 								     const char            *ns);
1141 GLIB_AVAILABLE_IN_ALL
1142 const char *           g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher);
1143 GLIB_AVAILABLE_IN_2_32
1144 char *                 g_file_attribute_matcher_to_string      (GFileAttributeMatcher *matcher);
1145 
1146 G_END_DECLS
1147 
1148 #endif /* __G_FILE_INFO_H__ */
1149