Creare un link simbolico di un file
Per creare un link simbolico di un file, è possibile utilizzare almeno due modalità che prevedono entrambe il richiamo di due librerie esterne.
Uso della libreria libc.6.so
Per creare un file link simbolico di un file esistente, è possibile utilizzare la funzione esterna symlink() della libreria libc.6.so .
Se il link simbolico e' gia' esistente, la funzione symlink() fallisce e restituisce il valore -1 .
E' necessario richiamare in Gambas la libreria dinamica condivisa: libc.6.so
Mostriamo un esempio:
Library "libc:6" ' int symlink(const char *__from, const char *__to) ' Make a symbolic link to FROM named TO. Private Extern symlink(__from As String, __to As String) as Integer Public Sub Main() Dim err As Integer err = symlink("/percorso/del/file/esistente", "/percorso/del/link/simbolico") If err = -1 Then Error.Raise("Impossibile creare il link simbolico !") End
Uso della libreria libgio-2.0.so
Per creare un file link simbolico di un file esistente, è possibile utilizzare un paio di funzioni della libreria libgio-2.0.so .
Se il link simbolico e' gia' esistente, la funzione symlink() fallisce e restituisce il valore booleano False.
E' necessario richiamare in Gambas la libreria dinamica condivisa: libgio-2.0.so
Mostriamo un esempio:
Library "libgio-2.0" ' 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 ' gboolean g_file_make_symbolic_link (GFile *file, const char *symlink_value, GCancellable *cancellable, GError **error) ' Creates a symbolic link named file which contains the string symlink_value. Private Extern g_file_make_symbolic_link(GFile As Pointer, symlink_value As String, cancellable As Pointer, GError As Pointer) As Boolean Public Sub Main() Dim gf As Pointer Dim bo As Boolean ' Genera un generico file (che diventerà poi il link simbolico): gf = g_file_new_for_path("/percorso/del/futuro/link/simbolico") If IsNull(gf) Then Error.Raise("Impossibile creare il file !") ' Trasforma il file, appena creato, in un link simbolico del file principale qui specificato nel 2° argomento: bo = g_file_make_symbolic_link(gf, "/percorso/del/file/principale", 0, 0) If bo = False Then Error.Raise("Impossibile creare il file simbolico !") End