Differenze tra le versioni di "Unlink ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "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 rife...")
 
 
Riga 2: Riga 2:
 
  ''int unlink(const char *pathname)''
 
  ''int unlink(const char *pathname)''
 
elimina un nome del file (il ''pathname'') dal filesystem e, se possibile, il file medesimo a cui si riferisce.
 
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:
 
Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta:
 
  Private <FONT color=#B22222>Extern unlink</font>(pathname As String) As Integer In "<FONT color=#B22222>libc:6</font>"
 
  Private <FONT color=#B22222>Extern unlink</font>(pathname As String) As Integer In "<FONT color=#B22222>libc:6</font>"
 
  
  
 
Semplice esempio di uso in Gambas:
 
Semplice esempio di uso in Gambas:
 
  <FONT color=Gray>' ''int unlink(const char *pathname)''</font>
 
  <FONT color=Gray>' ''int unlink(const char *pathname)''</font>
  '''Private''' <FONT color=#B22222>Extern unlink</font>(pathname As String) As Integer In "<FONT color=#B22222>libc:6</font>"
+
  Private <FONT color=#B22222>Extern unlink</font>(pathname As String) As Integer In "<FONT color=#B22222>libc:6</font>"
 
   
 
   
  '''Public''' Sub Main()
+
   
 +
Public Sub Main()
 
   
 
   
 
   Dim i As Integer
 
   Dim i As Integer
 
    
 
    
  i = unlink("''/percorso/del/file/da/eliminare''")
+
  i = unlink("<FONT color=darkgreen>''/percorso/del/file/da/eliminare''</font>")
  If i = -1 Then Error.Raise("Impossibile cancellare il file !")
+
  If i == -1 Then Error.Raise("Impossibile cancellare il file !")
 
   
 
   
  '''End'''
+
  End
 
 
  
  
Riga 32: Riga 30:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
   Copia("''/vecchio/percorso/del/file''", "''/nuovo/percorso/e/nuovo/nome/del/file''")
+
   Copia("<FONT color=darkgreen>''/vecchio/percorso/del/file''</font>", "<FONT color=darkgreen>''/nuovo/percorso/e/nuovo/nome/del/file''</font>")
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Private''' Procedure Copia(vecchio As String, nuovo As String)
+
  Private Procedure Copia(vecchio As String, nuovo As String)
 
   
 
   
 
   Dim err As Integer
 
   Dim err As Integer
 
    
 
    
  If Exist(vecchio) = False Then Error.Raise("File non esistente !")
+
  If Exist(vecchio) = False Then Error.Raise("File non esistente !")
 
    
 
    
  err = link(vecchio, nuovo)
+
  err = link(vecchio, nuovo)
  If err = 0 Then
+
  If err == 0 Then
    If Exist(nuovo) = False Then
+
    If Exist(nuovo) = False Then
      Error.Raise("Il file non è stato copiato !")
+
      Error.Raise("Il file non è stato copiato !")
      Return
+
      Return
    Endif
+
    Endif
    err = unlink(vecchio)
+
    err = unlink(vecchio)
    If err = -1 Then
+
    If err == -1 Then
      Error.Raise("Impossibile cancellare il file !")
+
      Error.Raise("Impossibile cancellare il file !")
    Endif
+
    Endif
  Else
+
  Else
    Error.Raise("Impossibile copia: nome di file già esistente !")
+
    Error.Raise("Impossibile copia: nome di file già esistente !")
  Endif
+
  Endif
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 11:55, 13 giu 2024

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