Problema con gio e file url

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Problema con gio e file url

Messaggio 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.

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Problema con gio e file url

Messaggio 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.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Problema con gio e file url

Messaggio da conraid »

Mi da lo stesso errore, sia in c sia in python.

Slackware current 64bit, senza multilib

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Problema con gio e file url

Messaggio da d4z_c0nf »

Grazie corrado. :)
Il problema sarà proprio a monte con le glib2... aglia.

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Problema con gio e file url

Messaggio 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.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Problema con gio e file url

Messaggio 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 :)

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Problema con gio e file url

Messaggio 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.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Problema con gio e file url

Messaggio 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.

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Problema con gio e file url

Messaggio 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/

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Problema con gio e file url

Messaggio 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...

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Problema con gio e file url

Messaggio 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.

Rispondi