Unlink ()
Da Gambas-it.org - Wikipedia.
Versione del 13 giu 2024 alle 10:55 di Vuott (Discussione | contributi)
La funzione della libreria di C
int unlink(const char *pathname)
elimina un nome del file (il pathname) dal filesystem e, se possibile, il file medesimo a cui si riferisce.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
Private Extern unlink(pathname As String) As Integer In "libc:6"
Semplice esempio di uso in Gambas:
' int unlink(const char *pathname) Private Extern unlink(pathname As String) As Integer In "libc:6" Public Sub Main() Dim i As Integer i = unlink("/percorso/del/file/da/eliminare") If i == -1 Then Error.Raise("Impossibile cancellare il file !") End
Vediamo di seguito un esempio di utilizzo della funzione esterna unlink() insieme con la funzione esterna link() per copiare un file da un percorso ad un altro, e con cambio di nome del file, cancellando quello iniziale. Sono previste alcune procedure di sicurezza, al fine di non perdere il vecchio collegamento senza che sia stato creato il nuovo.
Library "libc:6" Private Extern link(oldpath As String, newpath As String) As Integer Private Extern unlink(pathname As String) As Integer Public Sub Main() Copia("/vecchio/percorso/del/file", "/nuovo/percorso/e/nuovo/nome/del/file") End Private Procedure Copia(vecchio As String, nuovo As String) Dim err As Integer If Exist(vecchio) = False Then Error.Raise("File non esistente !") err = link(vecchio, nuovo) If err == 0 Then If Exist(nuovo) = False Then Error.Raise("Il file non è stato copiato !") Return Endif err = unlink(vecchio) If err == -1 Then Error.Raise("Impossibile cancellare il file !") Endif Else Error.Raise("Impossibile copia: nome di file già esistente !") Endif End