Differenze tra le versioni di "Chmod ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'La funzione '''chmod()''' della libreria di C int chmod (const char *__file, __mode_t __mode) cambia i permessi relativi ad un file. Volendola utilizzare in Gambas, bisogne...')
 
 
(6 versioni intermedie di uno stesso utente non sono mostrate)
Riga 4: Riga 4:
  
  
Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "''chmod()''" è <SPAN style="text-decoration:underline">omonima</span> alla funzione di Gambas "''Chmod()''", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando ''Exec''.
+
Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "chmod()" è <SPAN style="text-decoration:underline">omonima</span> alla funzione di Gambas ''Chmod'', bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando ''Exec''.
 
<BR>Dunque avremo ad esempio:
 
<BR>Dunque avremo ad esempio:
 
  Private <FONT color=#B22222>Extern chmod_C</font>(__file As String, mode As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "chmod"'''</font>
 
  Private <FONT color=#B22222>Extern chmod_C</font>(__file As String, mode As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "chmod"'''</font>
 
+
Nel secondo parametro ''mode'' va inserito un numero intero, o più numeri anche in combinazione con l'operatore ''OR'', che definisce il nuovo permesso che si va ad impostare del file.
Nel secondo parametro ''mode'' va inserito un numero intero, o più numeri anche in combinazione con l'operatore ''Or'', che definisce il nuovo permesso che si va ad impostare del file.
 
 
 
  
 
Semplice esempio di uso in Gambas:
 
Semplice esempio di uso in Gambas:
Riga 15: Riga 13:
 
  Private Const S_IWUSR As Integer = 128
 
  Private Const S_IWUSR As Integer = 128
 
   
 
   
  Private <FONT color=#B22222>Extern chmod_C</font>(__file As String, mode As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "chmod"'''</font>
+
<FONT color=Gray>' ''int chmod (const char *__file, __mode_t __mode)''
 +
' ''Set file access permissions for FILE to MODE.''</font>
 +
  Private Extern <FONT color=#B22222>chmod_C</font>(__file As String, mode As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "chmod"'''</font>
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
+
 
 +
  Dim err As Integer
 +
 
 
  <FONT color=Gray>' ''Consente la lettura e la scrittura del file al solo proprietario:''</font>
 
  <FONT color=Gray>' ''Consente la lettura e la scrittura del file al solo proprietario:''</font>
   err = <FONT color=#B22222>chmod_C("''/percorso/del/file''", S_IRUSR Or S_IWUSR)</font>
+
   err = <FONT color=#B22222>chmod_C</font>("<FONT color=darkgreen>''/percorso/del/file''</font>", S_IRUSR Or S_IWUSR)
   If err <> 0 Then Error.Raise("Impossibile cambiare i permessi al file !")  
+
   If err < 0 Then Error.Raise("Impossibile cambiare i permessi al file !")  
 
    
 
    
  '''End'''
+
  End
 +
 
 +
 
 +
 
 +
=Riferimenti=
 +
* https://www.gnu.org/software/libc/manual/html_node/Permission-Bits.html
 +
* Vedere questo file di sistema: ''/usr/include/linux/stat.h''

Versione attuale delle 15:08, 15 giu 2024

La funzione chmod() della libreria di C

int chmod (const char *__file, __mode_t __mode)

cambia i permessi relativi ad un file.


Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "chmod()" è omonima alla funzione di Gambas Chmod, bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando Exec.
Dunque avremo ad esempio:

Private Extern chmod_C(__file As String, mode As Integer) As Integer In "libc:6" Exec "chmod"

Nel secondo parametro mode va inserito un numero intero, o più numeri anche in combinazione con l'operatore OR, che definisce il nuovo permesso che si va ad impostare del file.

Semplice esempio di uso in Gambas:

Private Const S_IRUSR As Integer = 256
Private Const S_IWUSR As Integer = 128

' int chmod (const char *__file, __mode_t __mode)
' Set file access permissions for FILE to MODE.
Private Extern chmod_C(__file As String, mode As Integer) As Integer In "libc:6" Exec "chmod"


Public Sub Main()
 
 Dim err As Integer
 
' Consente la lettura e la scrittura del file al solo proprietario:
 err = chmod_C("/percorso/del/file", S_IRUSR Or S_IWUSR)
 If err < 0 Then Error.Raise("Impossibile cambiare i permessi al file !") 
 
End


Riferimenti