Differenze tra le versioni di "Ottenere alcune informazioni generali sui file"
(Creata pagina con 'Per ottenere alcune informazioni generali sui file, è possibile operare con almeno due risorse. ===Usando la funzione ''Stat()'' propria di Gambas=== Le modalità di utiliz...') |
|||
Riga 7: | Riga 7: | ||
===Usando la funzione ''stat()'' di C=== | ===Usando la funzione ''stat()'' di C=== | ||
− | Per utilizzare la funzione ''stat()'' di C, bisognerà | + | Per utilizzare la funzione ''stat()'' di C, bisognerà richiamare la funzione ''__xstat()''. in quanto, per consentire alla Struttura "''struct stat''" di variare senza cambiare numero di versione della libreria condivisa .so, il gruppo di funzioni 'stat' sono traslate nelle chiamate alle funzioni 'xstat', 'fxstat', 'lxstat', alle quali è necessario passare come primo argomento il numero-versione che designa la struttura dei dati e i bit utilizzati. |
− | + | Dunque, in fase di linking la chiamata a ''stat()'' viene convertita in ''__xstat()''. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Riga 34: | Riga 15: | ||
st_dev As Long | st_dev As Long | ||
st_ino As Long | st_ino As Long | ||
+ | st_nlink As Long | ||
st_mode As Integer | st_mode As Integer | ||
− | |||
st_uid As Integer | st_uid As Integer | ||
− | st_gid As | + | st_gid As Long |
st_rdev As Long | st_rdev As Long | ||
− | |||
st_size As Long | st_size As Long | ||
− | st_blksize As | + | st_blksize As Long |
− | |||
st_blocks As Long | st_blocks As Long | ||
st_atime As Long | st_atime As Long | ||
− | + | __unused1 As Integer | |
st_mtime As Long | st_mtime As Long | ||
+ | __unused2 As Long | ||
st_mtime_nsec As Long | st_mtime_nsec As Long | ||
st_ctime As Long | st_ctime As Long | ||
− | + | __glibc_reserved[3] As Long | |
− | |||
− | |||
End Struct | End Struct | ||
− | + | <FONT Color=gray>' ''int __xstat (int __ver, const char *__filename, struct stat *__stat_buf)'' | |
− | Private Extern | + | ' ''Get file attributes for FILE and put them in BUF.''</font> |
+ | Private Extern __xstat(ver As Integer, s As String, st As STATUS_File) As Integer In "libc:6" | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | |||
Dim stS As New STATUS_File | Dim stS As New STATUS_File | ||
Dim i As Integer | Dim i As Integer | ||
− | + | i = __xstat(1, "''/percorso/del/file''", stS) | |
− | + | If i <> 0 Then Error.Raise("Errore alla funzione '__xstat()' !") | |
− | + | ||
− | |||
− | |||
− | i = | ||
− | If i <> 0 Then Error.Raise("Errore alla funzione ' | ||
− | |||
− | |||
− | |||
− | |||
With stS | With stS | ||
Print .st_dev | Print .st_dev | ||
+ | Print .st_ino | ||
+ | Print .st_nlink | ||
+ | Print .st_mode | ||
Print .st_uid | Print .st_uid | ||
Print .st_gid | Print .st_gid | ||
+ | Print .st_rdev | ||
Print .st_size; " byte" | Print .st_size; " byte" | ||
+ | Print .st_blksize | ||
+ | Print .st_blocks | ||
+ | Print .st_atime | ||
+ | Print .st_mtime | ||
+ | Print .st_ctime | ||
End With | End With | ||
− | |||
− | |||
'''End''' | '''End''' |
Versione delle 21:05, 5 nov 2014
Per ottenere alcune informazioni generali sui file, è possibile operare con almeno due risorse.
Usando la funzione Stat() propria di Gambas
Le modalità di utilizzo della funzione di Gambas Stat() è descritta nella seguente pagina.
Usando la funzione stat() di C
Per utilizzare la funzione stat() di C, bisognerà richiamare la funzione __xstat(). in quanto, per consentire alla Struttura "struct stat" di variare senza cambiare numero di versione della libreria condivisa .so, il gruppo di funzioni 'stat' sono traslate nelle chiamate alle funzioni 'xstat', 'fxstat', 'lxstat', alle quali è necessario passare come primo argomento il numero-versione che designa la struttura dei dati e i bit utilizzati. Dunque, in fase di linking la chiamata a stat() viene convertita in __xstat().
Il codice Gambas potrà essere il seguente:
Public Struct STATUS_File st_dev As Long st_ino As Long st_nlink As Long st_mode As Integer st_uid As Integer st_gid As Long st_rdev As Long st_size As Long st_blksize As Long st_blocks As Long st_atime As Long __unused1 As Integer st_mtime As Long __unused2 As Long st_mtime_nsec As Long st_ctime As Long __glibc_reserved[3] As Long End Struct ' int __xstat (int __ver, const char *__filename, struct stat *__stat_buf) ' Get file attributes for FILE and put them in BUF. Private Extern __xstat(ver As Integer, s As String, st As STATUS_File) As Integer In "libc:6" Public Sub Main() Dim stS As New STATUS_File Dim i As Integer i = __xstat(1, "/percorso/del/file", stS) If i <> 0 Then Error.Raise("Errore alla funzione '__xstat()' !") With stS Print .st_dev Print .st_ino Print .st_nlink Print .st_mode Print .st_uid Print .st_gid Print .st_rdev Print .st_size; " byte" Print .st_blksize Print .st_blocks Print .st_atime Print .st_mtime Print .st_ctime End With End