Comunidad Gambas-es

Versión completa: Stat de corelinux libc en gambas.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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

GAMBAS
  1. Library "libc:6"
  2.  
  3.   st_dev As Long
  4.   st_ino As Long
  5.   st_nlink As Long
  6.   st_mode As Integer
  7.   st_uid As Integer
  8.   st_gid As Integer
  9.   __pad0 As Integer
  10.   st_rdev As Long
  11.   st_size As Long
  12.   st_blksize As Long
  13.   st_blocks As Long
  14.   st_atime As Long
  15.   st_atimensec As Long
  16.   st_mtime As Long
  17.   st_mtimensec As Long
  18.   st_ctime As Long
  19.   st_ctimensec As Long
  20.   __glibc_reserved[3] As Long
  21.  
  22. Private Const _STAT_VER_LINUX As Integer = 1
  23. Private Extern __xstat(_STAT_VER As Integer, __path As String, __statbuf As Stat_) As Integer
  24.  
  25. '' Create a file parameters list using the GNU coreutils program stat. Note: the tags for access to the information are:<br>
  26. '' Dev, Ino, Path, Link, Mode, SetUID, SetGID, Rdev, Size, BlkSize, Blocks, LastAccess, LastModified, LastChange<br>
  27. '' Original <https://www.gambas-it.org/wiki/index.php?title=Stat_()>
  28.  
  29.  
  30.   Dim st As New Stat_
  31.  
  32.   i = __xstat(_STAT_VER_LINUX, f, st)
  33.   If i < 0 Then Error.Raise("Function error '__xstat()' !")
  34.  
  35.   With st
  36.     inf.Add(.st_dev, "Dev")
  37.     inf.Add(.st_ino, "Ino")
  38.     inf.Add(f, "Path")
  39.     inf.Add(.st_nlink, "Link")
  40.     inf.Add(.st_mode, "Mode")
  41.     inf.Add(.st_uid, "SetUID")
  42.     inf.Add(.st_gid, "SetGID")
  43.     inf.Add(.st_rdev, "Rdev")
  44.     inf.Add(.st_size, "Size")
  45.     inf.Add(.st_blksize, "BlkSize")
  46.     inf.Add(.st_blocks, "Blocks")
  47.     inf.Add(.st_atime, "LastAccess")
  48.     inf.Add(.st_mtime, "LastModified")
  49.     inf.Add(.st_ctime, "LastChange")
  50.   Return inf



Saludos.