Differenze tra le versioni di "Conoscere i permessi di un file mediante le funzioni esterne del API di libgio-2.0"

Da Gambas-it.org - Wikipedia.
Riga 56: Riga 56:
  
 
=Riferimenti=
 
=Riferimenti=
* https://developer.gnome.org/gio/stable/GFile.html
+
* https://docs.gtk.org/gio/?q=g_file
* https://developer.gnome.org/gio/stable/GFileInfo.html
 

Versione delle 16:35, 14 ago 2022

Con alcune funzioni esterne del API di libgio-2.0 è possibile conoscere i permessi di un file.

E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "libgio-2.0.so.0.6400.6 "

Mostriamo un esempio, nel quale si verificherà se un dato file può essere letto e può essere scritto.

Library "libgio-2.0:0.6400.6"

Private Enum G_FILE_QUERY_INFO_NONE = 0, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS
Private Const G_FILE_ATTRIBUTE_ACCESS_CAN_READ As String = "access::can-read"
Private Const G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE As String = "access::can-write"
 
' GFile * g_file_new_for_path (const char *path)
' Constructs a GFile for a given path.
Private Extern g_file_new_for_path(path As String) As Pointer

' GFileInfo * g_file_query_info (GFile *file, const char *attributes, GFileQueryInfoFlags flags, GCancellable *cancellable, GError **error)
' Gets the requested information about specified file.
Private Extern g_file_query_info(gfile As Pointer, attributes As String, flags As Integer, cancellable As Pointer, gerror As Pointer) As Pointer

' gboolean g_file_info_get_attribute_boolean (GFileInfo *info, const char *attribute)
' Gets the value of a boolean attribute. If the attribute does not contain a boolean value, FALSE will be returned.
Private Extern g_file_info_get_attribute_boolean(info As Pointer, attribute As String) As Boolean

' void g_object_unref (gpointer object)
' Decreases the reference count of object.
Private Extern g_object_unref(gobject As Pointer)


Public Sub Main()
 
 Dim gf, gif As Pointer
 Dim bo As Boolean
  
 gf = g_file_new_for_path("/percorso/del/file")
 If gf == 0 Then Error.Raise("ERRORE !")
  
 gif = g_file_query_info(gf, G_FILE_ATTRIBUTE_ACCESS_CAN_READ, G_FILE_QUERY_INFO_NONE, 0, 0)
 If gif == 0 Then Error.Raise("ERRORE !")
  
 bo = g_file_info_get_attribute_boolean(gif, G_FILE_ATTRIBUTE_ACCESS_CAN_READ)
 Print bo
  
 gif = g_file_query_info(gf, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, G_FILE_QUERY_INFO_NONE, 0, 0)
 If gif == 0 Then Error.Raise("ERRORE !")
  
 bo = g_file_info_get_attribute_boolean(gif, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)
 Print bo
  
' Libera la memoria precedentemente occupata da Libgio:
 g_object_unref(gif)
 g_object_unref(gf)   
  
End


Riferimenti