Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Stat de corelinux libc en gambas.
#1

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.
    ¡Gracias!


Mensajes en este tema
Stat de corelinux libc en gambas. - por tincho - 13-11-2020, 01:02

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)