Hola a todos.
Como algunos sabrán la función
stat de Gambas no devuelve el
inode, no se a que se debe. Este hecho me llevo a investigar el tema y gracias a las enseñanzas del maestro Vuott, que siempre deja ejemplos sobre el uso de
Extern y puso un ejemplo de uso de
stat de
corelinux, convertí eso en una función que si se coloca en un módulo hace lo que el Stat de gambas pero con este parámetro (inode) agregado, pero el caso es que funciona mucho mas rápido para leer los metadatos de un archivo y cuando se trata de miles se nota la diferencia.
Referencia en el foro italiano: Ottenere_alcune_informazioni_generali_sui_file
Código:
Library "libc:6"
Public Struct stat_
st_dev As Long
st_ino As Long
st_nlink As Long
st_mode As Integer
st_uid As Integer
st_gid As Integer
__pad0 As Integer
st_rdev As Long
st_size As Long
st_blksize As Long
st_blocks As Long
st_atime As Long
st_atimensec As Long
st_mtime As Long
st_mtimensec As Long
st_ctime As Long
st_ctimensec As Long
__glibc_reserved[3] As Long
End Struct
Private Const _STAT_VER_LINUX As Integer = 1
Private Extern __xstat(_STAT_VER As Integer, __path As String, __statbuf As Stat_) As Integer
'' Create a file parameters list using the GNU coreutils program stat. Note: the tags for access to the information are:<br>
'' Dev, Ino, Path, Link, Mode, SetUID, SetGID, Rdev, Size, BlkSize, Blocks, LastAccess, LastModified, LastChange<br>
'' Original <https://www.gambas-it.org/wiki/index.php?title=Stat_()>
Public Sub Stat(f As String) As Collection
Dim i As Integer
Dim st As New Stat_
Dim inf As New Collection
i = __xstat(_STAT_VER_LINUX, f, st)
If i < 0 Then Error.Raise("Function error '__xstat()' !")
With st
inf.Add(.st_dev, "Dev")
inf.Add(.st_ino, "Ino")
inf.Add(f, "Path")
inf.Add(.st_nlink, "Link")
inf.Add(.st_mode, "Mode")
inf.Add(.st_uid, "SetUID")
inf.Add(.st_gid, "SetGID")
inf.Add(.st_rdev, "Rdev")
inf.Add(.st_size, "Size")
inf.Add(.st_blksize, "BlkSize")
inf.Add(.st_blocks, "Blocks")
inf.Add(.st_atime, "LastAccess")
inf.Add(.st_mtime, "LastModified")
inf.Add(.st_ctime, "LastChange")
End With
Return inf
End
Saludos.