Harpo   26-09-2025, 20:06
#1
Saludos!
Después de un tiempo alejado del teclado he retomado los proyectos personales que tenía abandonados. El primero ha sido la aplicación para gestionar cómics, y por fin tengo un compresor/descompresor de archivos: Libarchive .

Cómo ya sabrán es una librería para leer, escribir y comprimir distintos formatos de fichero, según la página web de la libreria:
  • tar (read and write, including GNU extensions)
  • pax (read and write, including GNU and star extensions)
  • cpio (read and write, including odc, newc, and afio variants)
  • ISO9660 (read and write, including Joliet and Rockridge extensions, with some limitations)
  • zip (read and write, with some limitations, uses zlib)
  • mtree (read and write, uses separate libraries for creating and verifying cryptographic hashes)
  • shar (write only)
  • ar (read and write, including BSD and GNU/SysV variants)
  • empty (read only; in particular, note that no other format will accept an empty file)
  • raw (read and write)
  • xar (read and write)
  • lha/lzh (read only)
  • rar (read only, original and RAR v5 format)
  • Microsoft CAB format (read only)
  • 7-Zip (read and write)
  • WARC (ISO 28500:2009, read and write)

La librería trata los ficheros como un stream, un conjunto de elementos empaquetados juntos. La definición de las funciones internas está dividida en dos partes: CArchive para las funciones propias del archivo y CEntry para los elementos dentro del archivo, entradas. Además hay un módulo, MArchive, para funciones auxiliares y definición de constantes internas de la librería. No todas las funciones internas de la librería están definidas, todavía queda pulir, limpiar, optimizar y completar. Queda trabajo.

Las clases en Gambas son:
  • GCompress: para gestionar los ficheros. Comprimir, descomprimir, leer, extraer ficheros, hacer backup de directorios.
  • GEntry: para gestionar los elementos dentro GCompress. Ficheros, directorios, enlaces simbólicos.
  • Clases de apoyo para manejar opciones de compresión y lectura, flags para descomprimir ficheros.

Para quién se decida a probar la librería, Libarchive tiene dos conceptos importantes, FORMAT y FILTER. El primero hace referencia al formato del fichero, el segundo a formatos de compresión. Y existen formatos de fichero que además son compresores, compresores que pueden que lo sean o no, se pueden mezclar formatos y compresores, se pueden usar varios compresores dentro de un formato. Además los formatos y compresores tienen distintas opciones de empaquetado, compresión y encriptación. Puede haber ficheros (entradas) con la cabecera encriptada pero no los datos, con los datos encriptados pero no la cabecera ... un lio enorme.

Dentro del proyecto hay una aplicación para jugar con la librería, es un desastre a nivel de código, con mucha basura, pero funcional. Básicamente una prueba de concepto. Y la última pestaña, "Rebuild - Extract file" no es funcional, permite hacerlo todo pero el botón "Rebuild" todavía no hace nada.   Rolleyes

[Imagen: stYBDiNl.png]

[Imagen: 8eTLM6ql.png]

Si alguien se decide a probarla y encuentra algún problema o tiene alguna sugerencia se agradecería el comentario.
Un saludo, Harpo

.gz
GCompress.tar.gz (Tamaño: 80.65 KB Descargas: 1)
Shordi   27-09-2025, 16:46
#2
Gracias, lo miraré cuando tenga un rato. Tiene buena pinta..

No podemos regresar
guizans   28-09-2025, 20:27
#3
Muy interesante.
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.