Pagina 1 di 1

Problema con gio e file url

Inviato: mer 22 feb 2012, 15:28
da d4z_c0nf
Come da titolo.
Non riesco ad aprire file da url con gio.

Esempio in c e relativo errore:
example-gio.c

Codice: Seleziona tutto

#include <glib/gprintf.h>
#include <gio/gio.h>

int main(int argc, char **argv) {
  g_type_init();

  GError* error = NULL;
  GFile* file = NULL;
  GFileInputStream* fis = NULL;

  file = g_file_new_for_uri (argv[1]);

  fis = g_file_read (file, NULL, &error);
  if (error != NULL)
            g_printerr ("** ERROR **: %s (domain: %s, code: %d) at %d\n", \
                error->message, g_quark_to_string (error->domain), error->code, __LINE__);
  return 0;
}
Compilato con:

Codice: Seleziona tutto

gcc -o example-gio example-gio.c `pkg-config --libs --cflags gio-2.0`
Errore:

Codice: Seleziona tutto

 ./example-gio "http://www.angolodigitale.it/wp-content/uploads/2010/01/slackware_logo.png"
** ERROR **: Operation not supported (domain: g-io-error-quark, code: 15) at 16
Con pyton, da console di python:

Codice: Seleziona tutto

rock@localhost:~ $ python
iPython 2.6.6 (r266:84292, Nov 27 2010, 17:27:14) 
[GCC 4.5.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gio
>>> gfile=gio.File("http://www.angolodigitale.it/wp-content/uploads/2010/01/slackware_logo.png")
>>> gfile.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
gio.Error: Operation not supported
(Ovviamente l'indirizzo è casuale)

Sono in current e ho le multilib. Vorrei capire se è un problema della configurazione del mio sistema (current e/o multilib), o proprio
della versione delle glib. Ho portato gli esempi in python e in c, per escludere un problema con pygobject.

Chiunque ne avesse voglia, potrebbe provare sul proprio sistema per aiutarmi ad escludere qualcosa?
Grazie.

Re: Problema con gio e file url

Inviato: gio 23 feb 2012, 11:19
da d4z_c0nf
Non credevo ad un tale successo di pubblico. :lol:
Probabilmente non mi sono spiegato, cerco solo qualcuno che abbia voglia di provare gli esempi che ho postato, per darmi la possibilità di capire da cosa dipende il fallimento sul mio sistema. Vanno bene anche distro diverse dalla slackware.

Thanks.

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 11:25
da conraid
Mi da lo stesso errore, sia in c sia in python.

Slackware current 64bit, senza multilib

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 11:28
da d4z_c0nf
Grazie corrado. :)
Il problema sarà proprio a monte con le glib2... aglia.

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 11:47
da masalapianta
usando uri con file: funziona:

mini:/tmp# ./example-gio "file:/tmp/example-gio"
mini:/tmp#

probabilmente http non è supportato:

http://developer.gnome.org/gio/2.31/GFi ... ew-for-uri

This operation never fails, but the returned object might not support any I/O operation if uri is malformed or if the uri type is not supported.

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 11:49
da 414N
Ho fatto un paio di prove anch'io col codice C che hai postato.
Nella documentazione dell'operazione g_file_new_for_uri è scritto:
Constructs a GFile for a given URI. This operation never fails, but the returned object might not support any I/O operation if uri is malformed or if the uri type is not supported.
Provando a fare una prova con tipo URI diverso (file://) l'errore non si verifica più, percui direi proprio che non è supportato il tipo di URI http.
PS: ricordati di segnalare la fine dell'utilizzo di un puntatore ad un file tramite g_object_unref.
EDIT: battuto sul tempo :)

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 12:04
da d4z_c0nf
@ masalapianta e 414N

Grazie ad entrambi.
Si lo so che con file normale funziona, proprio perchè non funziona proprio se l'uri è un url.

Quindi potrebbe essere un problema di versione delle glib2.

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 13:46
da 414N
Non credo proprio che esista una versione di glib che supporti le uri http.
Forse ti conviene passare a libcurl se intendi fare trasferimenti di file tramite http.

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 14:07
da d4z_c0nf
414N ha scritto:Non credo proprio che esista una versione di glib che supporti le uri http.
Forse ti conviene passare a libcurl se intendi fare trasferimenti di file tramite http.
A me serve la possibilità di scaricare con gio, perchè un programma (exaile), lo richiede.
Se è come dici tu, forse mi manca qualche dipendenza, però non riesco a capire quale
possa essere.

In rete comunque si trovano esempi di file scaricati con gio.
Ti linko il primo esempio che mi viene fuori da google, tra l'altro usa python:
http://www.jonobacon.org/2010/03/15/dow ... nd-python/

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 20:11
da d4z_c0nf
Aggiornamento:
Ho installato xubuntu11.10 su una macchina virtuale.
Testato l'esempio in python, stesso errore.
Ho proceduto agli aggiornamenti suggeritimi dal sistema, tra cui un pacchetto "gvfs-backends".
Lì funziona.
Ora io in slackware avevo già compilato e installato gvfs con supporto per http.
Su xubuntu gvfs sono alla versione 1.10, e io su slackware avevo messo la versione 1.08.
Vediamo se riesco a compilare la nuova versione...

Re: Problema con gio e file url

Inviato: ven 24 feb 2012, 21:06
da d4z_c0nf
Ultimo aggiornamento.
Niente da fare gvfs dalla versione 1.9.2 in poi richiede glib2 => 2.29.14, e putroppo anche in current siamo a 2.28.6.
A questo punto chissà chi è il responsabile.

Grazie a tutti.