gnome-vfs

Tabla de contenidos

URIs (Uniform Resource Identifier)
Operaciones básicas
E/S Asíncrona
Módulos para GNOME-VFS

GNOME-VFS es una librería que ofrece un API (interfaz para el programador de aplicaciones) muy similar al sistema de E/S que normalmente se usa. Es decir, las funciones de E/S del estándar de C y similares.

La diferencia entre el sistema estándar de E/S y GNOME-VFS es que este último ofrece una abstracción del acceso a ficheros, sockets, protocolos de red, etc, en lo que se conoce como VFS o Virtual File System (Sistema virtual de ficheros). Gracias a esta abstracción, se podrá acceder, desde las aplicaciones, a recursos (ficheros, directorios, etc) disponibles en distintos sitios y a través de distintos protocolos de acceso.

Así, por ejemplo, si se usa GNOME-VFS, se podrá acceder a ficheros remotos, a través de FTP (o HTTP, o...) como si de ficheros locales se tratara, y todo ello totalmente transparente para la aplicación.

La arquitectura de GNOME-VFS está basada en módulos (o backends) que implementan el acceso a un sistema de ficheros real (ficheros en el disco, HTTP, FTP, WebDAV, etc), y que pueden ser instalados o desinstalados sin afectar para nada al resto del sistema. Este sistema de módulos permite añadir al sistema de GNOME-VFS acceso a ficheros de distintas formas. Por ejemplo, como ya se ha comentado, hay un módulo que permite el acceso a recursos a traves de WebDAV, o de HTTP, o FTP, o ficheros locales, pero, aparte de esto, se pueden añadir módulos que ofrezcan acceso a distintos dispositivos o recursos como si de ficheros se tratara. Por ejemplo, uno de los más interesantes es el módulo "camera", que permite acceder a las fotos almacenadas en una cámara de fotos digital como si de un simple directorio con ficheros se tratara (que, por cierto, es lo que es).

Se ha decidido recientemente, en el seno del proyecto GNOME, la obligatoriedad de usar GNOME-VFS para todas las operaciones de Entrada/Salida de las aplicaciones que componen el proyecto GNOME. Esto va a permitir, primero, la estandarización del acceso a cualquier tipo de recurso soportado por GNOME-VFS sin necesidad de que las aplicaciones sepan absolutamente nada de dicho recurso, y, más importante, va a permitir que todas las aplicaciones se integren perfectamente con Nautilus, el gestor de ficheros oficial del proyecto GNOME, que hace un uso intensivo de GNOME-VFS.

URIs (Uniform Resource Identifier)

GNOME-VFS funciona por medio de URIs (Uniform Resource Identifiers), o, lo que es lo mismo, un modo de referenciación único de recursos. Cualquier persona que haya usado mínimamente Internet sabe lo que es un URI, que es una cadena de texto con la que se hace referencia a un recurso único en Internet. Así mismo, también se usa para acceder, a través de nuestro navegador, a los ficheros locales de nuestro disco (file:/home/rodrigo/index.html, por ejemplo).

Este modo de referenciación único es el que se usa cuando le indicamos a GNOME-VFS que realice determinada operación sobre un recurso, para especificar qué recurso es el que tiene que usar para dicha operación.

En GNOME-VFS se dispone de un conjunto bastante amplio de funciones para el manejo y validación de estos URIs. Así, por ejemplo, lo primero que se debería hacer es crear un objeto de la clase GnomeVFSURI, que se hace de la siguiente forma:

      GnomeVFSURI *uri;

      uri = gnome_vfs_uri_new ("file:/tmp/fichero");
    

Una vez se tiene el objeto uri creado, tenemos acceso a un número bastante importante de operaciones sobre él, que se listan a continuación de forma resumida:

  • gnome_vfs_append_file_name, gnome_vfs_append_string y gnome_vfs_append_path permiten, dado un URI, añadirle un camino hacia un fichero o directorio. El usar estas funciones en vez de construir el URI (concatenando cadenas), se asegura el que GNOME-VFS realizará una validación del formato del URI, generando un error si se intentara crear un URI incorrecto.

  • gnome_vfs_uri_to_stringpermite obtener una cadena de texto que represente un objeto de tipo GnomeVFSURI.

  • gnome_vfs_uri_is_local comprueba si el URI especificado es local o no.

  • gnome_vfs_uri_get_host_name, gnome_vfs_uri_get_host_port, gnome_vfs_uri_get_username y gnome_vfs_uri_get_password permiten obtener por separado cada una de las partes de un URI (nombre del host, puerto, nombre de usuario y contraseña) que pudieran estar incluidos en el URI. Estas funciones tienen su equivalente (gnome_vfs_uri_set_password, etc) que permiten modificar cada una de estas partes.

Todas estas funciones permiten acceder y alterar el contenido del URI, todo ello a través de sencillas funciones.