Conoscere il file referenziato da un collegamento simbolico
Vai alla navigazione
Vai alla ricerca
Un collegamento simbolico è un particolare file che fa riferimento, punta ad un altro file.
Per conoscere a quale file punta tale collegamento simbolico, in Gambas è possibile utilizzare almeno due modalità.
Usare la Proprietà ".Link" della Classe Stat
Questa prima modalità utilizza le sole funzioni di Gambas, ed in particolare la Proprietà ".Link" della Classe Stat .
Mostriamo un semplice esempio:
Public Sub Main()
Dim s As String
s = Stat("/percorso/del/collegamento/simbolico").Link
Print s
End
Usare alcune funzioni esterne del API di Libgio
Questa seconda modalità più complessa e lunga della precedente, prevede l'utilizzo di alcune funzioni esterne del API della libreria Libgio, appartenente alla risorsa GNOME.
Sarà necessario nell'applicazione Gambas richiamare la libreria condivisa: "libgio-2.0.so.0.7200.4 ".
Mostriamo un semplice esempio:
Library "libgio-2.0:0.7200.4"
' 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
' const char * g_file_info_get_symlink_target (GFileInfo *info)
' Gets the symlink target for a given GFileInfo.
Private Extern g_file_info_get_symlink_target(Ginfo As Pointer) As String
Public Sub Main()
Dim Gf, info As Pointer
Dim s As String
Gf = g_file_new_for_path("/percorso/del/collegamento/simbolico")
If Gf == 0 Then Error.Raise("Errore !")
info = g_file_query_info(Gf, "standard::symlink-target", 0, 0, 0)
If info == 0 Then Error.Raise("Errore !")
s = g_file_info_get_symlink_target(info)
Print s
End